{
  "openapi": "3.0.1",
  "info": {
    "title": "Career Change Signal Engine",
    "description": "Send the contacts you watch and get back only what changed: who left, who landed where, who replaced them, and who started after a role closed. Each row has evidence, a source date, a segment, a first line draft, and Slack, HubSpot, HeyReach, and Instantly payloads. Runs on your own data and keys.",
    "version": "0.1",
    "x-build-id": "aPIfWlKb5foBsYcn7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~career-change-signal-engine/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-career-change-signal-engine",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/mambalabs~career-change-signal-engine/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-career-change-signal-engine",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/mambalabs~career-change-signal-engine/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-career-change-signal-engine",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "people"
        ],
        "properties": {
          "people": {
            "title": "People to watch",
            "type": "array",
            "description": "Your watch list, one object per person: person_name, profile_url (optional), company_domain, company_name, title, work_email, relationship (prospect, mgl, deal_contact, customer_champion), external_id, crm_id, deal_id, known_history (a HeyReach copy, a Proofed LinkedIn reader row, or generic roles), last_reading (with state_source caller). The engine reads only these people. At most max_people_per_run per run."
          },
          "watch_list_id": {
            "title": "Watch list id",
            "type": "string",
            "description": "Names the list. State is kept per watch list id when state_source is actor.",
            "default": "default"
          },
          "state_source": {
            "title": "State source",
            "enum": [
              "actor",
              "caller"
            ],
            "type": "string",
            "description": "actor: the engine keeps state between runs in a named store. caller: you send last_reading per person and keep state yourself.",
            "default": "actor"
          },
          "read_mode": {
            "title": "Read mode",
            "enum": [
              "stored_first",
              "live_only",
              "stored_only"
            ],
            "type": "string",
            "description": "stored_first: your known_history first, then your keys. live_only: ignore known_history. stored_only: only known_history, no key calls.",
            "default": "stored_first"
          },
          "first_run_mode": {
            "title": "First run",
            "enum": [
              "report",
              "baseline"
            ],
            "type": "string",
            "description": "report: the first run returns every change it finds. baseline: the first run stores state and returns nothing, charging only contact_checked.",
            "default": "report"
          },
          "max_people_per_run": {
            "title": "Max people per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "A list longer than this fails the run before any read or charge. Default 150, at most 1,000.",
            "default": 150
          },
          "providerKeys": {
            "title": "Provider keys",
            "type": "object",
            "description": "Your own keys: serper or serpapi (web search), prospeo, bounceban (verifier), findymail, exa. Never written to state, output, logs, or the webhook."
          },
          "linkedin_reader_dataset_id": {
            "title": "LinkedIn reader dataset",
            "type": "string",
            "description": "Optional: the dataset id of a Proofed LinkedIn reader run on the same Apify account. Rows join to people by profile URL."
          },
          "replies": {
            "title": "Replies",
            "type": "array",
            "description": "Optional reply texts: external_id or work_email or profile_url, text, received_at, channel, is_auto_reply. Text is classified and dropped; only its sha1 is kept."
          },
          "bounces": {
            "title": "Bounces",
            "type": "array",
            "description": "Optional bounces: work_email, bounce_type, smtp_code, smtp_text, bounced_at."
          },
          "posting_changes": {
            "title": "Posting changes",
            "type": "array",
            "description": "Optional Account Hiring Watch rows. A closed posting starts a new hire search at that company."
          },
          "suppression": {
            "title": "Suppression",
            "type": "object",
            "description": "emails, profile_urls, opted_out_emails, opted_out_profile_urls, company_domains, company_names. Suppressed people are dropped before the read and cost nothing."
          },
          "icp_tiers": {
            "title": "ICP tiers",
            "type": "object",
            "description": "Optional map of company domain to tier, shown on landed rows. Never blocks a row."
          },
          "features": {
            "title": "Features",
            "type": "object",
            "description": "Switches: replacement, closed_posting, contact_data, first_line, icp, include_promotions. Defaults on except include_promotions."
          },
          "sender_context": {
            "title": "Sender context",
            "type": "string",
            "description": "Optional topic phrase for the first line draft, for example: content production at scale."
          },
          "max_replacement_candidates": {
            "title": "Max replacement candidates",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Candidates proposed per leaver. A person confirms each.",
            "default": 3
          },
          "max_spend_usd": {
            "title": "Max spend (USD)",
            "minimum": 1,
            "type": "integer",
            "description": "Stops the run before a charge that would cross it."
          },
          "sweep_interval_days": {
            "title": "Sweep interval (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "With state_source actor, a person read within this many days is skipped.",
            "default": 14
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "People read at once.",
            "default": 6
          },
          "webhook_url": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional: signed Standard Webhooks POST of up to 100 signal rows per request."
          },
          "webhook_secret": {
            "title": "Webhook secret",
            "type": "string",
            "description": "Signing secret; a whsec_ value is base64 decoded."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}