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

# Put a lead search behind a table

> Give a table its lead search. A table with none gets this one and runs it once: results append beneath the table's existing rows, and `first_run` says what was added. Enrichments are optional here: the destination table is the user's own and may already carry the columns they want. A people search leaves out the people already in the workspace's other tables unless `include_people_already_in_tables` is set, and says how many it skipped. A table that already has a search has its criteria replaced without running them; `enrichments` and `include_people_already_in_tables` are ignored then, `first_run` is null and nothing is charged. A caller that means only one of the two says so in `only`, and the other is refused rather than done.



## OpenAPI

````yaml /openapi.json put /tables/{table_id}/lead-search/
openapi: 3.1.0
info:
  contact:
    email: support@getoneprofile.ai
    name: Oneprofile Support
  description: >-
    REST API reference for Oneprofile, the GTM data layer for your CRM. Manage
    tables, enrichments, and integrations. Authenticate with an API key to get
    started.
  termsOfService: https://www.getoneprofile.ai/terms
  title: API Reference | Oneprofile
  version: '0.0'
servers:
  - url: https://api.getoneprofile.ai
security: []
tags:
  - description: >-
      The docked AI Assistant: its general chat about the workspace and the
      product, streamed as Server-Sent Events, and the one list of a person's
      threads across every assistant, with pin, rename, delete and the
      search-to-table link.
    name: assistant
  - description: >-
      The messages a person keeps to send the assistant again: the ones the
      workspace saved and the ones that ship with the product, with save,
      rename, edit and delete.
    name: assistant-prompt
  - description: >-
      Granted workspace actions: what the AI Assistant proposed or applied in a
      conversation, the approve and dismiss decisions on each card, the
      workspace's spend threshold and default grants, and the eight verbs.
    name: workspace-actions
  - description: >-
      The Getting started checklist: a workspace's progress through the six
      steps from its first people search to its first launched sequence.
    name: onboarding
  - description: Senders, connected mailboxes, tags, and the Google connect flow.
    name: senders
  - description: The workspace do-not-contact list, enforced before every send.
    name: suppression
  - description: >-
      The workspace's recontact rule: how long before anyone hears from us
      again.
    name: contact_cooldown
  - description: 'Sequence authoring: the graph, the table-backed audience, previews.'
    name: sequences
  - description: >-
      The outbound agent behind a sequence: the voice it writes in, its
      per-message prompts, what it wrote and what people told it.
    name: outbound-agents
  - description: >-
      The LinkedIn channel: connecting an account to a sender, its safety limits
      and history, and the protocol the browser extension speaks.
    name: linkedin
  - description: >-
      The approval queue: everything waiting on a person across every sender and
      channel, and the workspace's manual or automatic modes per channel.
    name: outreach
  - description: 'The unified outreach inbox: threads, replies, labels, events.'
    name: inbox
  - description: 'The AI reply layer: workspace settings, drafts, and approval.'
    name: inbox-ai
  - description: Notification rules, per-user preferences, and the Slack connection.
    name: notifications
  - description: Endpoints for seeing all available integration types.
    name: integration-types
  - description: Endpoints for creating and managing integrations.
    name: integrations
  - description: Endpoints for the generic OAuth install/claim app-listings engine.
    name: app-listings
  - description: Endpoints for creating and managing API keys.
    name: apikey
  - description: >-
      AI apps connected to the workspace: Claude, ChatGPT, Claude Code or any
      other MCP client a person signed in to Oneprofile's MCP server with.
    name: ai_apps
  - description: Endpoints for managing billing and subscription information.
    name: billing
  - description: Endpoints for creating and managing tables.
    name: tables
  - description: Endpoints for table columns, formula previews, and on-demand column runs.
    name: table-columns
  - description: Endpoints for table rows and manual cell edits.
    name: table-rows
  - description: Endpoints for observing and cancelling table recompute runs.
    name: table-runs
  - description: >-
      Endpoints for org-shared per-column display preferences: hidden, pinned,
      width, and colour tint.
    name: table-ui-prefs
  - description: >-
      Endpoints for the org-shared names given to the column tint palette: what
      this organisation calls each colour. Org-level, not per-table.
    name: table-column-color-labels
  - description: >-
      Endpoints for the enrichment action catalog, model list, presets, draft
      generation, and saved agents.
    name: table-enrichments
  - description: >-
      Endpoints for an agent's Preview: example rows run one at a time, and a
      Looks good on each. Needs work lives under agent-learnings.
    name: agent-training
  - description: >-
      An agent's learnings, the one-line rules it follows on every output, and
      the thumbs down that teaches them: give one with what was wrong, list the
      ones on a subject, Undo one, and price the redo it would run.
    name: agent-learnings
  - description: >-
      The durable audit trail of a table's enrichment actions: configured,
      edited, run, cancelled, and settled cost.
    name: table-enrichment-audit-logs
  - description: Endpoints for saving and applying column templates.
    name: table-templates
  - description: Server-sent change feed for a table's grid.
    name: table-events
  - description: 'Endpoints for org-shared saved table views: sort, filters, hidden columns.'
    name: table-views
  - description: >-
      Endpoints for PER-USER table preferences: favourites and recently opened.
      Unlike the rest of the table surface these are personal, so two members of
      one organisation legitimately see different answers.
    name: table-user-prefs
  - description: >-
      Endpoints for building a table from an uploaded CSV: upload and preview
      the inferred columns, commit the reviewed mapping, then poll the row load.
    name: table-imports
  - description: Endpoint for downloading a table's rows as CSV.
    name: table-export
  - description: >-
      Endpoints for the integration a table imports from: attach and preview it,
      promote imported fields into columns, and run the import on demand.
    name: table-sources
  - description: >-
      Endpoints for a table's recurring import cadence: set it, pause it, and
      read the next fire times.
    name: table-schedules
  - description: >-
      Endpoints for pushing a table's rows out to a connected integration: list
      writable destinations, derive their write capabilities, and map export
      columns.
    name: table-writeback
  - description: >-
      Endpoints backing a lookup column's setup: the connections whose records a
      column could read, and the identity fields one record type can be looked
      up by.
    name: table-integration-lookup
  - description: >-
      Endpoints for sourcing leads from the lead database: count and preview
      matches, land them in a table, and keep saved searches. Alongside people
      and company searches, leads can be sourced from buying signals (what a
      company or person just did), with a catalogue endpoint behind the picker
      that builds them.
    name: find-leads
  - description: >-
      Endpoints for discovering a domain's subdomains from public certificate
      logs and landing the results in a table.
    name: find-subdomains
  - description: Endpoints for the credit balance meter and usage reporting.
    name: credits
  - description: >-
      Endpoints for the workspace referral program: the shareable link, the
      friends who joined through it, and claiming a code after signup.
    name: referral
  - description: >-
      Endpoints for the affiliate program's own dashboard: enrolling and
      claiming a code, the summary, stats and activity feed, the commission
      ledger, and identity verification and payouts.
    name: affiliate
  - description: >-
      Endpoints for recording where a new workspace came from: the marketing
      page or campaign its signup link carried, sent once after signup.
    name: attribution
  - description: >-
      Endpoints for the design partner program's customer surface: whether this
      workspace is a design partner, the badges its feedback has earned, and
      sending and reading that feedback.
    name: design-partner
  - description: >-
      Endpoints for the org-level AI business context (company description,
      ideal customer profile, buyer personas, interest signals and social
      proof), plus domain-based generation and the reference documents whose
      summaries ride alongside those fields.
    name: ai-context
  - description: >-
      Endpoints for the signed-in user's Google Drive connection: starting and
      finishing the OAuth grant, checking or dropping it, and minting the
      short-lived token the Google Picker needs.
    name: google-drive
