{
  "openapi": "3.1.0",
  "info": {
    "title": "Reverse Contact API",
    "version": "1.0.0",
    "description": "Public Reverse Contact API V2 for people and company enrichment, search, fetch, contact, Lists, and usage. Authenticate with Authorization: Bearer rc_... using an API key from the developer dashboard, or Bearer oat_... using an OAuth access token. Every successful response uses a consistent envelope: success, data, error, quotas, metadata. Search endpoints nest results under data.data with pagination in data.metadata. Enrich endpoints nest the primary entity under data.person or data.company. Async live endpoints acknowledge with data.webhookId; poll GET /v2/webhooks/{webhookId}.",
    "contact": {
      "name": "Reverse Contact support",
      "email": "support@reversecontact.com",
      "url": "https://docs.reversecontact.com/"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://reversecontact.com"
    }
  },
  "servers": [
    {
      "url": "https://api.reversecontact.com",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Enrich",
      "description": "Synchronous people and company enrichment"
    },
    {
      "name": "Search",
      "description": "Filter-based search over people and companies"
    },
    {
      "name": "Fetch",
      "description": "Profile fetch, live refresh, and free profile status checks"
    },
    {
      "name": "Contact",
      "description": "Asynchronous email and phone number discovery: poll the job or receive a webhook"
    },
    {
      "name": "Webhooks",
      "description": "Polling for async job results"
    },
    {
      "name": "Usage",
      "description": "Credit balance and rate limit status"
    },
    {
      "name": "Lists",
      "description": "Workspace Lists and identity-backed members"
    },
    {
      "name": "Bulk",
      "description": "Bulk enrich up to 25,000 people in one call, and the history of every background job of the workspace"
    }
  ],
  "paths": {
    "/v2/enrich/persons": {
      "post": {
        "operationId": "enrichPerson",
        "summary": "Enrich person",
        "description": "Synchronously resolves a person from any combination of email, first name, last name, and company domain/name. Returns the full profile of the matched person nested under data.person, with the full profiles of the alternative candidates under data.alternativePersons and data.isFullProfile telling whether the full profile could be assembled. Credits: 2 when a person is found, full profile included. 404 is free.",
        "tags": [
          "Enrich"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Person enriched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/EnrichPersonData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnrichPersonBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Enrich profile",
          "url": "https://docs.reversecontact.com/endpoints/enrich-person"
        },
        "x-credits": {
          "amount": 2,
          "per": "match",
          "summary": "2 credits when a person is found, full profile included. A 404 is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/enrich/companies": {
      "post": {
        "operationId": "enrichCompany",
        "summary": "Enrich company",
        "description": "Synchronously resolves a company from a domain. Returns the full profile of the matched company nested under data.company, with data.isFullProfile telling whether the full profile could be assembled. Credits: 2 when a company is found, full profile included. 404 is free.",
        "tags": [
          "Enrich"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Company enriched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/EnrichCompanyData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EnrichCompanyBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Enrich company",
          "url": "https://docs.reversecontact.com/endpoints/enrich-company"
        },
        "x-credits": {
          "amount": 2,
          "per": "match",
          "summary": "2 credits when a company is found, full profile included. A 404 is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/people": {
      "post": {
        "operationId": "searchPeople",
        "summary": "Search people",
        "description": "Search the Reverse Contact database for people matching filters (AND-combined) and return full profiles. Pass metadata.nextCursor back as cursor for the next page. perPage defaults to 25 and is capped at 100. Results are at data.data and cursor metadata at data.metadata. Filters are strictly validated: unknown fields, blank values and values outside a closed vocabulary return 422 with the offending field and suggestions, and cost 0 credits. Credits: 1 per profile delivered after privacy filtering. Zero results are free.",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "People search results",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchPeopleData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPeopleBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "People search",
          "url": "https://docs.reversecontact.com/endpoints/search-people"
        },
        "x-credits": {
          "amount": 1,
          "per": "profile",
          "summary": "1 credit per profile delivered. A page with no profile is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/people/prompt": {
      "post": {
        "operationId": "searchPeopleByPrompt",
        "summary": "Agentic Search",
        "description": "Describe the people to find in plain language: the prompt is read into People Search filters, then the matching full profiles are returned as a People Search page. The filters applied and anything the prompt asked for that no filter covers are returned at data.interpretation. Pass metadata.nextCursor back as cursor with the same prompt for the next page: a prompt keeps the filters it was read into for 24 hours, so every page runs on the same filters. A cursor sent with filters other than the ones that produced it returns 400 and costs 0 credits. Send filters only through the prompt; to set them explicitly, use /v2/search/people. A prompt no filter can be read from returns 422 NO_FILTERS_INTERPRETED and costs 0 credits. Credits: 1 per page for the search itself, even when no profile matches, plus 1 per profile delivered. A prompt refused before the search costs 0.",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "People search results with the interpreted filters",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchPeoplePromptData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPeoplePromptBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Agentic Search",
          "url": "https://docs.reversecontact.com/endpoints/search-people-prompt"
        },
        "x-credits": {
          "amount": 1,
          "per": "page",
          "plus": {
            "amount": 1,
            "per": "profile"
          },
          "summary": "1 credit per page for the search, plus 1 credit per profile delivered."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/people/lookalike": {
      "post": {
        "operationId": "searchPeopleLookalike",
        "summary": "People lookalike",
        "description": "Find the people who look like one seed profile, given by Social profile URL or Reverse Contact person id. The search is built from the seed: its current function and sub-function, seniority and location. The seed is never among the results. Returns full profiles as a People Search page: results at data.data and cursor metadata at data.metadata. Pass metadata.nextCursor back as cursor with the same seed for the next page. Search filters are refused with 422 LOOKALIKE_FILTERS_NOT_SUPPORTED and cost 0 credits. A seed not yet in the search index returns 404 and costs 0 credits. Credits: 1 per profile delivered. A page with no profile costs 0.",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "People who look like the seed",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchPeopleData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPeopleLookalikeBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "People lookalike",
          "url": "https://docs.reversecontact.com/endpoints/search-people-lookalike"
        },
        "x-credits": {
          "amount": 1,
          "per": "profile",
          "summary": "1 credit per profile delivered. A page with no profile is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/people/count": {
      "post": {
        "operationId": "countPeople",
        "summary": "Count people",
        "description": "Count profiles matching the same filters as People Search without returning profiles. Credits: 0 (free).",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "People count",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchPeopleCountData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPeopleCountBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "People search count",
          "url": "https://docs.reversecontact.com/endpoints/search-people-count"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/people/auto-suggestion": {
      "post": {
        "operationId": "searchPeopleAutoSuggestion",
        "summary": "People auto-suggestion",
        "description": "Returns the skills that start with what someone has typed, most common first, to build a search box in your own product. Credits: 0 (free).",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "People auto-suggestion",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchPeopleAutoSuggestionData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPeopleAutoSuggestionBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "People auto-suggestion",
          "url": "https://docs.reversecontact.com/endpoints/search-people-auto-suggestion"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/organizations": {
      "post": {
        "operationId": "searchOrganizations",
        "summary": "Search organizations",
        "description": "Search the Reverse Contact database for organizations matching filters (AND-combined) and return full organization profiles. Pass metadata.nextCursor back as cursor for the next page. perPage defaults to 25 and is capped at 100. Results are at data.data and cursor metadata at data.metadata. Filters are strictly validated: unknown fields, blank values and values outside a closed vocabulary return 422 with the offending field and suggestions, and cost 0 credits. Credits: 1 per organization delivered. A page with no organization costs 0.",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Organization search results",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchOrganizationsData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchOrganizationsBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Company search",
          "url": "https://docs.reversecontact.com/endpoints/search-companies"
        },
        "x-credits": {
          "amount": 1,
          "per": "profile",
          "summary": "1 credit per company delivered. A page with no company is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/organizations/prompt": {
      "post": {
        "operationId": "searchOrganizationsByPrompt",
        "summary": "Agentic Organization Search",
        "description": "Describe the organizations to find in plain language: the prompt is read into Organization Search filters, then the matching full organization profiles are returned as an Organization Search page. The filters applied and anything the prompt asked for that no filter covers are returned at data.interpretation. Pass metadata.nextCursor back as cursor with the same prompt for the next page: a prompt keeps the filters it was read into for 24 hours, so every page runs on the same filters. Send filters only through the prompt; to set them explicitly, use /v2/search/organizations. A prompt no filter can be read from returns 422 NO_FILTERS_INTERPRETED and costs 0 credits. Credits: 1 per page for the search itself, even when no organization matches, plus 1 per organization delivered. A prompt refused before the search costs 0.",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Organization search results with the interpreted filters",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchOrganizationsPromptData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchOrganizationsPromptBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Agentic Company Search",
          "url": "https://docs.reversecontact.com/endpoints/search-companies-prompt"
        },
        "x-credits": {
          "amount": 1,
          "per": "page",
          "plus": {
            "amount": 1,
            "per": "profile"
          },
          "summary": "1 credit per page for the search, plus 1 credit per company delivered."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/organizations/count": {
      "post": {
        "operationId": "countOrganizations",
        "summary": "Count organizations",
        "description": "Count organizations matching the same filters as Organization Search without returning profiles. Credits: 0 (free).",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Organization count",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchOrganizationsCountData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchOrganizationsCountBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Company search count",
          "url": "https://docs.reversecontact.com/endpoints/search-companies-count"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/people/available-fields": {
      "get": {
        "operationId": "searchPeopleAvailableFields",
        "summary": "People search available fields",
        "description": "Returns metadata for every filter accepted by people search. Credits: 0 (free).",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "People search field catalog",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchFieldsData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "externalDocs": {
          "description": "People search available fields",
          "url": "https://docs.reversecontact.com/endpoints/search-people-available-fields"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/search/organizations/available-fields": {
      "get": {
        "operationId": "searchOrganizationsAvailableFields",
        "summary": "Organization search available fields",
        "description": "Returns metadata for every filter accepted by organization search. Credits: 0 (free).",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Organization search field catalog",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/SearchFieldsData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "externalDocs": {
          "description": "Company search available fields",
          "url": "https://docs.reversecontact.com/endpoints/search-companies-available-fields"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/fetch/persons": {
      "post": {
        "operationId": "fetchPerson",
        "summary": "Person profile",
        "description": "Retrieves a full person profile from cache using a Social URL or Reverse Contact person id. Credits: 1 on cache hit. 0 on 404 cache miss.",
        "tags": [
          "Fetch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Person profile",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/PersonFull"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UrlOrIdPersonBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Person profile",
          "url": "https://docs.reversecontact.com/endpoints/fetch-profile"
        },
        "x-credits": {
          "amount": 1,
          "per": "match",
          "summary": "1 credit when the profile is found in the cache. A 404 is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/fetch/persons/live": {
      "post": {
        "operationId": "livePerson",
        "summary": "Person profile live",
        "description": "Triggers a fresh scrape of a person profile from either a Social URL or Reverse Contact person id. Provide exactly one; replies immediately with a webhookId. Retrieve the result via GET /v2/webhooks/{webhookId} or an optional webhookUrl callback. Credits: 2 (live).",
        "tags": [
          "Fetch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Live person job created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/JobAckData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LivePersonBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Person profile live",
          "url": "https://docs.reversecontact.com/endpoints/fetch-profile-live"
        },
        "x-credits": {
          "amount": 2,
          "per": "request",
          "summary": "2 credits per request, consumed when the job is created."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/fetch/persons/check": {
      "post": {
        "operationId": "checkPerson",
        "summary": "Person profile status",
        "description": "Checks whether a person profile exists and when it was last updated, without returning the full profile. Credits: 0. Still requires a non-empty credit balance (returns 402 NO_CREDITS when empty).",
        "tags": [
          "Fetch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Person availability and freshness",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CheckPersonData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UrlOrIdPersonBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Person profile status",
          "url": "https://docs.reversecontact.com/endpoints/check-person"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free. Needs at least 2 credits in the workspace: below that, 402 NO_CREDITS."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/fetch/companies": {
      "post": {
        "operationId": "fetchCompany",
        "summary": "Company profile",
        "description": "Retrieves a full company profile from cache using a Social URL or Reverse Contact company id. Credits: 1 on cache hit. 0 on 404 cache miss.",
        "tags": [
          "Fetch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Company profile",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CompanyFull"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UrlOrIdCompanyBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Company profile",
          "url": "https://docs.reversecontact.com/endpoints/fetch-company"
        },
        "x-credits": {
          "amount": 1,
          "per": "match",
          "summary": "1 credit when the company is found in the cache. A 404 is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/fetch/companies/live": {
      "post": {
        "operationId": "liveCompany",
        "summary": "Company profile live",
        "description": "Triggers a fresh scrape of a company profile from either a Social URL or Reverse Contact company id. Provide exactly one; replies immediately with a webhookId. Retrieve the result via GET /v2/webhooks/{webhookId} or an optional webhookUrl callback. Credits: 2 (live).",
        "tags": [
          "Fetch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Live company job created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/JobAckData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LiveCompanyBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Company profile live",
          "url": "https://docs.reversecontact.com/endpoints/fetch-company-live"
        },
        "x-credits": {
          "amount": 2,
          "per": "request",
          "summary": "2 credits per request, consumed when the job is created."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/fetch/companies/check": {
      "post": {
        "operationId": "checkCompany",
        "summary": "Company profile status",
        "description": "Checks whether a company profile exists and when it was last updated, without returning the full profile. Credits: 0. Still requires a non-empty credit balance (returns 402 NO_CREDITS when empty).",
        "tags": [
          "Fetch"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Company availability and freshness",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/CheckCompanyData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UrlOrIdCompanyBody"
              }
            }
          }
        },
        "externalDocs": {
          "description": "Company profile status",
          "url": "https://docs.reversecontact.com/endpoints/check-company"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free. Needs at least 2 credits in the workspace: below that, 402 NO_CREDITS."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/contact/email": {
      "post": {
        "operationId": "findContactEmail",
        "summary": "Find contact email",
        "description": "Asynchronously finds email addresses from a Social profile URL, a Reverse Contact person id (prs_...), or a person name with company domain. emailType chooses professional (default), personal, or either. The request is acknowledged with data.webhookId and data.pollUrl. Poll GET /v2/webhooks/{webhookId} for the email array in data.result, or receive it on the optional webhookUrl callback. Credits: billed on the emails found, not on emailType: 3 for a professional email, 5 for a personal one, so an any lookup costs 3, 5 or 8 (8 only when it finds both); 0 when no email is found. The request debits 3 (5 for personal and any) and the result settles the difference.",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Contact email lookup job created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/ContactEmailAckData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              },
              "Idempotent-Replayed": {
                "description": "true when the response is the stored answer of an earlier request with the same Idempotency-Key. Nothing was started or debited.",
                "schema": {
                  "type": "string",
                  "const": "true"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation, or an Idempotency-Key that is not 1 to 255 printable ASCII characters (INVALID_IDEMPOTENCY_KEY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "IDEMPOTENCY_KEY_IN_USE: a request with the same Idempotency-Key is still being processed. Retry after the Retry-After seconds to receive its response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain, or an Idempotency-Key already used with a different body (IDEMPOTENCY_KEY_REUSED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactEmailBody"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional. A key you choose (1 to 255 printable ASCII characters, a UUID for example) that makes the request safe to retry. For 24 hours, a request with the same key and the same body returns the first response with Idempotent-Replayed: true, without starting another lookup or debiting credits.",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "externalDocs": {
          "description": "Find Email",
          "url": "https://docs.reversecontact.com/endpoints/contact-email"
        },
        "x-credits": {
          "amount": 3,
          "per": "match",
          "summary": "3 credits when a professional email is found, 5 for a personal one, whatever the emailType: an any lookup costs 3, 5 or 8 (8 when it finds both). A lookup that finds none is free."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/contact/email/verify": {
      "post": {
        "operationId": "verifyContactEmail",
        "summary": "Verify an email address",
        "description": "Asynchronously checks whether an email address can receive mail and returns valid, risky, invalid or unknown. The request is acknowledged with data.webhookId and data.pollUrl. Poll GET /v2/webhooks/{webhookId} for the verdict in data.result (ContactEmailVerifyResult), or receive it on the optional webhookUrl callback. Credits: 1 per verdict, whatever it says. A check that fails is refunded.",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Email verification job created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/ContactEmailVerifyAckData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              },
              "Idempotent-Replayed": {
                "description": "true when the response is the stored answer of an earlier request with the same Idempotency-Key. Nothing was started or debited.",
                "schema": {
                  "type": "string",
                  "const": "true"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation, or an Idempotency-Key that is not 1 to 255 printable ASCII characters (INVALID_IDEMPOTENCY_KEY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "IDEMPOTENCY_KEY_IN_USE: a request with the same Idempotency-Key is still being processed. Retry after the Retry-After seconds to receive its response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain, or an Idempotency-Key already used with a different body (IDEMPOTENCY_KEY_REUSED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactEmailVerifyBody"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional. A key you choose (1 to 255 printable ASCII characters, a UUID for example) that makes the request safe to retry. For 24 hours, a request with the same key and the same body returns the first response with Idempotent-Replayed: true, without starting another lookup or debiting credits.",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "externalDocs": {
          "description": "Verify Email",
          "url": "https://docs.reversecontact.com/endpoints/contact-email-verify"
        },
        "x-credits": {
          "amount": 1,
          "per": "request",
          "summary": "1 credit per verdict, whatever it says. A check that fails is refunded."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/contact/phone": {
      "post": {
        "operationId": "findContactPhone",
        "summary": "Find contact phone",
        "description": "Asynchronously finds phone numbers from a Social profile URL, a Reverse Contact person id (prs_...), or a person name with company domain. The request is acknowledged with data.webhookId and data.pollUrl. Poll GET /v2/webhooks/{webhookId} for the phone array in data.result, or receive it on the optional webhookUrl callback. Credits: 20 when a phone number is found, 0 when no phone number is found. Enabled by default; the endpoint returns 410 for a workspace without phone finding access.",
        "tags": [
          "Contact"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Contact phone lookup job created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/ContactPhoneAckData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              },
              "Idempotent-Replayed": {
                "description": "true when the response is the stored answer of an earlier request with the same Idempotency-Key. Nothing was started or debited.",
                "schema": {
                  "type": "string",
                  "const": "true"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation, or an Idempotency-Key that is not 1 to 255 printable ASCII characters (INVALID_IDEMPOTENCY_KEY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "IDEMPOTENCY_KEY_IN_USE: a request with the same Idempotency-Key is still being processed. Retry after the Retry-After seconds to receive its response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "description": "Contact phone finding is not enabled for this workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "const": "endpoint_unavailable"
                    },
                    "message": {
                      "type": "string",
                      "description": "Reason the endpoint is unavailable"
                    },
                    "alternative": {
                      "type": "object",
                      "properties": {
                        "endpoint": {
                          "type": "string",
                          "description": "Suggested alternative endpoint"
                        },
                        "docs": {
                          "type": "string",
                          "description": "Documentation path for the alternative"
                        }
                      },
                      "required": [
                        "endpoint",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "error",
                    "message",
                    "alternative"
                  ],
                  "additionalProperties": false
                },
                "example": {
                  "error": "endpoint_unavailable",
                  "message": "Phone finding is not enabled for this workspace.",
                  "alternative": {
                    "endpoint": "/v2/contact/email",
                    "docs": "/docs/endpoints/contact-email"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain, or an Idempotency-Key already used with a different body (IDEMPOTENCY_KEY_REUSED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContactPhoneBody"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional. A key you choose (1 to 255 printable ASCII characters, a UUID for example) that makes the request safe to retry. For 24 hours, a request with the same key and the same body returns the first response with Idempotent-Replayed: true, without starting another lookup or debiting credits.",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "externalDocs": {
          "description": "Find Phone",
          "url": "https://docs.reversecontact.com/endpoints/contact-phone"
        },
        "x-credits": {
          "amount": 20,
          "per": "match",
          "summary": "20 credits when a phone number is found. A lookup that finds none is free."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/webhooks/{webhookId}": {
      "get": {
        "operationId": "pollWebhook",
        "summary": "Poll async job",
        "description": "Returns the status and result of an async job created by the live or contact endpoints. When status is succeeded, data.result contains the job result. With wait=N (0 to 20), the request is held up to N seconds while the job is running and answers as soon as the result is ready; it may also answer earlier with the job still in progress. While the job is not finished, the response carries Retry-After: 2; poll again no sooner than that. Credits: 0 (free). Does not increment per-minute rate limit counters.",
        "tags": [
          "Webhooks"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Job status and optional result",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/PollWebhookData"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Job identifier returned as webhookId",
              "format": "uuid"
            }
          },
          {
            "name": "wait",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20,
              "default": 0,
              "description": "Long-poll: seconds to hold the request while the job is still running (0 to 20). Absent or 0 answers immediately. Out of range or not an integer: 422 VALIDATION_ERROR."
            }
          }
        ],
        "externalDocs": {
          "description": "Polling",
          "url": "https://docs.reversecontact.com/guides/polling"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free, and not counted in the per-minute rate limit."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/lists": {
      "get": {
        "operationId": "listLists",
        "summary": "List Lists",
        "description": "Returns the workspace Lists with their member and Pending Intake counts, newest first. A page holds 200 Lists by default, the most a workspace can have; pass nextCursor back as cursor for the next page. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Workspace Lists",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "List id",
                                    "format": "uuid"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "List name"
                                  },
                                  "entity": {
                                    "type": "string",
                                    "enum": [
                                      "persons",
                                      "companies"
                                    ]
                                  },
                                  "memberCount": {
                                    "type": "integer",
                                    "description": "List Members"
                                  },
                                  "pendingIntakeCount": {
                                    "type": "integer",
                                    "description": "Not found lines kept as Pending Intake"
                                  },
                                  "revision": {
                                    "type": "integer",
                                    "description": "Revision, raised by every member change"
                                  },
                                  "archivedAt": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "description": "Archive date",
                                        "format": "date-time"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "description": "Creation date",
                                    "format": "date-time"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "description": "Last update date",
                                    "format": "date-time"
                                  },
                                  "originQuery": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "additionalProperties": true
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "originLastFind": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "additionalProperties": true
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "entity",
                                  "memberCount",
                                  "pendingIntakeCount"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "nextCursor": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Cursor of the next page, null on the last one"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "items",
                            "nextCursor"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Lists per page (1-200, default 200)",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque cursor: the nextCursor of the previous page, sent with the same filters. A malformed cursor, or one sent with other filters, is refused with 400."
            }
          }
        ],
        "externalDocs": {
          "description": "All Lists",
          "url": "https://docs.reversecontact.com/endpoints/lists"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      },
      "post": {
        "operationId": "createList",
        "summary": "Create a List",
        "description": "Creates a people or companies List (never mixed; 200 Lists per workspace, 1 on a trial). Send an Idempotency-Key header to retry safely: the same key returns the List the first request created instead of a second \"Name (2)\". Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "description": "List created, or the List this Idempotency-Key created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "List id",
                              "format": "uuid"
                            },
                            "name": {
                              "type": "string",
                              "description": "List name"
                            },
                            "entity": {
                              "type": "string",
                              "enum": [
                                "persons",
                                "companies"
                              ]
                            },
                            "memberCount": {
                              "type": "integer",
                              "description": "List Members"
                            },
                            "pendingIntakeCount": {
                              "type": "integer",
                              "description": "Not found lines kept as Pending Intake"
                            },
                            "revision": {
                              "type": "integer",
                              "description": "Revision, raised by every member change"
                            },
                            "archivedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Archive date",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "createdAt": {
                              "type": "string",
                              "description": "Creation date",
                              "format": "date-time"
                            },
                            "updatedAt": {
                              "type": "string",
                              "description": "Last update date",
                              "format": "date-time"
                            },
                            "originQuery": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "additionalProperties": true
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "originLastFind": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "additionalProperties": true
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "name",
                            "entity",
                            "memberCount",
                            "pendingIntakeCount"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "LIST_LIMIT_REACHED (200 Lists, 1 on a trial) or IDEMPOTENCY_KEY_REUSED",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "List name",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "entity": {
                    "type": "string",
                    "enum": [
                      "persons",
                      "companies"
                    ]
                  }
                },
                "required": [
                  "name",
                  "entity"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Your key for this creation (1 to 200 printable ASCII characters, no spaces). Reused for the other entity: 409 IDEMPOTENCY_KEY_REUSED.",
              "minLength": 1,
              "maxLength": 200
            }
          }
        ],
        "externalDocs": {
          "description": "Create a List",
          "url": "https://docs.reversecontact.com/endpoints/list-create"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/lists/{listId}": {
      "get": {
        "operationId": "getList",
        "summary": "Get a List",
        "description": "Returns the List and one page of its rows: List Members (kind member) and Not found lines kept as Pending Intake (kind pending), ordered by added date. Pass nextCursor back as cursor, with the same kind, for the next page; a malformed cursor, or one sent with other filters, is refused with 400. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List and one page of rows",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "description": "List id",
                                  "format": "uuid"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "List name"
                                },
                                "entity": {
                                  "type": "string",
                                  "enum": [
                                    "persons",
                                    "companies"
                                  ]
                                },
                                "memberCount": {
                                  "type": "integer",
                                  "description": "List Members"
                                },
                                "pendingIntakeCount": {
                                  "type": "integer",
                                  "description": "Not found lines kept as Pending Intake"
                                },
                                "revision": {
                                  "type": "integer",
                                  "description": "Revision, raised by every member change"
                                },
                                "archivedAt": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "Archive date",
                                      "format": "date-time"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "createdAt": {
                                  "type": "string",
                                  "description": "Creation date",
                                  "format": "date-time"
                                },
                                "updatedAt": {
                                  "type": "string",
                                  "description": "Last update date",
                                  "format": "date-time"
                                },
                                "originQuery": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "additionalProperties": true
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "originLastFind": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "additionalProperties": true
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "name",
                                "entity",
                                "memberCount",
                                "pendingIntakeCount"
                              ],
                              "additionalProperties": false
                            },
                            "members": {
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "enum": [
                                          "member"
                                        ]
                                      },
                                      "id": {
                                        "type": "string",
                                        "description": "Member id",
                                        "format": "uuid"
                                      },
                                      "entityId": {
                                        "type": "string",
                                        "description": "Person or company id"
                                      },
                                      "linkedinUrl": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "description": "Social URL"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "status": {
                                        "type": "string",
                                        "description": "identified, profiled or enriched"
                                      },
                                      "fields": {
                                        "type": "object",
                                        "additionalProperties": true,
                                        "description": "Stored fields, as the List shows them: a value typed over a cell in the dashboard replaces the enriched one"
                                      },
                                      "addedAt": {
                                        "type": "string",
                                        "description": "Date the member was added",
                                        "format": "date-time"
                                      },
                                      "families": {
                                        "type": "object",
                                        "additionalProperties": true,
                                        "description": "Per data family state: profile, company, contactEmail, contactPhone. A contact typed in the dashboard reads found with source manual"
                                      },
                                      "externalId": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "description": "Your identifier for this member, null when none was sent"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "id",
                                      "entityId",
                                      "externalId"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "enum": [
                                          "pending"
                                        ]
                                      },
                                      "id": {
                                        "type": "string",
                                        "description": "Pending Intake id",
                                        "format": "uuid"
                                      },
                                      "signal": {
                                        "type": "object",
                                        "additionalProperties": true,
                                        "description": "The Signal as sent"
                                      },
                                      "source": {
                                        "type": "string",
                                        "enum": [
                                          "file",
                                          "paste"
                                        ]
                                      },
                                      "addedAt": {
                                        "type": "string",
                                        "description": "Date the line was kept",
                                        "format": "date-time"
                                      },
                                      "fields": {
                                        "type": "object",
                                        "additionalProperties": {
                                          "type": "string"
                                        },
                                        "description": "Values typed over the row in the dashboard, by column (name, headline, company, url, contactEmail...)"
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                ]
                              }
                            },
                            "nextCursor": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Cursor of the next page"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "list",
                            "members",
                            "nextCursor"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Rows per page (1-1000, default 100)",
              "minimum": 1,
              "maximum": 1000,
              "default": 100
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque cursor: the nextCursor of the previous page, sent with the same filters. A malformed cursor, or one sent with other filters, is refused with 400."
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "members",
                "pending"
              ],
              "default": "all",
              "description": "Row query. all mixes List Members and Pending Intake by added_at; members or pending restricts the server read."
            }
          }
        ],
        "externalDocs": {
          "description": "Get a List",
          "url": "https://docs.reversecontact.com/endpoints/list"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      },
      "delete": {
        "operationId": "deleteList",
        "summary": "Delete a List",
        "description": "Deletes the List, its members, their stored data and its Pending Intake. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List deleted",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "deleted": {
                              "type": "boolean",
                              "description": "Always true"
                            }
                          },
                          "required": [
                            "deleted"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "LIST_BUSY: an operation is still running on the List",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          }
        ],
        "externalDocs": {
          "description": "Delete a List",
          "url": "https://docs.reversecontact.com/endpoints/list-delete"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/lists/{listId}/members": {
      "get": {
        "operationId": "listListMembers",
        "summary": "List members",
        "description": "Returns one page of List rows. Each row has kind member or pending (a Not found line kept as Pending Intake). Use kind=members for List Members only, kind=pending for Pending Intake only, or kind=all to mix both by added date. Pass nextCursor back as cursor, with the same filters, for the next page. With externalId, returns the members carrying that identifier of yours, paged the same way. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List rows",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "enum": [
                                          "member"
                                        ]
                                      },
                                      "id": {
                                        "type": "string",
                                        "description": "Member id",
                                        "format": "uuid"
                                      },
                                      "entityId": {
                                        "type": "string",
                                        "description": "Person or company id"
                                      },
                                      "linkedinUrl": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "description": "Social URL"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "status": {
                                        "type": "string",
                                        "description": "identified, profiled or enriched"
                                      },
                                      "fields": {
                                        "type": "object",
                                        "additionalProperties": true,
                                        "description": "Stored fields, as the List shows them: a value typed over a cell in the dashboard replaces the enriched one"
                                      },
                                      "addedAt": {
                                        "type": "string",
                                        "description": "Date the member was added",
                                        "format": "date-time"
                                      },
                                      "families": {
                                        "type": "object",
                                        "additionalProperties": true,
                                        "description": "Per data family state: profile, company, contactEmail, contactPhone. A contact typed in the dashboard reads found with source manual"
                                      },
                                      "externalId": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "description": "Your identifier for this member, null when none was sent"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "id",
                                      "entityId",
                                      "externalId"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "enum": [
                                          "pending"
                                        ]
                                      },
                                      "id": {
                                        "type": "string",
                                        "description": "Pending Intake id",
                                        "format": "uuid"
                                      },
                                      "signal": {
                                        "type": "object",
                                        "additionalProperties": true,
                                        "description": "The Signal as sent"
                                      },
                                      "source": {
                                        "type": "string",
                                        "enum": [
                                          "file",
                                          "paste"
                                        ]
                                      },
                                      "addedAt": {
                                        "type": "string",
                                        "description": "Date the line was kept",
                                        "format": "date-time"
                                      },
                                      "fields": {
                                        "type": "object",
                                        "additionalProperties": {
                                          "type": "string"
                                        },
                                        "description": "Values typed over the row in the dashboard, by column (name, headline, company, url, contactEmail...)"
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                ]
                              }
                            },
                            "memberCount": {
                              "type": "integer",
                              "description": "List Members"
                            },
                            "pendingIntakeCount": {
                              "type": "integer",
                              "description": "Pending Intake rows"
                            },
                            "nextCursor": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Cursor of the next page"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "items",
                            "memberCount",
                            "pendingIntakeCount",
                            "nextCursor"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Rows per page (1-1000, default 100)",
              "minimum": 1,
              "maximum": 1000,
              "default": 100
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque cursor: the nextCursor of the previous page, sent with the same filters. A malformed cursor, or one sent with other filters, is refused with 400."
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "members",
                "pending"
              ],
              "default": "all",
              "description": "Row query. all mixes List Members and Pending Intake by added_at; members or pending restricts the server read."
            }
          },
          {
            "name": "externalId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Find the members carrying this identifier of yours",
              "minLength": 1,
              "maxLength": 200
            }
          }
        ],
        "externalDocs": {
          "description": "List members",
          "url": "https://docs.reversecontact.com/endpoints/list-members"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      },
      "post": {
        "operationId": "addListMembers",
        "summary": "Add members",
        "description": "Adds up to 1,000 Signals and answers when they are done, with one result per Signal in request order (results[]: added, already_present, not_found, refused, failed, not_reached). A person is found from a Social URL, an email, or a first and last name with a company. A new member is charged its identity price: 1 credit for a Social URL from saved data (2 with live: true), 2 for an email or a name. A member already on the List is free and left as it is; a Signal no one matches is kept as Pending Intake, free. One invalid Signal refuses the request with details.signalIndex. For more Signals, data families, a credit ceiling or a webhook, use the import (intake/signals).",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Add summary with per-Signal results",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "inserted": {
                              "type": "integer",
                              "description": "Members added"
                            },
                            "skipped": {
                              "type": "integer",
                              "description": "Signals naming a member already on the List"
                            },
                            "refused": {
                              "type": "integer",
                              "description": "Signals refused (member limit, ambiguous identity)"
                            },
                            "creditsConsumed": {
                              "type": "number",
                              "description": "Credits charged"
                            },
                            "unresolvedCount": {
                              "type": "integer",
                              "description": "Signals kept as Pending Intake"
                            },
                            "stoppedReason": {
                              "type": "string",
                              "description": "Set when a stop left later Signals unread: quota, member_cap, pending_cap"
                            },
                            "results": {
                              "type": "array",
                              "description": "One entry per Signal, in request order",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "index": {
                                    "type": "integer",
                                    "description": "Position of the Signal in the request (0-based)"
                                  },
                                  "outcome": {
                                    "type": "string",
                                    "enum": [
                                      "added",
                                      "already_present",
                                      "not_found",
                                      "refused",
                                      "failed",
                                      "not_reached"
                                    ]
                                  },
                                  "externalId": {
                                    "type": "string",
                                    "description": "Your identifier, as sent"
                                  },
                                  "memberId": {
                                    "type": "string",
                                    "description": "Member the line names",
                                    "format": "uuid"
                                  },
                                  "entityId": {
                                    "type": "string",
                                    "description": "Person or company id"
                                  },
                                  "pendingId": {
                                    "type": "string",
                                    "description": "Pending Intake kept for a not_found line",
                                    "format": "uuid"
                                  },
                                  "reason": {
                                    "type": "string",
                                    "enum": [
                                      "member_limit",
                                      "pending_intake_limit",
                                      "insufficient_credits",
                                      "ambiguous_identity",
                                      "data_subject_blocked",
                                      "identity_unavailable",
                                      "quota_unavailable",
                                      "stopped"
                                    ]
                                  }
                                },
                                "required": [
                                  "index",
                                  "outcome"
                                ],
                                "additionalProperties": false
                              }
                            }
                          },
                          "required": [
                            "inserted",
                            "skipped",
                            "creditsConsumed",
                            "results"
                          ],
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "The List reached its 25,000 member or Pending Intake limit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "504": {
            "description": "The request ran out of time; Signals already added stay added",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "signals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "linkedinUrl": {
                          "type": "string",
                          "description": "Person or company Social URL"
                        },
                        "url": {
                          "type": "string",
                          "description": "Alias of linkedinUrl"
                        },
                        "email": {
                          "type": "string",
                          "description": "Person email"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "Person first name (with lastName and a company)"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Person last name (with firstName and a company)"
                        },
                        "companyDomain": {
                          "type": "string",
                          "description": "Company domain: a person hint, or a company"
                        },
                        "companyName": {
                          "type": "string",
                          "description": "Company name hint for a person"
                        },
                        "domain": {
                          "type": "string",
                          "description": "Company domain"
                        },
                        "companyId": {
                          "type": "string",
                          "description": "Company id (com_...), company Lists"
                        },
                        "externalId": {
                          "type": "string",
                          "description": "Your own identifier for this line (1 to 200 characters, no control characters). Echoed in the line result and kept on the member it names; the first one a member receives is kept. Never used to find the person.",
                          "minLength": 1,
                          "maxLength": 200
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 1000
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "file",
                      "paste"
                    ],
                    "default": "paste"
                  },
                  "live": {
                    "type": "boolean",
                    "description": "For Social URL Signals: true fetches the profile live (2 credits); omitted or false uses saved data (1 credit).",
                    "default": false
                  }
                },
                "required": [
                  "signals"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          }
        ],
        "externalDocs": {
          "description": "Add members",
          "url": "https://docs.reversecontact.com/endpoints/list-members-add"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free to call. Each new person costs 1 credit from a Social profile URL (2 with live), 2 from an email or a name. Each new company costs 1 credit from a company page URL or a company id (2 when the page is read live), 2 from a domain. A member already on the List, or a Signal no one matches, is free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      },
      "delete": {
        "operationId": "removeListMembers",
        "summary": "Remove List members",
        "description": "Removes List Members and their stored data, and/or dismisses Pending Intake rows. Removing members never dismisses Pending Intake unless pendingIds are given. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Members removed and/or Pending Intake dismissed",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "removed": {
                              "type": "integer",
                              "description": "Members removed"
                            },
                            "dismissed": {
                              "type": "integer",
                              "description": "Pending Intake rows dismissed"
                            }
                          },
                          "required": [
                            "removed",
                            "dismissed"
                          ],
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Provide at least one id across memberIds and pendingIds.",
                "properties": {
                  "memberIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Member id",
                      "format": "uuid"
                    }
                  },
                  "pendingIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "Pending Intake id",
                      "format": "uuid"
                    }
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          }
        ],
        "externalDocs": {
          "description": "Remove members",
          "url": "https://docs.reversecontact.com/endpoints/list-members-remove"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/lists/{listId}/intake/signals": {
      "post": {
        "operationId": "importListSignals",
        "summary": "Import members and data",
        "description": "Queues up to 25,000 Signals (or a public CSV / Google Sheet URL) as one operation and answers at once with operationId and pollUrl. Each line is identified like an add (saved data unless live: true); with families, the data you ask for (profile, company, contact_email, contact_phone) is then fetched for each member, new or already on the List. Data a member already holds is not bought again. Above 25 credits of worst-case estimate, a request with families needs maxCredits, the most it may spend: the operation stops at that ceiling (stopReason max_credits) and can be resumed with a higher one. With webhookUrl (public HTTPS), that URL receives one POST each time the operation stops moving (completed, stopped, cancelled); the event carries no member data, read the operation at its pollUrl. Lines naming the same identity with the same externalId are deduplicated. Replaying with the same operationId returns the same operation and never charges twice. To stop it, cancel it (operations/{operationId}/cancel): cancelling is final, a new run needs a new operationId.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "202": {
            "description": "Operation queued",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "operationId": {
                              "type": "string",
                              "description": "Operation id: read it at pollUrl",
                              "format": "uuid"
                            },
                            "pollUrl": {
                              "type": "string",
                              "description": "Path that reads the operation (GET, ?wait=N holds it)"
                            },
                            "totalRows": {
                              "type": "integer",
                              "description": "Lines queued after deduplication"
                            },
                            "duplicateCount": {
                              "type": "integer",
                              "description": "Lines dropped as duplicates of an earlier line"
                            },
                            "job": {
                              "type": "object",
                              "additionalProperties": true,
                              "description": "The job record"
                            }
                          },
                          "required": [
                            "operationId",
                            "pollUrl",
                            "totalRows",
                            "duplicateCount"
                          ],
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before the first read at pollUrl",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "description": "LIST_INVALID_INPUT (for example maxCredits missing above 25 credits, or an operationId replayed with other Signals) or WEBHOOK_URL_UNREACHABLE",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "BULK_QUEUE_UNAVAILABLE: retry shortly",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "signals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "linkedinUrl": {
                          "type": "string",
                          "description": "Person or company Social URL"
                        },
                        "url": {
                          "type": "string",
                          "description": "Alias of linkedinUrl"
                        },
                        "email": {
                          "type": "string",
                          "description": "Person email"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "Person first name (with lastName and a company)"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Person last name (with firstName and a company)"
                        },
                        "companyDomain": {
                          "type": "string",
                          "description": "Company domain: a person hint, or a company"
                        },
                        "companyName": {
                          "type": "string",
                          "description": "Company name hint for a person"
                        },
                        "domain": {
                          "type": "string",
                          "description": "Company domain"
                        },
                        "companyId": {
                          "type": "string",
                          "description": "Company id (com_...), company Lists"
                        },
                        "externalId": {
                          "type": "string",
                          "description": "Your own identifier for this line (1 to 200 characters, no control characters). Echoed in the line result and kept on the member it names; the first one a member receives is kept. Never used to find the person.",
                          "minLength": 1,
                          "maxLength": 200
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 25000
                  },
                  "sourceUrl": {
                    "type": "string",
                    "description": "Public CSV or Google Sheet URL (instead of signals)",
                    "format": "uri"
                  },
                  "live": {
                    "type": "boolean",
                    "description": "true fetches Social URL profiles live; omitted or false uses saved data",
                    "default": false
                  },
                  "families": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "profile",
                        "company",
                        "contact_email",
                        "contact_phone"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 4
                  },
                  "maxCredits": {
                    "type": "integer",
                    "description": "The most this operation may spend",
                    "minimum": 0
                  },
                  "operationId": {
                    "type": "string",
                    "description": "Your operation id: replaying it returns the same operation",
                    "format": "uuid"
                  },
                  "webhookUrl": {
                    "type": "string",
                    "description": "Public HTTPS URL told when the operation stops moving",
                    "format": "uri",
                    "maxLength": 2048
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          }
        ],
        "externalDocs": {
          "description": "Import members and data",
          "url": "https://docs.reversecontact.com/endpoints/list-intake-signals"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free to queue. Each new member costs its identity price, and each data family you ask for costs what its endpoint costs, up to your maxCredits."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/lists/{listId}/operations/{operationId}/progress": {
      "get": {
        "operationId": "getListOperation",
        "summary": "Read a List operation",
        "description": "Reads an operation started by an import (its pollUrl). While clientAction is poll, read again no sooner than pollAfterSeconds; with wait=N (0 to 20) the request is held and answers as soon as the operation settles, pauses or stops, or still running when the wait ends. completed means the data can be read. When it stops (clientAction resume), stopReason and nextStep say what to do. With rows=true, also returns one page of per-line results (index in the request, externalId, outcome, memberId); pass rows.nextCursor back as cursor for the next page, with perPage from 1 to 1000 (default 200). Free, also at a zero balance, and never counted against rate limits. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "operationId": {
                              "type": "string",
                              "description": "Operation id"
                            },
                            "listId": {
                              "type": "string",
                              "description": "List id",
                              "format": "uuid"
                            },
                            "kind": {
                              "type": "string",
                              "description": "Operation kind"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "queued",
                                "running",
                                "paused",
                                "completed",
                                "partial",
                                "stopped_budget",
                                "failed",
                                "cancelled",
                                "refused",
                                "unknown"
                              ]
                            },
                            "clientAction": {
                              "type": "string",
                              "enum": [
                                "poll",
                                "resume",
                                "done",
                                "reconcile"
                              ],
                              "description": "poll: read again after pollAfterSeconds. resume: read stopReason and nextStep, then resume. done: finished, the data can be read. reconcile: the outcome is ambiguous, never replay it."
                            },
                            "progress": {
                              "type": "object",
                              "properties": {
                                "processed": {
                                  "type": "integer",
                                  "description": "Lines processed"
                                },
                                "total": {
                                  "type": "integer",
                                  "description": "Lines in the operation"
                                },
                                "succeeded": {
                                  "type": "integer",
                                  "description": "Lines that resolved a member"
                                },
                                "failed": {
                                  "type": "integer",
                                  "description": "Lines that failed or were not found"
                                },
                                "skipped": {
                                  "type": "integer",
                                  "description": "Lines skipped"
                                },
                                "remaining": {
                                  "type": "integer",
                                  "description": "Lines left"
                                },
                                "unknownCount": {
                                  "type": "integer",
                                  "description": "Lines with an ambiguous outcome"
                                }
                              },
                              "additionalProperties": false
                            },
                            "creditsConsumed": {
                              "type": "number",
                              "description": "Credits charged so far"
                            },
                            "creditsPending": {
                              "type": "number",
                              "description": "Credits reserved by steps in flight"
                            },
                            "creditsEstimated": {
                              "type": "number",
                              "description": "Credits reserved when the operation was created: an import reserves nothing (0) and spends up to maxCredits"
                            },
                            "maxCredits": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "description": "Credit ceiling of the operation"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "estimatedSeconds": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "description": "Advisory time left while it runs"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "estimateBlockedUntil": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "When the daily extraction limit holds it: the next 00:00 UTC",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "pollAfterSeconds": {
                              "type": "integer",
                              "description": "Seconds to wait before reading again (0 once polling stops)"
                            },
                            "pollUrl": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Path that reads this operation"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "stopReason": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Why it stopped: balance, max_credits, paused_by_user, a limit, cancelled"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "nextStep": {
                              "description": "What to do after a stop"
                            },
                            "errorMessage": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Failure message"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "startedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Start date",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "completedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "End date, once the data can be read",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "rows": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "description": "With rows=true on an intake operation: one page of per-line results",
                                  "properties": {
                                    "items": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "index": {
                                            "anyOf": [
                                              {
                                                "type": "integer",
                                                "description": "Position of the line in the request (0-based)"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "rowNumber": {
                                            "type": "integer",
                                            "description": "Line number in the operation (1-based)"
                                          },
                                          "outcome": {
                                            "type": "string",
                                            "enum": [
                                              "pending",
                                              "added",
                                              "already_present",
                                              "resolved",
                                              "not_found",
                                              "refused",
                                              "failed",
                                              "not_reached",
                                              "unknown"
                                            ]
                                          },
                                          "externalId": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Your identifier, as sent"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "memberId": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Member the line names",
                                                "format": "uuid"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "errorCode": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Why a line was refused or failed, or a requested family missed"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "reason": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Short reason"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "signal": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "description": "The identifiers sent"
                                          }
                                        },
                                        "required": [
                                          "index",
                                          "rowNumber",
                                          "outcome",
                                          "externalId",
                                          "memberId"
                                        ],
                                        "additionalProperties": false
                                      }
                                    },
                                    "nextCursor": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "description": "Cursor of the next page of lines, null on the last one"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "additionalProperties": false
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "operationId",
                            "listId",
                            "status",
                            "clientAction",
                            "pollAfterSeconds",
                            "pollUrl"
                          ],
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present while the operation runs: seconds before reading again",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "LIST_OPERATION_NOT_FOUND",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Operation id (operationId of the acknowledgement)"
            }
          },
          {
            "name": "wait",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Hold the request up to this many seconds while it runs",
              "minimum": 0,
              "maximum": 20,
              "default": 0
            }
          },
          {
            "name": "rows",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "description": "Add per-line results"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "With rows=true: rows.nextCursor of the previous page of lines"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "With rows=true: lines per page",
              "minimum": 1,
              "maximum": 1000,
              "default": 200
            }
          }
        ],
        "externalDocs": {
          "description": "Read a List operation",
          "url": "https://docs.reversecontact.com/endpoints/list-operation"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free, also at a zero balance, and never counted against the rate limits."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/lists/{listId}/operations/{operationId}/cancel": {
      "post": {
        "operationId": "cancelListOperation",
        "summary": "Cancel a List operation",
        "description": "Stops an import of this workspace, whichever key started it. Lines already in flight finish and are charged as usual; lines not started are never charged and read not_reached in the per-line results. Cancelling is final: replaying the import with the same operationId returns the cancelled operation, and a new run needs a new operationId. Cancelling a cancelled operation answers it again. The import webhookUrl receives the cancelled state. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The cancelled operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "operationId": {
                              "type": "string",
                              "description": "Operation id"
                            },
                            "listId": {
                              "type": "string",
                              "description": "List id",
                              "format": "uuid"
                            },
                            "kind": {
                              "type": "string",
                              "description": "Operation kind"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "queued",
                                "running",
                                "paused",
                                "completed",
                                "partial",
                                "stopped_budget",
                                "failed",
                                "cancelled",
                                "refused",
                                "unknown"
                              ]
                            },
                            "clientAction": {
                              "type": "string",
                              "enum": [
                                "poll",
                                "resume",
                                "done",
                                "reconcile"
                              ],
                              "description": "poll: read again after pollAfterSeconds. resume: read stopReason and nextStep, then resume. done: finished, the data can be read. reconcile: the outcome is ambiguous, never replay it."
                            },
                            "progress": {
                              "type": "object",
                              "properties": {
                                "processed": {
                                  "type": "integer",
                                  "description": "Lines processed"
                                },
                                "total": {
                                  "type": "integer",
                                  "description": "Lines in the operation"
                                },
                                "succeeded": {
                                  "type": "integer",
                                  "description": "Lines that resolved a member"
                                },
                                "failed": {
                                  "type": "integer",
                                  "description": "Lines that failed or were not found"
                                },
                                "skipped": {
                                  "type": "integer",
                                  "description": "Lines skipped"
                                },
                                "remaining": {
                                  "type": "integer",
                                  "description": "Lines left"
                                },
                                "unknownCount": {
                                  "type": "integer",
                                  "description": "Lines with an ambiguous outcome"
                                }
                              },
                              "additionalProperties": false
                            },
                            "creditsConsumed": {
                              "type": "number",
                              "description": "Credits charged so far"
                            },
                            "creditsPending": {
                              "type": "number",
                              "description": "Credits reserved by steps in flight"
                            },
                            "creditsEstimated": {
                              "type": "number",
                              "description": "Credits reserved when the operation was created: an import reserves nothing (0) and spends up to maxCredits"
                            },
                            "maxCredits": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "description": "Credit ceiling of the operation"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "estimatedSeconds": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "description": "Advisory time left while it runs"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "estimateBlockedUntil": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "When the daily extraction limit holds it: the next 00:00 UTC",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "pollAfterSeconds": {
                              "type": "integer",
                              "description": "Seconds to wait before reading again (0 once polling stops)"
                            },
                            "pollUrl": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Path that reads this operation"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "stopReason": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Why it stopped: balance, max_credits, paused_by_user, a limit, cancelled"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "nextStep": {
                              "description": "What to do after a stop"
                            },
                            "errorMessage": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Failure message"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "startedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Start date",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "completedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "End date, once the data can be read",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "rows": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "description": "With rows=true on an intake operation: one page of per-line results",
                                  "properties": {
                                    "items": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "index": {
                                            "anyOf": [
                                              {
                                                "type": "integer",
                                                "description": "Position of the line in the request (0-based)"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "rowNumber": {
                                            "type": "integer",
                                            "description": "Line number in the operation (1-based)"
                                          },
                                          "outcome": {
                                            "type": "string",
                                            "enum": [
                                              "pending",
                                              "added",
                                              "already_present",
                                              "resolved",
                                              "not_found",
                                              "refused",
                                              "failed",
                                              "not_reached",
                                              "unknown"
                                            ]
                                          },
                                          "externalId": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Your identifier, as sent"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "memberId": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Member the line names",
                                                "format": "uuid"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "errorCode": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Why a line was refused or failed, or a requested family missed"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "reason": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "description": "Short reason"
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          },
                                          "signal": {
                                            "type": "object",
                                            "additionalProperties": true,
                                            "description": "The identifiers sent"
                                          }
                                        },
                                        "required": [
                                          "index",
                                          "rowNumber",
                                          "outcome",
                                          "externalId",
                                          "memberId"
                                        ],
                                        "additionalProperties": false
                                      }
                                    },
                                    "nextCursor": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "description": "Cursor of the next page of lines, null on the last one"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "additionalProperties": false
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "operationId",
                            "listId",
                            "status",
                            "clientAction",
                            "pollAfterSeconds",
                            "pollUrl"
                          ],
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "LIST_OPERATION_NOT_FOUND",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "LIST_OPERATION_NOT_CANCELLABLE: the operation already ended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Operation id (operationId of the acknowledgement)"
            }
          }
        ],
        "externalDocs": {
          "description": "Cancel a List operation",
          "url": "https://docs.reversecontact.com/endpoints/list-operation-cancel"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free. Lines that had not started are never charged."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/lists/{listId}/export": {
      "get": {
        "operationId": "exportList",
        "summary": "Export a List",
        "description": "Downloads the List as CSV, as the dashboard shows it: one row per line of the List, members and Pending Intake mixed in the order they were added: a member with its stored data, where a value typed over a cell replaces the enriched one, and a Pending Intake line with what was pasted or typed on it. A workspace exports one List at a time: while one runs, another answers 429 LIST_EXPORT_IN_PROGRESS; 429 LIST_EXPORT_BUSY means the server is serving another workspace, retry after Retry-After. Credits: 0.",
        "tags": [
          "Lists"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List CSV: members, then Not found rows",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "listId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "List id",
              "format": "uuid"
            }
          }
        ],
        "externalDocs": {
          "description": "Export a List",
          "url": "https://docs.reversecontact.com/endpoints/list-export"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/enrich/persons/bulk": {
      "post": {
        "operationId": "bulkEnrichPersons",
        "summary": "Bulk enrich people",
        "description": "Enriches up to 25,000 people in one call. Each item is what /v2/enrich/persons (email, or name with a company) or /v2/fetch/persons (LinkedIn URL) takes, priced like it. The credits of every item are reserved at once, up to the balance (items past it read insufficient_credits and cost nothing), and given back for what is not found. Duplicates of an earlier item are enriched once and cost nothing. Answers 202 at once with the job: follow it at links.self (wait=N holds the request until it settles), or pass webhookUrl to receive one POST when it settles; once it is completed or cancelled, links.results gives the results CSV, one row per item in the order sent. families adds the contact finders (contact_email, contact_phone) and needs their permission; emailType chooses the kind of email. A field the body or an item does not define is refused with 422 UNKNOWN_FIELD (the field, the one it most likely stands for, the accepted fields), never ignored: the job would otherwise run without it. An API key with credit limits must hold the whole reservation: a job that would take it over its daily, monthly or total limit is refused with KEY_CREDIT_LIMIT_REACHED before anything is reserved, and a started job counts against the key what it reserved, then only what it spent once it settles. Following a job, cancelling it and downloading its results stay open at a zero balance. Credits: the unit price of each item, as /v2/enrich/persons, /v2/fetch/persons and /v2/contact/*. The request itself is free.",
        "tags": [
          "Bulk"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "202": {
            "description": "Bulk enrich job created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "job": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "description": "Job id",
                                  "format": "uuid"
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "enrich_persons",
                                    "list_import",
                                    "list_enrich",
                                    "list_search_import",
                                    "search_export"
                                  ],
                                  "description": "enrich_persons: a Bulk enrich job (POST /v2/enrich/persons/bulk, or a file from the dashboard). list_import: Signals or a file imported into a List. list_enrich: data fetched for List members. list_search_import: a Search added to a List. search_export: a Search exported as a file."
                                },
                                "entity": {
                                  "type": "string",
                                  "enum": [
                                    "persons",
                                    "companies"
                                  ]
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "queued",
                                    "running",
                                    "paused",
                                    "completed",
                                    "cancelled",
                                    "failed"
                                  ],
                                  "description": "queued and running still move (read it again, or wait=N); paused waits for someone to resume it; completed, cancelled and failed are final."
                                },
                                "source": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "enum": [
                                        "api",
                                        "mcp",
                                        "ask",
                                        "dashboard"
                                      ],
                                      "description": "Who started it: an API key, an AI assistant (MCP), Ask, or the dashboard. null for a job created before sources were recorded."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The file name, or the name given at creation"
                                },
                                "listId": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "The List a List job works on",
                                      "format": "uuid"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "progress": {
                                  "type": "object",
                                  "properties": {
                                    "total": {
                                      "type": "integer",
                                      "description": "Items in the job"
                                    },
                                    "processed": {
                                      "type": "integer",
                                      "description": "Items done"
                                    },
                                    "succeeded": {
                                      "type": "integer",
                                      "description": "Items that delivered"
                                    },
                                    "failed": {
                                      "type": "integer",
                                      "description": "Items that did not (not found, invalid, error)"
                                    },
                                    "skipped": {
                                      "type": "integer",
                                      "description": "Items not run (duplicates, no usable input, out of credits, cancelled)"
                                    },
                                    "remaining": {
                                      "type": "integer",
                                      "description": "Items left"
                                    }
                                  },
                                  "required": [
                                    "total",
                                    "processed",
                                    "succeeded",
                                    "failed",
                                    "skipped",
                                    "remaining"
                                  ],
                                  "additionalProperties": false
                                },
                                "credits": {
                                  "type": "object",
                                  "properties": {
                                    "estimated": {
                                      "type": "integer",
                                      "description": "Credits reserved when the job was created (0 when nothing is reserved up front)"
                                    },
                                    "used": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "description": "Credits spent, once the job has settled them"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "estimated",
                                    "used"
                                  ],
                                  "additionalProperties": false
                                },
                                "estimatedSecondsRemaining": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "description": "Seconds left from the job's recent pace, while it runs; null when unknown"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "error": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "code": {
                                          "type": "string",
                                          "description": "Why the job failed"
                                        }
                                      },
                                      "required": [
                                        "code"
                                      ],
                                      "additionalProperties": false
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "createdAt": {
                                  "type": "string",
                                  "description": "ISO 8601",
                                  "format": "date-time"
                                },
                                "startedAt": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "ISO 8601",
                                      "format": "date-time"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "completedAt": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "ISO 8601",
                                      "format": "date-time"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "links": {
                                  "type": "object",
                                  "properties": {
                                    "self": {
                                      "type": "string",
                                      "description": "Reads this job (wait=N holds the request until it settles)"
                                    },
                                    "results": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "description": "Its results CSV, set once the job is completed or cancelled (enrich_persons jobs)"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "operation": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "description": "The List operation it runs as (List jobs)"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "self",
                                    "results",
                                    "operation"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "id",
                                "type",
                                "entity",
                                "status",
                                "source",
                                "name",
                                "listId",
                                "progress",
                                "credits",
                                "estimatedSecondsRemaining",
                                "error",
                                "createdAt",
                                "startedAt",
                                "completedAt",
                                "links"
                              ],
                              "additionalProperties": false
                            },
                            "duplicateCount": {
                              "type": "integer",
                              "description": "Items that repeat an earlier one"
                            },
                            "creditsEstimated": {
                              "type": "integer",
                              "description": "Credits reserved"
                            },
                            "notRunForCredits": {
                              "type": "integer",
                              "description": "Items the balance could not cover"
                            }
                          },
                          "required": [
                            "job",
                            "duplicateCount",
                            "creditsEstimated",
                            "notRunForCredits"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              },
              "Idempotent-Replayed": {
                "description": "true when the response is the stored answer of an earlier request with the same Idempotency-Key. Nothing was started or debited.",
                "schema": {
                  "type": "string",
                  "const": "true"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation, or an Idempotency-Key that is not 1 to 255 printable ASCII characters (INVALID_IDEMPOTENCY_KEY)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "IDEMPOTENCY_KEY_IN_USE: a request with the same Idempotency-Key is still being processed. Retry after the Retry-After seconds to receive its response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain, or an Idempotency-Key already used with a different body (IDEMPOTENCY_KEY_REUSED)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "One person to enrich: a LinkedIn URL, an email, or a name with a company. An item without any is kept and reads skipped, never charged.",
                      "properties": {
                        "linkedinUrl": {
                          "type": "string",
                          "description": "Person LinkedIn URL (read from saved data unless live is true)"
                        },
                        "email": {
                          "type": "string",
                          "description": "Email address"
                        },
                        "firstName": {
                          "type": "string",
                          "description": "First name"
                        },
                        "lastName": {
                          "type": "string",
                          "description": "Last name"
                        },
                        "companyDomain": {
                          "type": "string",
                          "description": "Company domain (e.g. acme.com)"
                        },
                        "companyName": {
                          "type": "string",
                          "description": "Company name (alternative to domain)"
                        },
                        "externalId": {
                          "type": "string",
                          "description": "Your own identifier, given back in its row of the results CSV",
                          "maxLength": 255
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 25000
                  },
                  "families": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "profile",
                        "contact_email",
                        "contact_phone"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 3,
                    "uniqueItems": true,
                    "description": "What to look up for each item (default: profile)"
                  },
                  "emailType": {
                    "type": "string",
                    "enum": [
                      "professional",
                      "personal",
                      "any"
                    ],
                    "default": "professional",
                    "description": "With contact_email: the kind of email to look for"
                  },
                  "live": {
                    "type": "boolean",
                    "description": "Scrape LinkedIn URL items live instead of reading saved data (default false)"
                  },
                  "name": {
                    "type": "string",
                    "description": "A name for the job history (default: Sent via API)",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "webhookUrl": {
                    "type": "string",
                    "description": "Public HTTPS URL that receives one POST when the job settles: { event: job.updated, jobId, type, status, pollUrl, resultsUrl, occurredAt }. It carries no results. A failed POST (timeout, network error, 408, 429, 5xx) is retried for about 3 hours, so the same event can arrive twice: key it on jobId and status.",
                    "format": "uri",
                    "maxLength": 2048
                  }
                },
                "required": [
                  "items"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional. A key you choose (1 to 255 printable ASCII characters, a UUID for example) that makes the request safe to retry. For 24 hours, a request with the same key and the same body returns the first response with Idempotent-Replayed: true, without starting another lookup or debiting credits.",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "externalDocs": {
          "description": "Bulk enrichment",
          "url": "https://docs.reversecontact.com/endpoints/bulk-enrich-persons"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free to send. Each item costs what its unit call costs, reserved when the job is created and refunded for what is not found."
        },
        "x-mode": "async",
        "x-availability": "available"
      }
    },
    "/v2/jobs": {
      "get": {
        "operationId": "listJobs",
        "summary": "List jobs",
        "description": "Every background job of the workspace the key may read, newest first, whoever started it: Bulk enrich jobs, List imports and enrichments, Search exports. Pass nextCursor back as cursor for the next page. Credits: 0.",
        "tags": [
          "Bulk"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Jobs",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Job id",
                                    "format": "uuid"
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "enrich_persons",
                                      "list_import",
                                      "list_enrich",
                                      "list_search_import",
                                      "search_export"
                                    ],
                                    "description": "enrich_persons: a Bulk enrich job (POST /v2/enrich/persons/bulk, or a file from the dashboard). list_import: Signals or a file imported into a List. list_enrich: data fetched for List members. list_search_import: a Search added to a List. search_export: a Search exported as a file."
                                  },
                                  "entity": {
                                    "type": "string",
                                    "enum": [
                                      "persons",
                                      "companies"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "queued",
                                      "running",
                                      "paused",
                                      "completed",
                                      "cancelled",
                                      "failed"
                                    ],
                                    "description": "queued and running still move (read it again, or wait=N); paused waits for someone to resume it; completed, cancelled and failed are final."
                                  },
                                  "source": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": [
                                          "api",
                                          "mcp",
                                          "ask",
                                          "dashboard"
                                        ],
                                        "description": "Who started it: an API key, an AI assistant (MCP), Ask, or the dashboard. null for a job created before sources were recorded."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The file name, or the name given at creation"
                                  },
                                  "listId": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "description": "The List a List job works on",
                                        "format": "uuid"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "progress": {
                                    "type": "object",
                                    "properties": {
                                      "total": {
                                        "type": "integer",
                                        "description": "Items in the job"
                                      },
                                      "processed": {
                                        "type": "integer",
                                        "description": "Items done"
                                      },
                                      "succeeded": {
                                        "type": "integer",
                                        "description": "Items that delivered"
                                      },
                                      "failed": {
                                        "type": "integer",
                                        "description": "Items that did not (not found, invalid, error)"
                                      },
                                      "skipped": {
                                        "type": "integer",
                                        "description": "Items not run (duplicates, no usable input, out of credits, cancelled)"
                                      },
                                      "remaining": {
                                        "type": "integer",
                                        "description": "Items left"
                                      }
                                    },
                                    "required": [
                                      "total",
                                      "processed",
                                      "succeeded",
                                      "failed",
                                      "skipped",
                                      "remaining"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "credits": {
                                    "type": "object",
                                    "properties": {
                                      "estimated": {
                                        "type": "integer",
                                        "description": "Credits reserved when the job was created (0 when nothing is reserved up front)"
                                      },
                                      "used": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "description": "Credits spent, once the job has settled them"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "estimated",
                                      "used"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "estimatedSecondsRemaining": {
                                    "anyOf": [
                                      {
                                        "type": "integer",
                                        "description": "Seconds left from the job's recent pace, while it runs; null when unknown"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "error": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "code": {
                                            "type": "string",
                                            "description": "Why the job failed"
                                          }
                                        },
                                        "required": [
                                          "code"
                                        ],
                                        "additionalProperties": false
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "description": "ISO 8601",
                                    "format": "date-time"
                                  },
                                  "startedAt": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "description": "ISO 8601",
                                        "format": "date-time"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "completedAt": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "description": "ISO 8601",
                                        "format": "date-time"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "links": {
                                    "type": "object",
                                    "properties": {
                                      "self": {
                                        "type": "string",
                                        "description": "Reads this job (wait=N holds the request until it settles)"
                                      },
                                      "results": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "description": "Its results CSV, set once the job is completed or cancelled (enrich_persons jobs)"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "operation": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "description": "The List operation it runs as (List jobs)"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "self",
                                      "results",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "id",
                                  "type",
                                  "entity",
                                  "status",
                                  "source",
                                  "name",
                                  "listId",
                                  "progress",
                                  "credits",
                                  "estimatedSecondsRemaining",
                                  "error",
                                  "createdAt",
                                  "startedAt",
                                  "completedAt",
                                  "links"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "nextCursor": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Cursor of the next page, null on the last one"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "items",
                            "nextCursor"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Only these types, comma-separated (enrich_persons, list_import, list_enrich, list_search_import, search_export)"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Only these statuses, comma-separated (queued, running, paused, completed, cancelled, failed)"
            }
          },
          {
            "name": "listId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Only the jobs of this List",
              "format": "uuid"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Jobs per page (1-100, default 50)",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Opaque cursor: the nextCursor of the previous page, sent with the same filters. A malformed cursor, or one sent with other filters, is refused with 400."
            }
          }
        ],
        "externalDocs": {
          "description": "Job history",
          "url": "https://docs.reversecontact.com/endpoints/jobs"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/jobs/{jobId}": {
      "get": {
        "operationId": "getJob",
        "summary": "Get a job",
        "description": "Reads one job. With wait=N (0 to 20), the request is held while the job is queued or running and answers as soon as it settles or pauses; it may also answer earlier with the job still running. While the job moves, the response carries Retry-After: 2; read it again no sooner than that. Credits: 0 (free). Does not increment per-minute rate limit counters.",
        "tags": [
          "Bulk"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The job",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Job id",
                              "format": "uuid"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "enrich_persons",
                                "list_import",
                                "list_enrich",
                                "list_search_import",
                                "search_export"
                              ],
                              "description": "enrich_persons: a Bulk enrich job (POST /v2/enrich/persons/bulk, or a file from the dashboard). list_import: Signals or a file imported into a List. list_enrich: data fetched for List members. list_search_import: a Search added to a List. search_export: a Search exported as a file."
                            },
                            "entity": {
                              "type": "string",
                              "enum": [
                                "persons",
                                "companies"
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "queued",
                                "running",
                                "paused",
                                "completed",
                                "cancelled",
                                "failed"
                              ],
                              "description": "queued and running still move (read it again, or wait=N); paused waits for someone to resume it; completed, cancelled and failed are final."
                            },
                            "source": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "api",
                                    "mcp",
                                    "ask",
                                    "dashboard"
                                  ],
                                  "description": "Who started it: an API key, an AI assistant (MCP), Ask, or the dashboard. null for a job created before sources were recorded."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "name": {
                              "type": "string",
                              "description": "The file name, or the name given at creation"
                            },
                            "listId": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "The List a List job works on",
                                  "format": "uuid"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "progress": {
                              "type": "object",
                              "properties": {
                                "total": {
                                  "type": "integer",
                                  "description": "Items in the job"
                                },
                                "processed": {
                                  "type": "integer",
                                  "description": "Items done"
                                },
                                "succeeded": {
                                  "type": "integer",
                                  "description": "Items that delivered"
                                },
                                "failed": {
                                  "type": "integer",
                                  "description": "Items that did not (not found, invalid, error)"
                                },
                                "skipped": {
                                  "type": "integer",
                                  "description": "Items not run (duplicates, no usable input, out of credits, cancelled)"
                                },
                                "remaining": {
                                  "type": "integer",
                                  "description": "Items left"
                                }
                              },
                              "required": [
                                "total",
                                "processed",
                                "succeeded",
                                "failed",
                                "skipped",
                                "remaining"
                              ],
                              "additionalProperties": false
                            },
                            "credits": {
                              "type": "object",
                              "properties": {
                                "estimated": {
                                  "type": "integer",
                                  "description": "Credits reserved when the job was created (0 when nothing is reserved up front)"
                                },
                                "used": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "description": "Credits spent, once the job has settled them"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "estimated",
                                "used"
                              ],
                              "additionalProperties": false
                            },
                            "estimatedSecondsRemaining": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "description": "Seconds left from the job's recent pace, while it runs; null when unknown"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "error": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "code": {
                                      "type": "string",
                                      "description": "Why the job failed"
                                    }
                                  },
                                  "required": [
                                    "code"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "createdAt": {
                              "type": "string",
                              "description": "ISO 8601",
                              "format": "date-time"
                            },
                            "startedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "ISO 8601",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "completedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "ISO 8601",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "links": {
                              "type": "object",
                              "properties": {
                                "self": {
                                  "type": "string",
                                  "description": "Reads this job (wait=N holds the request until it settles)"
                                },
                                "results": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "Its results CSV, set once the job is completed or cancelled (enrich_persons jobs)"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "operation": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "The List operation it runs as (List jobs)"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "self",
                                "results",
                                "operation"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "required": [
                            "id",
                            "type",
                            "entity",
                            "status",
                            "source",
                            "name",
                            "listId",
                            "progress",
                            "credits",
                            "estimatedSecondsRemaining",
                            "error",
                            "createdAt",
                            "startedAt",
                            "completedAt",
                            "links"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before polling GET /v2/webhooks/{webhookId} again (always 2). Present while the job is not finished; absent once it is.",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Job id",
              "format": "uuid"
            }
          },
          {
            "name": "wait",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20,
              "default": 0,
              "description": "Long-poll: seconds to hold the request while the job still moves (0 to 20). Absent or 0 answers immediately. Out of range or not an integer: 422 VALIDATION_ERROR."
            }
          }
        ],
        "externalDocs": {
          "description": "Get a job",
          "url": "https://docs.reversecontact.com/endpoints/job"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free, also at a zero balance, and never counted against the rate limits."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/jobs/{jobId}/results": {
      "get": {
        "operationId": "getJobResults",
        "summary": "Get the results of a job",
        "description": "The results of an enrich_persons job, one per item, in the order sent, streamed. format=csv (default) is the file the dashboard downloads: your columns come first (linkedinUrl, email, firstName, lastName, companyDomain, companyName, externalId), then rc_status and rc_message (what happened, with the credits it cost), the finder columns the job asked for (rc_email, rc_phone and their status), and the rc_ person columns (only rc_linkedin_url when the job did not ask for the profile). format=ndjson (JSON Lines) gives one JobResultLine per line: the same outcome, typed, with the person in the /v2/enrich/persons shape. The file exists once the job is completed or cancelled, when links.results is set: before, 409 JOB_RESULTS_NOT_READY. A job stored before NDJSON existed has its CSV only: 409 JOB_RESULTS_FORMAT_UNAVAILABLE. A cancelled job still finishes the items it had started: each reads running until it ends, within the hour, and the file downloaded after that gives its outcome. Credits: 0 (free).",
        "tags": [
          "Bulk"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The results, streamed: a CSV (UTF-8 with a byte order mark), or NDJSON (one JobResultLine per line)",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/x-ndjson": {
                "schema": {
                  "$ref": "#/components/schemas/JobResultLine"
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "JOB_RESULTS_NOT_READY: the job is queued, running or paused (the file is ready once it is completed or cancelled), or failed (no file). JOB_RESULTS_FORMAT_UNAVAILABLE: the job was stored before NDJSON existed, its CSV stays available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Job id",
              "format": "uuid"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "csv",
                "ndjson"
              ],
              "default": "csv",
              "description": "csv (default) or ndjson (one JSON object per line, JSON Lines)"
            }
          }
        ],
        "externalDocs": {
          "description": "Download job results",
          "url": "https://docs.reversecontact.com/endpoints/job-results"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free, also at a zero balance."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/jobs/{jobId}/rows": {
      "get": {
        "operationId": "getJobRows",
        "summary": "Read the results of a job, a page at a time",
        "description": "The results of an enrich_persons job in the order sent, one JobResultLine per item, as in the NDJSON file, readable from the start of the run. While the job runs, a page stops at the first item not finished: items is empty, with Retry-After, while the next one runs, and a cursor never skips an item. A cancelled job still finishes the items it had started, within the hour: a page waits for them the same way. Pass nextCursor back as cursor; it is null once nothing more will come. A page can hold fewer items than limit (at most 100, 2 MB of JSON). A cursor keeps working once the job settles. A job stored before reading by page existed: 409 JOB_RESULTS_FORMAT_UNAVAILABLE, its CSV stays available at /v2/jobs/{jobId}/results. Too many pages read at once: 429 JOB_ROWS_BUSY, retry after Retry-After. Credits: 0 (free).",
        "tags": [
          "Bulk"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "One page of results",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JobResultLine"
                              },
                              "description": "The items of this page, in the order sent"
                            },
                            "nextCursor": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "Where to read next; null once nothing more will come"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "queued",
                                "running",
                                "paused",
                                "completed",
                                "cancelled",
                                "failed"
                              ],
                              "description": "The job status when the page was read"
                            }
                          },
                          "required": [
                            "items",
                            "nextCursor",
                            "status"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Set when items is empty while nextCursor is not: the next item is still running, read again after this many seconds",
                "schema": {
                  "type": "integer",
                  "const": 2
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "JOB_RESULTS_FORMAT_UNAVAILABLE: the job was stored before reading by page existed, its CSV stays available",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "JOB_ROWS_BUSY: too many pages read at once on the server. Or the rate limit, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait Retry-After (error.details.retryAfter) seconds, then retry.",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before reading again",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Job id",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 512,
              "description": "nextCursor of the previous page. Absent: the first item. A cursor of another job: 400 JOB_INVALID_INPUT."
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 100,
              "description": "Items per page, at most 100."
            }
          }
        ],
        "externalDocs": {
          "description": "Read job results by page",
          "url": "https://docs.reversecontact.com/endpoints/job-rows"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free, also at a zero balance. Each page counts toward the rate limits."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/jobs/{jobId}/cancel": {
      "post": {
        "operationId": "cancelJob",
        "summary": "Cancel a job",
        "description": "Stops a job an API key or an AI assistant started; a job a person started is stopped in the dashboard (403 JOB_STARTED_BY_A_PERSON). Items already in flight may finish and settle; items not started are never charged and read skipped. Final: idempotent on a cancelled job; a job that already ended answers 409 JOB_NOT_CANCELLABLE. Credits: 0.",
        "tags": [
          "Bulk"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The cancelled job",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Job id",
                              "format": "uuid"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "enrich_persons",
                                "list_import",
                                "list_enrich",
                                "list_search_import",
                                "search_export"
                              ],
                              "description": "enrich_persons: a Bulk enrich job (POST /v2/enrich/persons/bulk, or a file from the dashboard). list_import: Signals or a file imported into a List. list_enrich: data fetched for List members. list_search_import: a Search added to a List. search_export: a Search exported as a file."
                            },
                            "entity": {
                              "type": "string",
                              "enum": [
                                "persons",
                                "companies"
                              ]
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "queued",
                                "running",
                                "paused",
                                "completed",
                                "cancelled",
                                "failed"
                              ],
                              "description": "queued and running still move (read it again, or wait=N); paused waits for someone to resume it; completed, cancelled and failed are final."
                            },
                            "source": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "api",
                                    "mcp",
                                    "ask",
                                    "dashboard"
                                  ],
                                  "description": "Who started it: an API key, an AI assistant (MCP), Ask, or the dashboard. null for a job created before sources were recorded."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "name": {
                              "type": "string",
                              "description": "The file name, or the name given at creation"
                            },
                            "listId": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "The List a List job works on",
                                  "format": "uuid"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "progress": {
                              "type": "object",
                              "properties": {
                                "total": {
                                  "type": "integer",
                                  "description": "Items in the job"
                                },
                                "processed": {
                                  "type": "integer",
                                  "description": "Items done"
                                },
                                "succeeded": {
                                  "type": "integer",
                                  "description": "Items that delivered"
                                },
                                "failed": {
                                  "type": "integer",
                                  "description": "Items that did not (not found, invalid, error)"
                                },
                                "skipped": {
                                  "type": "integer",
                                  "description": "Items not run (duplicates, no usable input, out of credits, cancelled)"
                                },
                                "remaining": {
                                  "type": "integer",
                                  "description": "Items left"
                                }
                              },
                              "required": [
                                "total",
                                "processed",
                                "succeeded",
                                "failed",
                                "skipped",
                                "remaining"
                              ],
                              "additionalProperties": false
                            },
                            "credits": {
                              "type": "object",
                              "properties": {
                                "estimated": {
                                  "type": "integer",
                                  "description": "Credits reserved when the job was created (0 when nothing is reserved up front)"
                                },
                                "used": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "description": "Credits spent, once the job has settled them"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "estimated",
                                "used"
                              ],
                              "additionalProperties": false
                            },
                            "estimatedSecondsRemaining": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "description": "Seconds left from the job's recent pace, while it runs; null when unknown"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "error": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "code": {
                                      "type": "string",
                                      "description": "Why the job failed"
                                    }
                                  },
                                  "required": [
                                    "code"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "createdAt": {
                              "type": "string",
                              "description": "ISO 8601",
                              "format": "date-time"
                            },
                            "startedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "ISO 8601",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "completedAt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "ISO 8601",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "links": {
                              "type": "object",
                              "properties": {
                                "self": {
                                  "type": "string",
                                  "description": "Reads this job (wait=N holds the request until it settles)"
                                },
                                "results": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "Its results CSV, set once the job is completed or cancelled (enrich_persons jobs)"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "operation": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "description": "The List operation it runs as (List jobs)"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "self",
                                "results",
                                "operation"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "required": [
                            "id",
                            "type",
                            "entity",
                            "status",
                            "source",
                            "name",
                            "listId",
                            "progress",
                            "credits",
                            "estimatedSecondsRemaining",
                            "error",
                            "createdAt",
                            "startedAt",
                            "completedAt",
                            "links"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "JOB_NOT_CANCELLABLE: the job already ended",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Job id",
              "format": "uuid"
            }
          }
        ],
        "externalDocs": {
          "description": "Cancel a job",
          "url": "https://docs.reversecontact.com/endpoints/job-cancel"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free. Items that had not started are never charged."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    },
    "/v2/usage": {
      "get": {
        "operationId": "getUsage",
        "summary": "Usage",
        "description": "Returns workspace credit balance and rate limit status. data is always null; all useful information is in the quotas block. Credits: 0 (free).",
        "tags": [
          "Usage"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Usage and quota snapshot",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/V2SuccessEnvelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "null",
                          "description": "Always null for this endpoint"
                        }
                      },
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON body or endpoint-specific business validation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key or OAuth access token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "402": {
            "description": "No credits left. Purchase more to continue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Data not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Schema or validation error, unresolved internal id, or disposable email domain",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          },
          "451": {
            "description": "Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/V2ErrorEnvelope"
                }
              }
            }
          }
        },
        "externalDocs": {
          "description": "Usage",
          "url": "https://docs.reversecontact.com/endpoints/usage"
        },
        "x-credits": {
          "amount": 0,
          "per": "request",
          "summary": "Free."
        },
        "x-mode": "sync",
        "x-availability": "available"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "rc_* or oat_*",
        "description": "API key or OAuth access token from the Reverse Contact developer dashboard. Pass as Authorization: Bearer rc_... or Authorization: Bearer oat_..."
      }
    },
    "schemas": {
      "Industry": {
        "type": "string",
        "enum": [
          "Abrasives and Nonmetallic Minerals Manufacturing",
          "Accessible Architecture and Design",
          "Accessible Hardware Manufacturing",
          "Accommodation and Food Services",
          "Accounting",
          "Administration of Justice",
          "Administrative and Support Services",
          "Advertising Services",
          "Agricultural Chemical Manufacturing",
          "Agriculture, Construction, Mining Machinery Manufacturing",
          "Airlines and Aviation",
          "Air, Water, and Waste Program Management",
          "Alternative Dispute Resolution",
          "Alternative Fuel Vehicle Manufacturing",
          "Alternative Medicine",
          "Ambulance Services",
          "Amusement Parks and Arcades",
          "Animal Feed Manufacturing",
          "Animation",
          "Animation and Post-production",
          "Apparel & Fashion",
          "Apparel Manufacturing",
          "Appliances, Electrical, and Electronics Manufacturing",
          "Architectural and Structural Metal Manufacturing",
          "Architecture and Planning",
          "Armed Forces",
          "Artificial Rubber and Synthetic Fiber Manufacturing",
          "Artists and Writers",
          "Arts & Crafts",
          "Audio and Video Equipment Manufacturing",
          "Automation Machinery Manufacturing",
          "Automotive",
          "Aviation & Aerospace",
          "Aviation and Aerospace Component Manufacturing",
          "Baked Goods Manufacturing",
          "Banking",
          "Bars, Taverns, and Nightclubs",
          "Bed-and-Breakfasts, Hostels, Homestays",
          "Beverage Manufacturing",
          "Biomass Electric Power Generation",
          "Biotechnology",
          "Biotechnology Research",
          "Blockchain Services",
          "Blogs",
          "Boilers, Tanks, and Shipping Container Manufacturing",
          "Book and Periodical Publishing",
          "Book Publishing",
          "Breweries",
          "Broadcast Media Production and Distribution",
          "Building Construction",
          "Building Equipment Contractors",
          "Building Finishing Contractors",
          "Building Materials",
          "Building Structure and Exterior Contractors",
          "Business Consulting and Services",
          "Business Content",
          "Business Intelligence Platforms",
          "Business Supplies & Equipment",
          "Cable and Satellite Programming",
          "Capital Markets",
          "Caterers",
          "Chemical Manufacturing",
          "Chemical Raw Materials Manufacturing",
          "Child Day Care Services",
          "Chiropractors",
          "Circuses and Magic Shows",
          "Civic and Social Organizations",
          "Civil Engineering",
          "Claims Adjusting, Actuarial Services",
          "Clay and Refractory Products Manufacturing",
          "Climate Data and Analytics",
          "Climate Technology Product Manufacturing",
          "Coal Mining",
          "Collection Agencies",
          "Commercial and Industrial Equipment Rental",
          "Commercial and Industrial Machinery Maintenance",
          "Commercial and Service Industry Machinery Manufacturing",
          "Commercial Real Estate",
          "Communications Equipment Manufacturing",
          "Community Development and Urban Planning",
          "Community Services",
          "Computer and Network Security",
          "Computer Games",
          "Computer Hardware",
          "Computer Hardware Manufacturing",
          "Computer Networking",
          "Computer Networking Products",
          "Computers and Electronics Manufacturing",
          "Conservation Programs",
          "Construction",
          "Construction Hardware Manufacturing",
          "Consumer Electronics",
          "Consumer Goods",
          "Consumer Goods Rental",
          "Consumer Services",
          "Correctional Institutions",
          "Cosmetics",
          "Cosmetology and Barber Schools",
          "Courts of Law",
          "Credit Intermediation",
          "Cutlery and Handtool Manufacturing",
          "Dairy",
          "Dairy Product Manufacturing",
          "Dance Companies",
          "Data Infrastructure and Analytics",
          "Data Security Software Products",
          "Death Care Services",
          "Defense and Space Manufacturing",
          "Defense & Space",
          "Dentists",
          "Design",
          "Design Services",
          "Desktop Computing Software Products",
          "Digital Accessibility Services",
          "Distilleries",
          "Economic Programs",
          "Education",
          "Education Administration Programs",
          "Education Management",
          "E-learning",
          "E-Learning Providers",
          "Electrical Equipment Manufacturing",
          "Electric Lighting Equipment Manufacturing",
          "Electric Power Generation",
          "Electric Power Transmission, Control, and Distribution",
          "Electronic and Precision Equipment Maintenance",
          "Embedded Software Products",
          "Emergency and Relief Services",
          "Energy Technology",
          "Engineering Services",
          "Engines and Power Transmission Equipment Manufacturing",
          "Entertainment",
          "Entertainment Providers",
          "Environmental Quality Programs",
          "Environmental Services",
          "Equipment Rental Services",
          "Events Services",
          "Executive Offices",
          "Executive Search Services",
          "Fabricated Metal Products",
          "Facilities Services",
          "Family Planning Centers",
          "Farming",
          "Farming, Ranching, Forestry",
          "Fashion Accessories Manufacturing",
          "Financial Services",
          "Fine Art",
          "Fine Arts Schools",
          "Fire Protection",
          "Fisheries",
          "Flight Training",
          "Food and Beverage Manufacturing",
          "Food and Beverage Retail",
          "Food and Beverage Services",
          "Food & Beverages",
          "Food Production",
          "Footwear and Leather Goods Repair",
          "Footwear Manufacturing",
          "Forestry and Logging",
          "Fossil Fuel Electric Power Generation",
          "Freight and Package Transportation",
          "Fruit and Vegetable Preserves Manufacturing",
          "Fuel Cell Manufacturing",
          "Fundraising",
          "Funds and Trusts",
          "Funeral Services",
          "Furniture",
          "Furniture and Home Furnishings Manufacturing",
          "Gambling Facilities and Casinos",
          "Geothermal Electric Power Generation",
          "Glass, Ceramics and Concrete Manufacturing",
          "Glass Product Manufacturing",
          "Golf Courses and Country Clubs",
          "Government Administration",
          "Government Relations",
          "Government Relations Services",
          "Graphic Design",
          "Ground Passenger Transportation",
          "Health and Human Services",
          "Health Wellness & Fitness",
          "Higher Education",
          "Highway, Street, and Bridge Construction",
          "Historical Sites",
          "Holding Companies",
          "Home Health Care Services",
          "Horticulture",
          "Hospitality",
          "Hospitals",
          "Hospitals and Health Care",
          "Hotels and Motels",
          "Household and Institutional Furniture Manufacturing",
          "Household Appliance Manufacturing",
          "Household Services",
          "Housing and Community Development",
          "Housing Programs",
          "Human Resources",
          "Human Resources Services",
          "HVAC and Refrigeration Equipment Manufacturing",
          "Hydroelectric Power Generation",
          "Import & Export",
          "Individual and Family Services",
          "Industrial Automation",
          "Industrial Machinery Manufacturing",
          "Industry Associations",
          "Information Services",
          "Information Technology & Services",
          "Insurance",
          "Insurance Agencies and Brokerages",
          "Insurance and Employee Benefit Funds",
          "Insurance Carriers",
          "Interior Design",
          "International Affairs",
          "International Trade and Development",
          "Internet Marketplace Platforms",
          "Internet News",
          "Internet Publishing",
          "Interurban and Rural Bus Services",
          "Investment Advice",
          "Investment Banking",
          "Investment Management",
          "IT Services and IT Consulting",
          "IT System Custom Software Development",
          "IT System Data Services",
          "IT System Design Services",
          "IT System Installation and Disposal",
          "IT System Operations and Maintenance",
          "IT System Testing and Evaluation",
          "IT System Training and Support",
          "Janitorial Services",
          "Landscaping Services",
          "Language Schools",
          "Laundry and Drycleaning Services",
          "Law Enforcement",
          "Law Practice",
          "Leasing Non-residential Real Estate",
          "Leasing Residential Real Estate",
          "Leather Product Manufacturing",
          "Legal Services",
          "Legislative Offices",
          "Leisure, Travel & Tourism",
          "Libraries",
          "Lime and Gypsum Products Manufacturing",
          "Loan Brokers",
          "Luxury Goods & Jewelry",
          "Machinery Manufacturing",
          "Magnetic and Optical Media Manufacturing",
          "Manufacturing",
          "Maritime",
          "Maritime Transportation",
          "Marketing Services",
          "Market Research",
          "Mattress and Blinds Manufacturing",
          "Measuring and Control Instrument Manufacturing",
          "Meat Products Manufacturing",
          "Mechanical Or Industrial Engineering",
          "Media and Telecommunications",
          "Media Production",
          "Medical and Diagnostic Laboratories",
          "Medical Device",
          "Medical Equipment Manufacturing",
          "Medical Practices",
          "Mental Health Care",
          "Metal Ore Mining",
          "Metal Treatments",
          "Metal Valve, Ball, and Roller Manufacturing",
          "Metalworking Machinery Manufacturing",
          "Military and International Affairs",
          "Mining",
          "Mobile Computing Software Products",
          "Mobile Food Services",
          "Mobile Gaming Apps",
          "Motor Vehicle Manufacturing",
          "Motor Vehicle Parts Manufacturing",
          "Movies and Sound Recording",
          "Movies, Videos and Sound",
          "Museums",
          "Museums, Historical Sites, and Zoos",
          "Music",
          "Musicians",
          "Nanotechnology Research",
          "Natural Gas Distribution",
          "Natural Gas Extraction",
          "Newspaper Publishing",
          "Nonmetallic Mineral Mining",
          "Non-profit Organization Management",
          "Non-profit Organizations",
          "Nonresidential Building Construction",
          "Nuclear Electric Power Generation",
          "Nursing Homes and Residential Care Facilities",
          "Office Administration",
          "Office Furniture and Fixtures Manufacturing",
          "Oil and Coal Product Manufacturing",
          "Oil and Gas",
          "Oil Extraction",
          "Oil, Gas, and Mining",
          "Online and Mail Order Retail",
          "Online Audio and Video Media",
          "Online Media",
          "Operations Consulting",
          "Optometrists",
          "Outpatient Care Centers",
          "Outsourcing and Offshoring Consulting",
          "Outsourcing/Offshoring",
          "Packaging and Containers Manufacturing",
          "Packaging & Containers",
          "Paint, Coating, and Adhesive Manufacturing",
          "Paper and Forest Product Manufacturing",
          "Paper & Forest Products",
          "Pension Funds",
          "Performing Arts",
          "Performing Arts and Spectator Sports",
          "Periodical Publishing",
          "Personal and Laundry Services",
          "Personal Care Product Manufacturing",
          "Personal Care Services",
          "Pet Services",
          "Pharmaceutical Manufacturing",
          "Philanthropic Fundraising Services",
          "Philanthropy",
          "Photography",
          "Physical, Occupational and Speech Therapists",
          "Physicians",
          "Pipeline Transportation",
          "Plastics and Rubber Product Manufacturing",
          "Plastics Manufacturing",
          "Political Organizations",
          "Postal Services",
          "Primary and Secondary Education",
          "Primary Metal Manufacturing",
          "Printing Services",
          "Professional Organizations",
          "Professional Services",
          "Professional Training and Coaching",
          "Program Development",
          "Public Assistance Programs",
          "Public Health",
          "Public Policy",
          "Public Policy Offices",
          "Public Relations and Communications Services",
          "Public Safety",
          "Racetracks",
          "Radio and Television Broadcasting",
          "Railroad Equipment Manufacturing",
          "Rail Transportation",
          "Ranching",
          "Ranching and Fisheries",
          "Real Estate",
          "Real Estate Agents and Brokers",
          "Real Estate and Equipment Rental Services",
          "Recreational Facilities",
          "Regenerative Design",
          "Religious Institutions",
          "Renewable Energy Equipment Manufacturing",
          "Renewable Energy Power Generation",
          "Renewable Energy Semiconductor Manufacturing",
          "Renewables & Environment",
          "Repair and Maintenance",
          "Research",
          "Research Services",
          "Residential Building Construction",
          "Restaurants",
          "Retail",
          "Retail Apparel and Fashion",
          "Retail Appliances, Electrical, and Electronic Equipment",
          "Retail Art Dealers",
          "Retail Art Supplies",
          "Retail Books and Printed News",
          "Retail Building Materials and Garden Equipment",
          "Retail Florists",
          "Retail Furniture and Home Furnishings",
          "Retail Gasoline",
          "Retail Groceries",
          "Retail Health and Personal Care Products",
          "Retail Luxury Goods and Jewelry",
          "Retail Motor Vehicles",
          "Retail Musical Instruments",
          "Retail Office Equipment",
          "Retail Office Supplies and Gifts",
          "Retail Pharmacies",
          "Retail Recyclable Materials & Used Merchandise",
          "Reupholstery and Furniture Repair",
          "Robotics Engineering",
          "Robot Manufacturing",
          "Rubber Products Manufacturing",
          "Satellite Telecommunications",
          "Savings Institutions",
          "School and Employee Bus Services",
          "Seafood Product Manufacturing",
          "Secretarial Schools",
          "Securities and Commodity Exchanges",
          "Security and Investigations",
          "Security Guards and Patrol Services",
          "Security Systems Services",
          "Semiconductor Manufacturing",
          "Semiconductors",
          "Services for Renewable Energy",
          "Services for the Elderly and Disabled",
          "Sheet Music Publishing",
          "Shipbuilding",
          "Shuttles and Special Needs Transportation Services",
          "Sightseeing Transportation",
          "Skiing Facilities",
          "Smart Meter Manufacturing",
          "Soap and Cleaning Product Manufacturing",
          "Social Networking Platforms",
          "Software Development",
          "Solar Electric Power Generation",
          "Sound Recording",
          "Space Research and Technology",
          "Specialty Trade Contractors",
          "Spectator Sports",
          "Sporting Goods",
          "Sporting Goods Manufacturing",
          "Sports and Recreation Instruction",
          "Sports Teams and Clubs",
          "Spring and Wire Product Manufacturing",
          "Staffing and Recruiting",
          "Steam and Air-Conditioning Supply",
          "Strategic Management Services",
          "Subdivision of Land",
          "Sugar and Confectionery Product Manufacturing",
          "Surveying and Mapping Services",
          "Taxi and Limousine Services",
          "Technical and Vocational Training",
          "Technology, Information and Internet",
          "Technology, Information and Media",
          "Telecommunications",
          "Telecommunications Carriers",
          "Telephone Call Centers",
          "Temporary Help Services",
          "Textile Manufacturing",
          "Theater Companies",
          "Think Tanks",
          "Tobacco",
          "Tobacco Manufacturing",
          "Translation and Localization",
          "Transportation Equipment Manufacturing",
          "Transportation, Logistics, Supply Chain and Storage",
          "Transportation Programs",
          "Transportation/Trucking/Railroad",
          "Travel Arrangements",
          "Truck Transportation",
          "Trusts and Estates",
          "Turned Products and Fastener Manufacturing",
          "Urban Transit Services",
          "Utilities",
          "Utilities Administration",
          "Utility System Construction",
          "Vehicle Repair and Maintenance",
          "Venture Capital and Private Equity Principals",
          "Veterinary",
          "Veterinary Services",
          "Vocational Rehabilitation Services",
          "Warehousing",
          "Warehousing and Storage",
          "Waste Collection",
          "Waste Treatment and Disposal",
          "Water Supply and Irrigation Systems",
          "Water, Waste, Steam, and Air Conditioning Services",
          "Wellness and Fitness Services",
          "Wholesale",
          "Wholesale Alcoholic Beverages",
          "Wholesale Apparel and Sewing Supplies",
          "Wholesale Appliances, Electrical, and Electronics",
          "Wholesale Building Materials",
          "Wholesale Chemical and Allied Products",
          "Wholesale Computer Equipment",
          "Wholesale Drugs and Sundries",
          "Wholesale Food and Beverage",
          "Wholesale Footwear",
          "Wholesale Furniture and Home Furnishings",
          "Wholesale Hardware, Plumbing, Heating Equipment",
          "Wholesale Import and Export",
          "Wholesale Luxury Goods and Jewelry",
          "Wholesale Machinery",
          "Wholesale Metals and Minerals",
          "Wholesale Motor Vehicles and Parts",
          "Wholesale Paper Products",
          "Wholesale Petroleum and Petroleum Products",
          "Wholesale Photography Equipment and Supplies",
          "Wholesale Raw Farm Products",
          "Wholesale Recyclable Materials",
          "Wind Electric Power Generation",
          "Wineries",
          "Wine & Spirits",
          "Wireless Services",
          "Women's Handbag Manufacturing",
          "Wood Product Manufacturing",
          "Writing and Editing",
          "Zoos and Botanical Gardens"
        ],
        "description": "Industry from the published taxonomy (see docs.reversecontact.com/guides/industries)"
      },
      "CountryCode": {
        "type": "string",
        "enum": [
          "AF",
          "AL",
          "DZ",
          "AS",
          "AD",
          "AO",
          "AI",
          "AQ",
          "AG",
          "AR",
          "AM",
          "AW",
          "AU",
          "AT",
          "AZ",
          "BS",
          "BH",
          "BD",
          "BB",
          "BY",
          "BE",
          "BZ",
          "BJ",
          "BM",
          "BT",
          "BO",
          "BQ",
          "BA",
          "BW",
          "BV",
          "BR",
          "IO",
          "BN",
          "BG",
          "BF",
          "BI",
          "CV",
          "KH",
          "CM",
          "CA",
          "KY",
          "CF",
          "TD",
          "CL",
          "CN",
          "CX",
          "CC",
          "CO",
          "KM",
          "CG",
          "CD",
          "CK",
          "CR",
          "HR",
          "CU",
          "CW",
          "CY",
          "CZ",
          "CI",
          "DK",
          "DJ",
          "DM",
          "DO",
          "EC",
          "EG",
          "SV",
          "GQ",
          "ER",
          "EE",
          "SZ",
          "ET",
          "FK",
          "FO",
          "FJ",
          "FI",
          "FR",
          "GF",
          "PF",
          "TF",
          "GA",
          "GM",
          "GE",
          "DE",
          "GH",
          "GI",
          "GR",
          "GL",
          "GD",
          "GP",
          "GU",
          "GT",
          "GG",
          "GN",
          "GW",
          "GY",
          "HT",
          "HM",
          "VA",
          "HN",
          "HK",
          "HU",
          "IS",
          "IN",
          "ID",
          "IR",
          "IQ",
          "IE",
          "IM",
          "IL",
          "IT",
          "JM",
          "JP",
          "JE",
          "JO",
          "KZ",
          "KE",
          "KI",
          "KP",
          "KR",
          "XK",
          "KW",
          "KG",
          "LA",
          "LV",
          "LB",
          "LS",
          "LR",
          "LY",
          "LI",
          "LT",
          "LU",
          "MO",
          "MG",
          "MW",
          "MY",
          "MV",
          "ML",
          "MT",
          "MH",
          "MQ",
          "MR",
          "MU",
          "YT",
          "MX",
          "FM",
          "MD",
          "MC",
          "MN",
          "ME",
          "MS",
          "MA",
          "MZ",
          "MM",
          "NA",
          "NR",
          "NP",
          "NL",
          "NC",
          "NZ",
          "NI",
          "NE",
          "NG",
          "NU",
          "NF",
          "MK",
          "MP",
          "NO",
          "OM",
          "PK",
          "PW",
          "PS",
          "PA",
          "PG",
          "PY",
          "PE",
          "PH",
          "PN",
          "PL",
          "PT",
          "PR",
          "QA",
          "RO",
          "RU",
          "RW",
          "RE",
          "BL",
          "SH",
          "KN",
          "LC",
          "MF",
          "PM",
          "VC",
          "WS",
          "SM",
          "ST",
          "SA",
          "SN",
          "RS",
          "SC",
          "SL",
          "SG",
          "SX",
          "SK",
          "SI",
          "SB",
          "SO",
          "ZA",
          "GS",
          "SS",
          "ES",
          "LK",
          "SD",
          "SR",
          "SJ",
          "SE",
          "CH",
          "SY",
          "TW",
          "TJ",
          "TZ",
          "TH",
          "TL",
          "TG",
          "TK",
          "TO",
          "TT",
          "TN",
          "TM",
          "TC",
          "TV",
          "TR",
          "UG",
          "UA",
          "AE",
          "GB",
          "UM",
          "US",
          "UY",
          "UZ",
          "VU",
          "VE",
          "VN",
          "VG",
          "VI",
          "WF",
          "EH",
          "YE",
          "ZM",
          "ZW",
          "AX"
        ],
        "description": "ISO 3166-1 alpha-2 country code, plus XK for Kosovo"
      },
      "JobFunction": {
        "type": "string",
        "enum": [
          "Administrative",
          "Agriculture and Environment",
          "Construction and Trades",
          "Consulting and Advisory",
          "Customer Service",
          "Design",
          "Education",
          "Energy and Utilities",
          "Entertainment and Gaming",
          "Executive and Leadership",
          "Finance",
          "Hospitality and Tourism",
          "Human Resources",
          "Legal",
          "Marketing",
          "Media and Communications",
          "Medical and Health",
          "Nonprofit and Government",
          "Not Employed",
          "Operations",
          "Other",
          "Personal and Home Services",
          "Product",
          "Project and Program Management",
          "Public Safety and Security",
          "Real Estate",
          "Research and Science",
          "Retail and Consumer",
          "Sales",
          "Software",
          "Traditional Engineering",
          "Transportation and Logistics"
        ],
        "description": "Function of a position, from the position taxonomy"
      },
      "JobSubFunction": {
        "type": "string",
        "enum": [
          "Academia",
          "Academic and Scholarly Research",
          "Account Executive",
          "Account Management",
          "Accounting",
          "Advertising",
          "Advocacy",
          "Aerospace Engineering",
          "Agile and Scrum",
          "Agriculture and Landscaping",
          "Allied Healthcare",
          "Anesthesiology",
          "Animal and Livestock Operations",
          "Architectural Design",
          "Architectural Engineering",
          "Audio and Sound",
          "Audit",
          "Automotive Engineering",
          "Backend and API Engineering",
          "Banking and Finance",
          "Bartender",
          "Beauty and Hair Services",
          "Billing and Collections",
          "Biomedical Engineering",
          "Branch and Regional Operations",
          "Brand Design",
          "Brand Marketing",
          "Broadcasting",
          "Business Analysis",
          "Business Applications ERP and CRM",
          "Business Continuity and Risk Operations",
          "Business Development",
          "Business Operations",
          "Call Center",
          "Cardiology",
          "Career Break",
          "Carpenter",
          "Cashier",
          "Certification and Regulatory Engineering",
          "Channel Sales",
          "Chef and Culinary",
          "Chemical Engineering",
          "Chief of Staff",
          "Childcare",
          "Civil Engineering",
          "Claims and Actuarial",
          "Cleaning and Janitorial",
          "Client Services",
          "Clinical Operations and Trials",
          "Clinical Research",
          "Clinical and Research Project Management",
          "Cloud and Platform Engineering",
          "Coaching",
          "Commercial Real Estate",
          "Community Outreach",
          "Compensation and Benefits",
          "Compliance",
          "Construction Project Management",
          "Construction Safety and HSE",
          "Content Creator",
          "Content Marketing",
          "Contracts",
          "Controllers",
          "Controls Automation and Instrumentation",
          "Copywriting",
          "Corporate Communications",
          "Corporate Development and Mergers and Acquisitions",
          "Corporate Finance",
          "Corporate Law",
          "Corporate and Business Strategy",
          "Corrections",
          "Creative Design",
          "Credit Analysis",
          "Cultural Institutions and Programs",
          "Curriculum Development",
          "Customer Experience",
          "Customer Onboarding and Implementation",
          "Customer Operations",
          "Customer Service Leadership",
          "Customer Success",
          "Customer Support",
          "Customs and Import Export",
          "Cybersecurity and Security Engineering",
          "Data Engineering and Analytics",
          "Data Entry",
          "Data Science and AI",
          "Data and AI Product Management",
          "Database Engineering and Administration",
          "Delivery Driver",
          "Demand Generation and ABM",
          "Dental",
          "DevOps and Site Reliability",
          "Digital and Performance Marketing",
          "Dispatcher",
          "Diversity and Inclusion",
          "Domestic Care",
          "E-commerce Operations",
          "EMT and Paramedic",
          "Early Childhood Education",
          "Editing",
          "Education - Teaching",
          "Educational Administration",
          "Eldercare",
          "Electrical Engineering",
          "Electrician",
          "Email Lifecycle and CRM Marketing",
          "Embedded Systems Firmware and Hardware",
          "Emergency Management and Disaster Relief",
          "Emergency Medicine",
          "Employee Relations",
          "Employment Law",
          "Energy Power and Nuclear Engineering",
          "Engineering Technician",
          "Enterprise Sales",
          "Enterprise and Solutions Architecture",
          "Entertainment Production",
          "Environmental Engineering",
          "Environmental Science",
          "Environmental Sustainability",
          "Event and Field Marketing",
          "Events and Hospitality Planning",
          "Executive Assistant",
          "Facilities Management",
          "Fashion Design",
          "Field Sales",
          "Field and Service Operations",
          "Film and Media Entertainment",
          "Finance Leadership",
          "Financial Consulting",
          "Financial Planning and Analysis",
          "Financial Reporting",
          "Firefighter",
          "Fitness and Wellness",
          "Fleet Management",
          "Food Service",
          "Forestry Fisheries and Aquaculture",
          "Freelancer",
          "Freight Forwarding",
          "Front Desk",
          "Frontend Engineering",
          "Full Stack and Application Engineering",
          "Fundraising",
          "Funeral and Personal Services",
          "Game Development",
          "General Administrative",
          "General Advisory",
          "General Clinical Care",
          "General Contractor",
          "General Customer Service",
          "General HR",
          "General Legal",
          "General Management",
          "General Marketing",
          "General Sales",
          "Global Mobility and Immigration",
          "Governance and Board Operations",
          "Government Administration",
          "Grant Writing",
          "Graphic Design",
          "Growth Marketing",
          "Growth Product Management",
          "HR Business Partner",
          "HR Compliance",
          "HR Consulting",
          "HR Leadership",
          "HR Operations",
          "HRIS and People Systems",
          "HVAC",
          "Hardware Product Management",
          "Healthcare Consulting",
          "Healthcare Quality and Patient Safety",
          "Heavy Equipment Operators",
          "Help Desk and IT Support",
          "Higher Education",
          "Home Health and Caregiving",
          "Home Repair",
          "Hotels and Hospitality Management",
          "Housekeeping",
          "IT Infrastructure Systems and Networks",
          "IT Management and Service Operations",
          "IT Procurement",
          "IT Project Management",
          "Illustration",
          "Implementation Consulting",
          "Implementation and Delivery Management",
          "Industrial Design",
          "Inside Sales and Telesales",
          "Insurance and Financial Sales",
          "Insurance and Underwriting",
          "Intellectual Property",
          "Intelligence Homeland and Border Security",
          "Interaction Design",
          "Interior Design",
          "International Development",
          "Investment Banking",
          "Investment Management",
          "Investor Relations",
          "Job Seeker",
          "Journalism",
          "K-12 Teaching",
          "Laboratory and Experimental Research",
          "Land and Site Development",
          "Last Mile and Reverse Logistics",
          "Learning and Development",
          "Leasing",
          "Library Services",
          "Life Sciences",
          "Litigation",
          "Logistics and Distribution",
          "Loss Prevention",
          "Management Consulting",
          "Manufacturing Engineering",
          "Marine and Naval Engineering",
          "Maritime",
          "Market Research and Consumer Insights",
          "Marketing Automation",
          "Marketing Leadership",
          "Marketing Operations",
          "Marketing and Sales Consulting",
          "Mason",
          "Massage Therapy",
          "Materials Engineering",
          "Mechanical Engineering",
          "Medical Administration",
          "Medical Affairs and Pharmacovigilance",
          "Medical Research",
          "Military",
          "Mining and Extraction",
          "Mobile Engineering",
          "Mortgage and Real Estate Finance",
          "Motion 3D and Animation Design",
          "Museums and Cultural Institutions",
          "Nonprofit and Volunteer Program Management",
          "Nuclear",
          "Nursing",
          "Office Management",
          "Oil and Gas",
          "Oncology",
          "Operations Consulting",
          "Operations Leadership",
          "Organizational Development",
          "Other",
          "Painter",
          "Paralegal",
          "Partner and Community Marketing",
          "Partnership Sales",
          "Payments and Fintech",
          "Payroll",
          "Pediatrics",
          "People Analytics",
          "Performing Arts",
          "Personal Assistant",
          "Personal Training",
          "Pet Services",
          "Petroleum and Mining Engineering",
          "Pharmacy",
          "Photography",
          "Physical Occupational and Speech Therapy",
          "Physical Security",
          "Physicians and Doctors",
          "Pilot and Flight Operations",
          "Plumber",
          "Police and Law Enforcement",
          "Policy and Economic Research",
          "Portfolio and PMO",
          "Power Generation",
          "Privacy and Data Protection",
          "Private Equity and Venture Capital",
          "Private Investigation",
          "Private Tutoring",
          "Process Improvement and Operational Excellence",
          "Product Analytics",
          "Product Discovery and Research",
          "Product Leadership",
          "Product Management and Ownership",
          "Product Marketing",
          "Product Operations",
          "Product Portfolio and Lifecycle",
          "Product Strategy",
          "Program Management",
          "Project Controls and Planning",
          "Project Management",
          "Property Appraisal and Valuation",
          "Property and Tenant Management",
          "Psychiatry Psychology and Mental Health",
          "Public Affairs",
          "Public Health and Preventive Care",
          "Public Policy",
          "Public Relations",
          "Public Safety Inspection",
          "Quality Management",
          "Quantitative and Survey Research",
          "Radiology",
          "Real Estate Acquisitions and Investment",
          "Real Estate Advisory and Research",
          "Real Estate Brokerage and Sales",
          "Real Estate Development",
          "Receptionist",
          "Records Management",
          "Recruiting and Talent Acquisition",
          "Regulatory Affairs",
          "Regulatory Inspection",
          "Religious and Community Ministry",
          "Renewable Energy",
          "Renewals and Retention",
          "Research Operations and Administration",
          "Residential Real Estate",
          "Restaurant Management",
          "Retail Buying and Merchandising",
          "Retail Sales",
          "Retail and Store Operations",
          "Retired",
          "Revenue Operations",
          "Risk Management",
          "Robotics and Mechatronics Engineering",
          "Roofer",
          "SDR and BDR",
          "SEO and SEM",
          "Safety and HSE Operations",
          "Sales Enablement",
          "Sales Engineering and Pre-Sales",
          "Sales Leadership",
          "Sales Operations",
          "Scheduling",
          "Scientific Research and Development",
          "Security Guard",
          "Server and Waitstaff",
          "Site Supervisor",
          "Social Media Management",
          "Social Media and Influencer Marketing",
          "Social Work and Services",
          "Social and Behavioral Science",
          "Software Engineering",
          "Software QA Testing and Automation",
          "Special Education",
          "Sports and Esports",
          "Store Management",
          "Strategic Planning",
          "Strategy Consulting",
          "Structural Engineering",
          "Student",
          "Supply Chain Consulting",
          "Supply Chain Planning",
          "Supply Chain and Procurement",
          "Surgery",
          "Surveyor",
          "Sustainability Operations",
          "Sustainability and ESG Consulting",
          "Sustainability and ESG Leadership",
          "Sustainable Finance",
          "Talent Management",
          "Tax",
          "Tax Law",
          "Technical Product Management",
          "Technical Support",
          "Technical Writing",
          "Technology and Engineering Leadership",
          "Technology and IT Consulting",
          "Title and Escrow",
          "Tour Guide",
          "Traditional Crafts",
          "Train Operator",
          "Training and Facilitation",
          "Transformation and Change Management",
          "Transformation and Innovation",
          "Translation and Localization",
          "Transportation Operations",
          "Travel and Tourism Services",
          "Treasury",
          "Truck Driver",
          "Trust and Safety",
          "UI and UX Design",
          "UX Research",
          "Utilities Operations",
          "Vendor Management",
          "Veterinary Medicine",
          "Video Games and Gaming",
          "Video Production",
          "Virtual Assistant",
          "Visual Design",
          "Visual Merchandising",
          "Warehousing and Inventory",
          "Welder",
          "Wholesale and Distribution",
          "Workforce Planning",
          "Workplace and Real Estate Strategy"
        ],
        "description": "Sub-function of a position, from the position taxonomy"
      },
      "Seniority": {
        "type": "string",
        "enum": [
          "CXO",
          "VP",
          "Director",
          "Head",
          "Manager",
          "Partner",
          "Owner / Founder",
          "Individual Contributor",
          "Intern",
          "Other"
        ],
        "description": "Seniority of a position, from the position taxonomy"
      },
      "ContractType": {
        "type": "string",
        "enum": [
          "full-time",
          "part-time",
          "permanent",
          "contract",
          "internship",
          "self-employed",
          "freelance",
          "apprenticeship"
        ],
        "description": "Contract type declared on a position"
      },
      "Area": {
        "type": "string",
        "enum": [
          "MR:APAC",
          "MR:EMEA",
          "MR:AMER",
          "MR:NAMER",
          "MR:LATAM",
          "GR:AFR",
          "GR:ASI",
          "GR:EUR",
          "GR:OCE",
          "GR:AMR",
          "GSR:ANZ",
          "GSR:CAM",
          "GSR:CAR",
          "GSR:CAS",
          "GSR:EAF",
          "GSR:EAS",
          "GSR:EEU",
          "GSR:MAF",
          "GSR:MEL",
          "GSR:MIC",
          "GSR:NAF",
          "GSR:NEU",
          "GSR:POLY",
          "GSR:SAF",
          "GSR:SAM",
          "GSR:SEA",
          "GSR:SEU",
          "GSR:SSA",
          "GSR:WAF",
          "GSR:WAS",
          "GSR:WEU",
          "GSR:NOAM",
          "GSR:LAC",
          "GSR:SAS",
          "MC:BALT",
          "MC:BENELUX",
          "MC:CEE",
          "MC:DACH",
          "MC:ENAFR",
          "MC:FRAFR",
          "MC:GCR",
          "MC:IBER",
          "MC:INSC",
          "MC:JPKR",
          "MC:LUSAFR",
          "MC:MAGH",
          "MC:ME",
          "MC:MENA",
          "MC:NORD",
          "MC:PACI",
          "MC:SCAN",
          "MC:SEE",
          "MC:UKI",
          "IG:APEC",
          "IG:EEA",
          "IG:EFTA",
          "IG:EU",
          "IG:EZ",
          "IG:GCC",
          "IG:RCEP",
          "IG:SCH",
          "IG:USMCA"
        ],
        "description": "Zone id: main region (MR), UN region (GR) or subregion (GSR), market cluster (MC), institutional or economic group (IG). See docs.reversecontact.com/reference/areas"
      },
      "EmailType": {
        "type": "string",
        "enum": [
          "professional",
          "personal",
          "any"
        ],
        "description": "Kind of email to find: 'professional', 'personal', or 'any' to accept either"
      },
      "EmailVerificationStatus": {
        "type": "string",
        "enum": [
          "valid",
          "risky",
          "invalid",
          "unknown"
        ],
        "description": "valid: the address can receive mail. risky: it may receive mail, for example on a catch-all domain. invalid: it cannot receive mail. unknown: the check was inconclusive."
      },
      "V2LimitInfo": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Maximum allowed in the window"
          },
          "used": {
            "type": "integer",
            "description": "Amount used in the window"
          },
          "left": {
            "type": "integer",
            "description": "Remaining in the window"
          },
          "nextReset": {
            "type": "string",
            "description": "When the window resets (ISO 8601)"
          }
        },
        "required": [
          "limit",
          "used",
          "left",
          "nextReset"
        ],
        "additionalProperties": false
      },
      "V2KeyCreditLimit": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Credits this key may spend in the period"
          },
          "used": {
            "type": "number",
            "description": "Credits this key spent in the period, this request included"
          },
          "left": {
            "type": "number",
            "description": "Credits this key may still spend in the period"
          },
          "nextReset": {
            "anyOf": [
              {
                "type": "string",
                "description": "When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "limit",
          "used",
          "left",
          "nextReset"
        ],
        "additionalProperties": false
      },
      "V2Credits": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number",
            "description": "Total credits in your plan"
          },
          "used": {
            "type": "number",
            "description": "Credits consumed so far"
          },
          "left": {
            "type": "number",
            "description": "Remaining credits"
          }
        },
        "required": [
          "total",
          "used",
          "left"
        ],
        "additionalProperties": false
      },
      "V2Quotas": {
        "type": "object",
        "properties": {
          "creditsConsumed": {
            "type": "number",
            "description": "Credits used for this request after pricing resolution"
          },
          "workspace": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Workspace identifier"
              },
              "credits": {
                "$ref": "#/components/schemas/V2Credits"
              },
              "hasUnlimitedCredits": {
                "type": "boolean",
                "description": "Whether workspace credits are unlimited"
              },
              "allowDailyOvercost": {
                "type": "boolean",
                "description": "Whether the workspace may exceed its daily cap (Enterprise only)"
              },
              "dailyLimit": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/V2LimitInfo"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "minuteRateLimit": {
                "$ref": "#/components/schemas/V2LimitInfo"
              }
            },
            "required": [
              "id",
              "credits",
              "hasUnlimitedCredits",
              "allowDailyOvercost",
              "minuteRateLimit"
            ],
            "additionalProperties": false
          },
          "key": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "API key identifier"
                  },
                  "dailyLimit": {
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/V2LimitInfo"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "minuteRateLimit": {
                    "$ref": "#/components/schemas/V2LimitInfo"
                  },
                  "creditLimits": {
                    "type": "object",
                    "description": "Credit limits set on this API key. Each is null when the key has no such limit.",
                    "properties": {
                      "daily": {
                        "anyOf": [
                          {
                            "$ref": "#/components/schemas/V2KeyCreditLimit"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "monthly": {
                        "anyOf": [
                          {
                            "$ref": "#/components/schemas/V2KeyCreditLimit"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "total": {
                        "anyOf": [
                          {
                            "$ref": "#/components/schemas/V2KeyCreditLimit"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "daily",
                      "monthly",
                      "total"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id",
                  "minuteRateLimit",
                  "creditLimits"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "creditsConsumed",
          "workspace",
          "key"
        ],
        "additionalProperties": false
      },
      "V2Metadata": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "Unique identifier for this request"
          },
          "executionTimeMs": {
            "type": "integer",
            "description": "Total execution time in milliseconds"
          },
          "updatedAt": {
            "type": "string",
            "description": "Last upstream update timestamp (ISO 8601). Present only when available."
          }
        },
        "required": [
          "requestId",
          "executionTimeMs"
        ],
        "additionalProperties": false
      },
      "V2Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Machine-readable error code"
          },
          "message": {
            "type": "string",
            "description": "Human-readable error description"
          },
          "details": {
            "type": "object",
            "description": "Optional context",
            "properties": {},
            "additionalProperties": true
          }
        },
        "required": [
          "code",
          "message"
        ],
        "additionalProperties": false
      },
      "V2SuccessEnvelope": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "const": true
          },
          "data": {},
          "error": {
            "type": "null"
          },
          "quotas": {
            "$ref": "#/components/schemas/V2Quotas"
          },
          "metadata": {
            "$ref": "#/components/schemas/V2Metadata"
          }
        },
        "required": [
          "success",
          "data",
          "error",
          "quotas",
          "metadata"
        ],
        "additionalProperties": false
      },
      "V2ErrorEnvelope": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "const": false
          },
          "data": {
            "type": "null"
          },
          "error": {
            "$ref": "#/components/schemas/V2Error"
          },
          "quotas": {
            "$ref": "#/components/schemas/V2Quotas"
          },
          "metadata": {
            "$ref": "#/components/schemas/V2Metadata"
          }
        },
        "required": [
          "success",
          "data",
          "error"
        ],
        "additionalProperties": false
      },
      "PersonLocation": {
        "type": "object",
        "properties": {
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "countryCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "rawLocation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "EnrichedPersonLight": {
        "type": "object",
        "description": "Light enrich shape: identity and current role. Used for data.person when the full profile could not be assembled (data.isFullProfile is false), and for an alternative candidate whose full profile could not be retrieved in time.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Reverse Contact person id (prs_...)"
          },
          "publicId": {
            "type": "string",
            "description": "Social public slug"
          },
          "linkedinUrl": {
            "type": "string",
            "description": "Public Social profile URL"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "headline": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentPositionTitle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentCompanyId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentCompanyName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentCompanyLinkedinId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "updateDate": {
            "anyOf": [
              {
                "type": "string",
                "description": "Last update timestamp (ISO 8601)"
              },
              {
                "type": "null"
              }
            ]
          },
          "location": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PersonLocation"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "publicId",
          "linkedinUrl"
        ],
        "additionalProperties": false
      },
      "PersonFull": {
        "type": "object",
        "description": "Full person profile shape returned by fetch.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Reverse Contact person id (prs_...)"
          },
          "publicId": {
            "type": "string",
            "description": "Social public slug"
          },
          "memberId": {
            "type": "string",
            "description": "Upstream member identifier when available"
          },
          "linkedinUrl": {
            "type": "string",
            "description": "Public Social profile URL"
          },
          "firstName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "lastName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "headline": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "pronoun": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "isOpenToWork": {
            "type": "boolean",
            "description": "Whether the profile is flagged open to work"
          },
          "hasPremium": {
            "type": "boolean",
            "description": "Whether the profile has Social Premium"
          },
          "hasVerificationBadge": {
            "type": "boolean",
            "description": "Whether the profile has a verification badge"
          },
          "isInRemembrance": {
            "type": "boolean",
            "description": "Whether the profile is in remembrance"
          },
          "photoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "backgroundUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "creationDate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "followersCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "connectionsCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "location": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PersonLocation"
              },
              {
                "type": "null"
              }
            ]
          },
          "currentPosition": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "title": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "contractType": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyId": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "Reverse Contact company id (com_...)"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyName": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyLinkedinId": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyUrl": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyLocation": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "companyLogoUrl": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "startEndDate": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "start": {
                            "anyOf": [
                              {
                                "type": "string",
                                "description": "Start date (ISO 8601)"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "end": {
                            "anyOf": [
                              {
                                "type": "string",
                                "description": "End date (ISO 8601), null if current"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "experience": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "contractType": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "companyId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Reverse Contact company id (com_...)"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "companyName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "companyLinkedinId": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "companyUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "companyLocation": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "companyLogoUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "startEndDate": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "start": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "Start date (ISO 8601)"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "end": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "End date (ISO 8601), null if current"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "education": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "degreeName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "fieldOfStudy": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "grade": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "schoolName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "schoolUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "schoolLogoUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "startEndDate": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "start": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "Start date (ISO 8601)"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "end": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "End date (ISO 8601), null if current"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "language": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "proficiency": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "organizationName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "organizationUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "issuedDate": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "caption": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "authorFullname": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "authorUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "testScores": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "testTitle": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "score": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "date": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "publicId",
          "linkedinUrl"
        ],
        "additionalProperties": false
      },
      "EnrichedCompanyLight": {
        "type": "object",
        "description": "Light company enrich shape (identity and headline metrics).",
        "properties": {
          "id": {
            "type": "string",
            "description": "Reverse Contact company id (com_...)"
          },
          "name": {
            "type": "string",
            "description": "Company display name"
          },
          "publicId": {
            "type": "string",
            "description": "Social public slug / universal name"
          },
          "linkedinId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "linkedinUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "employeesCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "followersCount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "employeeCountRange": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "start": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "end": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "websiteUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "tagline": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "industry": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "companyUpdateDate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "location": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "city": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "country": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "publicId"
        ],
        "additionalProperties": false
      },
      "CompanyFull": {
        "type": "object",
        "description": "Full company profile shape returned by fetch.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Reverse Contact company id (com_...)"
          },
          "companyName": {
            "type": "string",
            "description": "Company display name"
          },
          "linkedinId": {
            "anyOf": [
              {
                "type": "string",
                "description": "Upstream Social company id"
              },
              {
                "type": "null"
              }
            ]
          },
          "publicId": {
            "type": "string",
            "description": "Social public slug / universal name"
          },
          "linkedinUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "employeesCount": {
            "type": "integer",
            "description": "Employee count"
          },
          "followersCount": {
            "type": "integer",
            "description": "Follower count"
          },
          "employeeCountRange": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "start": {
                    "type": "integer"
                  },
                  "end": {
                    "type": "integer"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "websiteUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "tagline": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "industry": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "phone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "specialities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "headquarter": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "street1": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "street2": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "postalCode": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "city": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "geographicArea": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "country": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "ISO country code"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "logoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "foundedOn": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "year": {
                    "type": "integer"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "locations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "street1": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "street2": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postalCode": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "city": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "state": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "country": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "ISO country code"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "backgroundUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "EnrichedPersonFull": {
        "description": "Full person returned by enrich: the fetch profile plus the identity and current-role fields of the light shape, so a client reading either shape finds its keys.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PersonFull"
          },
          {
            "type": "object",
            "properties": {
              "currentPositionTitle": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentCompanyId": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentCompanyName": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentCompanyLinkedinId": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updateDate": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Last update timestamp (ISO 8601)"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "EnrichedCompanyFull": {
        "description": "Full company returned by enrich: the fetch profile plus the name, update date and location fields of the light shape, so a client reading either shape finds its keys.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CompanyFull"
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Company display name"
              },
              "companyUpdateDate": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "location": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "city": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "country": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "EnrichPersonData": {
        "type": "object",
        "description": "Nested under the top-level V2 data field: response.data.person and response.data.alternativePersons.",
        "properties": {
          "person": {
            "description": "Matched person: the full profile (data.isFullProfile true), or the light shape when the full profile could not be assembled (data.isFullProfile false).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnrichedPersonFull"
              },
              {
                "$ref": "#/components/schemas/EnrichedPersonLight"
              }
            ]
          },
          "alternativePersons": {
            "type": "array",
            "description": "Other candidates ranked best first, each with its full profile (it carries experience), or the light shape when its full profile could not be retrieved in time. Always an array (empty when unique).",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/EnrichedPersonFull"
                },
                {
                  "$ref": "#/components/schemas/EnrichedPersonLight"
                }
              ]
            }
          },
          "isFullProfile": {
            "type": "boolean",
            "description": "True when data.person is the full profile, false when only the light shape could be returned."
          }
        },
        "required": [
          "person",
          "alternativePersons",
          "isFullProfile"
        ],
        "additionalProperties": false
      },
      "JobResultLine": {
        "type": "object",
        "description": "One line of GET /v2/jobs/{jobId}/results?format=ndjson and one item of GET /v2/jobs/{jobId}/rows.",
        "properties": {
          "row": {
            "type": "integer",
            "description": "Position of the item in the job, from 1 (the order sent)"
          },
          "input": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "What was sent for this item, externalId included (empty fields left out)"
          },
          "status": {
            "type": "string",
            "description": "What happened, as the rc_status column: enriched, partial, not_found, invalid_input, duplicate, insufficient_credits, skipped, data_subject_blocked, rate_limited, error or unknown. running: an item a cancelled job had started and not finished yet, which ends within the hour"
          },
          "message": {
            "type": "string",
            "description": "The same text as the rc_message column, with the credits it cost"
          },
          "creditsConsumed": {
            "type": "number",
            "description": "Credits this item cost"
          },
          "person": {
            "description": "The person in the /v2/enrich/persons shape: the full profile (isFullProfile true) or the light shape. Null when none was found, or when the job did not ask for the profile.",
            "anyOf": [
              {
                "$ref": "#/components/schemas/EnrichedPersonFull"
              },
              {
                "$ref": "#/components/schemas/EnrichedPersonLight"
              },
              {
                "type": "null"
              }
            ]
          },
          "isFullProfile": {
            "type": "boolean",
            "description": "True when person is the full profile"
          },
          "linkedinUrl": {
            "type": "string",
            "description": "The matched profile URL, present when the job did not ask for the profile"
          },
          "contactEmail": {
            "type": "object",
            "description": "Present when the job asked for contact_email",
            "properties": {
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "found, not_found, error or skipped"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The email found"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "personalValue": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "With emailType any: the personal email, next to the professional one"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "status",
              "value",
              "personalValue"
            ],
            "additionalProperties": false
          },
          "contactPhone": {
            "type": "object",
            "description": "Present when the job asked for contact_phone",
            "properties": {
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "found, not_found, error or skipped"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The phone number found"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The kind of phone number"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "status",
              "value",
              "type"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "row",
          "input",
          "status",
          "message",
          "creditsConsumed",
          "person",
          "isFullProfile"
        ],
        "additionalProperties": false
      },
      "EnrichCompanyData": {
        "type": "object",
        "description": "Nested under the top-level V2 data field: response.data.company.",
        "properties": {
          "company": {
            "description": "Matched company: the full company (data.isFullProfile true), or the light shape when the full company could not be assembled (data.isFullProfile false).",
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnrichedCompanyFull"
              },
              {
                "$ref": "#/components/schemas/EnrichedCompanyLight"
              }
            ]
          },
          "isFullProfile": {
            "type": "boolean",
            "description": "True when data.company is the full company, false when only the light shape could be returned."
          }
        },
        "required": [
          "company",
          "isFullProfile"
        ],
        "additionalProperties": false
      },
      "SearchPeopleData": {
        "type": "object",
        "description": "Nested envelope: results are at data.data and pagination at data.metadata (top-level data is this object).",
        "properties": {
          "data": {
            "type": "array",
            "description": "Full profiles returned for this page",
            "items": {
              "$ref": "#/components/schemas/PersonFull"
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "perPage": {
                "type": "integer",
                "description": "Profiles requested per page"
              },
              "count": {
                "type": "integer",
                "description": "Profiles returned in this page"
              },
              "nextCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Opaque cursor for the next page"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "perPage",
              "count",
              "nextCursor"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "metadata"
        ],
        "additionalProperties": false
      },
      "SearchPeoplePromptData": {
        "type": "object",
        "description": "People Search page (results at data.data, pagination at data.metadata) plus the interpretation of the prompt at data.interpretation.",
        "properties": {
          "data": {
            "type": "array",
            "description": "Full profiles returned for this page",
            "items": {
              "$ref": "#/components/schemas/PersonFull"
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "perPage": {
                "type": "integer",
                "description": "Profiles requested per page"
              },
              "count": {
                "type": "integer",
                "description": "Profiles returned in this page"
              },
              "nextCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Opaque cursor for the next page"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "perPage",
              "count",
              "nextCursor"
            ],
            "additionalProperties": false
          },
          "interpretation": {
            "type": "object",
            "properties": {
              "filters": {
                "$ref": "#/components/schemas/SearchPeopleFilters",
                "description": "People Search filters read from the prompt; the page was searched with exactly these."
              },
              "warnings": {
                "type": "array",
                "description": "Parts of the prompt left out of the filters, and why. Empty when everything mapped.",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "filters",
              "warnings"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "metadata",
          "interpretation"
        ],
        "additionalProperties": false
      },
      "SearchOrganizationsData": {
        "type": "object",
        "description": "Nested envelope: results are at data.data and pagination at data.metadata (top-level data is this object).",
        "properties": {
          "data": {
            "type": "array",
            "description": "Full organization profiles returned for this page",
            "items": {
              "$ref": "#/components/schemas/CompanyFull"
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "perPage": {
                "type": "integer",
                "description": "Organizations requested per page"
              },
              "count": {
                "type": "integer",
                "description": "Organizations returned in this page"
              },
              "nextCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Opaque cursor for the next page"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "perPage",
              "count",
              "nextCursor"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "metadata"
        ],
        "additionalProperties": false
      },
      "SearchOrganizationsPromptData": {
        "type": "object",
        "description": "Organization Search page (results at data.data, pagination at data.metadata) plus the interpretation of the prompt at data.interpretation.",
        "properties": {
          "data": {
            "type": "array",
            "description": "Full organization profiles returned for this page",
            "items": {
              "$ref": "#/components/schemas/CompanyFull"
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "perPage": {
                "type": "integer",
                "description": "Organizations requested per page"
              },
              "count": {
                "type": "integer",
                "description": "Organizations returned in this page"
              },
              "nextCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Opaque cursor for the next page"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "perPage",
              "count",
              "nextCursor"
            ],
            "additionalProperties": false
          },
          "interpretation": {
            "type": "object",
            "properties": {
              "filters": {
                "$ref": "#/components/schemas/SearchOrganizationsFilters",
                "description": "Organization Search filters read from the prompt; the page was searched with exactly these."
              },
              "warnings": {
                "type": "array",
                "description": "Parts of the prompt left out of the filters, and why. Empty when everything mapped.",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "filters",
              "warnings"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "metadata",
          "interpretation"
        ],
        "additionalProperties": false
      },
      "SearchOrganizationsCountData": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Total organizations matching the supplied filters"
          }
        },
        "required": [
          "count"
        ],
        "additionalProperties": false
      },
      "SearchPeopleCountData": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Total profiles matching the supplied filters"
          }
        },
        "required": [
          "count"
        ],
        "additionalProperties": false
      },
      "SearchPeopleAutoSuggestionData": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "const": "search_auto_suggestions"
          },
          "entity": {
            "type": "string",
            "const": "person"
          },
          "field": {
            "type": "string",
            "description": "The filter completed",
            "enum": [
              "skills"
            ]
          },
          "suggestions": {
            "type": "array",
            "description": "Values starting with the query, most common first",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string",
                  "description": "A value to show, and to send as it is in the filter"
                }
              },
              "required": [
                "value"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "object",
          "entity",
          "field",
          "suggestions"
        ],
        "additionalProperties": false
      },
      "CheckPersonData": {
        "type": "object",
        "properties": {
          "exists": {
            "type": "boolean",
            "description": "true if the profile exists in the database"
          },
          "lastUpdate": {
            "anyOf": [
              {
                "type": "string",
                "description": "When Reverse Contact last fetched this profile (ISO 8601)"
              },
              {
                "type": "null"
              }
            ]
          },
          "experienceCount": {
            "type": "integer",
            "description": "Number of experience entries when exists is true"
          },
          "skillCount": {
            "type": "integer",
            "description": "Number of skills when exists is true"
          },
          "schoolCount": {
            "type": "integer",
            "description": "Number of education entries when exists is true"
          }
        },
        "additionalProperties": false
      },
      "CheckCompanyData": {
        "type": "object",
        "properties": {
          "exists": {
            "type": "boolean",
            "description": "true if the company exists in the database"
          },
          "lastUpdate": {
            "anyOf": [
              {
                "type": "string",
                "description": "When Reverse Contact last fetched this company (ISO 8601)"
              },
              {
                "type": "null"
              }
            ]
          },
          "specialityCount": {
            "type": "integer",
            "description": "Number of company specialties when exists is true"
          }
        },
        "additionalProperties": false
      },
      "JobAckData": {
        "type": "object",
        "description": "Immediate acknowledgement for async live endpoints.",
        "properties": {
          "status": {
            "type": "string",
            "description": "Job acknowledgement status",
            "example": "created"
          },
          "webhookId": {
            "type": "string",
            "description": "Unique job id (UUID). Poll GET /v2/webhooks/{webhookId} for the result."
          },
          "pollUrl": {
            "type": "string",
            "description": "Convenience path to the polling endpoint for this job"
          }
        },
        "required": [
          "webhookId"
        ],
        "additionalProperties": false
      },
      "ContactEmailAckData": {
        "type": "object",
        "description": "Immediate acknowledgement for the asynchronous Contact Email Finder.",
        "properties": {
          "status": {
            "type": "string",
            "description": "Job acknowledgement status",
            "example": "created"
          },
          "webhookId": {
            "type": "string",
            "description": "Unique job id (UUID). Poll GET /v2/webhooks/{webhookId} for the result, or use it to correlate the optional webhook callback."
          },
          "pollUrl": {
            "type": "string",
            "description": "Convenience path to the polling endpoint for this job"
          }
        },
        "required": [
          "status",
          "webhookId",
          "pollUrl"
        ],
        "additionalProperties": false
      },
      "ContactEmailVerifyAckData": {
        "type": "object",
        "description": "Immediate acknowledgement for the asynchronous Email Verification.",
        "properties": {
          "status": {
            "type": "string",
            "description": "Job acknowledgement status",
            "example": "created"
          },
          "webhookId": {
            "type": "string",
            "description": "Unique job id (UUID). Poll GET /v2/webhooks/{webhookId} for the result, or use it to correlate the optional webhook callback."
          },
          "pollUrl": {
            "type": "string",
            "description": "Convenience path to the polling endpoint for this job"
          }
        },
        "required": [
          "status",
          "webhookId",
          "pollUrl"
        ],
        "additionalProperties": false
      },
      "ContactEmailVerifyResult": {
        "type": "object",
        "description": "The verdict, in data.result of the poll response and in the webhook callback.",
        "properties": {
          "email": {
            "type": "string",
            "description": "The address that was checked",
            "format": "email",
            "example": "jane@acme.com"
          },
          "status": {
            "$ref": "#/components/schemas/EmailVerificationStatus"
          }
        },
        "required": [
          "email",
          "status"
        ],
        "additionalProperties": false
      },
      "ContactPhoneAckData": {
        "type": "object",
        "description": "Immediate acknowledgement for the asynchronous Contact Phone Finder.",
        "properties": {
          "status": {
            "type": "string",
            "description": "Job acknowledgement status",
            "example": "created"
          },
          "webhookId": {
            "type": "string",
            "description": "Unique job id (UUID). Poll GET /v2/webhooks/{webhookId} for the result, or use it to correlate the optional webhook callback."
          },
          "pollUrl": {
            "type": "string",
            "description": "Convenience path to the polling endpoint for this job"
          }
        },
        "required": [
          "status",
          "webhookId",
          "pollUrl"
        ],
        "additionalProperties": false
      },
      "PollWebhookData": {
        "type": "object",
        "properties": {
          "webhookId": {
            "type": "string",
            "description": "Job identifier"
          },
          "status": {
            "type": "string",
            "description": "Job status. created and in_progress are not final; succeeded and errored are.",
            "enum": [
              "created",
              "in_progress",
              "succeeded",
              "errored"
            ]
          },
          "eventType": {
            "type": "string",
            "description": "Kind of job",
            "enum": [
              "FETCH_PERSON_DATA",
              "FETCH_COMPANY_DATA",
              "FETCH_ACTIVITY_DATA",
              "FETCH_CONTACT_DATA"
            ]
          },
          "errorCode": {
            "anyOf": [
              {
                "type": "string",
                "description": "Why the job failed (for example email-not-found); null unless status is errored"
              },
              {
                "type": "null"
              }
            ]
          },
          "deliveryStatus": {
            "anyOf": [
              {
                "type": "string",
                "description": "Set when the result was fetched but the push to your webhookUrl failed (webhook-url-invalid, webhook-url-errored, webhook-url-timeout or webhook-url-unreachable). status stays succeeded and result stays available."
              },
              {
                "type": "null"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "When the job was created (ISO 8601)",
            "format": "date-time"
          },
          "result": {
            "description": "Job result: a profile object for live fetches, an array for the contact finders. Set when status is succeeded; an errored job returns the payload it stored, if any; null otherwise."
          },
          "creditsConsumed": {
            "type": "number",
            "description": "Credits charged for the job, net of refunds: 0 while the job runs, final once it succeeded or errored"
          }
        },
        "required": [
          "webhookId",
          "status",
          "eventType",
          "errorCode",
          "deliveryStatus",
          "createdAt",
          "result",
          "creditsConsumed"
        ],
        "additionalProperties": false
      },
      "SearchFieldsData": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "const": "search_fields"
          },
          "entity": {
            "type": "string",
            "enum": [
              "person",
              "company"
            ]
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Filter field name"
                },
                "type": {
                  "type": "string",
                  "description": "Field type"
                },
                "description": {
                  "type": "string",
                  "description": "Human-readable description"
                },
                "allowedValues": {
                  "description": "Optional constrained values",
                  "anyOf": [
                    {
                      "type": "array",
                      "items": {}
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "properties": {
                  "description": "Nested property metadata for object filters",
                  "anyOf": [
                    {
                      "type": "object",
                      "additionalProperties": true
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "name",
                "type"
              ],
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false
      },
      "UrlOrIdPersonBody": {
        "type": "object",
        "description": "Provide either url or id. If both are supplied, id takes precedence.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social profile URL",
            "example": "https://social.com/in/janedoe"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact person id",
            "example": "prs_01jbd5vewyenebxgaz869ffe5t"
          }
        },
        "additionalProperties": false
      },
      "UrlOrIdCompanyBody": {
        "type": "object",
        "description": "Provide either url or id. If both are supplied, id takes precedence.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social company URL",
            "example": "https://social.com/company/acme-corp"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact company id",
            "example": "com_01jbd5vewyenebxgaz869ffe5t"
          }
        },
        "additionalProperties": false
      },
      "LivePersonBody": {
        "type": "object",
        "description": "Provide exactly one of url or id.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social profile URL",
            "example": "https://social.com/in/janedoe"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact person id",
            "example": "prs_01jbd5vewyenebxgaz869ffe5t"
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional HTTPS push URL for webhook delivery",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "oneOf": [
          {
            "required": [
              "url"
            ]
          },
          {
            "required": [
              "id"
            ]
          }
        ],
        "example": {
          "url": "https://social.com/in/janedoe"
        }
      },
      "LiveCompanyBody": {
        "type": "object",
        "description": "Provide exactly one of url or id.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social company URL",
            "example": "https://social.com/company/acme-corp"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact company id",
            "example": "com_01jbd5vewyenebxgaz869ffe5t"
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional HTTPS push URL for webhook delivery",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "oneOf": [
          {
            "required": [
              "url"
            ]
          },
          {
            "required": [
              "id"
            ]
          }
        ],
        "example": {
          "url": "https://social.com/company/acme-corp"
        }
      },
      "EnrichPersonBody": {
        "type": "object",
        "description": "Provide at least one of: email, firstName, lastName, companyDomain, or companyName.",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to enrich",
            "format": "email"
          },
          "firstName": {
            "type": "string",
            "description": "Person first name"
          },
          "lastName": {
            "type": "string",
            "description": "Person last name"
          },
          "companyDomain": {
            "type": "string",
            "description": "Company domain (e.g. acme.com)"
          },
          "companyName": {
            "type": "string",
            "description": "Company name (alternative to domain)"
          },
          "fullProfile": {
            "type": "boolean",
            "description": "Deprecated and ignored: enrich always returns the full profile. Still accepted so existing requests keep working.",
            "deprecated": true
          }
        },
        "additionalProperties": false
      },
      "EnrichCompanyBody": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Company domain to resolve (e.g. acme.com)"
          },
          "fullProfile": {
            "type": "boolean",
            "description": "Deprecated and ignored: enrich always returns the full profile. Still accepted so existing requests keep working.",
            "deprecated": true
          }
        },
        "required": [
          "domain"
        ],
        "additionalProperties": false
      },
      "ContactEmailBody": {
        "type": "object",
        "description": "Provide exactly one of: url; id; fullName + companyDomain; or firstName + lastName + companyDomain.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social profile URL",
            "format": "uri",
            "example": "https://social.com/in/janedoe"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact person id (prs_...), as returned in the id field of any person response. Alternative to url.",
            "pattern": "^prs_[A-Za-z0-9]+$",
            "example": "prs_01jbd5vewyenebxgaz869ffe5t"
          },
          "fullName": {
            "type": "string",
            "description": "Person full name",
            "example": "Jane Doe"
          },
          "firstName": {
            "type": "string",
            "description": "Person first name",
            "example": "Jane"
          },
          "lastName": {
            "type": "string",
            "description": "Person last name",
            "example": "Doe"
          },
          "companyDomain": {
            "type": "string",
            "description": "Company domain (e.g. acme.com)",
            "example": "acme.com"
          },
          "emailType": {
            "$ref": "#/components/schemas/EmailType",
            "description": "Kind of email to find: 'professional', 'personal', or 'any' to accept either. Omit it to find professional emails.",
            "default": "professional"
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional HTTPS URL for the result callback",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "oneOf": [
          {
            "required": [
              "url"
            ]
          },
          {
            "required": [
              "id"
            ]
          },
          {
            "required": [
              "fullName",
              "companyDomain"
            ]
          },
          {
            "required": [
              "firstName",
              "lastName",
              "companyDomain"
            ]
          }
        ]
      },
      "ContactEmailVerifyBody": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address to verify",
            "format": "email",
            "example": "jane@acme.com"
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional HTTPS URL for the result callback",
            "format": "uri"
          }
        },
        "required": [
          "email"
        ],
        "additionalProperties": false
      },
      "ContactPhoneBody": {
        "type": "object",
        "description": "Provide exactly one of: url; id; fullName + companyDomain; or firstName + lastName + companyDomain.",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social profile URL",
            "format": "uri",
            "example": "https://social.com/in/janedoe"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact person id (prs_...), as returned in the id field of any person response. Alternative to url.",
            "pattern": "^prs_[A-Za-z0-9]+$",
            "example": "prs_01jbd5vewyenebxgaz869ffe5t"
          },
          "fullName": {
            "type": "string",
            "description": "Person full name",
            "example": "Jane Doe"
          },
          "firstName": {
            "type": "string",
            "description": "Person first name",
            "example": "Jane"
          },
          "lastName": {
            "type": "string",
            "description": "Person last name",
            "example": "Doe"
          },
          "companyDomain": {
            "type": "string",
            "description": "Company domain (e.g. acme.com)",
            "example": "acme.com"
          },
          "webhookUrl": {
            "type": "string",
            "description": "Optional HTTPS URL for the result callback",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "oneOf": [
          {
            "required": [
              "url"
            ]
          },
          {
            "required": [
              "id"
            ]
          },
          {
            "required": [
              "fullName",
              "companyDomain"
            ]
          },
          {
            "required": [
              "firstName",
              "lastName",
              "companyDomain"
            ]
          }
        ]
      },
      "SearchPeopleFilters": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Filter by first name",
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "description": "Filter by last name",
            "minLength": 1
          },
          "headline": {
            "type": "string",
            "description": "Match text in the profile headline",
            "minLength": 1
          },
          "isOpenToWork": {
            "type": "boolean",
            "description": "Restrict to profiles flagged open to work"
          },
          "isCurrentlyEmployed": {
            "type": "boolean",
            "description": "Filter by whether a profile has a current employer"
          },
          "isPremium": {
            "type": "boolean",
            "description": "Restrict to Social Premium members"
          },
          "isVerified": {
            "type": "boolean",
            "description": "Restrict to profiles with a verification badge"
          },
          "followersCount": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "connectionsCount": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum connections, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum connections, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false,
            "description": "Connection count range, bounds inclusive. One bound is enough: { \"min\": 501 } keeps profiles with more than 500 connections"
          },
          "positionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past position title"
          },
          "excludePositionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past position title to exclude"
          },
          "companyName": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company name"
          },
          "excludeCompanyName": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company name to exclude"
          },
          "companyIndustry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Current or past company industry from the published taxonomy"
          },
          "excludeCompanyIndustry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Current or past company industry to exclude"
          },
          "companyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company com_ id"
          },
          "excludeCompanyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company com_ id to exclude"
          },
          "companyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company Social identifier"
          },
          "excludeCompanyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company Social identifier to exclude"
          },
          "companyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company public id or slug"
          },
          "excludeCompanyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company public id or slug to exclude"
          },
          "currentPositionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current position title only"
          },
          "excludeCurrentPositionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current position title to exclude"
          },
          "currentCompanyName": {
            "type": "string",
            "description": "Current employer name",
            "minLength": 1
          },
          "excludeCurrentCompanyName": {
            "type": "string",
            "description": "Current employer name to exclude",
            "minLength": 1
          },
          "currentCompanyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer com_ id"
          },
          "excludeCurrentCompanyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer com_ id to exclude"
          },
          "currentCompanyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer Social identifier"
          },
          "excludeCurrentCompanyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer Social identifier to exclude"
          },
          "currentCompanyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer public id or slug"
          },
          "excludeCurrentCompanyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer public id or slug to exclude"
          },
          "currentCompanyIndustry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Current employer industry from the published taxonomy"
          },
          "currentCompanyEmployeeCountRange": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum current-employer size",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum current-employer size",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "currentFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobFunction"
                }
              }
            ],
            "description": "Current function taxonomy value"
          },
          "excludeCurrentFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobFunction"
                }
              }
            ],
            "description": "Current function taxonomy value to exclude"
          },
          "currentSubFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobSubFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobSubFunction"
                }
              }
            ],
            "description": "Current sub-function taxonomy value"
          },
          "excludeCurrentSubFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobSubFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobSubFunction"
                }
              }
            ],
            "description": "Current sub-function taxonomy value to exclude"
          },
          "currentSeniority": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Seniority"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Seniority"
                }
              }
            ],
            "description": "Current seniority taxonomy value"
          },
          "excludeCurrentSeniority": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Seniority"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Seniority"
                }
              }
            ],
            "description": "Current seniority taxonomy value to exclude"
          },
          "currentContractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type of the current position, or OR-matched types. A position that declares no contract type never matches"
          },
          "excludeCurrentContractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type of the current position to exclude. Needs a positive filter next to it"
          },
          "contractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type of any position, current or past, or OR-matched types. A position that declares no contract type never matches"
          },
          "excludeContractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type held in any position, current or past, to exclude. Needs a positive filter next to it"
          },
          "schoolName": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "School name, or OR-matched names, matched against every education entry. Whole words; every word must appear in the same school"
          },
          "schoolId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Reverse Contact school id (sch_ followed by 26 characters), or OR-matched ids, matched against every education entry"
          },
          "schoolLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "School Social identifier, or OR-matched identifiers, matched against every education entry. Some education entries do not carry one"
          },
          "totalExperienceMonths": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum total career length in months",
                "minimum": 0,
                "maximum": 1200
              },
              "max": {
                "type": "integer",
                "description": "Maximum total career length in months",
                "minimum": 0,
                "maximum": 1200
              }
            },
            "additionalProperties": false
          },
          "experience": {
            "type": "array",
            "maxItems": 10,
            "description": "Past-experience requirements; all entries are AND-combined",
            "items": {
              "type": "object",
              "properties": {
                "dimension": {
                  "type": "string",
                  "description": "Taxonomy dimension",
                  "enum": [
                    "function",
                    "subFunction",
                    "seniority"
                  ]
                },
                "value": {
                  "type": "string",
                  "description": "Value from the selected taxonomy",
                  "minLength": 1
                },
                "minMonths": {
                  "type": "integer",
                  "description": "Minimum tenure in months",
                  "minimum": 0,
                  "maximum": 720
                }
              },
              "required": [
                "dimension",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "skills": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Skill name or OR-matched skill names. Whole-value, case-insensitive match: \"Java\" does not match \"JavaScript\""
          },
          "languages": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Language name in English, or OR-matched names. These names also match their native spellings: Arabic, Bengali, Catalan, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Mandarin, Norwegian, Polish, Portuguese, Punjabi, Romanian, Russian, Spanish, Swedish, Tagalog, Thai, Turkish, Ukrainian, Urdu, Vietnamese"
          },
          "excludeLanguages": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Language name in English, or names, to exclude. Needs a positive filter next to it"
          },
          "keywords": {
            "type": "string",
            "description": "Words searched across the whole profile. Every word must appear, in any field; whole words only",
            "minLength": 1
          },
          "changedJobsWithinDays": {
            "type": "integer",
            "description": "Current position started within the last N days",
            "enum": [
              30,
              60,
              90,
              120
            ]
          },
          "location": {
            "type": "object",
            "properties": {
              "country": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "Country name (e.g. \"France\")"
              },
              "countryCode": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CountryCode"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CountryCode"
                    }
                  }
                ],
                "description": "ISO 3166 country code (e.g. \"FR\")"
              },
              "area": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Area"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Area"
                    }
                  }
                ],
                "description": "Zone id, or a list (e.g. \"MR:EMEA\", [\"MC:DACH\", \"MC:NORD\"]): main regions, UN regions and subregions, market clusters, institutional groups. Each zone matches the person's country among its member countries; zones add up with each other and with countryCode, and combine with region and city. The members of each zone are listed by the available-fields endpoint (location.area.areaCatalog)."
              },
              "region": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "State or region"
              },
              "city": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "City"
              }
            },
            "additionalProperties": false
          },
          "maxDataAgeDate": {
            "type": "string",
            "description": "Only return profiles refreshed after this date",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "SearchPeopleBody": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Filter by first name",
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "description": "Filter by last name",
            "minLength": 1
          },
          "headline": {
            "type": "string",
            "description": "Match text in the profile headline",
            "minLength": 1
          },
          "isOpenToWork": {
            "type": "boolean",
            "description": "Restrict to profiles flagged open to work"
          },
          "isCurrentlyEmployed": {
            "type": "boolean",
            "description": "Filter by whether a profile has a current employer"
          },
          "isPremium": {
            "type": "boolean",
            "description": "Restrict to Social Premium members"
          },
          "isVerified": {
            "type": "boolean",
            "description": "Restrict to profiles with a verification badge"
          },
          "followersCount": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "connectionsCount": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum connections, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum connections, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false,
            "description": "Connection count range, bounds inclusive. One bound is enough: { \"min\": 501 } keeps profiles with more than 500 connections"
          },
          "positionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past position title"
          },
          "excludePositionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past position title to exclude"
          },
          "companyName": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company name"
          },
          "excludeCompanyName": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company name to exclude"
          },
          "companyIndustry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Current or past company industry from the published taxonomy"
          },
          "excludeCompanyIndustry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Current or past company industry to exclude"
          },
          "companyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company com_ id"
          },
          "excludeCompanyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company com_ id to exclude"
          },
          "companyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company Social identifier"
          },
          "excludeCompanyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company Social identifier to exclude"
          },
          "companyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company public id or slug"
          },
          "excludeCompanyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current or past company public id or slug to exclude"
          },
          "currentPositionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current position title only"
          },
          "excludeCurrentPositionTitle": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current position title to exclude"
          },
          "currentCompanyName": {
            "type": "string",
            "description": "Current employer name",
            "minLength": 1
          },
          "excludeCurrentCompanyName": {
            "type": "string",
            "description": "Current employer name to exclude",
            "minLength": 1
          },
          "currentCompanyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer com_ id"
          },
          "excludeCurrentCompanyId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer com_ id to exclude"
          },
          "currentCompanyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer Social identifier"
          },
          "excludeCurrentCompanyLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer Social identifier to exclude"
          },
          "currentCompanyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer public id or slug"
          },
          "excludeCurrentCompanyPublicId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Current employer public id or slug to exclude"
          },
          "currentCompanyIndustry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Current employer industry from the published taxonomy"
          },
          "currentCompanyEmployeeCountRange": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum current-employer size",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum current-employer size",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "currentFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobFunction"
                }
              }
            ],
            "description": "Current function taxonomy value"
          },
          "excludeCurrentFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobFunction"
                }
              }
            ],
            "description": "Current function taxonomy value to exclude"
          },
          "currentSubFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobSubFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobSubFunction"
                }
              }
            ],
            "description": "Current sub-function taxonomy value"
          },
          "excludeCurrentSubFunction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/JobSubFunction"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/JobSubFunction"
                }
              }
            ],
            "description": "Current sub-function taxonomy value to exclude"
          },
          "currentSeniority": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Seniority"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Seniority"
                }
              }
            ],
            "description": "Current seniority taxonomy value"
          },
          "excludeCurrentSeniority": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Seniority"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Seniority"
                }
              }
            ],
            "description": "Current seniority taxonomy value to exclude"
          },
          "currentContractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type of the current position, or OR-matched types. A position that declares no contract type never matches"
          },
          "excludeCurrentContractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type of the current position to exclude. Needs a positive filter next to it"
          },
          "contractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type of any position, current or past, or OR-matched types. A position that declares no contract type never matches"
          },
          "excludeContractType": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ContractType"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ContractType"
                }
              }
            ],
            "description": "Contract type held in any position, current or past, to exclude. Needs a positive filter next to it"
          },
          "schoolName": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "School name, or OR-matched names, matched against every education entry. Whole words; every word must appear in the same school"
          },
          "schoolId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Reverse Contact school id (sch_ followed by 26 characters), or OR-matched ids, matched against every education entry"
          },
          "schoolLinkedinId": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "School Social identifier, or OR-matched identifiers, matched against every education entry. Some education entries do not carry one"
          },
          "totalExperienceMonths": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum total career length in months",
                "minimum": 0,
                "maximum": 1200
              },
              "max": {
                "type": "integer",
                "description": "Maximum total career length in months",
                "minimum": 0,
                "maximum": 1200
              }
            },
            "additionalProperties": false
          },
          "experience": {
            "type": "array",
            "maxItems": 10,
            "description": "Past-experience requirements; all entries are AND-combined",
            "items": {
              "type": "object",
              "properties": {
                "dimension": {
                  "type": "string",
                  "description": "Taxonomy dimension",
                  "enum": [
                    "function",
                    "subFunction",
                    "seniority"
                  ]
                },
                "value": {
                  "type": "string",
                  "description": "Value from the selected taxonomy",
                  "minLength": 1
                },
                "minMonths": {
                  "type": "integer",
                  "description": "Minimum tenure in months",
                  "minimum": 0,
                  "maximum": 720
                }
              },
              "required": [
                "dimension",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "skills": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Skill name or OR-matched skill names. Whole-value, case-insensitive match: \"Java\" does not match \"JavaScript\""
          },
          "languages": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Language name in English, or OR-matched names. These names also match their native spellings: Arabic, Bengali, Catalan, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Mandarin, Norwegian, Polish, Portuguese, Punjabi, Romanian, Russian, Spanish, Swedish, Tagalog, Thai, Turkish, Ukrainian, Urdu, Vietnamese"
          },
          "excludeLanguages": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Language name in English, or names, to exclude. Needs a positive filter next to it"
          },
          "keywords": {
            "type": "string",
            "description": "Words searched across the whole profile. Every word must appear, in any field; whole words only",
            "minLength": 1
          },
          "changedJobsWithinDays": {
            "type": "integer",
            "description": "Current position started within the last N days",
            "enum": [
              30,
              60,
              90,
              120
            ]
          },
          "location": {
            "type": "object",
            "properties": {
              "country": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "Country name (e.g. \"France\")"
              },
              "countryCode": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CountryCode"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CountryCode"
                    }
                  }
                ],
                "description": "ISO 3166 country code (e.g. \"FR\")"
              },
              "area": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Area"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Area"
                    }
                  }
                ],
                "description": "Zone id, or a list (e.g. \"MR:EMEA\", [\"MC:DACH\", \"MC:NORD\"]): main regions, UN regions and subregions, market clusters, institutional groups. Each zone matches the person's country among its member countries; zones add up with each other and with countryCode, and combine with region and city. The members of each zone are listed by the available-fields endpoint (location.area.areaCatalog)."
              },
              "region": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "State or region"
              },
              "city": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "City"
              }
            },
            "additionalProperties": false
          },
          "maxDataAgeDate": {
            "type": "string",
            "description": "Only return profiles refreshed after this date",
            "format": "date-time"
          },
          "cursor": {
            "type": "string",
            "description": "Opaque cursor returned in metadata.nextCursor",
            "minLength": 1
          },
          "perPage": {
            "type": "integer",
            "description": "Results per page (1-100, default 25)",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          }
        },
        "additionalProperties": false,
        "example": {
          "currentFunction": "Sales",
          "currentSeniority": [
            "Director",
            "VP"
          ],
          "location": {
            "countryCode": "FR"
          },
          "perPage": 25
        }
      },
      "SearchPeoplePromptBody": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Plain-language description of the people to find, in any language: at least 3 characters and at most 1000 tokens (about 4000 characters of English text)",
            "minLength": 3
          },
          "cursor": {
            "type": "string",
            "description": "Opaque cursor returned in metadata.nextCursor. Send it with the same prompt: it only works with the filters that produced it.",
            "minLength": 1
          },
          "perPage": {
            "type": "integer",
            "description": "Results per page (1-100, default 25)",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false,
        "example": {
          "prompt": "VP Sales in Paris at software companies with 50 to 200 employees",
          "perPage": 25
        }
      },
      "SearchPeopleLookalikeBody": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Public Social profile URL of the seed. Required unless id is given.",
            "example": "https://social.com/in/janedoe"
          },
          "id": {
            "type": "string",
            "description": "Reverse Contact person id of the seed (prs_...), as returned in the id field of any person response. Required unless url is given.",
            "pattern": "^prs_[A-Za-z0-9]+$",
            "example": "prs_01jbd5vewyenebxgaz869ffe5t"
          },
          "cursor": {
            "type": "string",
            "description": "Opaque cursor returned in metadata.nextCursor. Send it with the same seed.",
            "minLength": 1
          },
          "perPage": {
            "type": "integer",
            "description": "Results per page (1-100, default 25)",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          }
        },
        "additionalProperties": false,
        "description": "Provide exactly one seed, url or id. Search filters are refused: the criteria come from the seed.",
        "oneOf": [
          {
            "required": [
              "url"
            ]
          },
          {
            "required": [
              "id"
            ]
          }
        ],
        "example": {
          "url": "https://social.com/in/janedoe",
          "perPage": 25
        }
      },
      "SearchPeopleCountBody": {
        "$ref": "#/components/schemas/SearchPeopleFilters"
      },
      "SearchPeopleAutoSuggestionBody": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "The filter to complete",
            "enum": [
              "skills"
            ]
          },
          "query": {
            "type": "string",
            "description": "What has been typed so far",
            "minLength": 1,
            "maxLength": 100
          },
          "limit": {
            "type": "integer",
            "description": "Maximum values returned, 10 by default",
            "minimum": 1,
            "maximum": 25
          }
        },
        "required": [
          "field",
          "query"
        ],
        "additionalProperties": false
      },
      "SearchOrganizationsFilters": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string",
            "description": "Filter by organization name",
            "minLength": 1
          },
          "companyDomain": {
            "type": "string",
            "description": "Filter by website domain (e.g. acme.com)",
            "minLength": 1
          },
          "industry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Industry name or array of industries. Matched exactly against the published taxonomy (see docs.reversecontact.com/guides/industries); an unlisted value is rejected with 422 INVALID_FILTER_VALUE and suggestions."
          },
          "specialities": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Speciality listed on the organization profile, or an array of specialities (OR matching)"
          },
          "employeeCountRange": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum employees, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum employees, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "foundedYear": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Earliest founding year, inclusive",
                "minimum": 0,
                "maximum": 2100
              },
              "max": {
                "type": "integer",
                "description": "Latest founding year, inclusive",
                "minimum": 0,
                "maximum": 2100
              }
            },
            "additionalProperties": false
          },
          "followersCount": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "location": {
            "type": "object",
            "properties": {
              "country": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              },
              "countryCode": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CountryCode"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CountryCode"
                    }
                  }
                ]
              },
              "area": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Area"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Area"
                    }
                  }
                ],
                "description": "Zone id, or a list (e.g. \"MR:EMEA\", [\"MC:DACH\", \"MC:NORD\"]): main regions, UN regions and subregions, market clusters, institutional groups. Each zone matches the headquarters' country among its member countries; zones add up with each other and with countryCode, and combine with region and city. The members of each zone are listed by the available-fields endpoint (location.area.areaCatalog)."
              },
              "region": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              },
              "city": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "Headquarters location; each property accepts one value or an OR-matched list"
          },
          "maxDataAgeDate": {
            "type": "string",
            "description": "ISO 8601 datetime. Only returns organizations refreshed after this date. Needs at least one other filter.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "SearchOrganizationsBody": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string",
            "description": "Filter by organization name",
            "minLength": 1
          },
          "companyDomain": {
            "type": "string",
            "description": "Filter by website domain (e.g. acme.com)",
            "minLength": 1
          },
          "industry": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Industry"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            ],
            "description": "Industry name or array of industries. Matched exactly against the published taxonomy (see docs.reversecontact.com/guides/industries); an unlisted value is rejected with 422 INVALID_FILTER_VALUE and suggestions."
          },
          "specialities": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Speciality listed on the organization profile, or an array of specialities (OR matching)"
          },
          "employeeCountRange": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum employees, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum employees, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "foundedYear": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Earliest founding year, inclusive",
                "minimum": 0,
                "maximum": 2100
              },
              "max": {
                "type": "integer",
                "description": "Latest founding year, inclusive",
                "minimum": 0,
                "maximum": 2100
              }
            },
            "additionalProperties": false
          },
          "followersCount": {
            "type": "object",
            "properties": {
              "min": {
                "type": "integer",
                "description": "Minimum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              },
              "max": {
                "type": "integer",
                "description": "Maximum followers, inclusive",
                "minimum": 0,
                "maximum": 1000000000
              }
            },
            "additionalProperties": false
          },
          "location": {
            "type": "object",
            "properties": {
              "country": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              },
              "countryCode": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CountryCode"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CountryCode"
                    }
                  }
                ]
              },
              "area": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Area"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Area"
                    }
                  }
                ],
                "description": "Zone id, or a list (e.g. \"MR:EMEA\", [\"MC:DACH\", \"MC:NORD\"]): main regions, UN regions and subregions, market clusters, institutional groups. Each zone matches the headquarters' country among its member countries; zones add up with each other and with countryCode, and combine with region and city. The members of each zone are listed by the available-fields endpoint (location.area.areaCatalog)."
              },
              "region": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              },
              "city": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "Headquarters location; each property accepts one value or an OR-matched list"
          },
          "maxDataAgeDate": {
            "type": "string",
            "description": "ISO 8601 datetime. Only returns organizations refreshed after this date. Needs at least one other filter.",
            "format": "date-time"
          },
          "cursor": {
            "type": "string",
            "description": "Opaque cursor returned in metadata.nextCursor",
            "minLength": 1
          },
          "perPage": {
            "type": "integer",
            "description": "Results per page (1-100, default 25)",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          }
        },
        "additionalProperties": false,
        "example": {
          "industry": "Software Development",
          "employeeCountRange": {
            "min": 51,
            "max": 200
          },
          "foundedYear": {
            "min": 2015
          },
          "location": {
            "countryCode": "FR"
          },
          "perPage": 25
        }
      },
      "SearchOrganizationsCountBody": {
        "$ref": "#/components/schemas/SearchOrganizationsFilters"
      },
      "SearchOrganizationsPromptBody": {
        "type": "object",
        "properties": {
          "prompt": {
            "type": "string",
            "description": "Plain-language description of the organizations to find, in any language: at least 3 characters and at most 1000 tokens (about 4000 characters of English text)",
            "minLength": 3
          },
          "cursor": {
            "type": "string",
            "description": "Opaque cursor returned in metadata.nextCursor. Send it with the same prompt: it only works with the filters that produced it.",
            "minLength": 1
          },
          "perPage": {
            "type": "integer",
            "description": "Results per page (1-100, default 25)",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          }
        },
        "required": [
          "prompt"
        ],
        "additionalProperties": false,
        "example": {
          "prompt": "Software companies in Berlin with 200 to 500 employees, founded after 2015",
          "perPage": 25
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "externalDocs": {
    "description": "Reverse Contact API documentation",
    "url": "https://docs.reversecontact.com/"
  }
}
