{
  "openapi": "3.0.1",
  "info": {
    "title": "Lever & Greenhouse Job Change Monitor API",
    "description": "Monitor a Lever and Greenhouse watchlist for your job board or dashboard. Get exact before/after field changes, confirmed removals, reopened IDs, and a receipt even when nothing changed. Save one Task to keep history.",
    "version": "0.1",
    "x-build-id": "5h6aAC2umwmhZC69Z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hiringchangefeed~hiring-change-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hiringchangefeed-hiring-change-feed",
        "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/hiringchangefeed~hiring-change-feed/runs": {
      "post": {
        "operationId": "runs-sync-hiringchangefeed-hiring-change-feed",
        "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/hiringchangefeed~hiring-change-feed/run-sync": {
      "post": {
        "operationId": "run-sync-hiringchangefeed-hiring-change-feed",
        "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": [
          "boards"
        ],
        "properties": {
          "boards": {
            "title": "Career boards to monitor",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "1–100 objects: provider (lever or greenhouse), token (career-board slug), optional region (global or Lever eu) and label. Example below is Lever's demo board, not a real employer.",
            "items": {
              "type": "object",
              "properties": {
                "provider": {
                  "title": "Job-board provider",
                  "description": "The platform hosting the public career board.",
                  "type": "string",
                  "editor": "select",
                  "enum": [
                    "lever",
                    "greenhouse"
                  ],
                  "enumTitles": [
                    "Lever",
                    "Greenhouse"
                  ]
                },
                "token": {
                  "title": "Board token",
                  "description": "The career-board slug, such as leverdemo. Enter the slug only.",
                  "type": "string",
                  "editor": "textfield",
                  "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,99}$"
                },
                "region": {
                  "title": "Region",
                  "description": "EU is available only for Lever boards hosted at jobs.eu.lever.co.",
                  "type": "string",
                  "editor": "select",
                  "enum": [
                    "global",
                    "eu"
                  ],
                  "enumTitles": [
                    "Global",
                    "EU (Lever only)"
                  ],
                  "default": "global"
                },
                "label": {
                  "title": "Display name",
                  "description": "Optional name shown in the output; does not change board identity.",
                  "type": "string",
                  "editor": "textfield",
                  "maxLength": 200
                }
              },
              "required": [
                "provider",
                "token"
              ],
              "additionalProperties": false
            }
          },
          "stateKey": {
            "title": "Watchlist history key (API runs)",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$",
            "type": "string",
            "description": "Reuse this key across API runs. Saved Tasks use their own task ID instead. Changing this history key begins separate history for direct API runs. 1–64 letters, numbers, underscores or hyphens. This is a label, not a secret/API credential.",
            "default": "default"
          },
          "emitInitialJobs": {
            "title": "Include the initial jobs as baseline events",
            "type": "boolean",
            "description": "Emit baseline events for first-observed jobs. They are not newly published job claims.",
            "default": false
          },
          "removalConfirmations": {
            "title": "Successful missing observations before removal",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Use two or more to reduce false removals. Failed checks never count. Removed means no longer observed, not filled.",
            "default": 2
          },
          "maxJobsPerBoard": {
            "title": "Maximum jobs per board",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Boards exceeding this cap fail without advancing history or charging a success event. Results are never silently truncated.",
            "default": 1000
          },
          "timeoutSeconds": {
            "title": "Timeout per HTTP request in seconds",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Applies to response headers and body.",
            "default": 15
          },
          "maxRetries": {
            "title": "Retries per HTTP request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Bounded retries for transient failures.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}