{
  "service": "upsales",
  "displayName": "Upsales",
  "categories": [
    "Marketing",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "upsales_api_key",
      "description": "Upsales API key sent as the token query parameter. Admin users can manage API keys in Upsales settings; see the official API documentation: https://api.upsales.com/.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.upsales.com/",
  "actions": [
    {
      "id": "upsales.create_company",
      "service": "upsales",
      "name": "create_company",
      "description": "Create an Upsales company using the official accounts endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "company": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Upsales company JSON payload using official account fields such as name, phone, webpage, users, or custom."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for creating an Upsales company."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "company": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales company response."
      },
      "followUpActions": [
        "upsales.get_company"
      ]
    },
    {
      "id": "upsales.create_contact",
      "service": "upsales",
      "name": "create_contact",
      "description": "Create an Upsales contact using the official contacts endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Upsales contact JSON payload using official contact fields such as firstName, lastName, name, email, phone, title, active, client, or custom."
          },
          "usingFirstnameLastname": {
            "type": "boolean",
            "description": "Whether Upsales should interpret firstName and lastName fields when creating the contact."
          }
        },
        "additionalProperties": false,
        "required": [
          "contact"
        ],
        "description": "Request parameters for creating an Upsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales contact response."
      },
      "followUpActions": [
        "upsales.get_contact"
      ]
    },
    {
      "id": "upsales.delete_company",
      "service": "upsales",
      "name": "delete_company",
      "description": "Delete an Upsales company by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales company ID."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for deleting an Upsales company."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the delete request completed with a successful HTTP status."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Upsales delete response."
      }
    },
    {
      "id": "upsales.delete_contact",
      "service": "upsales",
      "name": "delete_contact",
      "description": "Delete an Upsales contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for deleting an Upsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether the delete request completed with a successful HTTP status."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Upsales delete response."
      }
    },
    {
      "id": "upsales.get_company",
      "service": "upsales",
      "name": "get_company",
      "description": "Read one Upsales company by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales company ID."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for reading one Upsales company."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "company": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales company response."
      },
      "followUpActions": [
        "upsales.update_company",
        "upsales.delete_company"
      ]
    },
    {
      "id": "upsales.get_contact",
      "service": "upsales",
      "name": "get_contact",
      "description": "Read one Upsales contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for reading one Upsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales contact response."
      },
      "followUpActions": [
        "upsales.update_contact",
        "upsales.delete_contact"
      ]
    },
    {
      "id": "upsales.get_current_user",
      "service": "upsales",
      "name": "get_current_user",
      "description": "Read the Upsales user associated with the authenticated API token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required to read the current Upsales user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Current Upsales user response."
      }
    },
    {
      "id": "upsales.get_user",
      "service": "upsales",
      "name": "get_user",
      "description": "Read one Upsales user by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales user ID."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for reading one Upsales user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales user response."
      }
    },
    {
      "id": "upsales.list_companies",
      "service": "upsales",
      "name": "list_companies",
      "description": "List Upsales companies with optional pagination and official query filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000,
            "description": "Maximum number of records to return, from 1 to 2000."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records to skip before returning results."
          },
          "filters": {
            "type": "object",
            "additionalProperties": {
              "description": "The filter value to send as an Upsales query parameter."
            },
            "description": "Additional Upsales filter query parameters keyed by official API field name, such as user.id or scoreUpdateDate."
          },
          "includeExternal": {
            "type": "boolean",
            "description": "Whether to include external companies in the result set."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for listing Upsales companies."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Upsales entity fields returned by the API."
            },
            "description": "Upsales companies returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Upsales companies list response."
      },
      "followUpActions": [
        "upsales.get_company",
        "upsales.create_contact"
      ]
    },
    {
      "id": "upsales.list_contacts",
      "service": "upsales",
      "name": "list_contacts",
      "description": "List Upsales contacts with optional pagination and official query filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000,
            "description": "Maximum number of records to return, from 1 to 2000."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records to skip before returning results."
          },
          "filters": {
            "type": "object",
            "additionalProperties": {
              "description": "The filter value to send as an Upsales query parameter."
            },
            "description": "Additional Upsales filter query parameters keyed by official API field name, such as user.id or scoreUpdateDate."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for listing Upsales contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Upsales entity fields returned by the API."
            },
            "description": "Upsales contacts returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Upsales contacts list response."
      },
      "followUpActions": [
        "upsales.get_contact",
        "upsales.update_contact"
      ]
    },
    {
      "id": "upsales.list_users",
      "service": "upsales",
      "name": "list_users",
      "description": "List Upsales users with optional pagination and official query filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2000,
            "description": "Maximum number of records to return, from 1 to 2000."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of records to skip before returning results."
          },
          "filters": {
            "type": "object",
            "additionalProperties": {
              "description": "The filter value to send as an Upsales query parameter."
            },
            "description": "Additional Upsales filter query parameters keyed by official API field name, such as user.id or scoreUpdateDate."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for listing Upsales users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Upsales entity fields returned by the API."
            },
            "description": "Upsales users returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Upsales users list response."
      }
    },
    {
      "id": "upsales.update_company",
      "service": "upsales",
      "name": "update_company",
      "description": "Update an Upsales company by ID using the official accounts endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales company ID."
          },
          "company": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Upsales company JSON payload using official account fields such as name, phone, webpage, users, or custom."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for updating an Upsales company."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "company": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales company response."
      },
      "followUpActions": [
        "upsales.get_company"
      ]
    },
    {
      "id": "upsales.update_contact",
      "service": "upsales",
      "name": "update_contact",
      "description": "Update an Upsales contact by ID using the official contacts endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "The Upsales contact ID."
          },
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Upsales contact JSON payload using official contact fields such as firstName, lastName, name, email, phone, title, active, client, or custom."
          },
          "usingFirstnameLastname": {
            "type": "boolean",
            "description": "Whether Upsales should interpret firstName and lastName fields when updating the contact."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "contact"
        ],
        "description": "Request parameters for updating an Upsales contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Upsales entity fields returned by the API."
          },
          "raw": {
            "description": "Raw Upsales response payload."
          }
        },
        "additionalProperties": false,
        "description": "Single Upsales contact response."
      },
      "followUpActions": [
        "upsales.get_contact"
      ]
    }
  ]
}
