{
  "openapi": "3.0.0",
  "info": {
    "title": "PrivCo API v3",
    "version": "1.5.0",
    "description": "Private-company data: identification, discovery search, profiles, financials, funding, M&A, people and contacts. Authenticate every request with the `x-api-key` header. Base URL: `https://api.privco.com/v3`.\n\nSupport: support@privco.com"
  },
  "servers": [
    {
      "url": "https://api.privco.com/v3",
      "description": "Production"
    }
  ],
  "security": [
    {
      "x-api-key": []
    }
  ],
  "tags": [],
  "paths": {
    "/match/{name}": {
      "get": {
        "description": "Search and match companies or investors by name or by website. This is the v3 equivalent of v2 `GET /search` and takes the same query string. One of `name` (path segment or query parameter) or `website` is required.",
        "operationId": "SearchController_match",
        "parameters": [
          {
            "name": "name",
            "required": false,
            "in": "query",
            "description": "Company or investor name to search, as a query parameter. Equivalent to the `:name` path segment, which takes priority when both are sent.",
            "schema": {
              "example": "Acme Corporation",
              "type": "string"
            }
          },
          {
            "name": "website",
            "required": false,
            "in": "query",
            "description": "Website domain to search. An ALTERNATIVE to `name`, not an additional filter \u2014 when a name is supplied the service matches on the name and ignores this value.",
            "schema": {
              "example": "acmecorp.com",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number, 1-based. 20 results per page; the response `meta` block carries `total_results`, `total_pages` and `current_page`. Applies to both the name and the website arm.",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "includeCityState",
            "required": false,
            "in": "query",
            "description": "Include city and state information in results",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "name",
            "required": true,
            "in": "path",
            "description": "Company or investor name to search. OpenAPI requires a path parameter to be declared required; the route itself declares the segment optional, so `GET /match?name=Acme` (no segment) is equally valid.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Matching results retrieved successfully"
          },
          "400": {
            "description": "Bad request - one of [name, website] is required"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Match companies or investors by name",
        "tags": [
          "Search"
        ]
      }
    },
    "/identification/company": {
      "post": {
        "description": "Resolve one company from whatever you know about it. Send the website as `url` (not `website`), and `country`/`state` as 2-letter codes. `mapping_strength` 5+ = strong match, 3-4 = weak, 2 or less = no match.",
        "operationId": "IdentificationController_identifyCompany",
        "parameters": [
          {
            "name": "index",
            "required": false,
            "in": "query",
            "description": "Optional. Omit to match companies and investors together.",
            "schema": {
              "enum": [
                "company",
                "investor"
              ],
              "type": "string"
            }
          },
          {
            "name": "company_only",
            "required": false,
            "in": "query",
            "description": "Optional. true = return company profiles only.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyInputDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns company matches sorted by relevance",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Identify a single company by its details",
        "tags": [
          "Identification"
        ]
      }
    },
    "/company_search": {
      "post": {
        "description": "Search for companies with advanced filtering options. Requires advancedSearch permission.\n\n**Paging:** 100 results per page. Only the first 10,000 results (pages 1-100) can be retrieved; a page beyond 100 returns an error even when `meta.total_pages` is larger, so narrow the filters until `meta.total_results` is 10,000 or fewer. **Unknown fields in the body are silently dropped**, so a misspelled filter returns unfiltered results - check `meta.total_results`.",
        "operationId": "SearchController_companySearch",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanySearchRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Company search results retrieved successfully"
          },
          "400": {
            "description": "Bad request - Invalid filter parameters"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Advanced company search",
        "tags": [
          "Search"
        ]
      }
    },
    "/funding_search": {
      "post": {
        "description": "Search M&A funding rounds with filtering by funding type, total USD, industry, keyword, location, and investor type. Requires funding_search permission.\n\n**Paging:** 100 results per page. Only the first 10,000 results (pages 1-100) can be retrieved; a page beyond 100 returns an error even when `meta.total_pages` is larger, so narrow the filters until `meta.total_results` is 10,000 or fewer. **Unknown fields in the body are silently dropped**, so a misspelled filter returns unfiltered results - check `meta.total_results`.",
        "operationId": "SearchController_fundingSearch",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FundingSearchRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Funding search results retrieved successfully"
          },
          "400": {
            "description": "Bad request - Invalid filter parameters"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Advanced funding-round search",
        "tags": [
          "Search"
        ]
      }
    },
    "/deal_search": {
      "post": {
        "description": "Search M&A deals with filtering by timestamp, total USD, buyer/seller/target industries, PE/VC-backed flags, and target location. Requires deal_search permission.\n\n**Paging:** 100 results per page. Only the first 10,000 results (pages 1-100) can be retrieved; a page beyond 100 returns an error even when `meta.total_pages` is larger, so narrow the filters until `meta.total_results` is 10,000 or fewer. **Unknown fields in the body are silently dropped**, so a misspelled filter returns unfiltered results - check `meta.total_results`.",
        "operationId": "SearchController_dealSearch",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DealSearchRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deal search results retrieved successfully"
          },
          "400": {
            "description": "Bad request - Invalid filter parameters"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Advanced M&A deal search",
        "tags": [
          "Search"
        ]
      }
    },
    "/people_search": {
      "post": {
        "description": "Search for people with advanced filtering options including location, seniority, department, and company attributes. Requires peopleSearch permission.\n\n**Paging:** 100 results per page. Only the first 10,000 results (pages 1-100) can be retrieved; a page beyond 100 returns an error even when `meta.total_pages` is larger, so narrow the filters until `meta.total_results` is 10,000 or fewer. **Unknown fields in the body are silently dropped**, so a misspelled filter returns unfiltered results - check `meta.total_results`.",
        "operationId": "SearchController_peopleSearch",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PeopleSearchRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "People search results retrieved successfully"
          },
          "400": {
            "description": "Bad request - Invalid filter parameters"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Advanced people search",
        "tags": [
          "Search"
        ]
      }
    },
    "/industry_keyword": {
      "get": {
        "description": "Search for industry keywords using prefix matching. Requires advancedSearch permission.",
        "operationId": "SearchController_industryKeyword",
        "parameters": [
          {
            "name": "query",
            "required": false,
            "in": "query",
            "description": "Search term prefix for keyword autocomplete",
            "schema": {
              "example": "tech",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Industry keyword results retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Search industry keywords",
        "tags": [
          "Search"
        ]
      }
    },
    "/industry_pics": {
      "get": {
        "description": "Search for industry pics using prefix matching. Returns all items if no search term provided. Requires advancedSearch permission.",
        "operationId": "SearchController_industryPics",
        "parameters": [
          {
            "name": "query",
            "required": false,
            "in": "query",
            "description": "Search term prefix for industry pics autocomplete",
            "schema": {
              "example": "tech",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Industry pics results retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Search industry pics",
        "tags": [
          "Search"
        ]
      }
    },
    "/profile/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves comprehensive profile data for a company, investor, or advisor (alias endpoint)",
        "operationId": "ProfileController_getProfiles",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile to retrieve",
            "schema": {
              "enum": [
                "company",
                "investor",
                "advisor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "example": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profile data retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Profile not found"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get profile information",
        "tags": [
          "Profile"
        ]
      }
    },
    "/general_profile/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves comprehensive profile data for a company, investor, or advisor",
        "operationId": "ProfileController_getGeneralProfiles",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile to retrieve",
            "schema": {
              "enum": [
                "company",
                "investor",
                "advisor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "example": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Profile data retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Profile not found"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get general profile information",
        "tags": [
          "Profile"
        ]
      }
    },
    "/financials/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves financial information for a company or investor. Each figure carries `is_estimated`: false = reported, true = PrivCo estimate, null = source not recorded.",
        "operationId": "FinanceController_getFinancials",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile",
            "schema": {
              "enum": [
                "company",
                "investor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "year",
            "required": false,
            "in": "query",
            "description": "Specific fiscal year",
            "schema": {
              "example": 2023,
              "type": "number"
            }
          },
          {
            "name": "title",
            "required": false,
            "in": "query",
            "description": "Financial data title/category",
            "schema": {
              "example": "Revenues",
              "type": "string"
            }
          },
          {
            "name": "info",
            "required": false,
            "in": "query",
            "description": "Additional information parameters",
            "schema": {
              "$ref": "#/components/schemas/Object"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Type of financial data (e.g., \"CURR\")",
            "schema": {
              "example": "CURR",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Financial data retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get financial data",
        "tags": [
          "Finance"
        ]
      }
    },
    "/revenue_financials/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves revenue-specific financial information for a company or investor. Each figure carries `is_estimated`: false = reported, true = PrivCo estimate, null = source not recorded.",
        "operationId": "FinanceController_getRevenueFinancials",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile",
            "schema": {
              "enum": [
                "company",
                "investor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "year",
            "required": false,
            "in": "query",
            "description": "Specific fiscal year",
            "schema": {
              "example": 2023,
              "type": "number"
            }
          },
          {
            "name": "title",
            "required": false,
            "in": "query",
            "description": "Financial data title/category (e.g., \"Revenues\")",
            "schema": {
              "example": "Revenues",
              "type": "string"
            }
          },
          {
            "name": "info",
            "required": false,
            "in": "query",
            "description": "Additional information parameters",
            "schema": {
              "$ref": "#/components/schemas/Object"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "description": "Type of financial data",
            "schema": {
              "example": "CURR",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Revenue financial data retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get revenue financial data",
        "tags": [
          "Finance"
        ]
      }
    },
    "/vc_deals/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves venture capital deal information for a company or investor (Target/Investor roles)",
        "operationId": "VcController_getVC",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile",
            "schema": {
              "enum": [
                "company",
                "investor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "ppp",
            "required": false,
            "in": "query",
            "description": "PPP loans: include (default), exclude, or only",
            "schema": {
              "enum": [
                "include",
                "exclude",
                "only"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "VC deals retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get VC deals",
        "tags": [
          "VC Deals"
        ]
      }
    },
    "/ma_deals/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves merger and acquisition deal information for a company or investor (Target/Buyer/Seller roles)",
        "operationId": "MaController_getMA",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile",
            "schema": {
              "enum": [
                "company",
                "investor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "example": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "M&A deals retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get M&A deals",
        "tags": [
          "M&A Deals"
        ]
      }
    },
    "/people/{profileType}/{profileId}": {
      "get": {
        "description": "Retrieves executives, board members, and key people associated with a company or investor",
        "operationId": "PeopleController_getPeople",
        "parameters": [
          {
            "name": "profileType",
            "required": true,
            "in": "path",
            "description": "Type of profile",
            "schema": {
              "enum": [
                "company",
                "investor",
                "advisor"
              ],
              "type": "string"
            }
          },
          {
            "name": "profileId",
            "required": true,
            "in": "path",
            "description": "Unique identifier of the profile",
            "schema": {
              "example": "12345",
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "example": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "People information retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Profile not found"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get people information",
        "tags": [
          "People"
        ]
      }
    },
    "/company_contact/{hash}": {
      "get": {
        "description": "Retrieves detailed company contact information including personal details, job titles, and contact methods",
        "operationId": "ContactController_getCompanyContact",
        "parameters": [
          {
            "name": "hash",
            "required": true,
            "in": "path",
            "description": "Unique hash identifier of the company contact",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company contact retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "403": {
            "description": "Forbidden - User has reached contact view limit"
          },
          "404": {
            "description": "Company contact not found"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get company contact by hash",
        "tags": [
          "Contact"
        ]
      }
    },
    "/investor_contact/{hash}": {
      "get": {
        "description": "Retrieves detailed investor contact information including personal details, job titles, and contact methods",
        "operationId": "ContactController_getInvestorContact",
        "parameters": [
          {
            "name": "hash",
            "required": true,
            "in": "path",
            "description": "Unique hash identifier of the investor contact",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Investor contact retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "403": {
            "description": "Forbidden - User has reached investor contact view limit"
          },
          "404": {
            "description": "Investor contact not found"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get investor contact by hash",
        "tags": [
          "Contact"
        ]
      }
    },
    "/usage": {
      "get": {
        "description": "Retrieves usage statistics including unique profiles accessed, points used, and quota information for the authenticated user",
        "operationId": "LoggerController_getHello",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Usage statistics retrieved successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          }
        },
        "security": [
          {
            "x-api-key": []
          }
        ],
        "summary": "Get API usage statistics",
        "tags": [
          "Usage & Logging"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "x-api-key": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    },
    "schemas": {
      "CompanyInputDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Company name. Required unless url is given (a URL alone is matched by domain)."
          },
          "dba": {
            "type": "string",
            "description": "Doing Business As names (separated by |)"
          },
          "url": {
            "type": "string",
            "description": "Company website URL"
          },
          "country": {
            "type": "string",
            "description": "Country (abbreviation, e.g. US)"
          },
          "state": {
            "type": "string",
            "description": "State (abbreviation, e.g. NY)"
          },
          "city": {
            "type": "string",
            "description": "City"
          },
          "reference_id": {
            "type": "string",
            "description": "Reference IDs (separated by | or ,)"
          },
          "address": {
            "type": "string",
            "description": "Address line 1"
          },
          "zip": {
            "type": "string",
            "description": "ZIP or postal code"
          },
          "phone": {
            "type": "string",
            "description": "Phone number"
          },
          "industry": {
            "type": "string",
            "description": "Industry"
          },
          "social_facebook": {
            "type": "string",
            "description": "Facebook URL"
          },
          "social_linkedin": {
            "type": "string",
            "description": "LinkedIn URL"
          },
          "social_twitter": {
            "type": "string",
            "description": "Twitter URL"
          },
          "classification": {
            "type": "string",
            "description": "Classification (e.g. Public, Private, Non-Profit)"
          },
          "clean_name": {
            "type": "string",
            "description": "Clean name (pre-processed)"
          },
          "fn": {
            "type": "string",
            "description": "Formal name"
          },
          "aka": {
            "type": "string",
            "description": "Also known as"
          },
          "linkedin_url": {
            "type": "string",
            "description": "LinkedIn URL specifically for LinkedIn matching"
          }
        }
      },
      "CompanySearchFiltersDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text match on company name"
          },
          "location": {
            "$ref": "#/components/schemas/LocationFilterDto"
          },
          "keyword": {
            "$ref": "#/components/schemas/KeywordFilterDto"
          },
          "industry": {
            "$ref": "#/components/schemas/IndustryFilterDto"
          },
          "revenue": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "employee": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "growth": {
            "$ref": "#/components/schemas/GrowthFilterDto"
          },
          "funding": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "yearFounded": {
            "$ref": "#/components/schemas/YearRangeDto"
          },
          "inclusionExclusion": {
            "$ref": "#/components/schemas/InclusionExclusionDto"
          },
          "latestEbitda": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "latestValuation": {
            "$ref": "#/components/schemas/ValuationRangeDto"
          },
          "latestFundingYear": {
            "$ref": "#/components/schemas/YearRangeDto"
          },
          "classification": {
            "type": "object",
            "properties": {
              "privateOnly": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "CompanySearchRequestDto": {
        "type": "object",
        "properties": {
          "filters": {
            "description": "Search filters for company search",
            "allOf": [
              {
                "$ref": "#/components/schemas/CompanySearchFiltersDto"
              }
            ]
          },
          "page": {
            "type": "number",
            "description": "Page number for pagination (1-indexed)",
            "example": 1,
            "minimum": 1
          },
          "sorting": {
            "description": "Sorting configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/CompanySearchSortingDto"
              }
            ]
          }
        }
      },
      "CompanySearchSortingDto": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field to sort by. Companies without a value sort last in either order. `revenue`, `valuation` and `latestFundingYear` need the same permission as their filter. An unknown field is ignored and the default order is used.",
            "enum": [
              "name",
              "state",
              "employee",
              "industry",
              "yearFounded",
              "totalFunding",
              "revenueGrowthRate1",
              "revenueGrowthRate3",
              "hasContact",
              "revenue",
              "valuation",
              "latestFundingYear"
            ],
            "example": "name"
          },
          "order": {
            "type": "string",
            "description": "Sort order; anything other than `desc` sorts ascending",
            "enum": [
              "asc",
              "desc"
            ],
            "example": "asc"
          }
        }
      },
      "DealInclusionExclusionDto": {
        "type": "object",
        "properties": {
          "targetsIsPeBacked": {
            "type": "string",
            "enum": [
              "include",
              "exclude"
            ]
          },
          "targetsIsVcBacked": {
            "type": "string",
            "enum": [
              "include",
              "exclude"
            ]
          }
        }
      },
      "DealSearchFiltersDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search term; matched across buyer/seller/target name fields."
          },
          "timestamp": {
            "$ref": "#/components/schemas/UnixSecondsRangeDto"
          },
          "totalInUsd": {
            "description": "Deal total USD range; supports includeMissing",
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericRangeDto"
              }
            ]
          },
          "buyersIndustries": {
            "description": "Industries of the deal buyers",
            "allOf": [
              {
                "$ref": "#/components/schemas/IndustryFilterDto"
              }
            ]
          },
          "sellersIndustries": {
            "description": "Industries of the deal sellers",
            "allOf": [
              {
                "$ref": "#/components/schemas/IndustryFilterDto"
              }
            ]
          },
          "targetsIndustries": {
            "description": "Industries of the deal targets",
            "allOf": [
              {
                "$ref": "#/components/schemas/IndustryFilterDto"
              }
            ]
          },
          "targetsIndustryKeywords": {
            "description": "Industry keywords attached to deal targets",
            "allOf": [
              {
                "$ref": "#/components/schemas/IndustryFilterDto"
              }
            ]
          },
          "isPeDeal": {
            "type": "boolean",
            "description": "When true/false, applies `is_pe_deal`. Interacts with inclusionExclusion / buyersAllOfType \u2014 see docs.md."
          },
          "inclusionExclusion": {
            "$ref": "#/components/schemas/DealInclusionExclusionDto"
          },
          "buyersAllOfType": {
            "type": "string",
            "description": "Require all buyers to share a single type. Ignored when isPeDeal is set.",
            "enum": [
              "Financial",
              "Private",
              "Public"
            ]
          },
          "location": {
            "description": "Location selection matched against targets_* location fields.",
            "allOf": [
              {
                "$ref": "#/components/schemas/LocationFilterDto"
              }
            ]
          }
        }
      },
      "DealSearchRequestDto": {
        "type": "object",
        "properties": {
          "filters": {
            "$ref": "#/components/schemas/DealSearchFiltersDto"
          },
          "page": {
            "type": "number",
            "minimum": 1,
            "example": 1
          },
          "sorting": {
            "$ref": "#/components/schemas/DealSearchSortingDto"
          }
        }
      },
      "DealSearchSortingDto": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "enum": [
              "timestamp"
            ],
            "example": "timestamp"
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "example": "desc"
          }
        }
      },
      "FundingSearchFiltersDto": {
        "type": "object",
        "properties": {
          "fundingTypes": {
            "description": "Funding type selection. Invalid tokens cause the whole filter to be ignored.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingTypesFilterDto"
              }
            ]
          },
          "timestamp": {
            "$ref": "#/components/schemas/UnixSecondsRangeDto"
          },
          "totalInUsd": {
            "description": "Funding total (USD). Use includeMissing=false to exclude rounds without a total.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericRangeDto"
              }
            ]
          },
          "industry": {
            "description": "Industry pics id filter",
            "allOf": [
              {
                "$ref": "#/components/schemas/IndustryFilterDto"
              }
            ]
          },
          "location": {
            "description": "Location filter (state / city / city-name / region)",
            "allOf": [
              {
                "$ref": "#/components/schemas/LocationFilterDto"
              }
            ]
          },
          "investorTypes": {
            "description": "Investor type selection",
            "allOf": [
              {
                "$ref": "#/components/schemas/InvestorTypesFilterDto"
              }
            ]
          },
          "keyword": {
            "description": "Industry keyword filter. Field is flat (industry_keyword_ids), not nested.",
            "allOf": [
              {
                "$ref": "#/components/schemas/KeywordFilterDto"
              }
            ]
          }
        }
      },
      "FundingSearchRequestDto": {
        "type": "object",
        "properties": {
          "filters": {
            "$ref": "#/components/schemas/FundingSearchFiltersDto"
          },
          "page": {
            "type": "number",
            "minimum": 1,
            "example": 1
          },
          "sorting": {
            "$ref": "#/components/schemas/FundingSearchSortingDto"
          }
        }
      },
      "FundingSearchSortingDto": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field to sort by. `fundingType` applies a dual-key sort on funding_type + round_description.",
            "enum": [
              "companyName",
              "timestamp",
              "totalInUsd",
              "fundingType"
            ],
            "example": "timestamp"
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "example": "desc"
          }
        }
      },
      "FundingTypesFilterDto": {
        "type": "object",
        "properties": {
          "selection": {
            "type": "array",
            "description": "Selection of funding type tokens",
            "example": [
              "equity_funding_A",
              "debt funding_financing"
            ],
            "items": {
              "type": "string",
              "enum": [
                "debt funding_financing",
                "grant or non-equityfunding",
                "equity_funding_any",
                "equity_funding_seed_angel",
                "equity_funding_incubator_university",
                "equity_funding_A",
                "equity_funding_B",
                "equity_funding_C",
                "equity_funding_D",
                "equity_funding_E",
                "equity_funding_F",
                "equity_funding_G",
                "equity_funding_H"
              ]
            }
          }
        }
      },
      "GrowthFilterDto": {
        "type": "object",
        "properties": {
          "revenue": {
            "$ref": "#/components/schemas/GrowthItemDto"
          },
          "employee": {
            "$ref": "#/components/schemas/GrowthItemDto"
          }
        }
      },
      "GrowthItemDto": {
        "type": "object",
        "required": [
          "duration"
        ],
        "properties": {
          "min": {
            "type": "integer",
            "description": "Growth rate, percent"
          },
          "max": {
            "type": "integer",
            "description": "Growth rate, percent"
          },
          "duration": {
            "type": "integer",
            "enum": [
              1,
              3
            ],
            "description": "1- or 3-year rate"
          }
        }
      },
      "InclusionExclusionDto": {
        "type": "object",
        "properties": {
          "pe": {
            "type": "string",
            "enum": [
              "include",
              "exclude"
            ]
          },
          "vc": {
            "type": "string",
            "enum": [
              "include",
              "exclude"
            ]
          },
          "subsidiary": {
            "type": "string",
            "enum": [
              "include",
              "exclude"
            ]
          }
        }
      },
      "IndustryFilterDto": {
        "type": "object",
        "description": "Industry (PICS) ids from GET /industry_pics.",
        "properties": {
          "selection": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              73
            ]
          }
        }
      },
      "InvestorTypesFilterDto": {
        "type": "object",
        "properties": {
          "selection": {
            "description": "Selection of investor type names (e.g. \"Venture Capital\", \"Accelerator\")",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "KeywordFilterDto": {
        "type": "object",
        "required": [
          "condition"
        ],
        "description": "Industry keyword ids from GET /industry_keyword.",
        "properties": {
          "selection": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "example": [
              281
            ]
          },
          "condition": {
            "type": "string",
            "enum": [
              "should",
              "must"
            ],
            "description": "`should` = any keyword, `must` = all keywords."
          }
        }
      },
      "LocationFilterDto": {
        "type": "object",
        "properties": {
          "selection": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocationSelectionDto"
            }
          }
        }
      },
      "LocationSelectionDto": {
        "type": "object",
        "required": [
          "type",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "state",
              "city",
              "city-name",
              "region"
            ]
          },
          "value": {
            "type": "string",
            "example": "New York",
            "description": "Full US state name for type=state (e.g. `New York`, not `NY`)."
          },
          "radius": {
            "type": "string",
            "example": "25mi",
            "description": "1mi-100mi, city only"
          }
        }
      },
      "NumericRangeDto": {
        "type": "object",
        "description": "Numeric range (whole USD, or a count).",
        "properties": {
          "min": {
            "type": "integer",
            "minimum": 0
          },
          "max": {
            "type": "integer",
            "minimum": 0
          },
          "includeMissing": {
            "type": "boolean",
            "description": "Include records with no value for this field (default true)."
          }
        }
      },
      "Object": {
        "type": "object",
        "properties": {}
      },
      "PeopleSearchFiltersDto": {
        "type": "object",
        "description": "Person fields, plus the same company filters as company_search (applied to the person's company).",
        "properties": {
          "queryFirstName": {
            "type": "string"
          },
          "queryLastName": {
            "type": "string"
          },
          "queryJobTitles": {
            "type": "string"
          },
          "queryAssociated": {
            "type": "string",
            "description": "Company or investor name"
          },
          "seniorityLevels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "Cxo"
            ]
          },
          "departments": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "yearLastSeen": {
            "$ref": "#/components/schemas/YearRangeDto"
          },
          "location": {
            "$ref": "#/components/schemas/LocationFilterDto"
          },
          "keyword": {
            "$ref": "#/components/schemas/KeywordFilterDto"
          },
          "industry": {
            "$ref": "#/components/schemas/IndustryFilterDto"
          },
          "revenue": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "employee": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "growth": {
            "$ref": "#/components/schemas/GrowthFilterDto"
          },
          "funding": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "yearFounded": {
            "$ref": "#/components/schemas/YearRangeDto"
          },
          "inclusionExclusion": {
            "$ref": "#/components/schemas/InclusionExclusionDto"
          },
          "latestEbitda": {
            "$ref": "#/components/schemas/NumericRangeDto"
          },
          "latestValuation": {
            "$ref": "#/components/schemas/ValuationRangeDto"
          },
          "latestFundingYear": {
            "$ref": "#/components/schemas/YearRangeDto"
          },
          "privateCompanyOnly": {
            "type": "boolean"
          },
          "investorOnly": {
            "type": "boolean"
          }
        }
      },
      "PeopleSearchRequestDto": {
        "type": "object",
        "properties": {
          "filters": {
            "$ref": "#/components/schemas/PeopleSearchFiltersDto"
          },
          "page": {
            "type": "integer",
            "minimum": 1
          },
          "sorting": {
            "$ref": "#/components/schemas/PeopleSearchSortingDto"
          }
        }
      },
      "PeopleSearchSortingDto": {
        "type": "object",
        "required": [
          "field",
          "order"
        ],
        "properties": {
          "field": {
            "type": "string",
            "enum": [
              "yearLastSeen",
              "firstName",
              "lastName",
              "seniorityLevel",
              "department",
              "associatedName",
              "state",
              "industry"
            ]
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        }
      },
      "UnixSecondsRangeDto": {
        "type": "object",
        "description": "Unix timestamp range in SECONDS (not milliseconds).",
        "properties": {
          "min": {
            "type": "integer",
            "example": 1767225600
          },
          "max": {
            "type": "integer",
            "example": 1798761599
          }
        }
      },
      "ValuationRangeDto": {
        "type": "object",
        "properties": {
          "min": {
            "type": "integer",
            "minimum": 0
          },
          "max": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "YearRangeDto": {
        "type": "object",
        "properties": {
          "min": {
            "type": "integer",
            "minimum": 1900,
            "maximum": 2100
          },
          "max": {
            "type": "integer",
            "minimum": 1900,
            "maximum": 2100
          },
          "includeMissing": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
