{
  "service": "apollo",
  "displayName": "Apollo",
  "categories": [
    "Marketing",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "APOLLO_API_KEY",
      "description": "Apollo API key sent with the x-api-key header. Create it in Settings > Integrations > API Keys: https://docs.apollo.io/docs/create-api-key. The first-pass actions require a master API key.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.apollo.io",
  "actions": [
    {
      "id": "apollo.enrich_organization",
      "service": "apollo",
      "name": "enrich_organization",
      "description": "Enrich an Apollo organization by domain.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "The bare company domain used to enrich an Apollo organization."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for the Apollo organization enrichment request."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organization": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "An arbitrary JSON object returned by Apollo."
          }
        },
        "additionalProperties": false,
        "description": "The output payload for the Apollo organization enrichment request."
      }
    },
    {
      "id": "apollo.enrich_person",
      "service": "apollo",
      "name": "enrich_person",
      "description": "Enrich an Apollo person with the first-pass matching inputs.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Apollo person identifier."
          },
          "email": {
            "type": "string",
            "description": "The person's email address.",
            "format": "email"
          },
          "hashedEmail": {
            "type": "string",
            "minLength": 1,
            "description": "The hashed email used for Apollo person matching."
          },
          "linkedinUrl": {
            "type": "string",
            "minLength": 1,
            "description": "The LinkedIn profile URL used for Apollo person matching."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The full name used for Apollo person matching."
          },
          "firstName": {
            "type": "string",
            "minLength": 1,
            "description": "The first name used for Apollo person matching."
          },
          "lastName": {
            "type": "string",
            "minLength": 1,
            "description": "The last name used for Apollo person matching."
          },
          "organizationName": {
            "type": "string",
            "minLength": 1,
            "description": "The organization name paired with name-based person matching."
          },
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "The bare organization domain paired with person matching."
          },
          "revealPersonalEmails": {
            "type": "boolean",
            "description": "Whether Apollo should reveal personal-email data when available."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for the Apollo person enrichment request.",
        "anyOf": [
          {
            "required": [
              "id"
            ]
          },
          {
            "required": [
              "email"
            ]
          },
          {
            "required": [
              "hashedEmail"
            ]
          },
          {
            "required": [
              "linkedinUrl"
            ]
          },
          {
            "required": [
              "name"
            ]
          },
          {
            "required": [
              "firstName",
              "lastName"
            ]
          }
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "person": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "An arbitrary JSON object returned by Apollo."
          }
        },
        "additionalProperties": false,
        "description": "The output payload for the Apollo person enrichment request."
      }
    },
    {
      "id": "apollo.get_api_usage_stats",
      "service": "apollo",
      "name": "get_api_usage_stats",
      "description": "Retrieve Apollo API usage statistics for the current team and key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "usage": {
            "type": "object",
            "properties": {
              "teamId": {
                "type": "string",
                "description": "The Apollo team identifier."
              },
              "credits": {
                "type": "object",
                "properties": {
                  "used": {
                    "type": "number",
                    "description": "The number of credits already used."
                  },
                  "limit": {
                    "type": "number",
                    "description": "The credit limit for the current usage period."
                  },
                  "remaining": {
                    "type": "number",
                    "description": "The number of credits remaining in the current usage period."
                  }
                },
                "additionalProperties": false,
                "description": "The normalized Apollo credit usage summary."
              },
              "endpoints": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "An arbitrary JSON object returned by Apollo."
                },
                "description": "A list of arbitrary JSON objects returned by Apollo."
              },
              "usagePeriodStart": {
                "type": "string",
                "description": "The start timestamp of the current usage period."
              },
              "usagePeriodEnd": {
                "type": "string",
                "description": "The end timestamp of the current usage period."
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "An arbitrary JSON object returned by Apollo."
              }
            },
            "additionalProperties": false,
            "required": [
              "credits",
              "endpoints",
              "raw"
            ],
            "description": "The normalized Apollo usage stats payload."
          }
        },
        "additionalProperties": false,
        "description": "The output payload for the Apollo usage stats request."
      }
    },
    {
      "id": "apollo.search_organizations",
      "service": "apollo",
      "name": "search_organizations",
      "description": "Search Apollo organizations with the first-pass organization filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "The 1-based page number to request."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to request per page."
          },
          "organizationIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "Apollo organization IDs used to scope the search.",
            "minItems": 1
          },
          "organizationName": {
            "type": "string",
            "minLength": 1,
            "description": "The organization name query used for partial company-name matching."
          },
          "organizationLocations": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The organization headquarters locations to include in the search.",
            "minItems": 1
          },
          "excludedOrganizationLocations": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The organization headquarters locations to exclude from the search.",
            "minItems": 1
          },
          "organizationDomains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The bare company domains used to restrict the organization search.",
            "minItems": 1
          },
          "organizationKeywordTags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The organization industry or specialization keywords used to refine the search.",
            "minItems": 1
          },
          "organizationEmployeeRanges": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The employee-count ranges expressed as Apollo 'min,max' strings.",
            "minItems": 1
          },
          "organizationRevenueMin": {
            "type": "integer",
            "minimum": 0,
            "description": "The minimum annual revenue, in US dollars, used to refine the organization search."
          },
          "organizationRevenueMax": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum annual revenue, in US dollars, used to refine the organization search."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for the Apollo organization search request."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organizations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "An arbitrary JSON object returned by Apollo."
            },
            "description": "The matched Apollo organizations."
          },
          "pagination": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "An arbitrary JSON object returned by Apollo."
          },
          "breadcrumbs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "An arbitrary JSON object returned by Apollo."
            },
            "description": "A list of arbitrary JSON objects returned by Apollo."
          }
        },
        "additionalProperties": false,
        "required": [
          "organizations"
        ],
        "description": "The output payload for the Apollo organization search request."
      }
    },
    {
      "id": "apollo.search_people",
      "service": "apollo",
      "name": "search_people",
      "description": "Search Apollo people with the first-pass prospecting filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "The 1-based page number to request."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of records to request per page."
          },
          "keywords": {
            "type": "string",
            "minLength": 1,
            "description": "The Apollo keywords string used to refine the people search."
          },
          "personTitles": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The current job titles to include in the people search.",
            "minItems": 1
          },
          "includeSimilarTitles": {
            "type": "boolean",
            "description": "Whether Apollo should include titles similar to the supplied person titles."
          },
          "organizationIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The Apollo organization IDs used to scope the people search.",
            "minItems": 1
          },
          "personLocations": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The person locations to include in the search.",
            "minItems": 1
          },
          "personSeniorities": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The person seniority values to include in the search.",
            "minItems": 1
          },
          "contactEmailStatus": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The Apollo contact-email-status values to include.",
            "minItems": 1
          },
          "organizationLocations": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The organization headquarters locations used to refine the people search.",
            "minItems": 1
          },
          "organizationDomains": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The organization domains used to refine the people search.",
            "minItems": 1
          },
          "organizationEmployeeRanges": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A filter value."
            },
            "description": "The employee-count ranges expressed as Apollo 'min,max' strings.",
            "minItems": 1
          },
          "organizationRevenueMin": {
            "type": "integer",
            "minimum": 0,
            "description": "The minimum annual revenue, in US dollars, used to refine the people search."
          },
          "organizationRevenueMax": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum annual revenue, in US dollars, used to refine the people search."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for the Apollo people search request."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "people": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "An arbitrary JSON object returned by Apollo."
            },
            "description": "The matched Apollo people search results."
          },
          "pagination": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "An arbitrary JSON object returned by Apollo."
          }
        },
        "additionalProperties": false,
        "required": [
          "people"
        ],
        "description": "The output payload for the Apollo people search request."
      }
    }
  ]
}
