> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thedatacity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter companies

> Returns filtered companies and aggregations as host-defined JSON.



## OpenAPI

````yaml /global-api/us.openapi.json post /v1/us/companies
openapi: 3.1.0
info:
  title: The Data City — United States company data
  description: >-
    Company data for United States, served through The Data City public API
    gateway.


    Authenticate with an API key as a bearer token. Rate limit is 60 requests
    per minute per key. Call GET /v1/us/filters before filtering: sector codes
    and location values cannot be guessed, and an unrecognised value returns an
    empty result rather than an error.
  termsOfService: https://thedatacity.com/terms-and-conditions/
  contact:
    name: TDC Global Server United States
    email: hello@thedatacity.com
  version: v1
servers:
  - url: https://global-api.thedatacity.com
    description: Production
security:
  - ApiKey: []
tags:
  - name: Companies
  - name: Search
  - name: Filters
  - name: Lookups
  - name: Classification
  - name: Metadata
paths:
  /v1/us/companies:
    post:
      tags:
        - Companies
      summary: Filter companies
      description: Returns filtered companies and aggregations as host-defined JSON.
      operationId: us_post_companies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyFilters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FilteredCompanies'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: No API key was supplied, or it is not valid for this environment.
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Rate limit exceeded — 60 requests per minute per key. The
            retry-after header gives the number of seconds to wait.
          headers:
            retry-after:
              description: Seconds to wait before retrying.
              schema:
                type: integer
        '500':
          description: Internal Server Error
