{
  "openapi": "3.0.1",
  "info": {
    "title": "California Prop 65 60-Day Notice & Settlement Feed",
    "description": "Feed of California Proposition 65 60-day notices of violation from the Attorney General's register: new and changed records only, with alleged violators, chemicals, product, filer, the civil penalty and attorneys' fees of each attached settlement or judgment, and links to the filed PDFs.",
    "version": "0.0",
    "x-build-id": "Wf207pnkBpNA0CPUL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/minty_modesty~ca-prop65-60day-notice-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-minty_modesty-ca-prop65-60day-notice-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/minty_modesty~ca-prop65-60day-notice-feed/runs": {
      "post": {
        "operationId": "runs-sync-minty_modesty-ca-prop65-60day-notice-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/minty_modesty~ca-prop65-60day-notice-feed/run-sync": {
      "post": {
        "operationId": "run-sync-minty_modesty-ca-prop65-60day-notice-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",
        "properties": {
          "since": {
            "title": "Filed on or after",
            "type": "string",
            "description": "Start of the filing-date window, as YYYY-MM-DD or MM/DD/YYYY. Defaults to 30 days before the end date. The Attorney General's register goes back to 1988, so a wide window is allowed — the Actor splits it into as many requests as the export's 1,000-row limit needs."
          },
          "until": {
            "title": "Filed on or before",
            "type": "string",
            "description": "End of the filing-date window, as YYYY-MM-DD or MM/DD/YYYY. Defaults to today."
          },
          "chemicals": {
            "title": "Chemicals",
            "type": "array",
            "description": "Filter by listed chemical, using the exact spelling from the Chemical dropdown at oag.ca.gov/prop65/60-day-notice-search — for example Lead, Cadmium, Acrylamide, Bisphenol A (BPA), Di(2-ethylhexyl)phthalate (DEHP). Several entries are combined with OR. A name the Attorney General's list does not contain makes the run fail rather than silently return everything.",
            "items": {
              "type": "string"
            }
          },
          "productKeywords": {
            "title": "Product / source keywords",
            "type": "array",
            "description": "Filter on the Source/Product text of the notice, e.g. powder, socks, vinyl gloves, dietary supplement. Each keyword costs one extra request; results from all keywords are merged and de-duplicated.",
            "items": {
              "type": "string"
            }
          },
          "defendants": {
            "title": "Alleged violators",
            "type": "array",
            "description": "Filter on the alleged violator (defendant) name, e.g. Amazon, Walmart, Target. The Attorney General's form accepts one name, so the first entry is sent to the server and any further entries are applied locally to what comes back.",
            "items": {
              "type": "string"
            }
          },
          "plaintiff": {
            "title": "Noticing party or plaintiff's attorney",
            "type": "string",
            "description": "Filter on the noticing party or its attorney, e.g. Environmental Health Advocates, Lexington Law Group. Useful for tracking one serial filer."
          },
          "includeSettlements": {
            "title": "Include settlement, judgment and complaint rows",
            "type": "boolean",
            "description": "The register attaches case documents to a notice over time. With this on, each attached settlement, judgment, complaint or withdrawal is its own record carrying the payment figures reported on form JUS 1501 (civil penalty, attorneys' fees, other payment) and the injunctive relief text. Turn it off to receive only the notices themselves.",
            "default": true
          },
          "onlyNewSinceLastRun": {
            "title": "Only new and changed records",
            "type": "boolean",
            "description": "Compares this run against the fingerprints stored from previous runs and returns only records that are new or whose fields changed — which is how a settlement getting attached to an old notice reaches you. Turn it off to receive every row in the window on every run.",
            "default": true
          },
          "resolveDetailFields": {
            "title": "Resolve fields from the notice page",
            "type": "boolean",
            "description": "Costs one extra request per notice and adds three things the CSV export cannot give you: the alleged violators as a proper list, the chemicals as a proper list, and the working PDF link. The export joins violator names with commas and the names themselves contain commas, so the list can only be rebuilt from the notice page. Some notices store a revised PDF under a suffixed filename, and the plain filename returns 403 for those.",
            "default": true
          },
          "maxItems": {
            "title": "Max records",
            "minimum": 0,
            "type": "integer",
            "description": "Caps how many records are written to the dataset. 0 means no cap. The fingerprint store is still advanced for the whole window, so capped rows are not re-reported as new next run.",
            "default": 0
          },
          "resetBaseline": {
            "title": "Reset the stored fingerprints",
            "type": "boolean",
            "description": "Discards the stored fingerprints, so every row in the window is reported as new. Use it for a first backfill, or after changing the filters.",
            "default": false
          },
          "stateStoreName": {
            "title": "Fingerprint store name",
            "type": "string",
            "description": "Named key-value store that holds the fingerprints and the landed raw responses. Give separate watch lists separate store names so their change detection stays independent.",
            "default": "ca-prop65-60day-notice-feed-state"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}