{
  "service": "freshsales",
  "displayName": "Freshsales",
  "categories": [
    "Marketing",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "freshsales_api_key",
      "description": "Freshworks CRM API key sent in the Authorization header. Find it from Profile Settings > API Settings as documented by Freshworks: https://crmsupport.freshworks.com/support/solutions/articles/50000002503-how-to-find-my-api-key-.",
      "extraFields": [
        {
          "key": "bundleAlias",
          "label": "Bundle Alias",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "your-company",
          "description": "Freshworks CRM bundle alias used to build https://<bundleAlias>.myfreshworks.com/crm/sales API requests. It appears below your API key in Profile Settings > API Settings."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.freshworks.com/crm/sales/",
  "actions": [
    {
      "id": "freshsales.create_contact",
      "service": "freshsales",
      "name": "create_contact",
      "description": "Create a Freshsales contact from a JSON contact payload.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Freshsales contact fields, including custom_field and related account payloads accepted by the API."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for creating a Freshsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Freshsales contact payload."
          }
        },
        "additionalProperties": false,
        "description": "Freshsales contact response wrapper."
      }
    },
    {
      "id": "freshsales.delete_contact",
      "service": "freshsales",
      "name": "delete_contact",
      "description": "Delete a Freshsales contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "minimum": 1,
            "description": "Freshsales contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for deleting a Freshsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "const": true,
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Freshsales delete contact response wrapper."
      }
    },
    {
      "id": "freshsales.get_contact",
      "service": "freshsales",
      "name": "get_contact",
      "description": "Get one Freshsales contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "minimum": 1,
            "description": "Freshsales contact ID."
          },
          "include": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "sales_activities",
                "owner",
                "creater",
                "updater",
                "source",
                "campaign",
                "tasks",
                "appointments",
                "notes",
                "deals",
                "sales_accounts",
                "territory"
              ],
              "description": "Non-deprecated Freshsales contact include handle."
            },
            "description": "Freshsales include values to expand on a contact response.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "contactId"
        ],
        "description": "Input parameters for reading a Freshsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Freshsales contact payload."
          }
        },
        "additionalProperties": false,
        "description": "Freshsales contact response wrapper."
      }
    },
    {
      "id": "freshsales.list_contact_filters",
      "service": "freshsales",
      "name": "list_contact_filters",
      "description": "List Freshsales contact filters used to discover contact view IDs.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for listing Freshsales contact filters."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "filters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Freshsales contact filter payload."
            },
            "description": "Freshsales contact filters available to the current API key."
          }
        },
        "additionalProperties": false,
        "description": "Freshsales contact filters response wrapper."
      }
    },
    {
      "id": "freshsales.list_contacts",
      "service": "freshsales",
      "name": "list_contacts",
      "description": "List Freshsales contacts from a saved contact view.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "viewId": {
            "type": "integer",
            "minimum": 1,
            "description": "Freshsales contact view ID returned by list_contact_filters."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "One-based Freshsales page number."
          }
        },
        "additionalProperties": false,
        "required": [
          "viewId"
        ],
        "description": "Input parameters for listing Freshsales contacts from a saved view."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Freshsales contact payload."
            },
            "description": "Freshsales contacts returned for the requested view page."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether another Freshsales contacts page is likely available."
          },
          "nextPage": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "description": "Next Freshsales page number when another page is available."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Freshsales contacts list response wrapper."
      }
    },
    {
      "id": "freshsales.update_contact",
      "service": "freshsales",
      "name": "update_contact",
      "description": "Update a Freshsales contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "minimum": 1,
            "description": "Freshsales contact ID."
          },
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Freshsales contact fields, including custom_field and related account payloads accepted by the API."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for updating a Freshsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Freshsales contact payload."
          }
        },
        "additionalProperties": false,
        "description": "Freshsales contact response wrapper."
      }
    }
  ]
}
