{
  "components": {
    "schemas": {
      "Account": {
        "description": "One company or school district across all campaigns of the organization.",
        "properties": {
          "campaign_ids": {
            "description": "IDs of the campaigns that hold the account.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Campaign Ids",
            "type": "array"
          },
          "contacted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Latest time when a person of the account became contacted (UTC). Null when no person of the account is contacted.",
            "title": "Contacted At"
          },
          "created_at": {
            "description": "Time when the account was created (UTC).",
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Web domain of the account, for example acme.com.",
            "title": "Domain"
          },
          "entity_type": {
            "description": "Type of the account: company or school_district.",
            "enum": [
              "company",
              "school_district"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "id": {
            "description": "ID of the account.",
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "linkedin_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "LinkedIn URL of the account.",
            "title": "Linkedin Url"
          },
          "membership": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Membership"
              },
              {
                "type": "null"
              }
            ],
            "description": "State of the account in the campaign of the request. Null when the request has no campaign."
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Name of the account.",
            "title": "Name"
          },
          "restricted": {
            "description": "Names of the response sections that the access of the caller does not permit. The response omits each named section: a list is empty and a value is null. An empty list means the response is complete.",
            "items": {
              "type": "string"
            },
            "title": "Restricted",
            "type": "array"
          },
          "updated_at": {
            "description": "Time of the last change (UTC).",
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Website URL of the account.",
            "title": "Website"
          }
        },
        "required": [
          "id",
          "entity_type",
          "created_at",
          "updated_at"
        ],
        "title": "Account",
        "type": "object"
      },
      "AccountImportRow": {
        "additionalProperties": true,
        "description": "Account identity fields and optional enrichment input.",
        "properties": {
          "domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Domain"
          },
          "external_id": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Id"
          },
          "linkedin_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Linkedin Url"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          }
        },
        "title": "AccountImportRow",
        "type": "object"
      },
      "AccountList": {
        "description": "Accounts with their membership in one campaign.",
        "properties": {
          "data": {
            "description": "The accounts of the request, in request order, each with its membership.",
            "items": {
              "$ref": "#/components/schemas/Account"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "AccountList",
        "type": "object"
      },
      "AddAccountsRequest": {
        "additionalProperties": false,
        "description": "Accounts to add to a campaign.",
        "properties": {
          "ids": {
            "description": "IDs of the accounts to add (1 to 100).",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Ids",
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "title": "AddAccountsRequest",
        "type": "object"
      },
      "AddAccountsResult": {
        "description": "The accounts of an add request and the IDs of the accounts that joined.",
        "properties": {
          "added_ids": {
            "description": "IDs of the accounts that joined the campaign with this request. The other accounts were already in the campaign.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Added Ids",
            "type": "array"
          },
          "data": {
            "description": "The accounts of the request, in request order, each with its membership in the campaign. A merged account ID gives the surviving account.",
            "items": {
              "$ref": "#/components/schemas/Account"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data",
          "added_ids"
        ],
        "title": "AddAccountsResult",
        "type": "object"
      },
      "AddPeopleRequest": {
        "additionalProperties": false,
        "description": "People to add to a campaign.",
        "properties": {
          "ids": {
            "description": "IDs of the people to add (1 to 100).",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Ids",
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "title": "AddPeopleRequest",
        "type": "object"
      },
      "AddPeopleResult": {
        "description": "The people of an add request and the IDs of the people and accounts that joined.",
        "properties": {
          "added_account_ids": {
            "description": "IDs of the accounts that joined the campaign with this request, because a person of the account joined it.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Added Account Ids",
            "type": "array"
          },
          "added_ids": {
            "description": "IDs of the people that joined the campaign with this request. The other people were already in the campaign.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Added Ids",
            "type": "array"
          },
          "data": {
            "description": "The people of the request, in request order, each with its membership in the campaign. A merged person ID gives the surviving person.",
            "items": {
              "$ref": "#/components/schemas/Person"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data",
          "added_ids",
          "added_account_ids"
        ],
        "title": "AddPeopleResult",
        "type": "object"
      },
      "Body_upload_import": {
        "properties": {
          "campaign_id": {
            "description": "ID of the campaign.",
            "format": "uuid",
            "title": "Campaign Id",
            "type": "string"
          },
          "entity_type": {
            "description": "account for companies or school districts, person for people.",
            "enum": [
              "account",
              "person"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "file": {
            "description": "CSV file with a header row, a name column, and 1 or more rows.",
            "format": "binary",
            "title": "File",
            "type": "string"
          }
        },
        "required": [
          "campaign_id",
          "entity_type",
          "file"
        ],
        "title": "Body_upload_import",
        "type": "object"
      },
      "Campaign": {
        "description": "A campaign: a set of target accounts and people.",
        "properties": {
          "active_run_ids": {
            "description": "IDs of the discovery, import, and monitor runs that are queued or running. Empty without run.read.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Active Run Ids",
            "type": "array"
          },
          "counts": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignCounts"
              },
              {
                "type": "null"
              }
            ],
            "description": "Number of accounts and people in the campaign. Null when restricted names counts (it needs campaign_account.read, and campaign_person.read when the campaign targets people)."
          },
          "created_at": {
            "description": "Time when the campaign was created.",
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "criteria": {
            "$ref": "#/components/schemas/CampaignCriteria"
          },
          "criteria_editable": {
            "description": "Whether this campaign representation supports criteria updates. Caller access levels and criteria validation still apply.",
            "title": "Criteria Editable",
            "type": "boolean"
          },
          "description": {
            "description": "The ideal customer profile in plain words.",
            "title": "Description",
            "type": "string"
          },
          "discovery": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Discovery"
              },
              {
                "type": "null"
              }
            ],
            "description": "The recurring discovery of the campaign. Null until the first discovery write (start_discovery, or update_campaign with discovery), and when restricted names discovery (it needs schedule.read)."
          },
          "entity_types": {
            "description": "Types that the campaign targets. The account type (company or school_district) comes first. person is present when the campaign targets people.",
            "items": {
              "enum": [
                "company",
                "school_district",
                "person"
              ],
              "type": "string"
            },
            "title": "Entity Types",
            "type": "array"
          },
          "fields": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignFields"
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom fields of the campaign. Each account in the campaign can hold a value for each account field, and each person for each person field. Null when restricted names fields (it needs sheet_field.read)."
          },
          "id": {
            "description": "ID of the campaign.",
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "monitor_ids": {
            "description": "IDs of the monitors of the campaign. Empty without monitor.read.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Monitor Ids",
            "type": "array"
          },
          "name": {
            "description": "Name of the campaign.",
            "title": "Name",
            "type": "string"
          },
          "restricted": {
            "description": "Names of the response sections that the access of the caller does not permit. The response omits each named section: a list is empty and a value is null. An empty list means the response is complete.",
            "items": {
              "type": "string"
            },
            "title": "Restricted",
            "type": "array"
          },
          "updated_at": {
            "description": "Time of the last change to the campaign.",
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "entity_types",
          "criteria_editable",
          "created_at",
          "updated_at"
        ],
        "title": "Campaign",
        "type": "object"
      },
      "CampaignCounts": {
        "description": "Number of accounts and people in a campaign.",
        "properties": {
          "accounts": {
            "default": 0,
            "description": "Number of accounts in the campaign.",
            "minimum": 0.0,
            "title": "Accounts",
            "type": "integer"
          },
          "by_review_state": {
            "$ref": "#/components/schemas/CampaignReviewStateCounts",
            "description": "The same numbers by review state (new, reviewed, passed)."
          },
          "people": {
            "default": 0,
            "description": "Number of people in the campaign.",
            "minimum": 0.0,
            "title": "People",
            "type": "integer"
          }
        },
        "title": "CampaignCounts",
        "type": "object"
      },
      "CampaignCriteria": {
        "description": "What makes a good target account and a good target person.",
        "properties": {
          "account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What makes a good target account. Null when it is not set.",
            "title": "Account"
          },
          "person": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What makes a good target person. Null when the campaign does not target people or the text is not set.",
            "title": "Person"
          }
        },
        "title": "CampaignCriteria",
        "type": "object"
      },
      "CampaignCriteriaInput": {
        "additionalProperties": false,
        "description": "New criteria text. Only the sent values change.",
        "properties": {
          "account": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What makes a good target account.",
            "title": "Account"
          },
          "person": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What makes a good target person. The campaign must target people (person in entity_types).",
            "title": "Person"
          }
        },
        "title": "CampaignCriteriaInput",
        "type": "object"
      },
      "CampaignField": {
        "description": "One custom field of a campaign.",
        "properties": {
          "description": {
            "default": "",
            "description": "What the field holds.",
            "title": "Description",
            "type": "string"
          },
          "enum_values": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The allowed values when the type is enum. Null for other types.",
            "title": "Enum Values"
          },
          "name": {
            "description": "Name of the field.",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "description": "Value type of the field.",
            "enum": [
              "string",
              "number",
              "integer",
              "boolean",
              "enum",
              "array",
              "object"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "CampaignField",
        "type": "object"
      },
      "CampaignFieldChanges": {
        "additionalProperties": false,
        "description": "Custom fields to add to and remove from the accounts or the people of a campaign.",
        "properties": {
          "add": {
            "description": "Fields to add. A field with the name of a custom field replaces it.",
            "items": {
              "$ref": "#/components/schemas/CampaignFieldDefinition"
            },
            "maxItems": 50,
            "title": "Add",
            "type": "array"
          },
          "remove": {
            "description": "Names of custom fields to remove. The stored values stay but are hidden.",
            "items": {
              "type": "string"
            },
            "maxItems": 50,
            "title": "Remove",
            "type": "array"
          }
        },
        "title": "CampaignFieldChanges",
        "type": "object"
      },
      "CampaignFieldDefinition": {
        "additionalProperties": false,
        "description": "A custom field to add to a campaign.",
        "properties": {
          "description": {
            "default": "",
            "description": "What the field holds. The research agents read this text.",
            "maxLength": 2000,
            "title": "Description",
            "type": "string"
          },
          "enum_values": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 100,
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The allowed values. Required when the type is enum. Not allowed otherwise.",
            "title": "Enum Values"
          },
          "name": {
            "description": "Name of the field: lower case letters, digits, and underscores. A default field name and the prefix criteria_ are not allowed.",
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[a-z][a-z0-9_]*$",
            "title": "Name",
            "type": "string"
          },
          "type": {
            "default": "string",
            "description": "Value type of the field.",
            "enum": [
              "string",
              "number",
              "integer",
              "boolean",
              "enum"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "title": "CampaignFieldDefinition",
        "type": "object"
      },
      "CampaignFields": {
        "description": "The custom fields of a campaign, for accounts and for people.",
        "properties": {
          "account": {
            "description": "Custom fields of the accounts in the campaign.",
            "items": {
              "$ref": "#/components/schemas/CampaignField"
            },
            "title": "Account",
            "type": "array"
          },
          "person": {
            "description": "Custom fields of the people in the campaign.",
            "items": {
              "$ref": "#/components/schemas/CampaignField"
            },
            "title": "Person",
            "type": "array"
          }
        },
        "title": "CampaignFields",
        "type": "object"
      },
      "CampaignFieldsUpdate": {
        "additionalProperties": false,
        "description": "Changes to the custom fields of a campaign, for accounts and for people.",
        "properties": {
          "account": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignFieldChanges"
              },
              {
                "type": "null"
              }
            ],
            "description": "Changes to the custom fields of the accounts."
          },
          "person": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignFieldChanges"
              },
              {
                "type": "null"
              }
            ],
            "description": "Changes to the custom fields of the people. The campaign must target people (person in entity_types)."
          }
        },
        "title": "CampaignFieldsUpdate",
        "type": "object"
      },
      "CampaignReviewStateCounts": {
        "description": "Counts by review state, for accounts and for people.",
        "properties": {
          "accounts": {
            "$ref": "#/components/schemas/ReviewStateCounts",
            "description": "Accounts by review state."
          },
          "people": {
            "$ref": "#/components/schemas/ReviewStateCounts",
            "description": "People by review state."
          }
        },
        "title": "CampaignReviewStateCounts",
        "type": "object"
      },
      "CreateCampaignRequest": {
        "additionalProperties": false,
        "description": "A new campaign.",
        "properties": {
          "criteria": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignCriteriaInput"
              },
              {
                "type": "null"
              }
            ],
            "description": "What makes a good target account and a good target person. When a value is absent, the research agents use the description."
          },
          "description": {
            "description": "The ideal customer profile in plain words.",
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "entity_types": {
            "description": "Types to target: exactly one account type (company or school_district), and person to also find people at each account. Example: [\"company\", \"person\"].",
            "items": {
              "enum": [
                "company",
                "school_district",
                "person"
              ],
              "type": "string"
            },
            "maxItems": 2,
            "minItems": 1,
            "title": "Entity Types",
            "type": "array"
          },
          "name": {
            "description": "Name of the campaign.",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "description",
          "entity_types"
        ],
        "title": "CreateCampaignRequest",
        "type": "object"
      },
      "CreateMonitorRequest": {
        "additionalProperties": false,
        "description": "Body of ``create_monitor``.",
        "properties": {
          "config": {
            "description": "What the monitor looks for.",
            "discriminator": {
              "mapping": {
                "signal-csv": "#/components/schemas/CsvMonitorConfigInput",
                "signal-sheet": "#/components/schemas/SheetMonitorConfigInput",
                "signal-topic": "#/components/schemas/TopicMonitorConfigInput"
              },
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/TopicMonitorConfigInput"
              },
              {
                "$ref": "#/components/schemas/CsvMonitorConfigInput"
              },
              {
                "$ref": "#/components/schemas/SheetMonitorConfigInput"
              }
            ],
            "title": "Config"
          },
          "frequency": {
            "default": "weekly",
            "description": "How often the monitor runs. The schedule starts from the time of the call.",
            "enum": [
              "daily",
              "weekly",
              "monthly"
            ],
            "title": "Frequency",
            "type": "string"
          },
          "name": {
            "description": "Name of the monitor.",
            "maxLength": 200,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "status": {
            "default": "active",
            "description": "active starts the schedule. paused creates it without runs.",
            "enum": [
              "active",
              "paused"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "name",
          "config"
        ],
        "title": "CreateMonitorRequest",
        "type": "object"
      },
      "CsvMonitorConfig": {
        "additionalProperties": false,
        "description": "Config of a monitor that watches the companies or people of an uploaded CSV file.",
        "properties": {
          "entity_type": {
            "$ref": "#/components/schemas/EntityType",
            "default": "company",
            "description": "The type of the monitored records, for example company or person."
          },
          "file_id": {
            "description": "ID of a CSV file that POST /v1/files/upload returned. The file holds the monitored companies or people.",
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "File Id",
            "type": "string"
          },
          "format": {
            "default": "legacy",
            "description": "Webhook payload format. V2 requires a provisioned signing secret.",
            "enum": [
              "legacy",
              "v2"
            ],
            "title": "Format",
            "type": "string"
          },
          "primary_column": {
            "default": "name",
            "description": "The CSV column that holds the names of the monitored records.",
            "title": "Primary Column",
            "type": "string"
          },
          "signal_types": {
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "items": {
              "$ref": "#/components/schemas/SignalTypeConfig"
            },
            "title": "Signal Types",
            "type": "array"
          },
          "type": {
            "const": "signal-csv",
            "description": "The config type.",
            "title": "Type",
            "type": "string"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "required": [
          "type",
          "signal_types",
          "file_id"
        ],
        "title": "CsvMonitorConfig",
        "type": "object"
      },
      "CsvMonitorConfigInput": {
        "additionalProperties": false,
        "description": "CSV config with strict V2 signal items.",
        "properties": {
          "entity_type": {
            "$ref": "#/components/schemas/EntityType",
            "default": "company",
            "description": "The type of the monitored records, for example company or person."
          },
          "file_id": {
            "description": "ID of a CSV file that POST /v1/files/upload returned. The file holds the monitored companies or people.",
            "pattern": "^[0-9a-fA-F]{24}$",
            "title": "File Id",
            "type": "string"
          },
          "format": {
            "default": "legacy",
            "description": "Webhook payload format. V2 requires a provisioned signing secret.",
            "enum": [
              "legacy",
              "v2"
            ],
            "title": "Format",
            "type": "string"
          },
          "primary_column": {
            "default": "name",
            "description": "The CSV column that holds the names of the monitored records.",
            "title": "Primary Column",
            "type": "string"
          },
          "signal_types": {
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "items": {
              "$ref": "#/components/schemas/SignalTypeInput"
            },
            "title": "Signal Types",
            "type": "array"
          },
          "type": {
            "const": "signal-csv",
            "description": "The config type.",
            "title": "Type",
            "type": "string"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "required": [
          "type",
          "signal_types",
          "file_id"
        ],
        "title": "CsvMonitorConfigInput",
        "type": "object"
      },
      "Discovery": {
        "description": "The recurring discovery settings of a campaign.",
        "properties": {
          "contacts_per_account": {
            "default": 1,
            "description": "Number of people that a run looks for at each account.",
            "minimum": 1.0,
            "title": "Contacts Per Account",
            "type": "integer"
          },
          "count": {
            "default": 25,
            "description": "Number of accounts that one scheduled run looks for.",
            "minimum": 1.0,
            "title": "Count",
            "type": "integer"
          },
          "frequency": {
            "anyOf": [
              {
                "enum": [
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule frequency. Null when the discovery has no schedule.",
            "title": "Frequency"
          },
          "next_run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Time of the next scheduled run (UTC). Null when no schedule exists or the schedule is paused.",
            "title": "Next Run At"
          },
          "status": {
            "default": "active",
            "description": "Schedule status. A paused schedule starts no run. A discovery with no schedule reads paused.",
            "enum": [
              "active",
              "paused"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "title": "Discovery",
        "type": "object"
      },
      "DiscoveryDiagnostics": {
        "description": "Aggregate evidence without candidate IDs, prompts or rejection prose.",
        "properties": {
          "availability": {
            "enum": [
              "pending",
              "ready",
              "partial",
              "unavailable"
            ],
            "title": "Availability",
            "type": "string"
          },
          "duplicates_skipped": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duplicates Skipped"
          },
          "guidance": {
            "anyOf": [
              {
                "enum": [
                  "no_candidates",
                  "all_rejected",
                  "partial_results",
                  "interrupted",
                  "failed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Guidance"
          },
          "reasons": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DiscoveryReasons"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "availability"
        ],
        "title": "DiscoveryDiagnostics",
        "type": "object"
      },
      "DiscoveryReasons": {
        "description": "Fixed public keys. Counts cover distinct discarded queue candidates only.",
        "properties": {
          "analyst_execution_failed": {
            "default": 0,
            "minimum": 0.0,
            "title": "Analyst Execution Failed",
            "type": "integer"
          },
          "continuation_limit": {
            "default": 0,
            "minimum": 0.0,
            "title": "Continuation Limit",
            "type": "integer"
          },
          "duplicate_candidate": {
            "default": 0,
            "minimum": 0.0,
            "title": "Duplicate Candidate",
            "type": "integer"
          },
          "entity_persistence_failed": {
            "default": 0,
            "minimum": 0.0,
            "title": "Entity Persistence Failed",
            "type": "integer"
          },
          "malformed_output": {
            "default": 0,
            "minimum": 0.0,
            "title": "Malformed Output",
            "type": "integer"
          },
          "missing_required_contacts": {
            "default": 0,
            "minimum": 0.0,
            "title": "Missing Required Contacts",
            "type": "integer"
          },
          "not_qualified": {
            "default": 0,
            "minimum": 0.0,
            "title": "Not Qualified",
            "type": "integer"
          },
          "other": {
            "default": 0,
            "minimum": 0.0,
            "title": "Other",
            "type": "integer"
          },
          "provider_unavailable": {
            "default": 0,
            "minimum": 0.0,
            "title": "Provider Unavailable",
            "type": "integer"
          }
        },
        "title": "DiscoveryReasons",
        "type": "object"
      },
      "DiscoveryUpdate": {
        "additionalProperties": false,
        "description": "Changes to the recurring discovery of a campaign.\n\nOnly the sent fields change. A field that is null or absent does not change.",
        "properties": {
          "contacts_per_account": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "New number of people to look for at each account.",
            "title": "Contacts Per Account"
          },
          "count": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "New number of accounts for each scheduled run. It needs a schedule: send frequency too when the discovery has no schedule.",
            "title": "Count"
          },
          "frequency": {
            "anyOf": [
              {
                "enum": [
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New schedule frequency. The first value creates the schedule. The schedule time is the time of the request (UTC).",
            "title": "Frequency"
          },
          "status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "paused"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New schedule status. paused stops the scheduled runs and active starts them again. It needs a schedule.",
            "title": "Status"
          }
        },
        "title": "DiscoveryUpdate",
        "type": "object"
      },
      "EntityType": {
        "description": "The type of a target record.",
        "enum": [
          "company",
          "person",
          "job_board",
          "school_district",
          "product"
        ],
        "title": "EntityType",
        "type": "string"
      },
      "ErrorBody": {
        "description": "The ``error`` object of a /v2 error response.",
        "properties": {
          "code": {
            "description": "Stable snake_case error code.",
            "examples": [
              "not_found"
            ],
            "title": "Code",
            "type": "string"
          },
          "details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Extra data about the error, or null.",
            "title": "Details"
          },
          "message": {
            "description": "Human-readable description of the error.",
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "ErrorBody",
        "type": "object"
      },
      "ErrorEnvelope": {
        "description": "The body of every /v2 error response.",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorBody"
          }
        },
        "required": [
          "error"
        ],
        "title": "ErrorEnvelope",
        "type": "object"
      },
      "ImportRowOutcome": {
        "description": "One terminal input outcome, in zero-based data-row order.",
        "properties": {
          "entity_type": {
            "enum": [
              "account",
              "person"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "external_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Id"
          },
          "reason_code": {
            "anyOf": [
              {
                "enum": [
                  "account_not_found",
                  "account_mismatch",
                  "not_qualified",
                  "ambiguous_input_entity",
                  "processing_failed",
                  "identity_resolution_failed",
                  "credits_exhausted",
                  "run_canceled",
                  "run_failed"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason Code"
          },
          "row_index": {
            "minimum": 0.0,
            "title": "Row Index",
            "type": "integer"
          },
          "signal_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Signal Id"
          },
          "status": {
            "enum": [
              "created",
              "matched",
              "rejected"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "row_index",
          "entity_type",
          "status"
        ],
        "title": "ImportRowOutcome",
        "type": "object"
      },
      "ImportRowSummary": {
        "description": "Availability of durable results. Historical mappings are unavailable.",
        "properties": {
          "availability": {
            "enum": [
              "pending",
              "ready",
              "unavailable"
            ],
            "title": "Availability",
            "type": "string"
          },
          "created": {
            "default": 0,
            "title": "Created",
            "type": "integer"
          },
          "matched": {
            "default": 0,
            "title": "Matched",
            "type": "integer"
          },
          "operation": {
            "const": "list_import_rows",
            "default": "list_import_rows",
            "title": "Operation",
            "type": "string"
          },
          "rejected": {
            "default": 0,
            "title": "Rejected",
            "type": "integer"
          },
          "total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total"
          }
        },
        "required": [
          "availability"
        ],
        "title": "ImportRowSummary",
        "type": "object"
      },
      "LegacyIdItem": {
        "additionalProperties": false,
        "description": "One submitted legacy resource kind and identifier.",
        "properties": {
          "id": {
            "maxLength": 128,
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "maxLength": 64,
            "title": "Kind",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "id"
        ],
        "title": "LegacyIdItem",
        "type": "object"
      },
      "LegacyIdRequest": {
        "additionalProperties": false,
        "description": "One rate-limited request with at most 100 independent items.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/LegacyIdItem"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "LegacyIdRequest",
        "type": "object"
      },
      "LegacyIdResponse": {
        "description": "Results in the same order as the submitted items.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/LegacyIdResult"
            },
            "title": "Items",
            "type": "array"
          }
        },
        "required": [
          "items"
        ],
        "title": "LegacyIdResponse",
        "type": "object"
      },
      "LegacyIdResult": {
        "description": "Echo the input and expose mapping fields only for an accessible resource.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "run_kind": {
            "anyOf": [
              {
                "enum": [
                  "monitor",
                  "discovery",
                  "import"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Kind"
          },
          "status": {
            "enum": [
              "mapped",
              "not_found",
              "unsupported",
              "not_yet_available",
              "invalid"
            ],
            "title": "Status",
            "type": "string"
          },
          "v2_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "V2 Id"
          },
          "v2_kind": {
            "anyOf": [
              {
                "enum": [
                  "campaign",
                  "account",
                  "person",
                  "signal",
                  "monitor",
                  "run"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "V2 Kind"
          }
        },
        "required": [
          "kind",
          "id",
          "status"
        ],
        "title": "LegacyIdResult",
        "type": "object"
      },
      "Me": {
        "description": "The caller of the request: organization, role, and credit balance.",
        "properties": {
          "available_credits": {
            "description": "Credits that the organization can spend now. A run that uses credits gives 402 when the value is 0 or less.",
            "title": "Available Credits",
            "type": "number"
          },
          "organization": {
            "$ref": "#/components/schemas/MeOrganization"
          },
          "role": {
            "anyOf": [
              {
                "enum": [
                  "member",
                  "admin",
                  "owner"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Role of the API key user in the organization. Null when the user has no role. The role permits no operation: the access levels of the key do.",
            "title": "Role"
          }
        },
        "required": [
          "organization",
          "role",
          "available_credits"
        ],
        "title": "Me",
        "type": "object"
      },
      "MeOrganization": {
        "description": "The organization of the API key.",
        "properties": {
          "id": {
            "description": "ID of the organization (24 hexadecimal characters). The web app and support use this ID.",
            "examples": [
              "507f1f77bcf86cd799439002"
            ],
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "Name of the organization.",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "MeOrganization",
        "type": "object"
      },
      "Membership": {
        "description": "The state of an account or a person in one campaign.",
        "properties": {
          "added_at": {
            "description": "Time when the account or person joined the campaign.",
            "format": "date-time",
            "title": "Added At",
            "type": "string"
          },
          "campaign_id": {
            "description": "ID of the campaign.",
            "format": "uuid",
            "title": "Campaign Id",
            "type": "string"
          },
          "comments": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "User comments on the copy.",
            "title": "Comments"
          },
          "fields": {
            "additionalProperties": true,
            "description": "The values of the campaign custom fields, keyed by field name.",
            "title": "Fields",
            "type": "object"
          },
          "fit": {
            "additionalProperties": true,
            "description": "The criteria_* values of the copy in this campaign, keyed by field name.",
            "title": "Fit",
            "type": "object"
          },
          "review_state": {
            "$ref": "#/components/schemas/ReviewState",
            "description": "Review state in this campaign."
          }
        },
        "required": [
          "campaign_id",
          "review_state",
          "added_at"
        ],
        "title": "Membership",
        "type": "object"
      },
      "Monitor": {
        "description": "An organization-owned signal task and its schedule.",
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional campaign provenance. Null for an independent monitor.",
            "title": "Campaign Id"
          },
          "config": {
            "anyOf": [
              {
                "discriminator": {
                  "mapping": {
                    "signal-csv": "#/components/schemas/CsvMonitorConfig",
                    "signal-sheet": "#/components/schemas/SheetMonitorConfig",
                    "signal-topic": "#/components/schemas/TopicMonitorConfig"
                  },
                  "propertyName": "type"
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TopicMonitorConfig"
                  },
                  {
                    "$ref": "#/components/schemas/CsvMonitorConfig"
                  },
                  {
                    "$ref": "#/components/schemas/SheetMonitorConfig"
                  }
                ]
              },
              {
                "type": "null"
              }
            ],
            "description": "What the monitor looks for. Null for a legacy monitor whose config the /v2 API cannot read.",
            "title": "Config"
          },
          "frequency": {
            "anyOf": [
              {
                "enum": [
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "How often the monitor runs. Null when it is not known.",
            "title": "Frequency"
          },
          "id": {
            "description": "ID of the monitor.",
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "Name of the monitor.",
            "title": "Name",
            "type": "string"
          },
          "next_run_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Time of the next scheduled run. Null when the monitor is paused.",
            "title": "Next Run At"
          },
          "restricted": {
            "description": "Names of the response sections that the access of the caller does not permit. The response omits each named section: a list is empty and a value is null. An empty list means the response is complete.",
            "items": {
              "type": "string"
            },
            "title": "Restricted",
            "type": "array"
          },
          "status": {
            "description": "active: the schedule starts runs. paused: no run starts. A monitor without a schedule is paused.",
            "enum": [
              "active",
              "paused"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "campaign_id",
          "name",
          "config",
          "frequency",
          "status",
          "next_run_at"
        ],
        "title": "Monitor",
        "type": "object"
      },
      "MonitorConfigUpdate": {
        "additionalProperties": false,
        "description": "Changes to the config of a monitor. Only the sent fields change.\n\nA field must belong to the config type of the monitor. Send null to clear a field that\ncan be null, for example ``geographic_filters``.",
        "properties": {
          "company_size_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-topic only. The company sizes to focus on, or null for all sizes.",
            "title": "Company Size Filters"
          },
          "entity_filters": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-sheet only. Conditions on the records of the source campaign sheet, or null to watch every record. All conditions must match. Keys: review_state (new, reviewed or passed), fields.<name> (a scalar custom field of the source campaign, for example fields.custom_students), status, or the path of a data field, for example data.industry.value. Each field value is a JSON scalar (the field must be equal to it) or an object of operators: $eq, $ne, $gt, $gte, $lt, $lte (a scalar), $in and $nin (a list of scalars), $exists (true or false), and $regex (a pattern of at most 200 characters; start the pattern with (?i) to ignore case). For fields.<name>, the field type decides the operators: text fields accept $regex, number fields accept $gt, $gte, $lt and $lte, and operands must have the field type or be null. Other fields, other operators, unknown custom fields, and top-level operators such as $or or $where give 422.",
            "title": "Entity Filters"
          },
          "entity_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EntityType"
              },
              {
                "type": "null"
              }
            ],
            "description": "The type of the monitored records, for example company or person."
          },
          "file_id": {
            "anyOf": [
              {
                "pattern": "^[0-9a-fA-F]{24}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-csv only. ID of a CSV file that POST /v1/files/upload returned. The file holds the monitored companies or people.",
            "title": "File Id"
          },
          "format": {
            "anyOf": [
              {
                "enum": [
                  "legacy",
                  "v2"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Webhook payload format.",
            "title": "Format"
          },
          "geographic_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-topic only. The regions to focus on, or null for all regions.",
            "title": "Geographic Filters"
          },
          "industry_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-topic only. The industries to focus on, or null for all industries.",
            "title": "Industry Filters"
          },
          "primary_column": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-csv only. The CSV column that holds the names of the monitored records.",
            "title": "Primary Column"
          },
          "signal_types": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SignalTypeInput"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "title": "Signal Types"
          },
          "source_campaign_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-sheet only. ID of the campaign whose accounts or people the monitor watches. It can be the campaign of the monitor.",
            "title": "Source Campaign Id"
          },
          "topic_criteria": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "signal-topic only. The topic to monitor in natural language, for example 'AI startups that raise a Series A'.",
            "title": "Topic Criteria"
          },
          "type": {
            "anyOf": [
              {
                "enum": [
                  "signal-topic",
                  "signal-csv",
                  "signal-sheet"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The config type. The type of a monitor cannot change. When sent, it must be the current type.",
            "title": "Type"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "title": "MonitorConfigUpdate",
        "type": "object"
      },
      "Page_Account_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/Account"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[Account]",
        "type": "object"
      },
      "Page_Campaign_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/Campaign"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[Campaign]",
        "type": "object"
      },
      "Page_ImportRowOutcome_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/ImportRowOutcome"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[ImportRowOutcome]",
        "type": "object"
      },
      "Page_Monitor_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/Monitor"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[Monitor]",
        "type": "object"
      },
      "Page_Person_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/Person"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[Person]",
        "type": "object"
      },
      "Page_Run_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/Run"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[Run]",
        "type": "object"
      },
      "Page_Signal_": {
        "properties": {
          "data": {
            "description": "The items of this page, in ascending ID order. A list that shows the newest items first says so in its description.",
            "items": {
              "$ref": "#/components/schemas/Signal"
            },
            "title": "Data",
            "type": "array"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque cursor of the next page. Send it as the cursor parameter. Null on the last page.",
            "title": "Next Cursor"
          }
        },
        "required": [
          "data"
        ],
        "title": "Page[Signal]",
        "type": "object"
      },
      "Person": {
        "description": "One contact across all campaigns of the organization.",
        "properties": {
          "account_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID of the account of the person. Null when the person has no account.",
            "title": "Account Id"
          },
          "campaign_ids": {
            "description": "IDs of the campaigns that hold the person.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Campaign Ids",
            "type": "array"
          },
          "contacted_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Time when the person became contacted (UTC). Null when not contacted.",
            "title": "Contacted At"
          },
          "created_at": {
            "description": "Time when the person was created (UTC).",
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Email address of the person.",
            "title": "Email"
          },
          "id": {
            "description": "ID of the person.",
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "linkedin_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "LinkedIn URL of the person.",
            "title": "Linkedin Url"
          },
          "membership": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Membership"
              },
              {
                "type": "null"
              }
            ],
            "description": "State of the person in the campaign of the request. Null when the request has no campaign."
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Full name of the person.",
            "title": "Name"
          },
          "restricted": {
            "description": "Names of the response sections that the access of the caller does not permit. The response omits each named section: a list is empty and a value is null. An empty list means the response is complete.",
            "items": {
              "type": "string"
            },
            "title": "Restricted",
            "type": "array"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Job title of the person.",
            "title": "Title"
          },
          "updated_at": {
            "description": "Time of the last change (UTC).",
            "format": "date-time",
            "title": "Updated At",
            "type": "string"
          }
        },
        "required": [
          "id",
          "created_at",
          "updated_at"
        ],
        "title": "Person",
        "type": "object"
      },
      "PersonImportRow": {
        "additionalProperties": true,
        "description": "Person fields and optional tenant-scoped account intent.",
        "properties": {
          "account_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Id"
          },
          "domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Domain"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "external_id": {
            "anyOf": [
              {
                "maxLength": 1000,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "External Id"
          },
          "first_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "First Name"
          },
          "last_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Name"
          },
          "linkedin_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Linkedin Url"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          }
        },
        "title": "PersonImportRow",
        "type": "object"
      },
      "PersonList": {
        "description": "People with their membership in one campaign.",
        "properties": {
          "data": {
            "description": "The people of the request, in request order, each with its membership.",
            "items": {
              "$ref": "#/components/schemas/Person"
            },
            "title": "Data",
            "type": "array"
          }
        },
        "required": [
          "data"
        ],
        "title": "PersonList",
        "type": "object"
      },
      "ReviewState": {
        "description": "Review state of an account or a person in one campaign.",
        "enum": [
          "new",
          "reviewed",
          "passed"
        ],
        "title": "ReviewState",
        "type": "string"
      },
      "ReviewStateCounts": {
        "description": "Number of memberships in each review state.",
        "properties": {
          "new": {
            "default": 0,
            "description": "Number in the review state new.",
            "minimum": 0.0,
            "title": "New",
            "type": "integer"
          },
          "passed": {
            "default": 0,
            "description": "Number in the review state passed.",
            "minimum": 0.0,
            "title": "Passed",
            "type": "integer"
          },
          "reviewed": {
            "default": 0,
            "description": "Number in the review state reviewed.",
            "minimum": 0.0,
            "title": "Reviewed",
            "type": "integer"
          }
        },
        "title": "ReviewStateCounts",
        "type": "object"
      },
      "Run": {
        "description": "A discovery, import, monitor, or export run.",
        "properties": {
          "campaign_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID of the campaign of the run.",
            "title": "Campaign Id"
          },
          "created_at": {
            "description": "Time when the run was created.",
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Outcome details. forced is true for a reaper-settled cancellation.",
            "title": "Details"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Error text of a failed or skipped run.",
            "title": "Error"
          },
          "error_code": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RunErrorCode"
              },
              {
                "type": "null"
              }
            ],
            "description": "Stable code of why the run did not succeed. Null for a queued, running, or succeeded run, and for a skipped run with an unknown reason."
          },
          "finished_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Time when the run finished. Null while the run is not finished, and while the end time is not known yet (for example while a canceled run stops).",
            "title": "Finished At"
          },
          "id": {
            "description": "ID of the run.",
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "kind": {
            "$ref": "#/components/schemas/RunKind",
            "description": "The job of the run."
          },
          "monitor_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID of the monitor of a monitor run. Null for the other kinds.",
            "title": "Monitor Id"
          },
          "progress": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RunProgress"
              },
              {
                "type": "null"
              }
            ],
            "description": "The queue counts of the run. Null before the queue starts, and when the queue data expired after 30 days."
          },
          "restricted": {
            "description": "Names of the response sections that the access of the caller does not permit. The response omits each named section: a list is empty and a value is null. An empty list means the response is complete.",
            "items": {
              "type": "string"
            },
            "title": "Restricted",
            "type": "array"
          },
          "result": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RunResult"
              },
              {
                "type": "null"
              }
            ],
            "description": "The result of a finished run, or import row availability while processing. Null for other active runs, for a skipped run, and when the counts of the run are not known."
          },
          "skipped_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Why a skipped run did not start, for example insufficient_credits. Null when the status is not skipped.",
            "title": "Skipped Reason"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Time when the run started to work. Null when it is not known.",
            "title": "Started At"
          },
          "status": {
            "$ref": "#/components/schemas/RunStatus",
            "description": "Status of the run."
          },
          "trigger": {
            "$ref": "#/components/schemas/RunTrigger",
            "description": "scheduled when a schedule started the run, else manual."
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "trigger",
          "created_at"
        ],
        "title": "Run",
        "type": "object"
      },
      "RunErrorCode": {
        "description": "Stable code of why a run did not succeed (APP-473 D7).\n\nThe API derives the code at read time from the stored run state:\n\n- ``insufficient_credits``: a scheduled run did not start because the organization had\n  no credits (status ``skipped``).\n- ``canceled_stuck``: the stuck-run reaper stopped the run. The run had no activity, did\n  not start, or did not stop after a cancel request (status ``canceled``).\n- ``canceled_by_user``: another cancel, for example ``cancel_run`` or the delete of the\n  campaign or the monitor (status ``canceled``).\n- ``worker_crashed``: the worker of the run stopped with no result (status ``failed``).\n- ``run_failed``: the run failed for another reason (status ``failed``).",
        "enum": [
          "insufficient_credits",
          "canceled_stuck",
          "canceled_by_user",
          "worker_crashed",
          "run_failed"
        ],
        "title": "RunErrorCode",
        "type": "string"
      },
      "RunKind": {
        "description": "The job of a run.",
        "enum": [
          "discovery",
          "import",
          "monitor",
          "export"
        ],
        "title": "RunKind",
        "type": "string"
      },
      "RunProgress": {
        "description": "The queue counts of a run.",
        "properties": {
          "completed": {
            "description": "Number of items that the run finished.",
            "minimum": 0.0,
            "title": "Completed",
            "type": "integer"
          },
          "discarded": {
            "description": "Number of items that the run rejected. A monitor run has none.",
            "minimum": 0.0,
            "title": "Discarded",
            "type": "integer"
          },
          "queued": {
            "description": "Number of items that wait in the queue.",
            "minimum": 0.0,
            "title": "Queued",
            "type": "integer"
          },
          "target": {
            "description": "Number of items that the run put in its queue.",
            "minimum": 0.0,
            "title": "Target",
            "type": "integer"
          }
        },
        "required": [
          "target",
          "queued",
          "completed",
          "discarded"
        ],
        "title": "RunProgress",
        "type": "object"
      },
      "RunResult": {
        "description": "The result of a finished run. The fields that apply depend on the kind.",
        "properties": {
          "completed": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "discovery: accounts that the run added. The count does not include the people of the accounts. import: rows that the run added. monitor: signals that the run processed. export: accounts or people in the file.",
            "title": "Completed"
          },
          "discarded": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "discovery and import: items that the run rejected. Null for the other kinds.",
            "title": "Discarded"
          },
          "discovery_diagnostics": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DiscoveryDiagnostics"
              },
              {
                "type": "null"
              }
            ]
          },
          "download_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "export: time when download_url stops working.",
            "title": "Download Expires At"
          },
          "download_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "export: URL of the CSV file. Null for the other kinds.",
            "title": "Download Url"
          },
          "import_rows": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ImportRowSummary"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "RunResult",
        "type": "object"
      },
      "RunStatus": {
        "description": "The status of a run.\n\n``skipped``: a scheduled run that did not start because the organization had no credits.",
        "enum": [
          "queued",
          "running",
          "canceling",
          "succeeded",
          "failed",
          "canceled",
          "skipped"
        ],
        "title": "RunStatus",
        "type": "string"
      },
      "RunTrigger": {
        "description": "What started a run: a schedule, or a request of a user or a client.",
        "enum": [
          "manual",
          "scheduled"
        ],
        "title": "RunTrigger",
        "type": "string"
      },
      "SetAccountReviewStateRequest": {
        "additionalProperties": false,
        "description": "A new review state for accounts in one campaign.",
        "properties": {
          "ids": {
            "description": "IDs of the accounts (1 to 100). Each account must be in the campaign.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Ids",
            "type": "array"
          },
          "review_state": {
            "$ref": "#/components/schemas/ReviewState",
            "description": "New review state in the campaign: new, reviewed, or passed."
          }
        },
        "required": [
          "ids",
          "review_state"
        ],
        "title": "SetAccountReviewStateRequest",
        "type": "object"
      },
      "SetPersonReviewStateRequest": {
        "additionalProperties": false,
        "description": "A new review state for people in one campaign.",
        "properties": {
          "ids": {
            "description": "IDs of the people (1 to 100). Each person must be in the campaign.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "title": "Ids",
            "type": "array"
          },
          "review_state": {
            "$ref": "#/components/schemas/ReviewState",
            "description": "New review state in the campaign: new, reviewed, or passed."
          }
        },
        "required": [
          "ids",
          "review_state"
        ],
        "title": "SetPersonReviewStateRequest",
        "type": "object"
      },
      "SheetMonitorConfig": {
        "additionalProperties": false,
        "description": "Config of a monitor that watches the accounts or people of a campaign.\n\nA response shows ``entity_filters`` in the public form that the request\nused. A request uses ``SheetMonitorConfigInput``, which checks the filter.",
        "properties": {
          "entity_filters": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Conditions on the records of the source campaign sheet, or null to watch every record. All conditions must match. Keys: review_state (new, reviewed or passed), fields.<name> (a scalar custom field of the source campaign, for example fields.custom_students), status, or the path of a data field, for example data.industry.value. Each field value is a JSON scalar (the field must be equal to it) or an object of operators: $eq, $ne, $gt, $gte, $lt, $lte (a scalar), $in and $nin (a list of scalars), $exists (true or false), and $regex (a pattern of at most 200 characters; start the pattern with (?i) to ignore case). For fields.<name>, the field type decides the operators: text fields accept $regex, number fields accept $gt, $gte, $lt and $lte, and operands must have the field type or be null. Other fields, other operators, unknown custom fields, and top-level operators such as $or or $where give 422.",
            "title": "Entity Filters"
          },
          "entity_type": {
            "$ref": "#/components/schemas/EntityType",
            "default": "company",
            "description": "The type of the monitored records, for example company or person."
          },
          "format": {
            "default": "legacy",
            "description": "Webhook payload format. V2 requires a provisioned signing secret.",
            "enum": [
              "legacy",
              "v2"
            ],
            "title": "Format",
            "type": "string"
          },
          "signal_types": {
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "items": {
              "$ref": "#/components/schemas/SignalTypeConfig"
            },
            "title": "Signal Types",
            "type": "array"
          },
          "source_campaign_id": {
            "description": "ID of the campaign whose accounts or people the monitor watches. It can be the campaign of the monitor.",
            "format": "uuid",
            "title": "Source Campaign Id",
            "type": "string"
          },
          "type": {
            "const": "signal-sheet",
            "description": "The config type.",
            "title": "Type",
            "type": "string"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "required": [
          "type",
          "signal_types",
          "source_campaign_id"
        ],
        "title": "SheetMonitorConfig",
        "type": "object"
      },
      "SheetMonitorConfigInput": {
        "additionalProperties": false,
        "description": "Config of a monitor that watches the accounts or people of a campaign, in a request.\n\nThe API checks each condition of entity_filters.",
        "properties": {
          "entity_filters": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Conditions on the records of the source campaign sheet, or null to watch every record. All conditions must match. Keys: review_state (new, reviewed or passed), fields.<name> (a scalar custom field of the source campaign, for example fields.custom_students), status, or the path of a data field, for example data.industry.value. Each field value is a JSON scalar (the field must be equal to it) or an object of operators: $eq, $ne, $gt, $gte, $lt, $lte (a scalar), $in and $nin (a list of scalars), $exists (true or false), and $regex (a pattern of at most 200 characters; start the pattern with (?i) to ignore case). For fields.<name>, the field type decides the operators: text fields accept $regex, number fields accept $gt, $gte, $lt and $lte, and operands must have the field type or be null. Other fields, other operators, unknown custom fields, and top-level operators such as $or or $where give 422.",
            "title": "Entity Filters"
          },
          "entity_type": {
            "$ref": "#/components/schemas/EntityType",
            "default": "company",
            "description": "The type of the monitored records, for example company or person."
          },
          "format": {
            "default": "legacy",
            "description": "Webhook payload format. V2 requires a provisioned signing secret.",
            "enum": [
              "legacy",
              "v2"
            ],
            "title": "Format",
            "type": "string"
          },
          "signal_types": {
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "items": {
              "$ref": "#/components/schemas/SignalTypeInput"
            },
            "title": "Signal Types",
            "type": "array"
          },
          "source_campaign_id": {
            "description": "ID of the campaign whose accounts or people the monitor watches. It can be the campaign of the monitor.",
            "format": "uuid",
            "title": "Source Campaign Id",
            "type": "string"
          },
          "type": {
            "const": "signal-sheet",
            "description": "The config type.",
            "title": "Type",
            "type": "string"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "required": [
          "type",
          "signal_types",
          "source_campaign_id"
        ],
        "title": "SheetMonitorConfigInput",
        "type": "object"
      },
      "Signal": {
        "description": "An event that a monitor found for a campaign.",
        "properties": {
          "account_ids": {
            "description": "IDs of the accounts that the signal is about. The list is empty for a topic signal and for a signal about people only.",
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Account Ids",
            "type": "array"
          },
          "campaign_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Retained source campaign ID.",
            "title": "Campaign Id"
          },
          "created_at": {
            "description": "Time when the monitor found the signal.",
            "format": "date-time",
            "title": "Created At",
            "type": "string"
          },
          "event_date": {
            "anyOf": [
              {
                "format": "date",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Date of the event (YYYY-MM-DD), not the date of the run, or null when the date is not known.",
            "title": "Event Date"
          },
          "id": {
            "description": "ID of the signal.",
            "format": "uuid",
            "title": "Id",
            "type": "string"
          },
          "metadata": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Data that is specific to the signal type, or null.",
            "title": "Metadata"
          },
          "monitor_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ID of the monitor that found the signal, or null when the signal has no monitor.",
            "title": "Monitor Id"
          },
          "person_ids": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "title": "Person Ids",
            "type": "array"
          },
          "references": {
            "description": "URLs of the sources.",
            "items": {
              "type": "string"
            },
            "title": "References",
            "type": "array"
          },
          "restricted": {
            "description": "Names of the response sections that the access of the caller does not permit. The response omits each named section: a list is empty and a value is null. An empty list means the response is complete.",
            "items": {
              "type": "string"
            },
            "title": "Restricted",
            "type": "array"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Probability of a sales opportunity, from 0.0 to 1.0, or null.",
            "title": "Score"
          },
          "signal_display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Display name of the signal type in the monitor config, or null.",
            "title": "Signal Display Name"
          },
          "signal_type": {
            "$ref": "#/components/schemas/SignalType",
            "description": "Category of the event."
          },
          "strength": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SignalStrength"
              },
              {
                "type": "null"
              }
            ],
            "description": "Importance of the signal."
          },
          "subjects": {
            "description": "Stable subject references.",
            "items": {
              "type": "string"
            },
            "title": "Subjects",
            "type": "array"
          },
          "summary": {
            "description": "What happened.",
            "title": "Summary",
            "type": "string"
          }
        },
        "required": [
          "id",
          "summary",
          "signal_type",
          "created_at"
        ],
        "title": "Signal",
        "type": "object"
      },
      "SignalOrder": {
        "description": "Order of the ``list_signals`` page by signal ID.",
        "enum": [
          "asc",
          "desc"
        ],
        "title": "SignalOrder",
        "type": "string"
      },
      "SignalStrength": {
        "description": "Signal importance levels.",
        "enum": [
          "LOW",
          "MEDIUM",
          "HIGH"
        ],
        "title": "SignalStrength",
        "type": "string"
      },
      "SignalType": {
        "description": "The type of a detected business event.",
        "enum": [
          "funding",
          "leadership_change",
          "layoff",
          "product_launch",
          "partnership",
          "acquisition",
          "expansion",
          "award",
          "pivot",
          "regulatory",
          "rfp",
          "contract_renewal",
          "hiring_surge",
          "infrastructure",
          "compliance",
          "job_posting",
          "other"
        ],
        "title": "SignalType",
        "type": "string"
      },
      "SignalTypeConfig": {
        "description": "Configuration for a single signal type to monitor.\n\nAllows both standard signal types and custom types using OTHER.",
        "properties": {
          "description": {
            "description": "Detailed description of what to monitor",
            "title": "Description",
            "type": "string"
          },
          "display": {
            "description": "Display name for this signal type",
            "title": "Display",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/SignalType",
            "description": "Signal type to monitor (use OTHER for custom types)"
          }
        },
        "required": [
          "type",
          "display",
          "description"
        ],
        "title": "SignalTypeConfig",
        "type": "object"
      },
      "SignalTypeInput": {
        "additionalProperties": false,
        "description": "A V2 signal item rejects unknown fields without changing legacy stored models.",
        "properties": {
          "description": {
            "description": "Detailed description of what to monitor",
            "title": "Description",
            "type": "string"
          },
          "display": {
            "description": "Display name for this signal type",
            "title": "Display",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/SignalType",
            "description": "Signal type to monitor (use OTHER for custom types)"
          }
        },
        "required": [
          "type",
          "display",
          "description"
        ],
        "title": "SignalTypeInput",
        "type": "object"
      },
      "StartDiscoveryRequest": {
        "additionalProperties": false,
        "description": "Body of ``start_discovery``.",
        "properties": {
          "campaign_id": {
            "description": "ID of the campaign.",
            "format": "uuid",
            "title": "Campaign Id",
            "type": "string"
          },
          "contacts_per_account": {
            "anyOf": [
              {
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Number of people to find for each account in this run only. Omit it to use the stored value. Change campaign discovery settings to change later runs.",
            "title": "Contacts Per Account"
          },
          "count": {
            "anyOf": [
              {
                "maximum": 1000.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Number of accounts to look for, 1 to 1000. Omit it to use the value of the campaign discovery (25 by default).",
            "title": "Count"
          }
        },
        "required": [
          "campaign_id"
        ],
        "title": "StartDiscoveryRequest",
        "type": "object"
      },
      "StartExportRequest": {
        "additionalProperties": false,
        "description": "Body of ``start_export``.",
        "properties": {
          "campaign_id": {
            "description": "ID of the campaign to export.",
            "format": "uuid",
            "title": "Campaign Id",
            "type": "string"
          },
          "entity_type": {
            "description": "account: export the accounts. person: export the people.",
            "enum": [
              "account",
              "person"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "review_state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ReviewState"
              },
              {
                "type": "null"
              }
            ],
            "description": "Export only the records in this review state. Omit it for all."
          }
        },
        "required": [
          "campaign_id",
          "entity_type"
        ],
        "title": "StartExportRequest",
        "type": "object"
      },
      "StartImportRequest": {
        "additionalProperties": false,
        "description": "Body of ``start_import``.",
        "properties": {
          "campaign_id": {
            "description": "ID of the campaign that gets the records.",
            "format": "uuid",
            "title": "Campaign Id",
            "type": "string"
          },
          "entity_type": {
            "description": "account: the rows are companies or school districts (the account type of the campaign). person: the rows are people.",
            "enum": [
              "account",
              "person"
            ],
            "title": "Entity Type",
            "type": "string"
          },
          "rows": {
            "description": "1 to 1000 rows. Each row is an object of field values, for example {\"name\": \"Acme\", \"website\": \"acme.com\"}. Each row needs a name field. A person row can send first_name and last_name instead.",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AccountImportRow"
                },
                {
                  "$ref": "#/components/schemas/PersonImportRow"
                }
              ]
            },
            "maxItems": 1000,
            "minItems": 1,
            "title": "Rows",
            "type": "array"
          }
        },
        "required": [
          "campaign_id",
          "entity_type",
          "rows"
        ],
        "title": "StartImportRequest",
        "type": "object"
      },
      "TopicMonitorConfig": {
        "additionalProperties": false,
        "description": "Config of a monitor that looks for signals on a topic. It needs no list of records.",
        "properties": {
          "company_size_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The company sizes to focus on, or null for all sizes.",
            "title": "Company Size Filters"
          },
          "entity_type": {
            "$ref": "#/components/schemas/EntityType",
            "default": "company",
            "description": "The type of the monitored records, for example company or person."
          },
          "format": {
            "default": "legacy",
            "description": "Webhook payload format. V2 requires a provisioned signing secret.",
            "enum": [
              "legacy",
              "v2"
            ],
            "title": "Format",
            "type": "string"
          },
          "geographic_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The regions to focus on, or null for all regions.",
            "title": "Geographic Filters"
          },
          "industry_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The industries to focus on, or null for all industries.",
            "title": "Industry Filters"
          },
          "signal_types": {
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "items": {
              "$ref": "#/components/schemas/SignalTypeConfig"
            },
            "title": "Signal Types",
            "type": "array"
          },
          "topic_criteria": {
            "description": "The topic to monitor in natural language, for example 'AI startups that raise a Series A'.",
            "title": "Topic Criteria",
            "type": "string"
          },
          "type": {
            "const": "signal-topic",
            "description": "The config type.",
            "title": "Type",
            "type": "string"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "required": [
          "type",
          "signal_types",
          "topic_criteria"
        ],
        "title": "TopicMonitorConfig",
        "type": "object"
      },
      "TopicMonitorConfigInput": {
        "additionalProperties": false,
        "description": "Topic config with strict V2 signal items.",
        "properties": {
          "company_size_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The company sizes to focus on, or null for all sizes.",
            "title": "Company Size Filters"
          },
          "entity_type": {
            "$ref": "#/components/schemas/EntityType",
            "default": "company",
            "description": "The type of the monitored records, for example company or person."
          },
          "format": {
            "default": "legacy",
            "description": "Webhook payload format. V2 requires a provisioned signing secret.",
            "enum": [
              "legacy",
              "v2"
            ],
            "title": "Format",
            "type": "string"
          },
          "geographic_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The regions to focus on, or null for all regions.",
            "title": "Geographic Filters"
          },
          "industry_filters": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "The industries to focus on, or null for all industries.",
            "title": "Industry Filters"
          },
          "signal_types": {
            "description": "The signal types that the monitor looks for. Each item has a type, a display name, and a description of the events to find.",
            "items": {
              "$ref": "#/components/schemas/SignalTypeInput"
            },
            "title": "Signal Types",
            "type": "array"
          },
          "topic_criteria": {
            "description": "The topic to monitor in natural language, for example 'AI startups that raise a Series A'.",
            "title": "Topic Criteria",
            "type": "string"
          },
          "type": {
            "const": "signal-topic",
            "description": "The config type.",
            "title": "Type",
            "type": "string"
          },
          "webhook_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "URL that gets a notification when a run of the monitor ends.",
            "title": "Webhook Url"
          }
        },
        "required": [
          "type",
          "signal_types",
          "topic_criteria"
        ],
        "title": "TopicMonitorConfigInput",
        "type": "object"
      },
      "UpdateAccountRequest": {
        "additionalProperties": false,
        "description": "Changes to the core fields of an account.\n\nOnly the sent fields change. A field that is null or absent does not change.",
        "properties": {
          "domain": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New web domain of the account, for example acme.com.",
            "title": "Domain"
          },
          "linkedin_url": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New LinkedIn URL.",
            "title": "Linkedin Url"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New name of the account.",
            "title": "Name"
          },
          "website": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New website URL.",
            "title": "Website"
          }
        },
        "title": "UpdateAccountRequest",
        "type": "object"
      },
      "UpdateCampaignRequest": {
        "additionalProperties": false,
        "description": "Changes to a campaign. Only the sent fields change.",
        "properties": {
          "criteria": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignCriteriaInput"
              },
              {
                "type": "null"
              }
            ],
            "description": "New criteria. Only the sent values change. Some campaigns that the web app builds keep their criteria as fit fields. For such a campaign, a criteria change gives 409."
          },
          "description": {
            "anyOf": [
              {
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New description.",
            "title": "Description"
          },
          "discovery": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DiscoveryUpdate"
              },
              {
                "type": "null"
              }
            ],
            "description": "Changes to the recurring discovery. The first discovery write creates the discovery of the campaign."
          },
          "fields": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CampaignFieldsUpdate"
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom fields to add or remove."
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New name.",
            "title": "Name"
          }
        },
        "title": "UpdateCampaignRequest",
        "type": "object"
      },
      "UpdateMonitorRequest": {
        "additionalProperties": false,
        "description": "Body of ``update_monitor``. Only the sent fields change. A null field does not change.",
        "properties": {
          "config": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MonitorConfigUpdate"
              },
              {
                "type": "null"
              }
            ],
            "description": "Changes to the config. Only the sent config fields change."
          },
          "frequency": {
            "anyOf": [
              {
                "enum": [
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New frequency. A change starts a new schedule cycle from the time of the call.",
            "title": "Frequency"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New name of the monitor.",
            "title": "Name"
          },
          "status": {
            "anyOf": [
              {
                "enum": [
                  "active",
                  "paused"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "paused stops the scheduled runs. active starts them again.",
            "title": "Status"
          }
        },
        "title": "UpdateMonitorRequest",
        "type": "object"
      },
      "UpdatePersonRequest": {
        "additionalProperties": false,
        "description": "Changes to the core fields and the contacted state of a person.\n\nOnly the sent fields change. A field that is null or absent does not change.",
        "properties": {
          "contacted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "true marks the person as contacted now. A person that is already contacted keeps the first contacted time. false clears the contacted time.",
            "title": "Contacted"
          },
          "email": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New email address.",
            "title": "Email"
          },
          "linkedin_url": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New LinkedIn URL.",
            "title": "Linkedin Url"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New full name.",
            "title": "Name"
          },
          "title": {
            "anyOf": [
              {
                "maxLength": 500,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "New job title.",
            "title": "Title"
          }
        },
        "title": "UpdatePersonRequest",
        "type": "object"
      },
      "WebhookSecretRequest": {
        "additionalProperties": false,
        "description": "Identify a destination by exactly one owned monitor or workflow run.",
        "properties": {
          "monitor_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Monitor Id"
          },
          "run_id": {
            "anyOf": [
              {
                "format": "uuid",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Id"
          }
        },
        "title": "WebhookSecretRequest",
        "type": "object"
      },
      "WebhookSecretResponse": {
        "description": "The single response that reveals a new webhook credential.",
        "properties": {
          "previous_valid_until": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Expiry of the previous credential, or null on first provisioning.",
            "title": "Previous Valid Until"
          },
          "secret": {
            "description": "New verification secret. Store it now.",
            "title": "Secret",
            "type": "string"
          }
        },
        "required": [
          "secret"
        ],
        "title": "WebhookSecretResponse",
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "API key of the organization. The key starts with sk-.",
        "in": "header",
        "name": "x-api-key",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "Campaigns, accounts, people, signals, monitors, and runs. Authenticate with an organization API key (sk-) in the x-api-key header.",
    "title": "Signal API",
    "version": "2.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/accounts": {
      "get": {
        "description": "Search the accounts of the organization, in ascending ID order.\n\nAn account is one company or school district across all campaigns. Each account shows\nits name, domain, website, LinkedIn URL, campaign IDs, and the latest time when one of\nits people became contacted. With campaign_id, each item has a membership object: the\nreview state (new, reviewed, or passed), the fit (criteria_* values), the campaign custom\nfields, and the comments in that campaign. review_state needs campaign_id. name matches\nthe start of the account name. A page can have fewer items than limit: to read the next\npage, send the next_cursor value as cursor while it is not null.",
        "operationId": "search_accounts",
        "parameters": [
          {
            "description": "Return only the accounts in this campaign. Each item then has its membership in the campaign.",
            "in": "query",
            "name": "campaign_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the accounts in this campaign. Each item then has its membership in the campaign.",
              "title": "Campaign Id"
            }
          },
          {
            "description": "Return only the accounts with this review state in the campaign. It needs campaign_id.",
            "in": "query",
            "name": "review_state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/ReviewState"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the accounts with this review state in the campaign. It needs campaign_id.",
              "title": "Review State"
            }
          },
          {
            "description": "Return only the accounts whose name starts with this text (any case).",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the accounts whose name starts with this text (any case).",
              "title": "Name"
            }
          },
          {
            "description": "Number of items on the page (1 to 100).",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "description": "Number of items on the page (1 to 100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "The next_cursor value of the previous page. Omit it for page 1.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The next_cursor value of the previous page. Omit it for page 1.",
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Account_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search accounts",
        "tags": [
          "Accounts",
          "mcp"
        ]
      }
    },
    "/accounts/{account_id}": {
      "get": {
        "description": "Get one account by ID.\n\nThe account shows its type, name, domain, website, LinkedIn URL, campaign IDs, and the\nlatest time when one of its people became contacted. The ID of a merged account gives\nthe surviving account, with the ID of the survivor.",
        "operationId": "get_account",
        "parameters": [
          {
            "description": "ID of the account.",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account.",
              "format": "uuid",
              "title": "Account Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get an account",
        "tags": [
          "Accounts",
          "mcp"
        ]
      },
      "patch": {
        "description": "Change the name, domain, website, or LinkedIn URL of an account.\n\nOnly the fields in the body change. The change applies to the account in every\ncampaign that holds it. A null or absent field does not change.",
        "operationId": "update_account",
        "parameters": [
          {
            "description": "ID of the account.",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account.",
              "format": "uuid",
              "title": "Account Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccountRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Update an account",
        "tags": [
          "Accounts",
          "mcp"
        ]
      }
    },
    "/campaigns": {
      "get": {
        "description": "List the campaigns of the organization, oldest first.\n\nA campaign is a set of target accounts and people. Each item shows the target types,\nthe criteria, the custom fields, the number of accounts and people by review state,\nthe discovery settings, the monitor IDs, and the IDs of the runs that are queued or\nrunning. To read the next page, send the next_cursor value as cursor.",
        "operationId": "list_campaigns",
        "parameters": [
          {
            "description": "Number of items on the page (1 to 100).",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "description": "Number of items on the page (1 to 100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "The next_cursor value of the previous page. Omit it for page 1.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The next_cursor value of the previous page. Omit it for page 1.",
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Campaign_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List campaigns",
        "tags": [
          "Campaigns",
          "mcp"
        ]
      },
      "post": {
        "description": "Create a campaign that targets one account type and, optionally, people.\n\nSend entity_types with exactly one account type (company or school_district). Add\nperson to also find people at each account. The criteria say what makes a good target;\nwithout them the research agents use the description. The new campaign has no accounts\nor people. To find them, call start_discovery or set a discovery frequency with\nupdate_campaign.",
        "operationId": "create_campaign",
        "parameters": [
          {
            "description": "A key of 1 to 255 printable ASCII characters, for example a UUID. A retry with the same key and the same body gets the first response again, and no second run or record starts. The key stays for 24 hours. The same key with another body gives 422 idempotency_key_reused. The same key while the first request runs gives 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[\\x20-\\x7E]+$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCampaignRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Create a campaign",
        "tags": [
          "Campaigns",
          "mcp"
        ]
      }
    },
    "/campaigns/{campaign_id}": {
      "delete": {
        "description": "Delete a campaign and its data. The delete cannot be undone.\n\nThe delete removes the campaign, its memberships (the account and person copies in the\ncampaign), its monitors, its discovery, its schedules, and its signals. An account or a\nperson stays while it is in another campaign. The delete needs campaign.write and the\nwrite level of each part that it changes: sheet, campaign_account, campaign_person,\nmonitor, schedule, and run (to cancel an active run). A part that the campaign does not\nhave needs no level.",
        "operationId": "delete_campaign",
        "parameters": [
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Delete a campaign",
        "tags": [
          "Campaigns"
        ]
      },
      "get": {
        "description": "Get one campaign by ID.\n\nThe campaign shows its target types, criteria, custom fields, the number of accounts\nand people by review state, the discovery settings with the next scheduled run, the\nmonitor IDs, and the IDs of the runs that are queued or running.",
        "operationId": "get_campaign",
        "parameters": [
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get a campaign",
        "tags": [
          "Campaigns",
          "mcp"
        ]
      },
      "patch": {
        "description": "Change a campaign. Only the fields in the body change.\n\n- name, description: new values.\n- criteria: new text for account and person.\n- fields: custom fields to add or remove, for account and for person. A removed field\n  keeps its stored values, but the values are hidden.\n- discovery: the recurring discovery. frequency (daily, weekly, or monthly) creates or\n  changes the schedule, at the time of the request in UTC. count is the number of\n  accounts for each scheduled run. contacts_per_account is the number of people at each\n  account. status paused stops the scheduled runs. This call starts no run: use\n  start_discovery for a run now.\n\nThe request changes nothing when a part of it is not valid or not permitted. Field\nchanges need sheet_field.write. A discovery frequency, count, or status needs\nschedule.write. A change that enables the schedule or changes its spend also needs\nrun.write.",
        "operationId": "update_campaign",
        "parameters": [
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCampaignRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Campaign"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Update a campaign",
        "tags": [
          "Campaigns",
          "mcp"
        ]
      }
    },
    "/campaigns/{campaign_id}/accounts": {
      "patch": {
        "description": "Set the review state (new, reviewed, or passed) of accounts in one campaign.\n\nThe change applies only in this campaign. The same accounts in other campaigns, their\npeople, and the contacted state do not change. Each account must be in the campaign: an\naccount that is not in it, an unknown ID, or an ID of another organization gives 404\nand changes nothing.",
        "operationId": "set_account_review_state",
        "parameters": [
          {
            "description": "ID of the campaign.",
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "description": "ID of the campaign.",
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetAccountReviewStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountList"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Set the review state of accounts in a campaign",
        "tags": [
          "Membership",
          "mcp"
        ]
      },
      "post": {
        "description": "Add accounts to a campaign.\n\nEach account joins the campaign with the review state new and the core fields of the\naccount (name, domain, website, LinkedIn URL). An account that is already in the\ncampaign does not change. added_ids lists the accounts that joined with this request.\nUse search_accounts to find account IDs. An unknown ID, or an ID of another\norganization, gives 404 and changes nothing.",
        "operationId": "add_accounts_to_campaign",
        "parameters": [
          {
            "description": "ID of the campaign.",
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "description": "ID of the campaign.",
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddAccountsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddAccountsResult"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Add accounts to a campaign",
        "tags": [
          "Membership",
          "mcp"
        ]
      }
    },
    "/campaigns/{campaign_id}/accounts/{account_id}": {
      "delete": {
        "description": "Remove an account from a campaign.\n\nThe account leaves the campaign with its review state, fit, custom field values, and\ncomments in that campaign. The account stays in the other campaigns, and its ID stays\nvalid. The people of the account stay in the campaign.",
        "operationId": "remove_account_from_campaign",
        "parameters": [
          {
            "description": "ID of the campaign.",
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "description": "ID of the campaign.",
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "description": "ID of the account.",
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account.",
              "format": "uuid",
              "title": "Account Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Remove an account from a campaign",
        "tags": [
          "Membership"
        ]
      }
    },
    "/campaigns/{campaign_id}/monitors": {
      "get": {
        "description": "List the monitors of a campaign, in ascending ID order.\n\nEach monitor shows its config, frequency, status, and the time of its next run. An\nunknown campaign ID, or the ID of a campaign of another organization, gives 404.",
        "operationId": "list_monitors",
        "parameters": [
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "description": "Number of items on the page (1 to 100).",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "description": "Number of items on the page (1 to 100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "The next_cursor value of the previous page. Omit it for page 1.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The next_cursor value of the previous page. Omit it for page 1.",
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Monitor_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List the monitors of a campaign",
        "tags": [
          "Monitors"
        ]
      },
      "post": {
        "description": "Create a monitor that looks for signals on a schedule.\n\nThe config type selects what the monitor watches. signal-topic watches a topic and needs\nno records. signal-sheet watches the accounts or people of a campaign\n(source_campaign_id). signal-csv watches the records of a CSV file that\nPOST /v1/files/upload returned. The schedule starts from the time of the call and repeats\ndaily, weekly, or monthly. The first run starts at next_run_at. The key needs\nmonitor.write and schedule.write, and run.write for an active monitor. A campaign\nmonitor also needs campaign.write. A webhook_url needs webhook.write. The schedule uses\ncredits. With no credits, an active monitor gives 402 and the call writes nothing. A\npaused monitor needs no credits.",
        "operationId": "create_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "description": "A key of 1 to 255 printable ASCII characters, for example a UUID. A retry with the same key and the same body gets the first response again, and no second run or record starts. The key stays for 24 hours. The same key with another body gives 422 idempotency_key_reused. The same key while the first request runs gives 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[\\x20-\\x7E]+$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMonitorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Monitor"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Create a monitor",
        "tags": [
          "Monitors",
          "mcp"
        ]
      }
    },
    "/campaigns/{campaign_id}/people": {
      "patch": {
        "description": "Set the review state (new, reviewed, or passed) of people in one campaign.\n\nThe change applies only in this campaign. The same people in other campaigns, their\naccounts, and the contacted state do not change: use update_person to mark a person as\ncontacted. Each person must be in the campaign: a person that is not in it, an unknown\nID, or an ID of another organization gives 404 and changes nothing.",
        "operationId": "set_person_review_state",
        "parameters": [
          {
            "description": "ID of the campaign.",
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "description": "ID of the campaign.",
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPersonReviewStateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonList"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Set the review state of people in a campaign",
        "tags": [
          "Membership",
          "mcp"
        ]
      },
      "post": {
        "description": "Add people to a campaign.\n\nEach person joins the campaign with the review state new and the core fields of the\nperson (name, title, email, LinkedIn URL). When the account of a person is not in the\ncampaign, the account joins too: added_account_ids lists these accounts. A person that\nis already in the campaign does not change. added_ids lists the people that joined with\nthis request. Use search_people to find person IDs. An unknown ID, or an ID of another\norganization, gives 404 and changes nothing.",
        "operationId": "add_people_to_campaign",
        "parameters": [
          {
            "description": "ID of the campaign.",
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "description": "ID of the campaign.",
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPeopleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddPeopleResult"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Add people to a campaign",
        "tags": [
          "Membership",
          "mcp"
        ]
      }
    },
    "/campaigns/{campaign_id}/people/{person_id}": {
      "delete": {
        "description": "Remove a person from a campaign.\n\nThe person leaves the campaign with the review state, fit, custom field values, and\ncomments in that campaign. The person stays in the other campaigns, and the ID stays\nvalid. The contacted state does not change.",
        "operationId": "remove_person_from_campaign",
        "parameters": [
          {
            "description": "ID of the campaign.",
            "in": "path",
            "name": "campaign_id",
            "required": true,
            "schema": {
              "description": "ID of the campaign.",
              "format": "uuid",
              "title": "Campaign Id",
              "type": "string"
            }
          },
          {
            "description": "ID of the person.",
            "in": "path",
            "name": "person_id",
            "required": true,
            "schema": {
              "description": "ID of the person.",
              "format": "uuid",
              "title": "Person Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Remove a person from a campaign",
        "tags": [
          "Membership"
        ]
      }
    },
    "/legacy-ids/lookup": {
      "post": {
        "description": "Return independent mappings for at most 100 owned legacy references.\n\nThe lookup uses an organization API key, requires no webhook settings, and\nchanges no identities or memberships. Missing and foreign resources return\nthe same not_found result. Unreconciled copies return not_yet_available.\nEach requested kind needs its read level, for example campaign.read for a\ncampaign item. An unsupported kind returns unsupported and needs no level.",
        "operationId": "lookup_legacy_ids",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegacyIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegacyIdResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Translate saved V1 references",
        "tags": [
          "Legacy IDs"
        ]
      }
    },
    "/me": {
      "get": {
        "description": "Get the organization of the API key, the role of the key user, and the credit balance.\n\nrole is member, admin, or owner, or null when the key user has no role in the\norganization. The role is information only: the access levels of the key permit each\noperation. available_credits is the balance that the credit check of a run reads: a\nrun gives 402 when the value is 0 or less. The key needs credit_balance.read.",
        "operationId": "get_me",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Me"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get the organization, role, and credits of the API key",
        "tags": [
          "Organization"
        ]
      }
    },
    "/monitors": {
      "post": {
        "description": "Create a topic or uploaded-data monitor without a destination campaign.\n\nSelected-record monitors require a valid source_campaign_id in their config. The schedule\nuses credits. With no credits, an active monitor gives 402 and the call writes nothing. A\npaused monitor needs no credits.",
        "operationId": "create_organization_monitor",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMonitorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Monitor"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Create an organization monitor",
        "tags": [
          "Monitors",
          "mcp"
        ]
      }
    },
    "/monitors/{monitor_id}": {
      "delete": {
        "description": "Delete a monitor, its schedule, and the signals that it found.\n\nThe delete cancels the active runs of the monitor. It cannot be undone. The key needs\nmonitor.write and schedule.write, and run.write when the monitor has an active run.",
        "operationId": "delete_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "monitor_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Monitor Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Delete a monitor",
        "tags": [
          "Monitors"
        ]
      },
      "get": {
        "description": "Get one monitor with its config, frequency, status, and next run time.",
        "operationId": "get_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "monitor_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Monitor Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Monitor"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get a monitor",
        "tags": [
          "Monitors"
        ]
      },
      "patch": {
        "description": "Change the name, config fields, frequency, or status of a monitor.\n\nOnly the sent fields change. Send status paused to stop the scheduled runs, and status\nactive to start them again. A new frequency starts a new schedule cycle from the time of\nthe call. The config type cannot change. Every change needs monitor.write. A status or\nfrequency change also needs schedule.write, and campaign.write for a campaign monitor.\nStatus active, or a new frequency of an active monitor, also needs run.write. A\nwebhook_url change needs webhook.write. The schedule uses credits. With no credits,\nstatus active or a new frequency of an active monitor gives 402 and the call writes\nnothing. Status paused never checks credits.",
        "operationId": "update_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "monitor_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Monitor Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMonitorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Monitor"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Update a monitor",
        "tags": [
          "Monitors",
          "mcp"
        ]
      }
    },
    "/monitors/{monitor_id}/runs": {
      "post": {
        "description": "Start one run of a monitor now, outside its schedule.\n\nThe run looks for signals with the config of the monitor, and its trigger is manual.\nThe schedule does not change. The run uses credits. With no credits the call gives 402\nand starts no run. A monitor with a queued or running run gives 409, and so does a\nmonitor with no config. Use get_run to follow the run. The key needs monitor.read,\nrun.write, and the read level of the monitor source (file.read or campaign.read).",
        "operationId": "run_monitor",
        "parameters": [
          {
            "in": "path",
            "name": "monitor_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Monitor Id",
              "type": "string"
            }
          },
          {
            "description": "A key of 1 to 255 printable ASCII characters, for example a UUID. A retry with the same key and the same body gets the first response again, and no second run or record starts. The key stays for 24 hours. The same key with another body gives 422 idempotency_key_reused. The same key while the first request runs gives 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[\\x20-\\x7E]+$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Start a monitor run now",
        "tags": [
          "Monitors"
        ]
      }
    },
    "/people": {
      "get": {
        "description": "Search the people of the organization, in ascending ID order.\n\nA person is one contact across all campaigns. Each person shows the account ID, name,\ntitle, email, LinkedIn URL, campaign IDs, and the time when the person became contacted.\nWith campaign_id, each item has a membership object: the review state (new, reviewed,\nor passed), the fit (criteria_* values), the campaign custom fields, and the comments in\nthat campaign. review_state needs campaign_id. name matches the start of the person\nname. account_id returns only the people of that account, and works with or without\ncampaign_id. A page can have fewer items than limit: to read the next page, send the\nnext_cursor value as cursor while it is not null.",
        "operationId": "search_people",
        "parameters": [
          {
            "description": "Return only the people in this campaign. Each item then has its membership in the campaign.",
            "in": "query",
            "name": "campaign_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the people in this campaign. Each item then has its membership in the campaign.",
              "title": "Campaign Id"
            }
          },
          {
            "description": "Return only the people with this review state in the campaign. It needs campaign_id.",
            "in": "query",
            "name": "review_state",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/ReviewState"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the people with this review state in the campaign. It needs campaign_id.",
              "title": "Review State"
            }
          },
          {
            "description": "Return only the people whose name starts with this text (any case).",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the people whose name starts with this text (any case).",
              "title": "Name"
            }
          },
          {
            "description": "Return only the people of this account.",
            "in": "query",
            "name": "account_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the people of this account.",
              "title": "Account Id"
            }
          },
          {
            "description": "Number of items on the page (1 to 100).",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "description": "Number of items on the page (1 to 100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "The next_cursor value of the previous page. Omit it for page 1.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The next_cursor value of the previous page. Omit it for page 1.",
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Person_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Search people",
        "tags": [
          "People",
          "mcp"
        ]
      }
    },
    "/people/{person_id}": {
      "get": {
        "description": "Get one person by ID.\n\nThe person shows the account ID, name, title, email, LinkedIn URL, campaign IDs, and the\ntime when the person became contacted. The ID of a merged person gives the surviving\nperson, with the ID of the survivor.",
        "operationId": "get_person",
        "parameters": [
          {
            "description": "ID of the person.",
            "in": "path",
            "name": "person_id",
            "required": true,
            "schema": {
              "description": "ID of the person.",
              "format": "uuid",
              "title": "Person Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Person"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get a person",
        "tags": [
          "People",
          "mcp"
        ]
      },
      "patch": {
        "description": "Change the core fields of a person, or mark the person as contacted.\n\nOnly the fields in the body change. A change to name, title, email, or linkedin_url\napplies to the person in every campaign that holds it. contacted true records the time\nwhen the person became contacted, and contacted false clears it. The contacted state\ndoes not change the review state in any campaign. A null or absent field does not\nchange.",
        "operationId": "update_person",
        "parameters": [
          {
            "description": "ID of the person.",
            "in": "path",
            "name": "person_id",
            "required": true,
            "schema": {
              "description": "ID of the person.",
              "format": "uuid",
              "title": "Person Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePersonRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Person"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Update a person",
        "tags": [
          "People",
          "mcp"
        ]
      }
    },
    "/runs": {
      "get": {
        "description": "List the discovery, import, monitor, and export runs of the organization, newest first.\n\nFilter by campaign, monitor, kind, status, or creation time. List and detail reconcile\nat most 25 active runs within two seconds. On timeout they use persisted status.\nAn unknown or foreign campaign or monitor gives 404. Cancellation stays canceling\nuntil execution stops. Work and costs can continue while cancellation is pending.",
        "operationId": "list_runs",
        "parameters": [
          {
            "description": "Only the runs of this campaign.",
            "in": "query",
            "name": "campaign_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the runs of this campaign.",
              "title": "Campaign Id"
            }
          },
          {
            "description": "Only the runs of this monitor.",
            "in": "query",
            "name": "monitor_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the runs of this monitor.",
              "title": "Monitor Id"
            }
          },
          {
            "description": "Only the runs of this kind.",
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/RunKind"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the runs of this kind.",
              "title": "Kind"
            }
          },
          {
            "description": "Only the runs with this status.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/RunStatus"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the runs with this status.",
              "title": "Status"
            }
          },
          {
            "description": "Only the runs created at or after this time (RFC 3339).",
            "in": "query",
            "name": "created_after",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the runs created at or after this time (RFC 3339).",
              "title": "Created After"
            }
          },
          {
            "description": "Only the runs created before this time (RFC 3339).",
            "in": "query",
            "name": "created_before",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the runs created before this time (RFC 3339).",
              "title": "Created Before"
            }
          },
          {
            "description": "Number of items on the page (1 to 100).",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "description": "Number of items on the page (1 to 100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "The next_cursor value of the previous page. Omit it for page 1.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The next_cursor value of the previous page. Omit it for page 1.",
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Run_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List runs",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/runs/discovery": {
      "post": {
        "description": "Start a run that looks for new accounts and their people for a campaign.\n\ncount is the number of accounts to look for. contacts_per_account is the number of\npeople for each account. Both overrides apply to this run only. They do not change\nsaved discovery settings. The run uses credits. With no credits the call gives 402\nand starts no run. Use get_run to follow the run.",
        "operationId": "start_discovery",
        "parameters": [
          {
            "description": "A key of 1 to 255 printable ASCII characters, for example a UUID. A retry with the same key and the same body gets the first response again, and no second run or record starts. The key stays for 24 hours. The same key with another body gives 422 idempotency_key_reused. The same key while the first request runs gives 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[\\x20-\\x7E]+$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartDiscoveryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Start a discovery run",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/runs/export": {
      "post": {
        "description": "Start a run that exports the accounts or the people of a campaign to a CSV file.\n\nreview_state limits the export to one review state. List and detail mint a fresh\ndownload URL that is not stored. The URL is valid for at most 1 hour. The run stays\nreadable for 30 days and cannot be canceled. A killed export past the job TTL with no\nlive job reads as failed with export_interrupted. The call needs credits. With no\ncredits the call gives 402 and starts no export.",
        "operationId": "start_export",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartExportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Export accounts or people to a CSV file",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/runs/import": {
      "post": {
        "description": "Start a run that adds 1 to 1,000 rows to a campaign and enriches them.\n\nEach row is an object of field values with a name field. A person row can send\nfirst_name and last_name instead of name. entity_type account imports companies or\nschool districts (the account type of the campaign). The run uses credits. With no\ncredits the call gives 402 and starts no run. Use get_run to follow the run.",
        "operationId": "start_import",
        "parameters": [
          {
            "description": "A key of 1 to 255 printable ASCII characters, for example a UUID. A retry with the same key and the same body gets the first response again, and no second run or record starts. The key stays for 24 hours. The same key with another body gives 422 idempotency_key_reused. The same key while the first request runs gives 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[\\x20-\\x7E]+$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartImportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Import accounts or people from JSON rows",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/runs/import/upload": {
      "post": {
        "description": "Start a run that adds the rows of a CSV file to a campaign and enriches them.\n\nSend a multipart form with campaign_id, entity_type, and file. The file needs a header\nrow and a name column, for example name or company_name. A person file can have\nfirst_name and last_name columns instead. The run uses credits. With no credits the\ncall gives 402 and starts no run.",
        "operationId": "upload_import",
        "parameters": [
          {
            "description": "A key of 1 to 255 printable ASCII characters, for example a UUID. A retry with the same key and the same body gets the first response again, and no second run or record starts. The key stays for 24 hours. The same key with another body gives 422 idempotency_key_reused. The same key while the first request runs gives 409.",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[\\x20-\\x7E]+$",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_import"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "402": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The organization has no credits for the operation."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Import accounts or people from a CSV file",
        "tags": [
          "Runs"
        ]
      }
    },
    "/runs/{run_id}": {
      "get": {
        "description": "Get one run with its current status, progress, and result.\n\nprogress holds the queue counts. result holds the final counts of a finished run, and\nthe download URL of a finished export. A skipped run is a scheduled run that did not\nstart because the organization had no credits. A new export run exists for 30 days.\nEach retained export read checks the file and returns a fresh URL valid for one hour.\nDiscovery results include aggregate diagnostics: recorded rejection reasons, separate\npre-queue skips, evidence availability and bounded guidance. Missing historical evidence\nis unavailable. The response includes no rejected candidate identities or private prose.\nStatus and progress need run.read. result also needs the read levels of the data that it\nrepresents, and download_url needs file.read and campaign.read. A hidden section is\nnull and restricted names it.",
        "operationId": "get_run",
        "parameters": [
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Run Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get a run",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/runs/{run_id}/cancel": {
      "post": {
        "description": "Request cancellation of a queued or running run. The run reports canceling.\n\nRepeated pending requests return 200. Work and costs can continue until execution\nconfirms cancellation. A finished or export run gives 409.",
        "operationId": "cancel_run",
        "parameters": [
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Run Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Run"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Cancel a run",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/runs/{run_id}/rows": {
      "get": {
        "description": "Get every input row's Signal ID or rejection reason, in zero-based row order.\n\nSend next_cursor for another page. Active or finalizing imports return 409.\nHistorical imports without row tracking return 409 import_rows_unavailable.\nFailed and canceled imports retain successes after the worker has stopped.",
        "operationId": "list_import_rows",
        "parameters": [
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Run Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 512,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_ImportRowOutcome_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List import row outcomes",
        "tags": [
          "Runs",
          "mcp"
        ]
      }
    },
    "/signals": {
      "get": {
        "description": "List the signals that the monitors of the organization found, in ID order.\n\nA signal is an event, for example a funding round or a leadership change, with a\nsummary, a type, a strength, an event date, and source URLs. account_ids holds the\naccounts that the signal is about. monitor_id is the monitor that found it. Use days or\ncreated_after to get the recent signals, and order=desc to get the newest first. An\nunknown campaign_id, account_id, or monitor_id, or an ID of another organization, gives\n404. A filter needs the read level of its object (campaign, account, person, or\nmonitor). Without account.read or person.read, account_ids or person_ids is empty and\nrestricted names it.",
        "operationId": "list_signals",
        "parameters": [
          {
            "description": "Return only the signals of this campaign.",
            "in": "query",
            "name": "campaign_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals of this campaign.",
              "title": "Campaign Id"
            }
          },
          {
            "description": "Return only the signals about this account.",
            "in": "query",
            "name": "account_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals about this account.",
              "title": "Account Id"
            }
          },
          {
            "description": "Return signals about this person.",
            "in": "query",
            "name": "person_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return signals about this person.",
              "title": "Person Id"
            }
          },
          {
            "description": "Return only the signals of this type.",
            "in": "query",
            "name": "signal_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/SignalType"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals of this type.",
              "title": "Signal Type"
            }
          },
          {
            "description": "Return only the signals of this strength.",
            "in": "query",
            "name": "strength",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/SignalStrength"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals of this strength.",
              "title": "Strength"
            }
          },
          {
            "description": "Return only the signals whose summary or type contains this text.",
            "in": "query",
            "name": "search_term",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals whose summary or type contains this text.",
              "title": "Search Term"
            }
          },
          {
            "description": "Return only the signals of the last number of days. Without it, the list has no time limit.",
            "in": "query",
            "name": "days",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maximum": 365,
                  "minimum": 1,
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals of the last number of days. Without it, the list has no time limit.",
              "title": "Days"
            }
          },
          {
            "description": "Return only the signals of this monitor.",
            "in": "query",
            "name": "monitor_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "uuid",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals of this monitor.",
              "title": "Monitor Id"
            }
          },
          {
            "description": "Return only the signals created at or after this time (RFC 3339). With days, the later bound applies.",
            "in": "query",
            "name": "created_after",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "format": "date-time",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Return only the signals created at or after this time (RFC 3339). With days, the later bound applies.",
              "title": "Created After"
            }
          },
          {
            "description": "asc (the default) gives ascending ID order, oldest first. desc gives descending ID order, newest first. Send the same order with each cursor.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SignalOrder",
              "default": "asc",
              "description": "asc (the default) gives ascending ID order, oldest first. desc gives descending ID order, newest first. Send the same order with each cursor."
            }
          },
          {
            "description": "Number of items on the page (1 to 100).",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "description": "Number of items on the page (1 to 100).",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "description": "The next_cursor value of the previous page. Omit it for page 1.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "The next_cursor value of the previous page. Omit it for page 1.",
              "title": "Cursor"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Page_Signal_"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "List signals",
        "tags": [
          "Signals",
          "mcp"
        ]
      }
    },
    "/signals/{signal_id}": {
      "get": {
        "description": "Get one signal with its campaign, accounts, summary, type, strength, and sources.",
        "operationId": "get_signal",
        "parameters": [
          {
            "in": "path",
            "name": "signal_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "title": "Signal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Signal"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Get a signal",
        "tags": [
          "Signals",
          "mcp"
        ]
      }
    },
    "/webhook-secrets": {
      "post": {
        "description": "Return a new secret once for an owned monitor_id or run_id.\n\nThe key needs webhook.write and the read level of the task (monitor.read or\nrun.read). The originating task must select\nthe V2 webhook format and a public HTTPS destination. Rotation keeps the previous\ncredential for 24 hours. Another rotation waits for that overlap to expire.",
        "operationId": "rotate_webhook_secret",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSecretRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSecretResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request has no valid credential."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The access of the caller does not permit the operation (code access_denied). details names the missing resource level. An API key has the lower of its own levels and the current levels of its user."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The resource does not exist in the caller's organization."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request is not valid."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key exceeded the request limit. Honor Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Minimum seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Requests allowed per window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in this window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp when the window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A backing service is not available. Try the request again later.",
            "headers": {
              "Retry-After": {
                "description": "Minimum retry delay in seconds for an authentication database outage. Other 503 responses may omit this header.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "summary": "Provision or rotate a webhook verification secret",
        "tags": [
          "Webhooks"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "/v2"
    }
  ],
  "tags": [
    {
      "description": "Read-only migration of saved V1 references.",
      "name": "Legacy IDs"
    },
    {
      "description": "Workflow webhook verification credentials.",
      "name": "Webhooks"
    },
    {
      "description": "A campaign is a set of target accounts and people. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/campaigns) Guide: [Procedure](https://docs.linkt.ai/docs/guides/create-campaign).",
      "name": "Campaigns"
    },
    {
      "description": "Add accounts and people to a campaign, review them, or remove them. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/membership) Guide: [Procedure](https://docs.linkt.ai/docs/guides/manage-membership).",
      "name": "Membership"
    },
    {
      "description": "An account is one company or school district across all campaigns. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/accounts) Guide: [Procedure](https://docs.linkt.ai/docs/guides/review-records).",
      "name": "Accounts"
    },
    {
      "description": "A person is one contact across all campaigns. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/people) Guide: [Procedure](https://docs.linkt.ai/docs/guides/review-records).",
      "name": "People"
    },
    {
      "description": "A run is one discovery, import, monitor, or export job. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/runs) Guide: [Procedure](https://docs.linkt.ai/docs/guides/discover-accounts).",
      "name": "Runs"
    },
    {
      "description": "A monitor looks for signals on a schedule. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/monitors) Guide: [Procedure](https://docs.linkt.ai/docs/guides/monitor-signals).",
      "name": "Monitors"
    },
    {
      "description": "Signals are events that monitors detect. Reference: [Resource rules](https://docs.linkt.ai/docs/reference/signals) Guide: [Procedure](https://docs.linkt.ai/docs/guides/monitor-signals).",
      "name": "Signals"
    },
    {
      "description": "The organization, role, and credit balance of the API key. Guide: [Authentication](https://docs.linkt.ai/docs/getting-started/authentication).",
      "name": "Organization"
    },
    {
      "description": "The operations that the MCP server exposes as tools.",
      "name": "mcp"
    }
  ]
}
