{
  "title": "FDA recalls in one review table — settings",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "productTypes": {
      "title": "FDA product categories",
      "type": "array",
      "description": "Which FDA-regulated product categories to pull recalls for.",
      "editor": "select",
      "default": [
        "drug",
        "device",
        "food"
      ],
      "items": {
        "type": "string",
        "enum": [
          "drug",
          "device",
          "food"
        ],
        "enumTitles": [
          "Drugs",
          "Medical devices",
          "Food"
        ]
      },
      "sectionCaption": "Categories and filters"
    },
    "keyword": {
      "title": "Product, firm or reason keyword",
      "type": "string",
      "description": "Filter recalls whose product description, recall reason, or recalling firm matches this term — e.g. 'listeria', 'salmonella', a drug name, or a company name. Leave empty for all.",
      "editor": "textfield",
      "example": "listeria"
    },
    "classification": {
      "title": "Recall classification",
      "type": "string",
      "description": "Class I = most serious (risk of death/serious harm), Class II = temporary/reversible harm, Class III = unlikely to cause harm. Leave empty for all.",
      "editor": "select",
      "enum": [
        "Class I",
        "Class II",
        "Class III"
      ],
      "enumTitles": [
        "Class I (most serious)",
        "Class II",
        "Class III"
      ],
      "nullable": true,
      "example": "Class I"
    },
    "status": {
      "title": "Recall status",
      "type": "string",
      "description": "Ongoing = FDA has not yet confirmed the recall is finished; Completed = the firm has retrieved or corrected all known stock; Terminated = FDA has formally closed the recall. Spelling must match exactly. Leave empty for all.",
      "editor": "select",
      "enum": [
        "Ongoing",
        "Completed",
        "Terminated"
      ],
      "enumTitles": [
        "Ongoing",
        "Completed",
        "Terminated"
      ],
      "nullable": true,
      "example": "Ongoing"
    },
    "state": {
      "title": "Recalling firm's state",
      "type": "string",
      "description": "Two-letter code for the state where the RECALLING FIRM is based, not where the product was sold - use the distributionPattern output field for distribution reach. Case-insensitive; leave empty for all.",
      "editor": "textfield",
      "example": "CA"
    },
    "reportedSince": {
      "title": "FDA report date — from",
      "type": "string",
      "description": "Only recalls reported on or after this date (YYYY-MM-DD). Great for weekly monitoring. Note: FDA publishes enforcement data on a ~weekly cycle, so the newest recalls can lag 1-2 weeks.",
      "editor": "textfield",
      "example": "2026-06-01"
    },
    "reportedUntil": {
      "title": "FDA report date — through",
      "type": "string",
      "description": "Only recalls whose FDA report date is on or before this date (YYYY-MM-DD). Leave empty for no upper bound. Combine with 'Reported since' to pull a fixed historical window.",
      "editor": "textfield",
      "example": "2026-09-01"
    },
    "maxResults": {
      "title": "Maximum recalls to save",
      "type": "integer",
      "description": "Upper bound on recalls returned per run, across all selected product types. openFDA caps pagination at 25,000 skipped records, so one run can return at most about 26,000 recalls per product type; use filters or a date window to slice larger histories.",
      "editor": "number",
      "default": 1000,
      "minimum": 1
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "description": "Wall-clock budget for this run, in seconds. When it is reached the Actor stops cleanly and finishes successfully with the rows it already collected, instead of being killed mid-run. A default run finishes in well under a minute; only a very large \"maxResults\" across all three product types gets near it. Raise it (and the run timeout in Run options) for a deliberately large job.",
      "editor": "number",
      "default": 240,
      "minimum": 30,
      "sectionCaption": "Run budget"
    }
  },
  "description": "For product-safety and supplier-review teams, collect FDA recall notices across drugs, devices and food in one consistent export. FDA enforcement records only; CPSC consumer products and NHTSA vehicles are separate sources."
}
