{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/Template",
  "title": "Template",
  "type": "object",
  "properties": {
    "details": {
      "oneOf": [
        {
          "$ref": "#/components/schemas/CreateApiRequestToolDTO",
          "title": "ApiRequestTool"
        },
        {
          "$ref": "#/components/schemas/CreateBashToolDTO",
          "title": "BashTool"
        },
        {
          "$ref": "#/components/schemas/CreateCodeToolDTO",
          "title": "CodeTool"
        },
        {
          "$ref": "#/components/schemas/CreateComputerToolDTO",
          "title": "ComputerTool"
        },
        {
          "$ref": "#/components/schemas/CreateDtmfToolDTO",
          "title": "DtmfTool"
        },
        {
          "$ref": "#/components/schemas/CreateEndCallToolDTO",
          "title": "EndCallTool"
        },
        {
          "$ref": "#/components/schemas/CreateFunctionToolDTO",
          "title": "FunctionTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO",
          "title": "GoHighLevelCalendarAvailabilityTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO",
          "title": "GoHighLevelCalendarEventCreateTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO",
          "title": "GoHighLevelContactCreateTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO",
          "title": "GoHighLevelContactGetTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO",
          "title": "GoogleCalendarCheckAvailabilityTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO",
          "title": "GoogleCalendarCreateEventTool"
        },
        {
          "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO",
          "title": "GoogleSheetsRowAppendTool"
        },
        {
          "$ref": "#/components/schemas/CreateHandoffToolDTO",
          "title": "HandoffTool"
        },
        {
          "$ref": "#/components/schemas/CreateMcpToolDTO",
          "title": "McpTool"
        },
        {
          "$ref": "#/components/schemas/CreateQueryToolDTO",
          "title": "QueryTool"
        },
        {
          "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO",
          "title": "SlackSendMessageTool"
        },
        {
          "$ref": "#/components/schemas/CreateSmsToolDTO",
          "title": "SmsTool"
        },
        {
          "$ref": "#/components/schemas/CreateTextEditorToolDTO",
          "title": "TextEditorTool"
        },
        {
          "$ref": "#/components/schemas/CreateTransferCallToolDTO",
          "title": "TransferCallTool"
        },
        {
          "$ref": "#/components/schemas/CreateSipRequestToolDTO",
          "title": "SipRequestTool"
        },
        {
          "$ref": "#/components/schemas/CreateVoicemailToolDTO",
          "title": "VoicemailTool"
        }
      ]
    },
    "providerDetails": {
      "oneOf": [
        {
          "$ref": "#/components/schemas/MakeToolProviderDetails",
          "title": "MakeToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GhlToolProviderDetails",
          "title": "GhlToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/FunctionToolProviderDetails",
          "title": "FunctionToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GoogleCalendarCreateEventToolProviderDetails",
          "title": "GoogleCalendarCreateEventToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GoogleSheetsRowAppendToolProviderDetails",
          "title": "GoogleSheetsRowAppendToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GoHighLevelCalendarAvailabilityToolProviderDetails",
          "title": "GoHighLevelCalendarAvailabilityToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GoHighLevelCalendarEventCreateToolProviderDetails",
          "title": "GoHighLevelCalendarEventCreateToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GoHighLevelContactCreateToolProviderDetails",
          "title": "GoHighLevelContactCreateToolProviderDetails"
        },
        {
          "$ref": "#/components/schemas/GoHighLevelContactGetToolProviderDetails",
          "title": "GoHighLevelContactGetToolProviderDetails"
        }
      ]
    },
    "metadata": {
      "$ref": "#/components/schemas/ToolTemplateMetadata"
    },
    "visibility": {
      "default": "private",
      "enum": [
        "public",
        "private"
      ],
      "type": "string"
    },
    "type": {
      "type": "string",
      "default": "tool",
      "enum": [
        "tool"
      ]
    },
    "name": {
      "type": "string",
      "description": "The name of the template. This is just for your own reference.",
      "maxLength": 40
    },
    "provider": {
      "enum": [
        "make",
        "gohighlevel",
        "function"
      ],
      "type": "string"
    },
    "id": {
      "type": "string",
      "description": "The unique identifier for the template."
    },
    "orgId": {
      "type": "string",
      "description": "The unique identifier for the organization that this template belongs to."
    },
    "createdAt": {
      "format": "date-time",
      "type": "string",
      "description": "The ISO 8601 date-time string of when the template was created."
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string",
      "description": "The ISO 8601 date-time string of when the template was last updated."
    }
  },
  "required": [
    "type",
    "id",
    "orgId",
    "createdAt",
    "updatedAt"
  ]
}