{
  "openapi": "3.0.1",
  "info": {
    "title": "Greenhouse Stale Jobs Checker & Job Board Audit",
    "description": "Compare Greenhouse jobs with your CSV/JSON catalog. Flag stale fields and duplicates, preserve protected edits, and review missing postings before making changes. Built for job boards and aggregators. $0.04 per complete board; platform usage included.",
    "version": "0.0",
    "x-build-id": "LFj6r7LtvSB0wCpUy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apisolutions~stale-jobs-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apisolutions-stale-jobs-checker",
        "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/apisolutions~stale-jobs-checker/runs": {
      "post": {
        "operationId": "runs-sync-apisolutions-stale-jobs-checker",
        "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/apisolutions~stale-jobs-checker/run-sync": {
      "post": {
        "operationId": "run-sync-apisolutions-stale-jobs-checker",
        "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",
        "properties": {
          "mode": {
            "title": "What would you like to run?",
            "enum": [
              "sample",
              "import-preview",
              "live"
            ],
            "type": "string",
            "description": "Choose a labelled demo, validate your CSV import without fetching Greenhouse or emitting charge events, or check live boards. Import preview and live mode require your permission confirmation. Empty or invalid live input never becomes a preview."
          },
          "boards": {
            "title": "Greenhouse board tokens or root URLs",
            "type": "array",
            "description": "For Run on my Greenhouse boards: enter up to 25 public Greenhouse board names or root URLs. Each complete saved board costs $0.04, with platform usage included. Leave this empty when previewing example results.",
            "items": {
              "type": "string"
            }
          },
          "sourceAccessConfirmed": {
            "title": "Confirm permission for live boards and catalogue",
            "type": "boolean",
            "description": "For your own CSV preview or live boards, confirm you own or are authorised to maintain the supplied catalogue and have permission for the intended source use. You must explicitly set this field to true. The authored example preview uses demonstration data; leave it unchecked there. Import preview does not fetch source jobs.",
            "default": false
          },
          "inventoryCsv": {
            "title": "Catalogue CSV (optional)",
            "type": "string",
            "description": "Paste your CSV including its header. Standard required columns: localId,board,jobId. For different headers, expand CSV columns below and enter their exact names. You can preview the import before a live check. Use either CSV or Catalogue JSON."
          },
          "inventory": {
            "title": "Catalogue JSON (optional)",
            "type": "array",
            "description": "Array of inventory records. Omit when using CSV."
          },
          "compareFields": {
            "title": "Fields to compare",
            "type": "array",
            "description": "Compare only the selected title, location and jobUrl fields that are present in each catalogue record. Protected fields are never replaced.",
            "default": [
              "title",
              "location",
              "jobUrl"
            ]
          },
          "includeNewJobs": {
            "title": "Include discovery candidates",
            "type": "boolean",
            "description": "Include source postings absent from the supplied catalogue as reviewable discovery candidates. No catalogue changes are applied automatically.",
            "default": true
          },
          "maxTotalRows": {
            "title": "Maximum total rows",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop before exceeding this total output-row limit, including diagnostic rows. The hard maximum is 5,000 rows; incomplete or skipped boards are not charged.",
            "default": 5000
          },
          "csvLocalIdColumn": {
            "title": "Local record ID column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for localId, including spaces and case. Leave empty to use localId. Values must uniquely identify your existing catalogue records."
          },
          "csvBoardColumn": {
            "title": "Greenhouse board token column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for board, including spaces and case. Leave empty to use board. Values must be board tokens such as examplecompany, not company names or URLs."
          },
          "csvJobIdColumn": {
            "title": "Greenhouse posting ID column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for jobId, including spaces and case. Leave empty to use jobId. Must contain the public numeric posting ID; never an internal requisition ID or guessed match."
          },
          "csvTitleColumn": {
            "title": "Job title column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for title, including spaces and case. Leave empty to use title. Optional when this field is not in your CSV."
          },
          "csvLocationColumn": {
            "title": "Job location column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for location, including spaces and case. Leave empty to use location. Optional when this field is not in your CSV."
          },
          "csvJobUrlColumn": {
            "title": "Job URL column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for jobUrl, including spaces and case. Leave empty to use jobUrl. Optional when this field is not in your CSV."
          },
          "csvProtectedFieldsColumn": {
            "title": "Protected fields column",
            "maxLength": 200,
            "type": "string",
            "description": "Exact CSV header for protectedFields, including spaces and case. Leave empty to use protectedFields. Cell values use title, location or jobUrl separated by |; those field names stay canonical."
          },
          "csvIgnoreExtraColumns": {
            "title": "Ignore unmapped CSV columns",
            "type": "boolean",
            "description": "Explicitly allow other columns in your export. Their values are not compared, copied into preview records or changed. First map any IDs, compared fields and protected-field column you need, then inspect the import preview. No CSV rows are skipped.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}