paths:
  /tables/{table_id}/lead-search/:
    put:
      tags:
        - find-leads
      summary: Put a lead search behind a table
      description: >-
        Give a table its lead search. A table with none gets this one and runs
        it once: results append beneath the table's existing rows, and
        `first_run` says what was added. Enrichments are optional here: the
        destination table is the user's own and may already carry the columns
        they want. A people search leaves out the people already in the
        workspace's other tables unless `include_people_already_in_tables` is
        set, and says how many it skipped. A table that already has a search has
        its criteria replaced without running them; `enrichments` and
        `include_people_already_in_tables` are ignored then, `first_run` is null
        and nothing is charged. A caller that means only one of the two says so
        in `only`, and the other is refused rather than done.
      operationId: update_table_search
      parameters:
        - in: path
          name: table_id
          required: true
          schema:
            format: uuid
            title: Table Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutTableLeadSearchRequestSchema'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TableLeadSearchResponseSchema'
          description: Successful Response
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '402':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentRequiredResponse'
          description: Not enough credits to enrich the rows this would land.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Table not found, or `only` is `replace` and the table has no search.
        '409':
          description: >-
            The table already has a search: `only` is `attach`, or another
            attach landed first.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Invalid request made to the API.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Internal server error.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderFailureResponseSchema'
          description: The lead database refused the query.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
          description: Service unavailable.
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    PutTableLeadSearchRequestSchema:
      description: |-
        The body for putting a lead search behind a table.

        A table with none gets this one and runs it once, appending its results
        beneath the rows the table holds. A table that has one has its criteria
        replaced and nothing runs. ``only`` holds the request to one of the two,
        for a caller that read the table's state a moment before and must not do
        the other when that state changed since.
      properties:
        backlinks:
          anyOf:
            - $ref: '#/components/schemas/BacklinksQuerySchema'
            - type: 'null'
        companies:
          anyOf:
            - $ref: '#/components/schemas/CompanyQuerySchema'
            - type: 'null'
        enrichments:
          description: >-
            What to find out about the rows this adds. Each becomes its own
            column, and each is billed per row that comes back with an answer.
          items:
            $ref: '#/components/schemas/LeadEnrichmentOption'
          maxItems: 4
          title: Enrichments
          type: array
        hiring_companies:
          anyOf:
            - $ref: '#/components/schemas/HiringCompaniesQuerySchema'
            - type: 'null'
        include_people_already_in_tables:
          default: false
          description: >-
            A people search only. By default it leaves out the people who
            already have a row in one of the workspace's other tables, and keeps
            looking until enough new people are added; the response says how
            many it skipped. Set true to add them again.
          title: Include People Already In Tables
          type: boolean
        local_businesses:
          anyOf:
            - $ref: '#/components/schemas/LocalBusinessQuerySchema'
            - type: 'null'
        lookalikes:
          anyOf:
            - $ref: '#/components/schemas/LookalikeQuerySchema'
            - type: 'null'
        only:
          anyOf:
            - enum:
                - attach
                - replace
              type: string
            - type: 'null'
          description: >-
            Hold the request to one of its two effects. `attach` puts the search
            behind a table that has none and runs it, and answers 409 when the
            table has one. `replace` changes the criteria of the search the
            table has, and answers 404 when it has none, so nothing runs and
            nothing is charged. Leave it out to do whichever fits.
          title: Only
        people:
          anyOf:
            - $ref: '#/components/schemas/PeopleQuerySchema'
            - type: 'null'
        post_authors:
          anyOf:
            - $ref: '#/components/schemas/PostAuthorsQuerySchema'
            - type: 'null'
        record_type:
          $ref: '#/components/schemas/LeadRecordType'
        row_limit:
          anyOf:
            - maximum: 1000000
              minimum: 1
              type: integer
            - type: 'null'
          description: >-
            Rows to add. Clamped further by the organisation's plan cap; omit
            for the maximum.
          title: Row Limit
        search_results:
          anyOf:
            - $ref: '#/components/schemas/SearchResultsQuerySchema'
            - type: 'null'
        signal_companies:
          anyOf:
            - $ref: '#/components/schemas/SignalCompaniesQuerySchema'
            - type: 'null'
        signal_people:
          anyOf:
            - $ref: '#/components/schemas/SignalPeopleQuerySchema'
            - type: 'null'
      required:
        - record_type
      title: PutTableLeadSearchRequestSchema
      type: object
    TableLeadSearchResponseSchema:
      description: >-
        A table's lead search as a PUT left it, and the first run when the PUT
        started one.
      properties:
        first_run:
          anyOf:
            - $ref: '#/components/schemas/LeadSearchRunResponseSchema'
            - type: 'null'
          description: >-
            What the first run added, when the table had no search and this
            request attached one and ran it. Null when the table already had a
            search: its criteria were replaced and nothing ran or was charged.
        max_rows_per_search:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            The data source's own ceiling on one run of this search, before the
            plan's rows per table: the count's `max_rows_per_search`. Null when
            the source has none of its own. One run with `more_rows` adds no
            more than this, the room left in the table, or 1,000.
          title: Max Rows Per Search
        next_run_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Next Run At
        query:
          additionalProperties: true
          title: Query
          type: object
        record_type:
          $ref: '#/components/schemas/LeadRecordType'
        row_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Row Limit
        schedule_at_minutes:
          anyOf:
            - type: integer
            - type: 'null'
          title: Schedule At Minutes
        schedule_cadence:
          anyOf:
            - $ref: '#/components/schemas/LeadSearchCadence'
            - type: 'null'
        schedule_every_days:
          anyOf:
            - type: integer
            - type: 'null'
          title: Schedule Every Days
        schedule_starts_on:
          anyOf:
            - format: date
              type: string
            - type: 'null'
          description: >-
            The first day the schedule may run, in its own timezone; null when
            it started at once.
          title: Schedule Starts On
        schedule_timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Schedule Timezone
        table_id:
          format: uuid
          title: Table Id
          type: string
        updated_at:
          format: date-time
          title: Updated At
          type: string
      required:
        - table_id
        - record_type
        - query
        - row_limit
        - schedule_cadence
        - schedule_every_days
        - schedule_at_minutes
        - schedule_timezone
        - next_run_at
        - updated_at
      title: TableLeadSearchResponseSchema
      type: object
    UnauthorizedResponse:
      properties:
        detail:
          description: The detail of why the request is unauthorized.
          title: Detail
          type: string
      required:
        - detail
      title: UnauthorizedResponse
      type: object
    PaymentRequiredResponse:
      properties:
        detail:
          description: The detail of why payment is required.
          title: Detail
          type: string
      required:
        - detail
      title: PaymentRequiredResponse
      type: object
    ForbiddenResponse:
      properties:
        detail:
          description: The detail of why the request is forbidden.
          title: Detail
          type: string
      required:
        - detail
      title: ForbiddenResponse
      type: object
    NotFoundResponse:
      properties:
        detail:
          description: The detail of why the resource was not found.
          title: Detail
          type: string
      required:
        - detail
      title: NotFoundResponse
      type: object
    UnprocessableEntityResponse:
      properties:
        detail:
          description: >-
            The detail of the error. This is the error message to show to the
            user. You should also use the issues field to show more detailed
            error messages per field. Use this field for a single liner error
            message.
          title: Detail
          type: string
        issues:
          description: >-
            The issues that caused the error. There can be multiple issues. Each
            issue is a user-facing error message.
          items:
            $ref: '#/components/schemas/UnprocessableEntityIssue'
          title: Issues
          type: array
      required:
        - detail
        - issues
      title: UnprocessableEntityResponse
      type: object
    ServerErrorResponse:
      properties:
        detail:
          description: The detail of why the server returned an error.
          title: Detail
          type: string
      required:
        - detail
      title: ServerErrorResponse
      type: object
    ProviderFailureResponseSchema:
      description: >-
        A customer-safe refusal from the lead-search provider itself, not the
        request.


        Every field here is written to be read on its own: the request was well

        formed and the filters were not the problem (see
        ``_as_provider_failure``,

        which builds this shape). Documented on the routes that raise it, so a

        generic 5xx handler can tell this apart from an unexpected server
        failure

        and relay it rather than hiding it.
      properties:
        error_code:
          description: Our own classification of the failure.
          title: Error Code
          type: string
        filter_errors:
          description: >-
            Every filter the provider complained about, in the order it named
            them.
          items:
            $ref: '#/components/schemas/ProviderFilterErrorSchema'
          title: Filter Errors
          type: array
        message:
          description: What went wrong, safe to show as-is.
          title: Message
          type: string
        retryable:
          description: Whether trying the same query again might succeed.
          title: Retryable
          type: boolean
      required:
        - message
        - error_code
        - retryable
        - filter_errors
      title: ProviderFailureResponseSchema
      type: object
    BacklinksQuerySchema:
      description: >-
        The sites linking to a domain or a page.


        Name the target and get one row per referring site by default, sorted by

        the rank the link passes. Every attribute of a backlink the index can

        filter on is here, in four groups: the referring site, the referring

        page, the link itself, and the page it points at. The index takes at
        most

        eight filter conditions in one search, counting every value of every
        list

        as one; a ninth is refused rather than dropped.
      properties:
        alt_texts:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words an image link's alt text contains.
        anchors:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the anchor text contains.
        backlink_rank:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The rank the link passes to the target, on the scale chosen.
        dofollow:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only links that pass (or do not pass) rank.
        domain_rank:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The referring site's rank, on the scale chosen.
        exclude_internal:
          default: true
          description: Whether links from the target's own subdomains are left out.
          title: Exclude Internal
          type: boolean
        first_seen_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only links first found on or after this day, as YYYY-MM-DD.
          title: First Seen After
        first_seen_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only links first found on or before this day, as YYYY-MM-DD.
          title: First Seen Before
        group_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            How many links the referring site carries in all, when rows are one
            per site.
        image_urls:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words an image link's image URL contains.
        include_subdomains:
          default: true
          description: Whether links to the target's subdomains count.
          title: Include Subdomains
          type: boolean
        indirect_path_types:
          description: >-
            How an indirect link reaches the target: redirect or canonical. Any
            of them.
          items:
            enum:
              - redirect
              - canonical
            type: string
          maxItems: 8
          title: Indirect Path Types
          type: array
        is_broken:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only links pointing at a page that answers an error (or not).
        is_indirect:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: >-
            Only links reaching the target through a redirect or canonical (or
            not).
        is_lost:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only links that have been removed (or not).
        is_new:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only links first found on the last visit (or not).
        last_seen_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only links last seen on or after this day, as YYYY-MM-DD.
          title: Last Seen After
        last_seen_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only links last seen on or before this day, as YYYY-MM-DD.
          title: Last Seen Before
        link_types:
          anyOf:
            - $ref: '#/components/schemas/BacklinkLinkTypesFilterSchema'
            - type: 'null'
          description: >-
            How the link is made: anchor, image, meta, canonical, alternate or
            redirect.
        linked_domains:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Domains the links point at, matched exactly.
        linked_spam_score:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The linked page's spam score, 0 to 100.
        linked_status_code:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The HTTP status the linked page answered.
        linked_url_https:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only links pointing at an HTTPS page (or not).
        linked_urls:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the linked page's URL contains.
        links_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many identical links the referring page carries.
        mode:
          $ref: '#/components/schemas/BacklinkMode'
          default: one_per_domain
          description: >-
            What one row is: one_per_domain keeps one link per referring site
            (the default, and the one that makes a table of leads); as_is keeps
            every link; one_per_anchor keeps one per anchor text.
        original:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only links present on the page's first visit (or not).
        page_encodings:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Character encodings of the referring page, like utf-8.
        page_external_links:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many external links the referring page carries.
        page_internal_links:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many internal links the referring page carries.
        page_keywords_top_10:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many keywords the referring page ranks in the top 10 for.
        page_keywords_top_100:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many keywords the referring page ranks in the top 100 for.
        page_keywords_top_3:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many keywords the referring page ranks in the top 3 for.
        page_languages:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Languages of the referring page, as ISO 639-1 codes.
        page_rank:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The referring page's rank, on the scale chosen.
        page_size_bytes:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The referring page's size, in bytes.
        page_status_code:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The HTTP status the referring page answered.
        page_titles:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the referring page's title contains.
        per_field:
          anyOf:
            - $ref: '#/components/schemas/BacklinkGroupField'
            - type: 'null'
          description: >-
            Keep a fixed number of links per value of this attribute instead of
            using mode: domain_from for a few links per referring site, anchor
            for a few per anchor text. Needs per_field_limit.
        per_field_limit:
          anyOf:
            - maximum: 1000
              minimum: 1
              type: integer
            - type: 'null'
          description: How many links to keep per value of per_field.
          title: Per Field Limit
        prev_seen_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only links whose visit before last was on or after this day, as
            YYYY-MM-DD.
          title: Prev Seen After
        prev_seen_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only links whose visit before last was on or before this day, as
            YYYY-MM-DD.
          title: Prev Seen Before
        rank_scale:
          $ref: '#/components/schemas/RankScale'
          default: one_hundred
          description: >-
            The scale the three ranks are reported and filtered on: 0 to 100
            (the default) or 0 to 1000.
        redirect_targets:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the redirect's final URL contains.
        referring_countries:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: >-
            Countries of the referring site, as ISO alpha-2 codes or picker
            names.
        referring_domain_is_ip:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only referring sites that are (or are not) a bare IP address.
        referring_domains:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Referring sites, by host, matched exactly.
        referring_ips:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: IP addresses of the referring site.
        referring_platform_types:
          description: >-
            Kinds of referring site to keep, any of them: cms, blogs, ecommerce,
            message-boards, wikis, news, organization or unknown. There is no
            exclude.
          items:
            enum:
              - cms
              - blogs
              - ecommerce
              - message-boards
              - wikis
              - news
              - organization
              - unknown
            type: string
          maxItems: 8
          title: Referring Platform Types
          type: array
        referring_tlds:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Top-level domains of the referring site, like com or edu.
        referring_url_https:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only referring pages served over HTTPS (or not).
        referring_urls:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the referring page's URL contains.
        semantic_locations:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: >-
            The HTML element the link sits in: article, section, footer, nav and
            so on.
        sort_by:
          $ref: '#/components/schemas/BacklinkSortKey'
          default: backlink_rank
          description: >-
            Which attribute orders the rows, and so which rows an import keeps
            when more match than it adds. Backlink rank by default.
        sort_descending:
          default: true
          description: Highest or latest first.
          title: Sort Descending
          type: boolean
        spam_score:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The link's spam score, 0 to 100.
        status:
          $ref: '#/components/schemas/BacklinkStatus'
          default: live
          description: >-
            Which links are returned and counted: live (still found on the last
            visit, the default), lost, or all.
        target:
          anyOf:
            - maxLength: 2048
              type: string
            - type: 'null'
          description: >-
            The site whose backlinks to find: a domain or subdomain written bare
            (acme.com, blog.acme.com), or a page as its whole URL. Required;
            nothing else can anchor a backlink search.
          title: Target
        text_after:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the text just after the link contains.
        text_before:
          anyOf:
            - $ref: '#/components/schemas/BacklinkValuesFilterSchema'
            - type: 'null'
          description: Words the text just before the link contains.
      title: BacklinksQuerySchema
      type: object
    CompanyQuerySchema:
      description: Filters for a company search.
      properties:
        category:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            What the site says the company does, read by the search rather than
            declared.
        cities:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Headquarters cities.
        company_type:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The company's type, one of: Privately Held, Public Company,
            Self-Employed, Self-Owned, Partnership, Nonprofit, Educational or
            Government Agency. Matched case-insensitively; any other value is
            refused rather than quietly matching nothing.
        countries:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Headquarters countries, written out in full.
        department_headcount:
          anyOf:
            - $ref: '#/components/schemas/TeamHeadcountFilterSchema'
            - type: 'null'
          description: >-
            How many employees work in one department, for example at least 10
            in Engineering and Technical. Reaches about half the companies. The
            team to count is one of: Administrative, Consulting, Customer
            Service, Design, Education, Engineering and Technical, Finance &
            Accounting, General Management, Human Resources, Legal, Marketing,
            Medical, Operations, Other, Product, Project Management, Real
            Estate, Research, Sales or Trades.
        domain:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: The company's website domain, as stripe.com.
        enriched_keywords:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            What the company offers, products and services, as read off its
            site.
        exclude_expired_domains:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Excludes companies whose website domain has expired.
        executive_joined_within:
          anyOf:
            - $ref: '#/components/schemas/ExecutiveChangeWindow'
            - type: 'null'
          description: >-
            Companies where an executive joined inside this window: past_month,
            past_quarter or past_year.
        executive_left_within:
          anyOf:
            - $ref: '#/components/schemas/ExecutiveChangeWindow'
            - type: 'null'
          description: >-
            Companies where an executive left inside this window: past_month,
            past_quarter or past_year.
        executive_titles:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Narrows the executive changes above to these roles, for example
            Chief Revenue Officer. On its own, matches a company where someone
            joined in one of these roles.
        followers:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many followers the company's professional profile has.
        founded:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The year the company was founded.
        funding_round_types:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The type of the last round raised, for example Seed or Series A.
            Funding coverage is thin, so this narrows hard.
        funding_rounds_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many funding rounds the company has raised in all.
        has_api_docs:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company publishes API documentation.
        has_demo:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company offers a demo.
        has_free_trial:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company offers a free trial.
        has_mobile_apps:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company has mobile apps.
        has_online_reviews:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company has reviews on review sites.
        has_pricing_page:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company's website has a pricing page.
        has_website:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company has a website.
        headcount:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The company's employee count.
        headcount_growth:
          anyOf:
            - $ref: '#/components/schemas/GrowthFilterSchema'
            - type: 'null'
          description: >-
            Headcount change as a percentage band, over the past month (1month),
            3 months (3months) or 12 months (12months). The 6- and 24-month
            windows are refused.
        identifier:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Specific companies, as domains, LinkedIn company URLs, LinkedIn
            vanity names or numeric LinkedIn ids, mixed freely.
        industry:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The company's industry, from the lead database's fixed industry
            list. Matched case-insensitively; a value outside the list is
            refused and the nearest entry is named.
        is_b2b:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company sells to businesses, by the index's own reading.
        is_downloadable:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company offers software to download and install.
        is_saas:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether the company sells software as a service.
        keyword:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Words in the company's description.
        last_funding_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only companies whose last round closed on or after this day, as
            YYYY-MM-DD.
          title: Last Funding After
        last_funding_amount:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            The size of the last round raised, in US dollars. Rounds reported in
            another currency are left out.
        last_funding_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only companies whose last round closed on or before this day, as
            YYYY-MM-DD.
          title: Last Funding Before
        linkedin_id:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: The company's numeric LinkedIn id.
        linkedin_slug:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: The company's LinkedIn vanity name, as in acme-inc.
        location:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Where the company's headquarters are. A country may be written as
            its name or its alpha-2 code; both are sent as the code. A comma
            narrows a city to its country, as in Paris, France; several values
            are alternatives.
        name:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: The company's name, the brand it goes by.
        office_cities:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Cities the company has any office in, not just its headquarters.
        office_countries:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Countries the company has any office in, not just its headquarters.
        office_states:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            States or provinces the company has any office in, not just its
            headquarters.
        post_keyword:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Words in the company's posts on the professional network, within
            posted_within.
        post_reactions:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many reactions one of the company's posts drew.
        posted_within:
          anyOf:
            - $ref: '#/components/schemas/CompanyPostWindow'
            - type: 'null'
          description: >-
            Companies that posted on the professional network inside this
            window: past_week, past_month, past_quarter or past_year.
        revenue:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            Annual revenue in US dollars. A company matches when any of its
            revenue estimates falls inside the range. Only about one company in
            thirteen carries an estimate, so this narrows hard.
        seniority_headcount:
          anyOf:
            - $ref: '#/components/schemas/TeamHeadcountFilterSchema'
            - type: 'null'
          description: >-
            How many employees sit at one seniority, for example at least 3
            Directors. Reaches about half the companies. The team to count is
            one of: C-Level, Director, Founder, Head, Intern, Manager, Owner,
            Partner, President/Vice President, Senior, Specialist or Vice
            President.
        size_bands:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Headcount as a band, one of: Myself Only, 1-10 employees, 11-50
            employees, 51-200 employees, 201-500 employees, 501-1000 employees,
            1001-5000 employees, 5001-10,000 employees or 10,001+ employees.
            Offered beside the numeric headcount, not instead of it.
        social_networks:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Companies with a profile on any of these networks: facebook,
            instagram, youtube, x, twitter, tiktok, reddit, pinterest, github or
            discord. Matched case-insensitively; any other value is refused.
        specialities:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Categories and keywords filed on the company's profile.
        states:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Headquarters states or provinces, written out in full.
        technologies:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Technologies the company's website runs. Reaches only the companies
            whose site has been read, about one in six, so expect a smaller
            result than other filters give.
        technology_first_seen_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only count a technology FIRST seen on or after this day, as
            YYYY-MM-DD.
          title: Technology First Seen After
        technology_verified_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only count a technology still seen on or after this day, as
            YYYY-MM-DD.
          title: Technology Verified After
        unique_domain_only:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Excludes companies sharing a domain, which collapse into one row.
      title: CompanyQuerySchema
      type: object
    LeadEnrichmentOption:
      description: >-
        An enrichment offered at import, in the user's vocabulary not the
        catalog's.


        Each option names an outcome and resolves to the curated enrichment that

        delivers it, so importing leads stays a question about what you want

        rather than about who supplies it.


        Kept as its own enum rather than reusing the capability keys directly:

        the import page offers a deliberately short list, and which enrichments

        belong on it is a product decision that should not change every time the

        catalog gains a capability.
      enum:
        - find_email
        - find_phone
        - enrich_contact
        - enrich_company
      title: LeadEnrichmentOption
      type: string
    HiringCompaniesQuerySchema:
      description: |-
        Filters for a search for companies with open roles matching a job title.

        The rows are companies, one per employer, each carrying every open
        posting the search read for it. The count is of open postings, since the
        companies are folded from them once they are read.
      properties:
        cities:
          description: Cities the roles are based in. Up to 20.
          items:
            type: string
          maxItems: 20
          title: Cities
          type: array
        company_domains:
          description: Only roles at these employers, by website domain. Up to 100.
          items:
            type: string
          maxItems: 100
          title: Company Domains
          type: array
        company_funded_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only employers whose last round closed on or after this day, as
            YYYY-MM-DD.
          title: Company Funded After
        company_funding_amount:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The size of the employer's last round, in US dollars.
        company_funding_round_types:
          description: >-
            The type of the employer's last funding round, for example Seed or
            Series A.
          items:
            type: string
          maxItems: 20
          title: Company Funding Round Types
          type: array
        company_technologies:
          description: >-
            Only employers whose website runs one of these technologies, for
            example HubSpot. Up to 20.
          items:
            type: string
          maxItems: 20
          title: Company Technologies
          type: array
        countries:
          description: >-
            Countries the roles are based in, by full name the way a posting
            spells it: United States, not US. Up to 20.
          items:
            type: string
          maxItems: 20
          title: Countries
          type: array
        departments:
          description: >-
            The role's department, from the same list the people search uses,
            for example Sales or Engineering and Technical. Any other value is
            refused.
          items:
            type: string
          maxItems: 20
          title: Departments
          type: array
        employee_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The employer's headcount.
        industries:
          description: >-
            Only employers in these industries, each matched as a phrase in the
            employer's industry name. Up to 25.
          items:
            type: string
          maxItems: 25
          title: Industries
          type: array
        job_functions:
          description: >-
            The role's job functions, for example Sales, Information Technology
            or Software Development, each matched as a phrase. Up to 20.
          items:
            type: string
          maxItems: 20
          title: Job Functions
          type: array
        job_title:
          anyOf:
            - $ref: '#/components/schemas/JobTitleFilterSchema'
            - type: 'null'
          description: >-
            Phrases an open posting's title must carry, any of them, up to 10
            each way. A phrase is matched whole and in order: Identity
            Management matches Senior Identity Management Engineer and not
            Manager of Identity. At least one title or keyword phrase is
            required; nothing else can anchor a hiring search.
        keywords:
          anyOf:
            - $ref: '#/components/schemas/JobTitleFilterSchema'
            - type: 'null'
          description: >-
            Phrases in the posting's description, matched the same way. The
            other way to anchor the search: companies whose openings mention
            Okta, whatever the role is called.
        posted_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only postings published on or after this day, as YYYY-MM-DD.
          title: Posted After
        posted_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only postings published on or before this day, as YYYY-MM-DD.
          title: Posted Before
        seniorities:
          description: >-
            The role's seniority, from: Internship, Entry level, Associate,
            Mid-Senior level, Director, Executive or Not Applicable. Any other
            value is refused.
          items:
            type: string
          maxItems: 20
          title: Seniorities
          type: array
        states:
          description: >-
            States or provinces the roles are based in, written out in full. Up
            to 20.
          items:
            type: string
          maxItems: 20
          title: States
          type: array
      title: HiringCompaniesQuerySchema
      type: object
    LocalBusinessQuerySchema:
      description: >-
        Filters for a map search over business listings.


        The one search here that asks "who is within this radius". Name a
        category,

        a business name or a website to look for, plus an area to look in for
        the

        radius part.
      properties:
        area:
          anyOf:
            - $ref: '#/components/schemas/GeoFilterSchema'
            - type: 'null'
          description: Where to search, and how far around it.
        categories:
          description: Business categories to include, in the data source's own vocabulary.
          items:
            type: string
          maxItems: 10
          title: Categories
          type: array
        description:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: Words in the business description.
          title: Description
        domain:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: Only the listing on this domain.
          title: Domain
        has_phone:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only listings that do (or do not) show a phone number.
        has_website:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only listings that do (or do not) link a website.
        is_claimed:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Only listings the owner has (or has not) claimed.
        name:
          anyOf:
            - maxLength: 200
              type: string
            - type: 'null'
          description: Words in the business name.
          title: Name
        price_level:
          description: >-
            Price bands to include: inexpensive, moderate, expensive or
            very_expensive.
          items:
            enum:
              - inexpensive
              - moderate
              - expensive
              - very_expensive
            type: string
          maxItems: 4
          title: Price Level
          type: array
        rating:
          anyOf:
            - $ref: '#/components/schemas/DecimalRangeFilterSchema'
            - type: 'null'
          description: Star rating range, out of five.
        review_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many reviews the listing has.
      title: LocalBusinessQuerySchema
      type: object
    LookalikeQuerySchema:
      description: Filters for a search for companies resembling a set of seed companies.
      properties:
        match:
          $ref: '#/components/schemas/LookalikeMatch'
          default: balanced
          description: >-
            How close a match to look for. Broad favours larger, more
            established companies and keeps every match. Balanced is the default
            ranking. Exact favours the companies most like the seeds and keeps
            only the closest matches, so it can add fewer rows than the count
            shows.
        seed_domains:
          description: >-
            The company domains to find lookalikes of, between 1 and 10. At
            least one is required, since nothing else can anchor a similarity
            search.
          items:
            type: string
          maxItems: 10
          title: Seed Domains
          type: array
      title: LookalikeQuerySchema
      type: object
    PeopleQuerySchema:
      description: Filters for a people search.
      properties:
        active_profile_only:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Excludes profiles the index has deleted or hidden.
        certifications:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: A certification they hold, matched on its name or its issuer.
        cities:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Cities the person lives in.
        company_cities:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Cities the current employer's headquarters are in.
        company_countries:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Countries the current employer's headquarters are in, written out in
            full, as in United States.
        company_founded:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The year their current employer was founded.
        company_funded_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only people whose employer last raised on or after this day, as
            YYYY-MM-DD.
          title: Company Funded After
        company_funding_amount:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The size of their current employer's last round, in US dollars.
        company_headcount:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: Their current employer's employee count.
        company_headcount_growth:
          anyOf:
            - $ref: '#/components/schemas/GrowthFilterSchema'
            - type: 'null'
          description: >-
            Headcount change at their current employer over a window, as a
            percentage band.
        company_headcount_growth_percent:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            Yearly headcount change at the current employer, as a percentage.
            Replaces the growth filter with a timespan, which this search cannot
            narrow by.
        company_identifier:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Their current employer, as domains, LinkedIn company URLs or numeric
            LinkedIn ids, mixed freely.
        company_industry:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The current employer's industry, from the lead database's fixed
            industry list. Matched case-insensitively; a value outside the list
            is refused and the nearest entry is named.
        company_is_b2b:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: >-
            Whether their current employer sells to businesses, by the index's
            own reading.
        company_keyword:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Words in the categories and keywords filed on their current
            employer.
        company_location:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Retired: use company_countries. Still accepted, and its values are
            searched as company_countries (the country of the current employer's
            headquarters, spelled as the country list spells it), so older saved
            searches and callers keep working.
        company_name:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Their current employer's name, the brand it goes by.
        company_revenue:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            Their current employer's annual revenue, in US dollars. An estimate
            many companies lack, so it narrows hard.
        company_size_bands:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Their employer's headcount as a band, one of: Myself Only, 1-10
            employees, 11-50 employees, 51-200 employees, 201-500 employees,
            501-1000 employees, 1001-5000 employees, 5001-10,000 employees or
            10,001+ employees. Offered beside the numeric headcount because each
            reaches companies the other does not.
        company_states:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            States or provinces the current employer's headquarters are in,
            written out in full.
        company_table:
          anyOf:
            - $ref: '#/components/schemas/CompanyTableFilterSchema'
            - type: 'null'
          description: >-
            Their current employer is one of the companies in a column of one of
            your tables, or is not. The column is read again every time the
            search counts, previews or runs, so the search follows the table as
            it changes. Its companies join company_identifier on the same side.
        company_type:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The current employer's type, one of: Privately Held, Public Company,
            Self-Employed, Self-Owned, Partnership, Nonprofit, Educational or
            Government Agency. Matched case-insensitively; any other spelling is
            refused rather than quietly matching nothing.
        company_website:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Their current employer's website domain, as stripe.com.
        connections:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many connections their professional profile has.
        countries:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Countries the person lives in, written out in full. Without
            profile_location, countries, states and cities narrow one another,
            so United States, California and San Francisco together ask for San
            Francisco.
        degree:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            What they studied: the subject of a degree, as their profile writes
            it.
        departments:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Departments, one of: Administrative, C-Suite, Consulting, Customer
            Service, Design, Education, Engineering and Technical, Finance &
            Accounting, General Management, Human Resources, Legal, Marketing,
            Medical, Operations, Other, Product, Project Management, Real
            Estate, Research, Sales or Trades. The index stores these whole, so
            a value outside the list is refused rather than quietly matching
            nothing.
        first_name:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: The person's first name, as their profile spells it.
        followers:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many followers their professional profile has.
        graduated:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: Graduation YEAR, as a range. The index stores a year, not a date.
        is_decision_maker:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether they make buying decisions, by the index's own reading.
        is_working:
          anyOf:
            - $ref: '#/components/schemas/FlagFilterSchema'
            - type: 'null'
          description: Whether they are employed now, by the index's own reading.
        job_title:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The title of the job they hold now, matched as a phrase and as its
            common spellings: & and and, SVP and Senior Vice President, VP and
            Vice President, AVP, EVP, Sr. and Senior. Several values are
            alternatives, so send each other way a role is worded, such as an
            acronym and the words it stands for.
        keyword:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Words in their profile headline.
        language_proficiency:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            How well they speak a language they list, beside the language
            itself.
        languages:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Languages they speak, written out in English, as in Spanish.
        last_name:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: The person's last name, as their profile spells it.
        left_company_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only people who left a past role on or after this day, as
            YYYY-MM-DD.
          title: Left Company After
        left_company_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: >-
            Only people who left a past role on or before this day, as
            YYYY-MM-DD.
          title: Left Company Before
        location:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The older name for profile_location, read only when profile_location
            is not set. Prefer profile_location.
        management_levels:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Seniority, one of: C-Level, Director, Founder, Head, Intern,
            Manager, Owner, Partner, President/Vice President, Senior,
            Specialist or Vice President. Refused the same way as departments.
            President/Vice President is the rung the index fills; Vice President
            is kept but reaches almost nobody.
        past_company_cities:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Cities a previous employer's headquarters are in, for the same past
            role.
        past_company_countries:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Countries a previous employer's headquarters are in. Every past
            filter describes the same past role, so with past_job_title this
            asks for that title at an employer there.
        past_company_headcount:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: A previous employer's employee count.
        past_company_headcount_growth:
          anyOf:
            - $ref: '#/components/schemas/GrowthFilterSchema'
            - type: 'null'
          description: >-
            Headcount change at a previous employer over a window, as a
            percentage band.
        past_company_identifier:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            A previous employer, as domains, LinkedIn company URLs or numeric
            LinkedIn ids.
        past_company_industry:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            A previous employer's industry, from the same fixed list as
            company_industry. Combined with the current-employer filters, not
            offered as an alternative to them.
        past_company_keyword:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Words in the categories and keywords filed on a previous employer.
        past_company_location:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Retired: use past_company_countries. Still accepted, and its values
            are searched as past_company_countries.
        past_company_name:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            A previous employer's name. Every past filter describes the same
            past role.
        past_company_revenue:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: A previous employer's annual revenue, in US dollars.
        past_company_states:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            States or provinces a previous employer's headquarters are in,
            written out in full, for the same past role.
        past_company_table:
          anyOf:
            - $ref: '#/components/schemas/CompanyTableFilterSchema'
            - type: 'null'
          description: >-
            A previous employer is one of the companies in a column of one of
            your tables, or is not; read the same way as company_table. Its
            companies join past_company_identifier.
        past_company_type:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            A previous employer's type, from the same eight values as
            company_type.
        past_company_website:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: A previous employer's website domain, as stripe.com.
        past_departments:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Departments of a role they used to hold, from the same list as
            departments.
        past_job_title:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            The title of a job they held before, matched as job_title is. Every
            past filter describes the same past role.
        past_management_levels:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Seniority of a role they used to hold, from the same list as
            management_levels, refused the same way.
        profile_location:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Where the person lives, whatever the location of their job, as a
            list of places that are alternatives to one another. A place is a
            country written out in full, a state or province, or a city; a comma
            narrows a city to its country, as in Paris, France. When this is
            set, countries, states and cities are read as more places in the
            same list rather than narrowing it.
        recommendations:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How many recommendations their profile carries.
        school:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Schools they studied at.
        skills:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: Skills listed on their profile.
        started_current_role_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only people who started the job they hold now on or after this day.
          title: Started Current Role After
        states:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: States or provinces the person lives in, written out in full.
        total_experience_months:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            Whole career length in MONTHS. `years_of_experience` asks the same
            question in years; setting both narrows to the overlap.
        work_location:
          anyOf:
            - $ref: '#/components/schemas/TextFilterSchema'
            - type: 'null'
          description: >-
            Where the current job is based, matched as it is written on the
            profile. Values are sent as typed.
        years_in_current_company:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How long they have held the job they have now, in YEARS.
        years_in_past_company:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: How long they stayed in a past role, in YEARS.
        years_of_experience:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: Whole career length, in YEARS.
      title: PeopleQuerySchema
      type: object
    PostAuthorsQuerySchema:
      description: >-
        Filters for a search for people whose own LinkedIn posts carry a phrase.


        The rows are people, one per author, each carrying every matching post
        the

        search read for them. The count is of posts, since the people are folded

        from them once they are read.
      properties:
        and_keywords:
          anyOf:
            - items:
                items:
                  maxLength: 200
                  minLength: 1
                  type: string
                maxItems: 20
                type: array
              maxItems: 4
              type: array
            - type: 'null'
          description: >-
            Up to 4 more groups of phrases, each of which a post must ALSO carry
            one phrase of, with up to 20 phrases to include across keywords and
            every group. Each is matched the same way: keywords clay with one
            group expensive, credits, cost finds posts that mention clay and any
            of the three. Groups only narrow a search: keywords must hold a
            phrase too.
          title: And Keywords
        keywords:
          anyOf:
            - $ref: '#/components/schemas/PostPhraseFilterSchema'
            - type: 'null'
          description: >-
            Phrases a post must carry, any of them, and phrases that rule a post
            out, up to 20 to include across keywords and every group, and 20 to
            exclude. A phrase is matched whole and in order in the text the
            author wrote: revenue operations matches a post about revenue
            operations and not one about operations revenue. Punctuation between
            the words does not break a match, and no other form of a word does:
            cost does not match costs. At least one phrase in keywords is
            required; groups only narrow it.
        min_comments:
          anyOf:
            - maximum: 1000000
              minimum: 0
              type: integer
            - type: 'null'
          description: Skip posts with fewer comments than this.
          title: Min Comments
        min_reactions:
          anyOf:
            - maximum: 1000000
              minimum: 0
              type: integer
            - type: 'null'
          description: Skip posts fewer people reacted to than this.
          title: Min Reactions
        posted_within:
          $ref: '#/components/schemas/PostWindow'
          default: past_month
          description: >-
            How recently the post went up, counted back from the day the search
            runs, so a saved or scheduled search keeps reading the latest posts.
            The past month by default. Posts reach the index about a week after
            they go up.
      title: PostAuthorsQuerySchema
      type: object
    LeadRecordType:
      description: |-
        Which dataset a search runs against, and so which provider serves it.

        Values are persisted in String(16) columns, so every member must stay
        within 16 characters.
      enum:
        - people
        - companies
        - signal_companies
        - signal_people
        - lookalikes
        - local_businesses
        - hiring_companies
        - backlinks
        - search_results
        - post_authors
      title: LeadRecordType
      type: string
    SearchResultsQuerySchema:
      description: >-
        Google searches to run, each landing the results Google shows for it.


        Write each search the way you would type it into Google: operators

        (site:, intitle:, quoted phrases) work and cost nothing extra. One row
        is

        one result of one search, with the search that found it and its rank.
      properties:
        country:
          default: US
          description: >-
            The country the searches run from, as a two-letter ISO code (US, GB,
            DE). Google ranks results for searchers there. US by default.
          maxLength: 2
          minLength: 2
          title: Country
          type: string
        results_per_search:
          default: 50
          description: >-
            The most results each search adds. A search stops there or where
            Google runs out of results, whichever comes first. 50 by default.
          maximum: 300
          minimum: 10
          title: Results Per Search
          type: integer
        searches:
          description: >-
            The searches to run, one per entry, exactly as you would type them
            into Google. Blank entries and repeats are dropped. At most 100
            searches.
          items:
            maxLength: 500
            type: string
          maxItems: 100
          title: Searches
          type: array
      title: SearchResultsQuerySchema
      type: object
    SignalCompaniesQuerySchema:
      description: Filters for a company buying-signal search.
      properties:
        company_domains:
          description: Only signals from these company domains. Up to 100.
          items:
            type: string
          maxItems: 100
          title: Company Domains
          type: array
        content_competitors_mentioned:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: >-
            Competitors named in the text a signal was drawn from. Exact company
            names.
        content_initiatives:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: Plans and projects named in the text a signal was drawn from.
        content_keywords:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: >-
            Match the words in the text a signal was drawn from. Only the social
            signal types carry text, and the data source refuses a content
            filter beside any other type.
        content_pain_points:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: Problems named in the text a signal was drawn from.
        content_tech_mentioned:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: >-
            Technologies named in the text a signal was drawn from. Exact
            product names: Salesforce matches, Sales does not.
        detected_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only signals detected on or after this day, as YYYY-MM-DD.
          title: Detected After
        detected_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only signals detected on or before this day, as YYYY-MM-DD.
          title: Detected Before
        employee_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The company's employee count.
        industries:
          description: >-
            Only signals from companies in these industries. Up to 25, each
            matched as a case-insensitive substring of the data source's own
            industry labels; a value matching none of them is refused upstream.
          items:
            type: string
          maxItems: 25
          title: Industries
          type: array
        revenue:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            Annual revenue in US dollars. The data source filters by named
            revenue band, so each bound is mapped to the band that contains it.
        signal_subtypes:
          description: >-
            At most one narrower kind within the chosen signal, where it offers
            any. Optional: a signal with no subtypes sends none.
          items:
            type: string
          maxItems: 1
          title: Signal Subtypes
          type: array
        signal_types:
          description: >-
            Which buying signal to look for: exactly one. It is required, and no
            other filter can anchor a signals search on its own.
          items:
            type: string
          maxItems: 1
          title: Signal Types
          type: array
        signals_per_entity:
          anyOf:
            - maximum: 100
              minimum: 1
              type: integer
            - type: 'null'
          description: >-
            How many of each company's or person's most recent matching signals
            to attach to its row; 25 when unset. Each company or person is one
            row however many signals it has, so this changes neither how many
            rows a search adds nor what they cost, and `signal_count` still
            gives the total.
          title: Signals Per Entity
      title: SignalCompaniesQuerySchema
      type: object
    SignalPeopleQuerySchema:
      description: Filters for a person activity-signal search.
      properties:
        company_domains:
          description: Only signals from these company domains. Up to 100.
          items:
            type: string
          maxItems: 100
          title: Company Domains
          type: array
        content_competitors_mentioned:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: >-
            Competitors named in the text a signal was drawn from. Exact company
            names.
        content_initiatives:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: Plans and projects named in the text a signal was drawn from.
        content_keywords:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: >-
            Match the words in the text a signal was drawn from. Only the social
            signal types carry text, and the data source refuses a content
            filter beside any other type.
        content_pain_points:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: Problems named in the text a signal was drawn from.
        content_tech_mentioned:
          anyOf:
            - $ref: '#/components/schemas/ContentFilterSchema'
            - type: 'null'
          description: >-
            Technologies named in the text a signal was drawn from. Exact
            product names: Salesforce matches, Sales does not.
        department:
          description: >-
            Only people in these departments, from the data source's own list of
            eighteen. Any other value is refused.
          items:
            type: string
          maxItems: 20
          title: Department
          type: array
        detected_after:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only signals detected on or after this day, as YYYY-MM-DD.
          title: Detected After
        detected_before:
          anyOf:
            - pattern: ^\d{4}-\d{2}-\d{2}$
              type: string
            - type: 'null'
          description: Only signals detected on or before this day, as YYYY-MM-DD.
          title: Detected Before
        employee_count:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: The company's employee count.
        industries:
          description: >-
            Only signals from companies in these industries. Up to 25, each
            matched as a case-insensitive substring of the data source's own
            industry labels; a value matching none of them is refused upstream.
          items:
            type: string
          maxItems: 25
          title: Industries
          type: array
        job_title:
          anyOf:
            - maxLength: 255
              type: string
            - type: 'null'
          description: Only people whose job title matches this text.
          title: Job Title
        revenue:
          anyOf:
            - $ref: '#/components/schemas/RangeFilterSchema'
            - type: 'null'
          description: >-
            Annual revenue in US dollars. The data source filters by named
            revenue band, so each bound is mapped to the band that contains it.
        seniority:
          description: Only people at these seniority levels.
          items:
            enum:
              - Staff
              - Manager
              - Director
              - Vp
              - Cxo
            type: string
          maxItems: 5
          title: Seniority
          type: array
        signal_subtypes:
          description: >-
            At most one narrower kind within the chosen signal, where it offers
            any. Optional: a signal with no subtypes sends none.
          items:
            type: string
          maxItems: 1
          title: Signal Subtypes
          type: array
        signal_types:
          description: >-
            Which buying signal to look for: exactly one. It is required, and no
            other filter can anchor a signals search on its own.
          items:
            type: string
          maxItems: 1
          title: Signal Types
          type: array
        signals_per_entity:
          anyOf:
            - maximum: 100
              minimum: 1
              type: integer
            - type: 'null'
          description: >-
            How many of each company's or person's most recent matching signals
            to attach to its row; 25 when unset. Each company or person is one
            row however many signals it has, so this changes neither how many
            rows a search adds nor what they cost, and `signal_count` still
            gives the total.
          title: Signals Per Entity
      title: SignalPeopleQuerySchema
      type: object
    LeadSearchRunResponseSchema:
      description: What one re-run of a table's search changed.
      properties:
        import_status:
          $ref: '#/components/schemas/LeadSearchRunStatus'
          default: success
          description: >-
            `running` when the request added a first batch and the rest is still
            being added in the background, so poll the table's search runs for
            progress; `success` when every row is in.
        people_skipped:
          default: 0
          description: >-
            People the request left out because another of the workspace's
            tables already has them. A run that continues in the background goes
            on skipping them.
          title: People Skipped
          type: integer
        provider_notices:
          description: >-
            What the data source said about the rows the request added, in the
            words to show beside them; see the create response. A run that
            continues in the background can add more, and the table's search
            runs carry every one.
          items:
            type: string
          title: Provider Notices
          type: array
        rows_created:
          description: Rows the request itself added.
          title: Rows Created
          type: integer
        rows_not_added:
          anyOf:
            - $ref: '#/components/schemas/RowsNotAddedSchema'
            - type: 'null'
          description: >-
            The people the search found that are not rows, and why, once every
            row is in: `found_twice` when the people search holds one person
            under two records, so a new table took them once; `already_in_table`
            when a person found was already a row of the table. Null when every
            person found was added, or while rows are still being added.
        rows_wanted:
          default: 0
          description: >-
            How far into the search's matches the run reads. On a run with
            `more_rows` it counts the rows already in the table too (10 more on
            a table of 200 reads 210 deep). A run that added nobody read every
            match when `total_matched` is no more than this; otherwise the
            matches it read are already in the table, and after a `more_rows`
            run the search's reach ends past them, so the next one reads
            further.
          title: Rows Wanted
          type: integer
        run_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: The run row recording this import, when the search is persisted.
          title: Run Id
        skip_limit_reached:
          default: false
          description: >-
            Whether the search stopped looking after skipping as many people as
            one search may, so fewer rows may be added than asked for.
          title: Skip Limit Reached
          type: boolean
        total_matched:
          title: Total Matched
          type: integer
      required:
        - rows_created
        - total_matched
      title: LeadSearchRunResponseSchema
      type: object
    LeadSearchCadence:
      description: >-
        How often a table's search runs on its own: on a calendar step, or every
        few days.
      enum:
        - daily
        - weekly
        - monthly
        - quarterly
        - custom
      title: LeadSearchCadence
      type: string
    UnprocessableEntityIssue:
      properties:
        input:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - items: {}
              type: array
            - additionalProperties: true
              type: object
          description: The user's input that caused the error.
          title: Input
        loc:
          description: >-
            The location of the error. Always contains 1 or 2 elements. The
            first element is the type of location (e.g. 'body', 'query', 'path',
            'header'). The second element is the name of the field that caused
            the error. If the error is not related to a specific field, the
            second element is not present.
          items:
            type: string
          title: Loc
          type: array
        msg:
          description: The message of the error. The error message to show to the user.
          title: Msg
          type: string
        type:
          description: >-
            The type of the error. Useful for frontend code to handle different
            types of errors.
          title: Type
          type: string
      required:
        - loc
        - msg
        - type
        - input
      title: UnprocessableEntityIssue
      type: object
    ProviderFilterErrorSchema:
      description: One provider complaint about the query, pinned to the filter it blames.
      properties:
        filter:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Our name for the filter the provider blamed, so a client can pin
            this complaint to the input that caused it. Null when the complaint
            names no filter we recognise, e.g. a whole-query refusal.
          title: Filter
        message:
          description: What the provider said, safe to show as-is.
          title: Message
          type: string
      required:
        - filter
        - message
      title: ProviderFilterErrorSchema
      type: object
    BacklinkValuesFilterSchema:
      description: A text filter over backlink rows, capped at eight values each way.
      properties:
        exclude:
          items:
            type: string
          maxItems: 8
          title: Exclude
          type: array
        include:
          items:
            type: string
          maxItems: 8
          title: Include
          type: array
      title: BacklinkValuesFilterSchema
      type: object
    RangeFilterSchema:
      description: An inclusive numeric range; either bound may be omitted.
      properties:
        gte:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Gte
        lte:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Lte
      title: RangeFilterSchema
      type: object
    FlagFilterSchema:
      description: >-
        A yes/no attribute. Omit the whole object, or its value, for "don't
        care".


        An object around a single boolean, rather than a bare optional boolean,

        because the client keeps a draft of every filter as the user moves
        between

        modules, and a toggle that has been set to "no" has to survive that trip

        distinguishably from one that was never touched.
      properties:
        value:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Value
      title: FlagFilterSchema
      type: object
    BacklinkLinkTypesFilterSchema:
      description: Which kinds of link to include or exclude, from the index's own six.
      properties:
        exclude:
          items:
            enum:
              - anchor
              - image
              - meta
              - canonical
              - alternate
              - redirect
            type: string
          maxItems: 8
          title: Exclude
          type: array
        include:
          items:
            enum:
              - anchor
              - image
              - meta
              - canonical
              - alternate
              - redirect
            type: string
          maxItems: 8
          title: Include
          type: array
      title: BacklinkLinkTypesFilterSchema
      type: object
    BacklinkMode:
      description: >-
        What one row of a backlink search is.


        ``one_per_domain`` is the default and the lead-shaped answer: a table of

        referring sites is a table of companies, each with a domain to enrich.

        ``as_is`` is every backlink, several per site; ``one_per_anchor`` keeps

        one per anchor text, which is a content question rather than a lead one.

        The vendor's own default is ``as_is``; ours is not, because a table
        where

        the same site appears forty times is not a table of leads.
      enum:
        - as_is
        - one_per_domain
        - one_per_anchor
      title: BacklinkMode
      type: string
    BacklinkGroupField:
      description: |-
        The attribute a backlink search may keep a fixed number of rows per.

        The vendor's ``custom_mode`` takes a RESULT field name and a count, and
        overrides ``mode`` when set: "two backlinks per referring domain" is the
        shape ``one_per_domain`` cannot express. Only the first two values were
        probed live (2026-09-20: ``domain_from`` and ``anchor`` both answered,
        ``domain`` was refused by name); the rest are the other string fields of
        a row, offered because the vendor names no vocabulary and refuses a
        stranger with a 40501 the transport pins to this control.
      enum:
        - domain_from
        - anchor
        - url_from
        - tld_from
        - domain_from_country
        - page_from_language
        - item_type
        - semantic_location
        - url_to
        - domain_to
      title: BacklinkGroupField
      type: string
    RankScale:
      description: >-
        The scale the three rank figures are reported and filtered on.


        ``one_hundred`` is our default and not the vendor's (``one_thousand``):

        a rank out of 100 is what every other backlink tool prints, and a filter

        typed as "domain rank 30 and up" means 30 out of 100 to whoever types
        it.

        The scale applies to the filters as well as the rows, so a stored search

        keeps the scale it was written on.
      enum:
        - one_hundred
        - one_thousand
      title: RankScale
      type: string
    BacklinkSortKey:
      description: |-
        The attribute a backlink search orders its rows by, in our words.

        Every member is a whole-number or a date on the row: the ones an order
        means something for. The transport maps each to the vendor's field and
        sends it as ``order_by`` with the query's direction, by backlink rank
        descending unless the query says otherwise, so the rows an import keeps
        are the top of an order the reader chose (``ROW_ORDER_BY_RECORD_TYPE``).
      enum:
        - backlink_rank
        - domain_rank
        - page_rank
        - spam_score
        - first_seen
        - last_seen
        - prev_seen
        - links_count
        - group_count
        - page_external_links
        - page_internal_links
        - page_size_bytes
        - page_keywords_top_3
        - page_keywords_top_10
        - page_keywords_top_100
        - linked_spam_score
      title: BacklinkSortKey
      type: string
    BacklinkStatus:
      description: 'Which backlinks a search returns and counts: still live, lost, or both.'
      enum:
        - all
        - live
        - lost
      title: BacklinkStatus
      type: string
    TextFilterSchema:
      description: Include and/or exclude a set of values for one text attribute.
      properties:
        exclude:
          items:
            type: string
          maxItems: 200
          title: Exclude
          type: array
        include:
          items:
            type: string
          maxItems: 200
          title: Include
          type: array
      title: TextFilterSchema
      type: object
    TeamHeadcountFilterSchema:
      description: How many of a company's employees sit in one team, as a min/max band.
      properties:
        gte:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Gte
        lte:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Lte
        team:
          default: ''
          description: >-
            The department or seniority to count, spelled the way the people
            search spells it: Sales, Engineering and Technical, Director.
          maxLength: 200
          title: Team
          type: string
      title: TeamHeadcountFilterSchema
      type: object
    ExecutiveChangeWindow:
      description: >-
        How recently an executive joined or left a company, as a company search
        asks it.


        No week: the index dates a leadership change to the month.
      enum:
        - past_month
        - past_quarter
        - past_year
      title: ExecutiveChangeWindow
      type: string
    GrowthFilterSchema:
      description: Headcount growth over a chosen window, as a min/max percentage band.
      properties:
        max_percent:
          anyOf:
            - maximum: 10000
              minimum: -100
              type: integer
            - type: 'null'
          title: Max Percent
        min_percent:
          anyOf:
            - maximum: 10000
              minimum: -100
              type: integer
            - type: 'null'
          title: Min Percent
        timespan:
          $ref: '#/components/schemas/GrowthTimespan'
          default: 12months
      title: GrowthFilterSchema
      type: object
    CompanyPostWindow:
      description: >-
        How recently a company posted on the professional network, as a company
        search asks it.
      enum:
        - past_week
        - past_month
        - past_quarter
        - past_year
      title: CompanyPostWindow
      type: string
    JobTitleFilterSchema:
      description: A phrase filter over job postings, capped at ten phrases each way.
      properties:
        exclude:
          items:
            type: string
          maxItems: 10
          title: Exclude
          type: array
        include:
          items:
            type: string
          maxItems: 10
          title: Include
          type: array
      title: JobTitleFilterSchema
      type: object
    GeoFilterSchema:
      description: |-
        A place to search around: an address, or a point, plus a radius.

        Send whichever you have. An address is resolved to a point server-side,
        against Google Maps data, which any surface displaying the results must
        credit to "Google Maps". An address that resolves to nothing is refused
        rather than dropped, so a search is never quietly run over the whole
        world.
      properties:
        address:
          anyOf:
            - maxLength: 250
              type: string
            - type: 'null'
          description: A street address, neighbourhood, postcode or city.
          title: Address
        latitude:
          anyOf:
            - maximum: 90
              minimum: -90
              type: number
            - type: 'null'
          title: Latitude
        longitude:
          anyOf:
            - maximum: 180
              minimum: -180
              type: number
            - type: 'null'
          title: Longitude
        radius_km:
          anyOf:
            - maximum: 500
              minimum: 1
              type: number
            - type: 'null'
          description: >-
            How far around the point to search, in whole KILOMETRES, at least 1.
            The data source takes an integer radius (its minimum is 1) and a
            fraction is rounded to the nearest kilometre.
          title: Radius Km
      title: GeoFilterSchema
      type: object
    DecimalRangeFilterSchema:
      description: |-
        An inclusive fractional range; either bound may be omitted.

        Separate from ``RangeFilterSchema`` rather than loosening it: the whole-
        number filters here count people, employees and reviews, and letting a
        fraction into one of those would generate a client type that says a
        headcount can be 4.5.
      properties:
        gte:
          anyOf:
            - minimum: 0
              type: number
            - type: 'null'
          title: Gte
        lte:
          anyOf:
            - minimum: 0
              type: number
            - type: 'null'
          title: Lte
      title: DecimalRangeFilterSchema
      type: object
    LookalikeMatch:
      description: >-
        How close a similarity search has to be: one choice that tunes two
        knobs.


        The two knobs used to be typed as numbers, a ranking weight from -1 to 1

        and a score floor from 0 to 1, and both read like every other filter on

        the page while meaning something no other filter means. Three named

        levels say what a person actually wants; ``LOOKALIKE_TUNINGS`` says what

        each one sends and keeps.
      enum:
        - broad
        - balanced
        - exact
      title: LookalikeMatch
      type: string
    CompanyTableFilterSchema:
      description: The companies a search follows from a table, and the ones it leaves out.
      properties:
        exclude:
          anyOf:
            - $ref: '#/components/schemas/CompanyTableLinkSchema'
            - type: 'null'
          description: Leave out people whose employer is in this column.
        include:
          anyOf:
            - $ref: '#/components/schemas/CompanyTableLinkSchema'
            - type: 'null'
          description: Only people whose employer is in this column.
      title: CompanyTableFilterSchema
      type: object
    PostPhraseFilterSchema:
      description: >-
        A phrase filter over the text of LinkedIn posts, capped at twenty
        phrases each way.
      properties:
        exclude:
          items:
            maxLength: 200
            minLength: 1
            type: string
          maxItems: 20
          title: Exclude
          type: array
        include:
          items:
            maxLength: 200
            minLength: 1
            type: string
          maxItems: 20
          title: Include
          type: array
      title: PostPhraseFilterSchema
      type: object
    PostWindow:
      description: >-
        How recently a post went up for a posts search to read it, counted back
        from the run.


        ``any_time`` is a member rather than a null: a stored query drops its

        nulls, and a null would come back from storage as the default window.
      enum:
        - past_week
        - past_month
        - past_quarter
        - past_year
        - any_time
      title: PostWindow
      type: string
    ContentFilterSchema:
      description: >-
        A text filter over the words a signal was drawn from, capped at 20 terms
        each way.
      properties:
        exclude:
          items:
            type: string
          maxItems: 20
          title: Exclude
          type: array
        include:
          items:
            type: string
          maxItems: 20
          title: Include
          type: array
      title: ContentFilterSchema
      type: object
    LeadSearchRunStatus:
      description: >-
        Where one run of a table's search stands.


        ``running`` while rows are still being added, then ``success`` or
        ``failed``.
      enum:
        - running
        - success
        - failed
      title: LeadSearchRunStatus
      type: string
    RowsNotAddedSchema:
      description: People a search found that did not become rows, and why.
      properties:
        count:
          description: How many people were found and not added.
          title: Count
          type: integer
        reason:
          $ref: '#/components/schemas/NotAddedReason'
          description: >-
            `found_twice`: the people search holds the same person under two
            records, and a table takes each person once. `already_in_table`: the
            person was already a row of the table, which was kept.
      required:
        - count
        - reason
      title: RowsNotAddedSchema
      type: object
    GrowthTimespan:
      description: |-
        The window a headcount-growth percentage is measured over.

        The company index measures the last month, quarter and year (added
        2026-09-16 for the first two); six and twenty-four months were the lead
        database's windows and are refused by name on a company search.
      enum:
        - 1month
        - 3months
        - 6months
        - 12months
        - 24months
      title: GrowthTimespan
      type: string
    CompanyTableLinkSchema:
      description: One column of one of your tables, read as a list of companies.
      properties:
        column_id:
          description: >-
            The column with each company's website, web address, LinkedIn
            company page or numeric LinkedIn id. A column of company names
            matches no one.
          format: uuid
          title: Column Id
          type: string
        table_id:
          description: The table holding the companies.
          format: uuid
          title: Table Id
          type: string
        view_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: >-
            A saved view of that table: only the rows its filter keeps are read.
            Omit it to read every row.
          title: View Id
      required:
        - table_id
        - column_id
      title: CompanyTableLinkSchema
      type: object
    NotAddedReason:
      description: >-
        Why people an import found are not all rows in the table.


        ``found_twice``: a new table, where the index held the same person under

        two records (one profile, two ids), so the second copy found the first.

        ``already_in_table``: an import into a table that already had rows,
        where a

        person found was already one of them (and so was refreshed, not added).
      enum:
        - found_twice
        - already_in_table
      title: NotAddedReason
      type: string
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey
    HTTPBearer:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.