{
  "openapi": "3.0.1",
  "info": {
    "title": "Biotech Catalyst Tracker: FDA & MHRA Approvals, Trials, AdComs",
    "description": "Biotech and pharma catalysts from official public sources: FDA approvals and CRLs (openFDA), FDA approval news, FDA advisory committee calendar, MHRA UK authorisations and ClinicalTrials.gov results and status changes. Company and condition filters, tickers.",
    "version": "0.1",
    "x-build-id": "wphPr3iQwQkv6TpPH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/seaf999ield~biotech-catalyst-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-seaf999ield-biotech-catalyst-tracker",
        "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/seaf999ield~biotech-catalyst-tracker/runs": {
      "post": {
        "operationId": "runs-sync-seaf999ield-biotech-catalyst-tracker",
        "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/seaf999ield~biotech-catalyst-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-seaf999ield-biotech-catalyst-tracker",
        "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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which official sources to include. PDUFA goal dates and LSE RNS are not available from a free, permitted source; the FDA advisory committee calendar is included instead (see README).",
            "items": {
              "type": "string",
              "enum": [
                "fda_approvals",
                "fda_crl",
                "fda_press",
                "fda_adcomm",
                "mhra_press",
                "mhra_ma_list",
                "clinical_trials"
              ],
              "enumTitles": [
                "FDA approvals (Drugs@FDA, openFDA)",
                "FDA complete response letters (openFDA)",
                "FDA approval press releases (RSS)",
                "FDA advisory committee calendar (upcoming meetings)",
                "MHRA new medicine authorisations (GOV.UK press releases)",
                "MHRA marketing authorisations granted (GOV.UK lists)",
                "ClinicalTrials.gov results and status changes"
              ]
            },
            "default": [
              "fda_approvals",
              "fda_crl",
              "fda_press",
              "fda_adcomm",
              "mhra_press",
              "mhra_ma_list",
              "clinical_trials"
            ]
          },
          "lookbackDays": {
            "title": "Lookback days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Window for approvals, press releases, MHRA grants and trial updates. Advisory committee meetings also include upcoming dates.",
            "default": 7
          },
          "companies": {
            "title": "Company or sponsor filter",
            "type": "array",
            "description": "Optional. Keep only rows whose company, sponsor or text mentions any of these (case-insensitive), e.g. 'Novo Nordisk', 'Lilly', 'AstraZeneca', 'GSK'. For ClinicalTrials.gov it is sent as a sponsor search.",
            "items": {
              "type": "string"
            }
          },
          "conditions": {
            "title": "Condition keywords",
            "type": "array",
            "description": "Optional. Keep only rows whose indication, product or summary mentions any of these, e.g. 'obesity', 'Alzheimer', 'lung cancer'. ClinicalTrials.gov uses its own condition search (with synonyms). Rows with no indication (e.g. MHRA list rows) are dropped when this is set.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 1,
            "type": "integer",
            "description": "Total cap on output rows. Sources are interleaved so a cap keeps a fair mix.",
            "default": 200
          },
          "maxItemsPerSource": {
            "title": "Max rows per source",
            "minimum": 1,
            "type": "integer",
            "description": "Cap per source, newest first.",
            "default": 50
          },
          "onlyNew": {
            "title": "Only new (monitoring mode)",
            "type": "boolean",
            "description": "Remember output rows in a named key-value store and only return rows not returned before. Schedule daily for alerts. The first run is the baseline and returns everything in the window. Trial status changes are also detected across runs (statusChangedFrom).",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Separate monitors keep separate memory (store name biotech-catalysts-<name>).",
            "default": "default"
          },
          "fdaScope": {
            "title": "FDA approval scope",
            "enum": [
              "brand_key",
              "brand_all",
              "all"
            ],
            "type": "string",
            "description": "Which Drugs@FDA submission actions to include.",
            "default": "brand_key"
          },
          "crlLookbackDays": {
            "title": "CRL lookback days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "openFDA publishes complete response letters in batches, weeks after the letter date, so CRLs use a longer window (at least Lookback days).",
            "default": 90
          },
          "trialEvents": {
            "title": "Trial events",
            "type": "array",
            "description": "ClinicalTrials.gov event types.",
            "items": {
              "type": "string",
              "enum": [
                "results_posted",
                "status_update",
                "new_trial"
              ],
              "enumTitles": [
                "Results first posted",
                "Updated with a key status (completed, terminated, suspended, withdrawn, active not recruiting)",
                "Newly registered trials"
              ]
            },
            "default": [
              "results_posted",
              "status_update"
            ]
          },
          "trialPhases": {
            "title": "Trial phases",
            "type": "array",
            "description": "Leave empty for all phases.",
            "items": {
              "type": "string",
              "enum": [
                "EARLY_PHASE1",
                "PHASE1",
                "PHASE2",
                "PHASE3",
                "PHASE4",
                "NA"
              ],
              "enumTitles": [
                "Early phase 1",
                "Phase 1",
                "Phase 2",
                "Phase 3",
                "Phase 4",
                "Not applicable"
              ]
            },
            "default": [
              "PHASE2",
              "PHASE3"
            ]
          },
          "trialSponsorClass": {
            "title": "Trial sponsor type",
            "enum": [
              "industry",
              "all"
            ],
            "type": "string",
            "description": "Lead sponsor class.",
            "default": "industry"
          },
          "adcommCenters": {
            "title": "Advisory committees",
            "enum": [
              "drugs_biologics",
              "all"
            ],
            "type": "string",
            "description": "Which FDA centres' advisory committee meetings to include.",
            "default": "drugs_biologics"
          },
          "adcommDaysAhead": {
            "title": "Advisory committee days ahead",
            "minimum": 0,
            "maximum": 730,
            "type": "integer",
            "description": "Include meetings up to this many days in the future.",
            "default": 120
          },
          "fdaGovDetailPages": {
            "title": "FDA detail pages",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Advisory committee agendas and press releases opened for product, sponsor and indication. www.fda.gov asks for 30 seconds between requests, so each page adds about 30 seconds.",
            "default": 4
          },
          "mhraBrandedOnly": {
            "title": "MHRA lists: skip likely generics",
            "type": "boolean",
            "description": "Drop MHRA list rows whose licensed name starts with the active ingredient (a heuristic for generics).",
            "default": false
          },
          "openFdaApiKey": {
            "title": "openFDA API key (optional)",
            "type": "string",
            "description": "Free key from open.fda.gov. Raises the openFDA daily limit; not needed for normal use."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}