components:
  schemas:
    CompanyFilters:
      type: object
      properties:
        NAICS:
          type: array
          items:
            type: string
          description: >-
            Filter by specific NAICS codes (US business classification). Wire
            name `NAICS`.
          nullable: true
        Name:
          maxLength: 500
          minLength: 0
          type: string
          description: >-
            Filter by company name prefix, company number, or website.
            Domain-style needles (keep dots) match

            `Website` exactly or as a subdomain suffix; other needles still
            substring-match website via `contains`.
          nullable: true
        Country:
          maxLength: 100
          minLength: 0
          type: string
          description: Filter by country
          nullable: true
        EmployeeRange:
          maxLength: 20
          minLength: 0
          type: string
          description: Filter by employee range (e.g., "1-9", "10-49", "50-249", "250+")
          nullable: true
        LegalForm:
          maxLength: 150
          minLength: 0
          type: string
          description: >-
            Filter by legal form (e.g., "Corporation", "LLC", "Partnership",
            "Sole Proprietorship")
          nullable: true
        LegalForms:
          maxItems: 100
          type: array
          items:
            type: string
          description: >-
            Filter by one or more legal forms from `GET /api/filters`
            (`legalForms[].id`). Matches any listed form (OR).
          nullable: true
        HQPostcode:
          maxLength: 10
          minLength: 0
          pattern: ^[0-9]{5}$
          type: string
          description: Filter by headquarters postal code
          nullable: true
        DateOfIncorporation:
          type: string
          description: Filter by date of incorporation (exact match)
          format: date
          nullable: true
        IncorporationDateFrom:
          type: string
          description: Filter by minimum date of incorporation (inclusive)
          format: date
          nullable: true
        IncorporationDateTo:
          type: string
          description: Filter by maximum date of incorporation (inclusive)
          format: date
          nullable: true
        HasWebsite:
          type: boolean
          description: Filter companies that have a website
          nullable: true
        OperatingLocationAddresses:
          maxItems: 20
          type: array
          items:
            type: string
          description: Filter by operating location addresses (partial match)
          nullable: true
        MinTurnover:
          maximum: 9223372036854776000
          minimum: 0
          type: integer
          description: Minimum annual turnover in US dollars
          format: int64
          nullable: true
        MaxTurnover:
          maximum: 9223372036854776000
          minimum: 0
          type: integer
          description: Maximum annual turnover in US dollars
          format: int64
          nullable: true
        MinEBIT:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Minimum EBIT (Earnings Before Interest and Taxes) in US dollars
          format: int64
          nullable: true
        MaxEBIT:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Maximum EBIT (Earnings Before Interest and Taxes) in US dollars
          format: int64
          nullable: true
        MinNetIncome:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Minimum net income in US dollars
          format: int64
          nullable: true
        MaxNetIncome:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Maximum net income in US dollars
          format: int64
          nullable: true
        FinancialYearEnding:
          type: integer
          description: Filter by specific financial year ending
          format: int32
          nullable: true
        MinFinancialYearEnding:
          type: integer
          description: Minimum financial year ending
          format: int32
          nullable: true
        MaxFinancialYearEnding:
          type: integer
          description: Maximum financial year ending
          format: int32
          nullable: true
        AccountsType:
          maxLength: 50
          minLength: 0
          type: string
          description: Filter by accounts type (e.g., "Full", "Abbreviated", "Small")
          nullable: true
        RTICs:
          type: array
          items:
            type: string
          description: >-
            Filter by RTIC codes. Matches companies that have any of the
            specified RTIC codes.
          nullable: true
        RNAICS:
          type: array
          items:
            type: string
          description: >-
            Filter by RNAIC codes. Matches companies that have any of the
            specified RNAIC codes. Wire name `RNAICS`.
          nullable: true
        State:
          maxItems: 100
          type: array
          items:
            type: string
          description: >-
            Filter by state slug or display name from `GET /api/filters`
            (`states[].id` / `states[].name`), e.g. `new-york` or `New York`.
          nullable: true
        Zipcode:
          maxItems: 100
          type: array
          items:
            type: string
          description: Filter by zipcode
          nullable: true
        Town:
          maxItems: 1000
          type: array
          items:
            type: string
          description: Filter by town
          nullable: true
        Director:
          $ref: '#/components/schemas/DirectorFilterCriteria'
        LowerLatitude:
          maximum: 90
          minimum: -90
          type: number
          description: >-
            South edge of a geographic bounding box (minimum latitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        UpperLatitude:
          maximum: 90
          minimum: -90
          type: number
          description: >-
            North edge of a geographic bounding box (maximum latitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        LowerLongitude:
          maximum: 180
          minimum: -180
          type: number
          description: >-
            West edge of a geographic bounding box (minimum longitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        UpperLongitude:
          maximum: 180
          minimum: -180
          type: number
          description: >-
            East edge of a geographic bounding box (maximum longitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        HasWebText:
          type: boolean
          description: Filter by companies that have web text
          nullable: true
        Includes:
          maxItems: 5000
          type: array
          items:
            type: string
          description: >-
            Restrict results to these company numbers (`CompanyNumber IN
            (...)`).
          nullable: true
        Excludes:
          maxItems: 5000
          type: array
          items:
            type: string
          description: Exclude these company numbers (`CompanyNumber NOT IN (...)`).
          nullable: true
        WebTextPositiveKeywords:
          maxItems: 25
          type: array
          items:
            type: string
          description: >-
            Positive keywords matched against web text (BM25 when FTS index
            exists; otherwise ILIKE).
          nullable: true
        WebTextPositiveKeywordsOperator:
          pattern: ^(AND|OR)$
          type: string
          description: 'Combines positive keywords: AND (all) or OR (any).'
          nullable: true
        WebTextPositiveKeywordsMode:
          pattern: ^(AND|OR)$
          type: string
          description: >-
            Backward-compatible alias for
            TDC_Global_Server_API_US.Models.Filtering.Filters.WebTextPositiveKeywordsOperator.
          nullable: true
          deprecated: true
        WebTextNegativeKeywords:
          maxItems: 25
          type: array
          items:
            type: string
          description: 'Negative keywords: rows matching these are excluded.'
          nullable: true
        WebTextNegativeKeywordsOperator:
          pattern: ^(AND|OR)$
          type: string
          description: Combines negative keyword checks inside NOT (...).
          nullable: true
        WebTextNegativeKeywordsMode:
          pattern: ^(AND|OR)$
          type: string
          description: >-
            Backward-compatible alias for
            TDC_Global_Server_API_US.Models.Filtering.Filters.WebTextNegativeKeywordsOperator.
          nullable: true
          deprecated: true
        IncludeInsights:
          type: boolean
          description: >-
            When false, skips insight bucket aggregation. Omit or null for
            default (include insights).
          nullable: true
        IncludeTotalCount:
          type: boolean
          description: >-
            When false, skips total-count queries and omits `TotalCount` from
            the response. Omit or null for default (include total count).
          nullable: true
        IncludesLocations:
          type: boolean
          description: >-
            When true, nested location lists are loaded on each company. Default
            is false.
        Limit:
          maximum: 1000
          minimum: 1
          type: integer
          description: >-
            Maximum number of results to return (uses
            QueryConstants.MaxQueryLimit)
          format: int32
          nullable: true
        Offset:
          maximum: 2147483647
          minimum: 0
          type: integer
          description: 'Number of results to skip for pagination (default: 0)'
          format: int32
          nullable: true
        SortBy:
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/SortOption'
          description: Sort options for the results
          nullable: true
      additionalProperties: false
      description: >-
        Request model for filtering US companies with comprehensive search
        criteria
    FilteredCompanies:
      required:
        - Companies
      type: object
      properties:
        Companies:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedCompany'
          description: List of companies matching the filter criteria
          nullable: true
        Insights:
          $ref: '#/components/schemas/Insights'
        TotalCount:
          type: integer
          description: >-
            Total number of companies matching the filter criteria (before
            pagination). Omitted when not requested.
          format: int32
          nullable: true
      additionalProperties: false
      description: >-
        Response model containing filtered companies with pagination and
        insights
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    Problem:
      type: object
      description: Error response, following RFC 9457 (problem details for HTTP APIs).
      properties:
        type:
          type: string
          description: URI identifying the problem type.
        title:
          type: string
          description: Short, human-readable summary.
        status:
          type: integer
          description: HTTP status code.
        detail:
          type: string
          description: Explanation specific to this occurrence.
        instance:
          type: string
          description: The path that produced the error.
    DirectorFilterCriteria:
      type: object
      properties:
        LocalPnr:
          maxLength: 500
          minLength: 0
          type: string
          description: Exact local personal number (DE DuckDB `local_pnr`).
          nullable: true
        FirstName:
          maxLength: 500
          minLength: 0
          type: string
          description: First-name prefix (case-insensitive).
          nullable: true
        LastName:
          maxLength: 500
          minLength: 0
          type: string
          description: Last-name prefix (case-insensitive).
          nullable: true
        DateOfBirth:
          type: string
          description: Exact date of birth (DE DuckDB `date_of_birth`).
          format: date
          nullable: true
        FullName:
          maxLength: 500
          minLength: 0
          type: string
          description: Full-name prefix (case-insensitive; US DuckDB `FullName`).
          nullable: true
      additionalProperties: false
      description: >-
        Optional director filter values for `POST /api/companies` (`Director`)
        and
        M:TDC_Global_Server_API_Core.Classes.Configuration.DirectorFilterSql.Build(TDC_Global_Server_API_Core.Classes.Configuration.DirectorFilterCriteria,TDC_Global_Server_API_Core.Classes.Configuration.DirectorFilterProfile,System.String,System.String).
    SortOption:
      required:
        - Direction
        - Field
      type: object
      properties:
        Field:
          maxLength: 50
          minLength: 0
          type: string
          description: Column or logical field name to sort by.
        Direction:
          minLength: 1
          pattern: ^(ASC|DESC)$
          type: string
          description: '`ASC` or `DESC`.'
      additionalProperties: false
      description: Sort option for ordering query results.
    ProcessedCompany:
      required:
        - CompanyNumber
      type: object
      properties:
        Description:
          type: string
          description: Company description or business activity summary
          nullable: true
        LegalForm:
          type: string
          description: Legal form of the company
          nullable: true
        EmployeeRange:
          type: string
          description: Employee count range bucket label
          nullable: true
        RTICs:
          type: array
          items:
            $ref: '#/components/schemas/RTIC'
          description: >-
            Real-Time Industrial Classifications (RTIC) associated with the
            company.
          nullable: true
        LogoURL:
          type: string
          description: URL of the company logo
          nullable: true
        ScreenshotURL:
          type: string
          description: URL of the company screenshot
          nullable: true
        OperatingLocationsCount:
          type: integer
          description: >-
            Number of operating or group locations stored on the company row
            (without returning the full list).
          format: int32
          nullable: true
        CompanyNumber:
          minLength: 1
          type: string
          description: Unique company identifier from the data source
        Name:
          type: string
          description: Official company name
          nullable: true
        Website:
          type: string
          nullable: true
        Country:
          type: string
          description: Country where the company is registered (defaults to "USA")
          nullable: true
        Address:
          type: string
          description: Street address of the company headquarters
          nullable: true
        Town:
          type: string
          description: City or town where the company is located
          nullable: true
        State:
          type: string
          description: US state where the company is registered
          nullable: true
        Phone:
          type: string
          description: Primary business phone number
          nullable: true
        RegNumber:
          type: string
          description: Official registration number (e.g., EIN, state registration)
          nullable: true
        Zipcode:
          type: string
          description: US postal code (ZIP code)
          nullable: true
        Latitude:
          type: number
          description: Latitude of the company
          format: double
          nullable: true
        Longitude:
          type: number
          description: Longitude of the company
          format: double
          nullable: true
        CompaniesInGroup:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedCompanyLocation'
          description: >-
            List of subsidiary companies or business locations within the
            corporate group
          nullable: true
        Employees:
          type: integer
          description: Exact number of employees at this site (Infobel `EmployeesHere`).
          format: int32
          nullable: true
        EmployeesTotal:
          type: integer
          description: Total employees across the organisation (Infobel `EmployeesTotal`).
          format: int32
          nullable: true
        Turnover:
          type: integer
          description: Annual revenue/turnover in US dollars
          format: int64
          nullable: true
        FinancesByYear:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedFinancials'
          description: >-
            Annual financial history snapshots (year ending, employees,
            turnover). Wire name `FinancesByYear`.
          nullable: true
        BestEstimateGrowthPercentagePerYear:
          type: number
          description: >-
            Best estimate of annual turnover growth percentage (OLS over
            financial history; null when fewer than three valid years).
          format: double
          nullable: true
        Directors:
          type: array
          items:
            $ref: '#/components/schemas/CompanyDirector'
          description: >-
            Directors and executives from Infobel Exec01–11 (CEO appended only
            when not already listed).

            Shared TDC_Global_Server_API_Core.Models.CompanyDirector wire shape.
          nullable: true
        ActivityCode:
          type: string
          description: >-
            Primary NAICS code for the parent entity (Infobel `LocalCode01`).
            The full distinct union across the group remains in
            TDC_Global_Server_API_US.Models.ProcessedCompany.NAICs.
          nullable: true
        ActivityCodeName:
          type: string
          description: >-
            Display name for
            TDC_Global_Server_API_US.Models.ProcessedCompany.ActivityCode
            (Infobel `LocalLabel01`, else NAIC-Codes lookup).
          nullable: true
        SicCode:
          type: string
          description: >-
            Standard Industrial Classification code (Infobel
            `InternationalCode01`).
          nullable: true
        SicCodeName:
          type: string
          description: >-
            Display name for
            TDC_Global_Server_API_US.Models.ProcessedCompany.SicCode (Infobel
            `InternationalLabel01`).
          nullable: true
        NAICS:
          type: array
          items:
            type: string
          description: >-
            List of NAIC codes describing the company's operations. Wire name
            `NAICS`.
          nullable: true
        RNAICS:
          type: array
          items:
            $ref: '#/components/schemas/RNAIC'
          description: >-
            RNAIC (industry classification) data associated with the company.
            Wire name `RNAICS`.
          nullable: true
        SimilarCompanies:
          type: array
          items:
            $ref: '#/components/schemas/SimilarCompany'
          description: Similar companies to the current company
          nullable: true
      additionalProperties: false
      description: Processed US company data with comprehensive business information
    Insights:
      type: object
      properties:
        EmployeeRanges:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of employee ranges in the filtered results
          nullable: true
        LegalForms:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of legal forms in the filtered results
          nullable: true
        IncorporationDates:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of incorporation dates in the filtered results
          nullable: true
        RTICs:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: >-
            Distribution of Real-Time Industrial Classifications (RTIC) in the
            filtered results.
          nullable: true
        NAICS:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: >-
            Distribution of NAICS codes in the filtered results. Wire name
            `NAICS`.
          nullable: true
        Employees:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of employee counts in the filtered results
          nullable: true
        Turnover:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of turnover amounts in the filtered results
          nullable: true
        States:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of states in the filtered results
          nullable: true
        RNAICS:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of RNAICS in the filtered results. Wire name `RNAICS`.
          nullable: true
      additionalProperties: false
      description: Aggregated insights about filtered company data
    RTIC:
      type: object
      properties:
        CompanyNumber:
          type: string
          description: >-
            Company identifier (RTIC parquet key column, aliased to
            `CompanyNumber` in SQL).
          nullable: true
        SectorCode:
          type: string
          description: RTIC sector code.
          nullable: true
        SectorName:
          type: string
          description: RTIC sector name.
          nullable: true
        VerticalCode:
          type: string
          description: RTIC vertical code.
          nullable: true
        VerticalName:
          type: string
          description: RTIC vertical name.
          nullable: true
        Score:
          type: number
          description: Classification score from the RTIC model.
          format: double
          nullable: true
        WordsMatched:
          type: integer
          description: Number of words matched when classifying.
          format: int32
          nullable: true
        Name:
          type: string
          description: Optional display name (when present in source data).
          nullable: true
      additionalProperties: false
      description: >-
        Real-Time Industrial Classifications (RTIC) row. Parquet company id is
        selected as TDC_Global_Server_API_Core.Models.RTIC.CompanyNumber (see
        TDC_Global_Server_API_Core.Services.RTICService). JSON uses the property
        name `CompanyNumber`; country hosts may use different JSON names for the
        root company identifier (e.g. France exposes `Siren` on the company
        payload).
    ProcessedCompanyLocation:
      required:
        - CompanyNumber
      type: object
      properties:
        CompanyNumber:
          type: string
          description: Unique company identifier from the data source for this location
          nullable: true
        Name:
          type: string
          description: Official company name for this location
          nullable: true
        Website:
          type: string
          description: Company website URL for this location
          nullable: true
        Description:
          type: string
          description: Business description or summary of activities for this location
          nullable: true
        Country:
          type: string
          description: Country where this location is registered (defaults to "USA")
          nullable: true
        Address:
          type: string
          description: Street address of this specific location
          nullable: true
        Town:
          type: string
          description: City or town where this location is situated
          nullable: true
        State:
          type: string
          description: US state where this location is registered
          nullable: true
        Phone:
          type: string
          description: Primary business phone number for this location
          nullable: true
        RegNumber:
          type: string
          description: >-
            Official registration number for this location (e.g., EIN, state
            registration)
          nullable: true
        Zipcode:
          type: string
          description: US postal code (ZIP code) for this location
          nullable: true
        Latitude:
          type: number
          description: Latitude of the location
          format: double
          nullable: true
        Longitude:
          type: number
          description: Longitude of the location
          format: double
          nullable: true
        LegalForm:
          type: string
          description: >-
            Legal form of business entity for this location (e.g., Corporation,
            LLC, Partnership)
          nullable: true
        EmployeeRange:
          type: string
          description: >-
            Employee count range for this specific location (e.g., "1-10",
            "11-50", "51-200")
          nullable: true
        Employees:
          type: integer
          description: Exact number of employees at this location
          format: int32
          nullable: true
        Turnover:
          type: integer
          description: Annual revenue/turnover for this specific location in US dollars
          format: int64
          nullable: true
        FinancesByYear:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedFinancials'
          description: >-
            Annual financial history snapshots for this location (wire name
            `FinancesByYear`).

            DuckDB nested struct still uses `Financials`;
            TDC_Global_Server_API_US.Models.ProcessedCompanyLocation.Financials
            maps into this.
          nullable: true
        LogoURL:
          type: string
          description: >-
            Resolved logo URL derived from website (populated after loading from
            DuckDB).
          nullable: true
        ParentCompanyNumber:
          type: string
          description: >-
            Parent company number when this row is a location tied to a parent
            entity.
          nullable: true
        ParentCompanyName:
          type: string
          description: >-
            Parent company display name when
            TDC_Global_Server_API_US.Models.ProcessedCompanyLocation.ParentCompanyNumber
            is set.
          nullable: true
        ActivityCode:
          type: string
          description: Primary NAICS code for this location (Infobel `LocalCode01`).
          nullable: true
        ActivityCodeName:
          type: string
          description: >-
            Display name for
            TDC_Global_Server_API_US.Models.ProcessedCompanyLocation.ActivityCode
            (Infobel `LocalLabel01`, else NAIC-Codes lookup).
          nullable: true
        SicCode:
          type: string
          description: >-
            Standard Industrial Classification code for this location (Infobel
            `InternationalCode01`).
          nullable: true
        SicCodeName:
          type: string
          description: >-
            Display name for
            TDC_Global_Server_API_US.Models.ProcessedCompanyLocation.SicCode
            (Infobel `InternationalLabel01`).
          nullable: true
        NAICS:
          type: array
          items:
            type: string
          description: >-
            List of NAIC codes describing the operations at this location. Wire
            name `NAICS`.
          nullable: true
      additionalProperties: false
      description: Operating location information for a company
    ProcessedFinancials:
      type: object
      properties:
        YearEnding:
          type: integer
          description: Year ending for the financial data
          format: int32
        AccountsDate:
          type: string
          description: Date when the accounts were filed
          format: date
          nullable: true
        AccountsType:
          type: string
          description: Type of accounts (e.g., "Bilan", "Simplified")
          nullable: true
        Turnover:
          type: integer
          description: Annual turnover in euros
          format: int64
          nullable: true
        EBIT:
          type: integer
          description: Earnings Before Interest and Taxes in euros
          format: int64
          nullable: true
        NetIncome:
          type: integer
          description: Net income in euros
          format: int64
          nullable: true
        EmployeesHere:
          type: integer
          description: >-
            Employees at this site for the year (US Infobel history; omitted
            when absent).
          format: int32
          nullable: true
        EmployeesTotal:
          type: integer
          description: >-
            Total employees for the year (US Infobel history; omitted when
            absent).
          format: int32
          nullable: true
      additionalProperties: false
      description: Financial data for a company for a specific year
    CompanyDirector:
      type: object
      properties:
        FirstName:
          type: string
          description: Director or executive first name.
          nullable: true
        LastName:
          type: string
          description: Director or executive last name.
          nullable: true
        FullName:
          type: string
          description: Full display name when the source provides one (e.g. Infobel).
          nullable: true
        LocalPnr:
          type: string
          description: Local personal number / national id when available (e.g. DE PNR).
          nullable: true
        DateOfBirth:
          type: string
          description: Date of birth when available.
          format: date
          nullable: true
        DateOfChange:
          type: string
          description: Date the director record last changed when the source provides it.
          format: date
          nullable: true
        Active:
          type: boolean
          description: Whether the appointment is active when the source provides status.
          nullable: true
        Position:
          type: string
          description: Job title / position when available.
          nullable: true
        Gender:
          type: string
          description: Gender when available.
          nullable: true
        Language:
          type: string
          description: Language preference when available.
          nullable: true
      additionalProperties: false
      description: >-
        Shared company director / executive wire shape for hosts that expose
        `Directors`.

        Absent fields are omitted on write. DuckDB STRUCT JSON may use
        PascalCase or snake_case

        (TDC_Global_Server_API_Core.Utilities.CompanyDirectorJsonConverter).
        Country-specific extras (e.g. DE address)

        live on host subclasses.
    RNAIC:
      type: object
      properties:
        CompanyNumber:
          type: string
          description: Unique Company Number for the company
          nullable: true
        Code:
          type: string
          description: Code matching an NAIC code
          nullable: true
        Name:
          type: string
          description: Name/description of the NAIC code
          nullable: true
        Score:
          type: number
          description: >-
            Score indicating the relevance or match strength of this
            classification
          format: double
          nullable: true
      additionalProperties: false
      description: >-
        Model representing RNAIC (industry classification) data associated with
        US companies.

        Code matches an NAIC code; data is housed in a separate parquet file.
    SimilarCompany:
      required:
        - CompanyNumber
        - SimilarityScore
      type: object
      properties:
        CompanyNumber:
          type: string
          description: >-
            The similar company identifier (host-specific format, e.g. SIREN or
            US company number).
          nullable: true
        SimilarityScore:
          type: number
          description: Similarity score for this pair.
          format: double
      additionalProperties: false
      description: Represents a similarity score between two companies (US API).
    IDNameCount:
      required:
        - ID
      type: object
      properties:
        ID:
          type: string
          description: Stable identifier (code or bucket key).
          nullable: true
        Name:
          type: string
          description: Human-readable label.
          nullable: true
        Count:
          type: integer
          description: Occurrence count when applicable.
          format: int32
          nullable: true
        Children:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Child nodes for hierarchical classifications.
          nullable: true
      additionalProperties: false
      description: >-
        Hierarchical filter or bucket item with optional child nodes (NAF/NAIC
        trees, score bands, etc.).
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        An API key issued by The Data City, sent as: Authorization: Bearer
        YOUR_KEY

````