{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/contactout/main/json-schema/contactout-people-search-request-schema.json",
  "title": "PeopleSearchRequest",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/contactout-openapi-generated.yml#/components/schemas/PeopleSearchRequest",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the profile (text)"
    },
    "job_title": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of job titles. (array, max:50)"
    },
    "past_job_title": {
      "type": "array",
      "items": {},
      "description": "Returns profiles that held these job titles in past (non-current) roles. Cannot be combined with current_titles_only: false. Cannot be combined with match_experience when both job_title and company are set. (array, max:50)"
    },
    "job_function": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of job functions to filter profiles by their functional area (e.g., Engineering, Marketing, Sales, Finance). Accepted values list (array, max:50)"
    },
    "seniority": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of seniority levels to filter profiles by their career level. Accepted values list (array, max:50)"
    },
    "current_titles_only": {
      "type": "boolean",
      "default": "true",
      "description": "Returns profiles matching the current job title. If specified false, the response will return profiles matching the current or past job title. (boolean, default: true)"
    },
    "include_related_job_titles": {
      "type": "boolean",
      "default": "false",
      "description": "Returns profiles with related job titles (boolean, default: false)"
    },
    "match_experience": {
      "type": "string",
      "default": "current",
      "description": "Ensures job_title and company match in the same experience. current – Returns profiles that match the current experience.past – Returns profiles that match any past experience.both – Returns profiles matching either current or past experience.If set, current_titles_only and company_filter should not be used; otherwise, an error is returned. (string, default: current)"
    },
    "skills": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of skills (array, max:50)"
    },
    "languages": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of language objects. Each object must have a language field (required string) and optionally a proficiency field (array of strings). If proficiency is not provided, any proficiency level is accepted. Accepted values list for proficiency. (array, max:50)"
    },
    "education": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of schools/degrees (array, max:50)"
    },
    "educations": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of education objects. Each object can have optional fields: school_name (string), field_of_study (string), and location (string). At least one field must be provided. (array, max:50)"
    },
    "location": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of locations (array, max:50)"
    },
    "location_radius": {
      "type": "integer",
      "description": "Search radius in miles (1-500). Only works when location is provided and the location is a city / area. Filters profiles within the specified radius of the location. (integer)"
    },
    "current_work_location": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of location strings (cities or countries). Filters profiles who currently work in any of the specified locations. (array, max:50)"
    },
    "past_work_location": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of location strings (cities or countries). Filters profiles who previously worked in any of the specified locations. (array, max:50)"
    },
    "company": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of company names (array, max:50)"
    },
    "past_company": {
      "type": "array",
      "items": {},
      "description": "Returns profiles that worked at these companies in past (non-current) roles. Cannot be combined with company_filter set to past, past_only, or both. Cannot be combined with match_experience when both job_title and company are set. (array, max:50)"
    },
    "company_filter": {
      "type": "string",
      "default": "current",
      "description": "current – Returns profiles matching the current company name    past – Returns profiles matching any past company name  past_only – Returns profiles where the company appears in past experience and is not their current employer.  both – Returns profiles matching either current or past experience (string, default: current)"
    },
    "current_company_only": {
      "type": "boolean",
      "default": "true",
      "description": "Returns profiles matching the current company name (boolean, default: true)"
    },
    "domain": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of domains (array, max:50)"
    },
    "industry": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of industries. Prefix an industry with NOT to exclude it (e.g. \"NOT Computer Software\"). Accepted values list (array, max:50)"
    },
    "keyword": {
      "type": "string",
      "description": "Returns profiles that contain the mentioned keyword anywhere in their profile (text)"
    },
    "company_size": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of company size ranges. Accepted values list (array)"
    },
    "years_of_experience": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of ranges in the format X_Y where X and Y are integers representing the minimum and maximum years of experience. e.g. [\"2_5\", \"6_10\"] means 2-5 years OR 6-10 years. (array)"
    },
    "years_in_current_role": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of ranges in the format X_Y where X and Y are integers representing the minimum and maximum years in current role. e.g. [\"1_3\", \"4_6\"] means 1-3 years OR 4-6 years in current role. Cannot be used with recently_changed_jobs. (array)"
    },
    "recently_changed_jobs": {
      "type": "boolean",
      "default": "false",
      "description": "If set to true, returns profiles whose current job started within the last 3 calendar months. Cannot be used with years_in_current_role. (boolean, default: false)"
    },
    "is_currently_working": {
      "type": "boolean",
      "description": "If true, returns only profiles with an active current role. If false, returns only profiles with no active current role. Omit to return both. (boolean)"
    },
    "page": {
      "type": "integer",
      "description": "Provides results for the given page (integer)"
    },
    "page_size": {
      "type": "integer",
      "default": "25",
      "description": "Maximum number of profiles to return per page. Valid range is 1-25. When not provided, 25 profiles are returned. Search credits are charged only for the number of profiles returned. (integer, default: 25)"
    },
    "data_types": {
      "type": "array",
      "items": {},
      "description": "Returns profiles containing atleast one of the specified data types. It accepts an array of one more values from this list [personal_email, work_email, phone] (array)"
    },
    "reveal_info": {
      "type": "boolean",
      "default": "false",
      "description": "If set to true, contact_info will contain the emails and phone numbers of the profile and credits will be charged (boolean, default: false)"
    },
    "detailed_experience": {
      "type": "boolean",
      "default": "false",
      "description": "If set to true, the experience field returns detailed data like title, company_name, summary, start_date_year, start_date_month, end_date_year, end_date_month, is_current, linkedin_url, logo_url. If false, returns simple text strings. (boolean, default: false)"
    },
    "detailed_education": {
      "type": "boolean",
      "default": "false",
      "description": "If set to true, the education field returns detailed data like school_name, degree, field_of_study, description, start_date_year, end_date_year, url. If false, returns simple text strings. (boolean, default: false)"
    },
    "exclude_job_titles": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of job titles to exclude from results. (array)"
    },
    "exclude_companies": {
      "type": "array",
      "items": {},
      "description": "Accepts an array of company names to exclude from results. (array)"
    },
    "exclude_companies_filter": {
      "type": "string",
      "default": "both",
      "description": "Applies when exclude_companies is non-empty. current – Exclude if the company appears as the profile's current employer only.past – Exclude if it appears in past roles only.both – Exclude if it appears in either current or past experience. (string, default: both)"
    }
  },
  "required": [
    "education",
    "job_title",
    "keyword",
    "past_job_title",
    "skills"
  ]
}