ECHO — Clean Water Act Facility Search

NPDES wastewater, stormwater, and biosolids discharger search and compliance data.

Documentation

Specifications

Examples

📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa01-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa02-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa03-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa04-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa05-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa06-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa07-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa08-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa09-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa10-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa11-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa12-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-cwa13-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-geo-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-meta1-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-meta3-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-qp0-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup01-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup20-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup23-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup24-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup54-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup58-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup59-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup61-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup65-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup75-example.json
📝
Example
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/examples/echo-cwa-rlup77-example.json

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa01-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa02-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa03-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa04-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa05-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa06-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa07-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa08-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa09-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa10-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa11-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa12-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-cwa13-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-geo-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-meta1-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-meta3-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-qp0-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup01-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup20-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup23-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup24-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup54-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup58-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup59-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup61-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup65-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup75-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-schema/echo-cwa-rlup77-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa01-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa02-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa03-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa04-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa05-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa06-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa07-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa08-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa09-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa10-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa11-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa12-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-cwa13-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-geo-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-meta1-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-meta3-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-qp0-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup01-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup20-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup23-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup24-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup54-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup58-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup59-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup61-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup65-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup75-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/json-structure/echo-cwa-rlup77-structure.json

Other Resources

OpenAPI Specification

echo-cwa-openapi.json Raw ↑
{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "echodata.epa.gov",
  "basePath": "/echo",
  "info": {
    "contact": {
      "name": "U.S. EPA, OECA Integration, Targeting and Access Branch",
      "url": "https://echo.epa.gov/resources/general-info/contact-us"
    },
    "description": "Enforcement and Compliance History Online (ECHO) is a tool developed and maintained by EPA's Office of Enforcement and Compliance Assurance for public use. ECHO provides integrated compliance and enforcement information for over 1 million regulated facilities nationwide.\n CWA Rest Services provides multiple service endpoints, each with specific capabilities, to search and retrieve data on facilities regulated under the Clean Water Act (CWA) and managed under the National Pollutant Discharge Elimination System (NPDES) program. The returned results reflect data drawn from EPA's ICIS-NPDES database.\n\\\nThe get_facilities, get_map, get_qid, and get_download end points are meant to be used together, while the enhanced get_facility_info end point is self contained.\n  The get_facility_info end point returns either an array of state, county or zip clusters with summary statistics per cluster or an array of facilities.\n\\\nThe recommended use scenario for get_facilities, get_qid, get_map, and get_downoad is:\n\\\n <b>1)</b>  Use get_facilities to validate passed query parameters, obtain summary statistics and to obtain a query_id (QID).  QIDs are time sensitive and will be valid for approximately 30 minutes.\n <b>2)</b>  Use get_qid, with the returned QID, to paginate through arrays of facility results.\n <b>3)</b>  Use get_map, with the returned QID, to zoom in/out and pan on the clustered and individual facility coordinates that meet the QID query criteria.\n <b>4)</b>  Use get_download, with the returned QID, to generate a Comma Separated Value (CSV) file of facility information that meets the QID query criteria.\n\\\n\\\nUse the qcolumns parameter to customize your search results.  Use the Metadata service endpoint for a list of available output objects, their Column Ids, and their definitions to help you build your customized output. \n\\\nAdditional ECHO Resources:   <a href=\"https://echo.epa.gov/tools/web-services\">Web Services</a>, <a href=\"https://echo.epa.gov/resources/echo-data/about-the-data\">About ECHO's Data</a>, <a href=\"https://echo.epa.gov/tools/data-downloads\">Data Downloads</a>\n ",
    "license": {
      "name": "U.S. Public Domain License",
      "url": "https://edg.epa.gov/EPA_Data_License.html"
    },
    "title": "U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean Water Act (CWA) Rest Services",
    "version": "2019.10.15",
    "x-apisguru-categories": [
      "open_data"
    ],
    "x-logo": {
      "backgroundColor": "#FFFFFF",
      "url": "https://api.apis.guru/v2/cache/logo/https_pbs.twimg.com_profile_images_632233890594299904_DgRDU6dx_400x400.png"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://ofmpub.epa.gov/echo/swaggerx.swagger_json?p_prefix=CWA",
        "version": "2.0"
      }
    ],
    "x-providerName": "epa.gov",
    "x-serviceName": "cwa"
  },
  "consumes": [
    "application/x-www-form-urlencoded"
  ],
  "produces": [
    "application/json",
    "application/xml"
  ],
  "parameters": {
    "f.c1_lat": {
      "description": "Latitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "c1_lat",
      "required": false,
      "type": "number"
    },
    "f.c1_long": {
      "description": "Longitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "c1_long",
      "required": false,
      "type": "number"
    },
    "f.c2_lat": {
      "description": "Latitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "c2_lat",
      "required": false,
      "type": "number"
    },
    "f.c2_long": {
      "description": "Longitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "c2_long",
      "required": false,
      "type": "number"
    },
    "f.callback": {
      "description": "JSONP Callback.  For use with JSONP and GEOJSONP output only.  Enter a name of the function in which to wrap the JSON response.",
      "in": "formData",
      "name": "callback",
      "required": false,
      "type": "string"
    },
    "f.descending": {
      "description": "Output Sort Column Descending Flag.  Enter Y to column identified in the newsort parameter descending.  Enter N to use ascending sort order. Used only when newsort parameter is populated.",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "descending",
      "required": false,
      "type": "string"
    },
    "f.maplist": {
      "description": "Map List Flag.  Provide a Y to return mappable coordinates representing the full geographic extent of the queryset (all facilities that met the selection criteria).",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "maplist",
      "required": false,
      "type": "string"
    },
    "f.newsort": {
      "description": "Output Sort Column.  Enter the number of the column on which the data will be sorted. If unpopulated results will sort on the first column.",
      "in": "formData",
      "name": "newsort",
      "required": false,
      "type": "number"
    },
    "f.p_MS4": {
      "description": "Municipal Separate Storm Water Sewer (MS4) Permit Flag.  Enter a Y or N to filter results by this type of permit.",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "p_MS4",
      "required": false,
      "type": "string"
    },
    "f.p_act": {
      "description": "Active Permits/Facilities Flag.  Provide Y or N to filter results to facilities with active permits.  A Y will select ICIS NPDES permits with a status of effective, continued, or expired.",
      "in": "formData",
      "name": "p_act",
      "required": false,
      "type": "string"
    },
    "f.p_agoo": {
      "description": "Indicates whether to AND or OR the Owner/Operator parameter (p_owop) and the federal agency code (p_fa) parameters.",
      "enum": [
        "AND",
        "OR"
      ],
      "in": "formData",
      "name": "p_agoo",
      "required": false,
      "type": "string"
    },
    "f.p_alrexceed": {
      "description": "Alert Limits Exceedences Limiter.  Enter a numeric value to restrict results to facilities having the given amount or more of alert limits exceedances.",
      "in": "formData",
      "name": "p_alrexceed",
      "required": false,
      "type": "number"
    },
    "f.p_bio_analy_method_catgry": {
      "description": "The unique code for the category of the analytic methods used by the facility to analyze regulated parameters (including enteric viruses, fecal coliforms, helminth ova, and Salmonella sp.) at the facility:\n\n- PAT = Pathogens\n- MET = Metals\n- NIT = Nitrogen Compounds\n- OTH = Other Analytes",
      "in": "formData",
      "name": "p_bio_analy_method_catgry",
      "required": false,
      "type": "string"
    },
    "f.p_bio_current_vio": {
      "description": "Indicator of whether the facility is currently in violation for biosolids under the Clean Water Act, in the 12th or 13th quarter:\n\n- Y = Yes\n- N = No",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "p_bio_current_vio",
      "required": false,
      "type": "string"
    },
    "f.p_bio_fac_type": {
      "description": "The code indicating the reporting obligation reason:\n\n- POT = A POTW with a design flow rate equal to or greater than one million gallons per day\n- CLI = A Class I Sludge Management Facility as defined in 40 CFR 503.9\n- PPL = A POTW that serves 10,000 people or more\n- OTH = Otherwise required to report (e.g., permit condition, enforcement action)\n- NOA = None of the above",
      "in": "formData",
      "name": "p_bio_fac_type",
      "required": false,
      "type": "string"
    },
    "f.p_bio_flag": {
      "description": "A Y value will select all biosolid-related permits.",
      "in": "formData",
      "name": "p_bio_flag",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_container": {
      "description": "The code that identifies the nature of each biosolids and sewage sludge material generated by the facility in terms of whether the material is a biosolid or sewage sludge and whether the material is ultimately conveyed off-site in bulk or in bags. The facility separately reports the form for each biosolids or sewage sludge management practice or practices used by the facility and pathogen class:\n\n- BUL = Bulk\n- BAG = Bag or Container",
      "in": "formData",
      "name": "p_bio_mgmt_container",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_def_category": {
      "description": "This is the code indicating the type of NPDES special regulatory program deficiency:\n\n- INC = Biosolids Incineration\n- LNA = Biosolids Land Application\n- LNB = Biosolids Land Application - Pathogen Class B\n- OTB = Biosolids Other Management Practice\n- SFD = Biosolids Surface Disposal",
      "in": "formData",
      "name": "p_bio_mgmt_def_category",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_deficiencies": {
      "description": "The number of times noncompliance was reported by the facility in the last 3 years. The results returned will include facilities whose number of reported noncompliance events is greater than or equal to the number entered.",
      "in": "formData",
      "name": "p_bio_mgmt_deficiencies",
      "required": false,
      "type": "number"
    },
    "f.p_bio_mgmt_pathogen": {
      "description": "This code identifies the pathogen class [e.g., Class A, Class B, Not Applicable (Incineration)] for biosolids or sewage sludge generated by the facility. The facility will separately report the pathogen class for each biosolids or sewage sludge management practice used by the facility and by each biosolids or sewage sludge form. It also is used to filter applicable Pathogen Reduction and Vector Attraction Reduction Options as well as Land Application Management Practice Deficiencies. Only reqired for some of the mgmt. practice types:\n\n- AAA = Class A\n- AEQ = Class A EQ (sale/give away)\n- BBB = Class B\n- NAP = Not Applicable (Incineration)",
      "in": "formData",
      "name": "p_bio_mgmt_pathogen",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_pathred": {
      "description": "This is the description of the option used by the facility to control pathogen for a Biosolids Management Practice:\n\n- A1 = Class A - Alternative 1: Time/Temperature\n- A2 = Class A - Alternative 2: pH/Temperature/Percent Solids\n- A3 = Class A - Alternative 3: Test Enteric Viruses and Helminth ova; Operating Parameters\n- A4 = Class A - Alternative 4: Test Enteric Viruses and Helminth ova; No New Solids\n- A51 = Class A - Alternative 5: PFRP 1: Composting\n- A52 = Class A - Alternative 5: PFRP 2: Heat Drying\n- A53 = Class A - Alternative 5: PFRP 3: Liquid heat treatment\n- A54 = Class A - Alternative 5: PFRP 4: Thermophilic Aerobic Digestion (ATAD)\n- A55 = Class A - Alternative 5 PFPR 5: Beta Ray Irradiation\n- A56 = Class A - Alternative 5 PFPR 6: Gamma Ray Irradiation\n- A57 = Class A - Alternative 5: PFRP 7: Pasteurization\n- A6 = Class A - Alternative 6: PFRP Equivalency\n- B1 = Class B - Alternative 1: Fecal Coliform Geometric Mean\n- B21 = Class B - Alternative 2 PSRP 1: Aerobic Digestion\n- B22 = Class B - Alternative 2 PSRP 2: Air Drying\n- B23 = Class B - Alternative 2 PSRP 3: Anaerobic Digestion\n- B24 = Class B - Alternative 2 PSRP 4: Composting\n- B25 = Class B - Alternative 2 PSRP 5: Lime Stabilization\n- B3 = Class B - Alternative 3: PSRP Equivalency\n- PH = pH Adjustment (Domestic Septage)",
      "in": "formData",
      "name": "p_bio_mgmt_pathred",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_prctce_handler": {
      "description": "This is the code indicating the type of Biosolids or Sewage Sludge handlers/preparers.\n\n- OWN = Owner or Operator\n- OFF = Off-Site Third-Party Handler or Preparer",
      "in": "formData",
      "name": "p_bio_mgmt_prctce_handler",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_prctce_stype": {
      "description": "This is the code indicating additional detail about the type of Management Practice used for a volume of Biosolids or Sewage Sludge:\n\n- ADV = Advanced Alkaline Stabilized Biosolids Distribution & Marketing\n- AGR = Agricultural Land Application\n- COM = Distribution and Marketing - Compost\n- DEE = Deep-well Injection Disposal\n- DIS = Disposal in a Municipal Landfill (under 40 CFR 258)\n- DMO = Distribution and Marketing - Other\n- HEA = Heat Dried Biosolids Distribution & Marketing\n- OTL = Other Land Application Management Practice Detail\n- OTO = Other Management Practice Detail\n- RSA = Reclamation Site Application\n- SEN = Sent to Cement Kiln for Use as Alternative Energy\n- STO = Storage\n- UIC = Use in Construction\n- UPS = Used in Production of Syngas\n- USE = Use as Daily Cover for Municipal Landfill (under 40 CFR 258)",
      "in": "formData",
      "name": "p_bio_mgmt_prctce_stype",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_prctce_type": {
      "description": "The unique code that identifies the type of biosolids or sewage sludge management practice (e.g., land application, surface disposal, incineration) used by the facility. The facility will separately report the management practice for each biosolids or sewage sludge form and pathogen class. This data element will also identify the management practices used by surface disposal site owners/operators (see 40 CFR 503.24):\n\n- BIN = Incineration\n- BLN = Land Application\n- BOT = Other Management Practice\n- BSD = Surface Disposal",
      "in": "formData",
      "name": "p_bio_mgmt_prctce_type",
      "required": false,
      "type": "string"
    },
    "f.p_bio_mgmt_vector": {
      "description": "The unique code that identifies the option used by the facility for vector attraction reduction. See a listing of these vector attraction reduction options at 40 CFR 503.33(b)(1) through (11). The facility will separately report the vector attraction reduction options for each biosolids or sewage sludge management practice used by the facility and by each biosolids or sewage sludge form as well as by each biosolids or sewage sludge pathogen class:\n\n- VR1 = Option 1 - Volatile Solids Reduction\n- VR2 = Option 2 - Bench-Scale Volatile Solids Reduction (Anaerobic Bench Test)\n- VR3 = Option 3 - Bench-Scale Volatile Solids Reduction (Aerobic Bench Test w/ Percent Solids - 2% or Less)\n- VR4 = Option 4 - Specific Oxygen Uptake Rate\n- VR5 = Option 5 - Aerobic Processing (Thermophilic Aerobic Digestion/Composting)\n- VR6 = Option 6 - Alkaline Treatment\n- VR7 = Option 7 - Drying (Equal to or Greater than 75 Percent)\n- VR8 = Option 8 - Drying (Equal to or Greater than 90 Percent)\n- VR9 = Option 9 - Sewage Sludge Injection\n- V10 = Option 10 - Sewage Sludge Timely Incorporation into Land\n- V11 = Option 11 - Sewage Sludge Covered at the End of Each Operating Day",
      "in": "formData",
      "name": "p_bio_mgmt_vector",
      "required": false,
      "type": "string"
    },
    "f.p_bio_qtrs_in_vio": {
      "description": "The number of quarters, in the last three years, where the facility was in violation for a biosolids violation type.  The results returned will include facilities whose number of quarters with violations is greater than or equal to the number entered.",
      "in": "formData",
      "name": "p_bio_qtrs_in_vio",
      "required": false,
      "type": "number"
    },
    "f.p_bio_rpt_year": {
      "description": "The last year that the permittee submitted an annual Biosolids report.  Valid values are NONE and any year greater or equal to 2016.",
      "in": "formData",
      "name": "p_bio_rpt_year",
      "required": false,
      "type": "string"
    },
    "f.p_bio_total_volume_amt": {
      "description": "Total annual amount (in dry metric tons) of biosolids or sewage sludge generated at the facility.\n\n- EQ0 = 0\n- IN0_1 = GT 0 but LT 1\n- IN0_289  =  GT 0 but LT 290 MT/year\n- IN290_1499  =  GE 290 but LT 1500 MT/year\n- IN1500_14999  =  GE 1500 but LT 15,000\n- GE15000  =  GE 15,000",
      "in": "formData",
      "name": "p_bio_total_volume_amt",
      "required": false,
      "type": "string"
    },
    "f.p_bio_trtmnt_procs": {
      "description": "The biosolids or sewage sludge treatment process or processes at the facility:\n\n- AER = Aerobic Digestion\n- AIR = Air Drying (or Sludge Drying Beds)\n- ANA = Anaerobic Digestion\n- COD = Beta Ray Irradiation\n- COM = Lower Temperature Composting\n- DEW = Pasteurization\n- DIS = Gamma Ray Irradiation\n- HEA = Heat Drying (e.g., Flash Dryer, Spray Dryer, Rotary Dryer)\n- HET = Heat Treatment (Liquid Sewage Sludge Heated to 356 Deg. F/180 Deg. C or Higher for 30 min.)\n- HTC = Higher Temperature Composting\n- MET = Methane or Biogas Capture and Recovery\n- OTH = Other Treatment Process\n- PRE = Preliminary Operations (e.g., Sludge Grinding, Degritting, Blending)\n- SLU = Sludge Lagoon\n- STA = Lime Stabilization\n- THE = Temporary Sludge Storage (Sewage Sludge Stored on Land 2 Years or Less, Not in Sewage Sludge Unit)\n- THI = Thickening (Gravity and/or Flotation Thickening, Centrifugation, Belt Filter Press, Vacuum Filter)\n- THM = Thermophilic Aerobic Digestion\n- UND = Long-Term Sludge Storage (Sewage Sludge Stored on Land 2 Years or More, not in Sewage Sludge Unit)\"",
      "in": "formData",
      "name": "p_bio_trtmnt_procs",
      "required": false,
      "type": "string"
    },
    "f.p_bio_vio_code": {
      "description": "The Biosolids Single Event Violation Code.  Enter one or mode codes.",
      "in": "formData",
      "name": "p_bio_vio_code",
      "required": false,
      "type": "string"
    },
    "f.p_bio_vio_last_year": {
      "description": "Identifies if a biosolids violation has occured in the last year.  Valid values are Y and N.",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "p_bio_vio_last_year",
      "required": false,
      "type": "string"
    },
    "f.p_c1lat": {
      "description": "In decimal degrees.  Latitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "p_c1lat",
      "required": false,
      "type": "number"
    },
    "f.p_c1lon": {
      "description": "In decimal degrees.  Longitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "p_c1lon",
      "required": false,
      "type": "number"
    },
    "f.p_c2lat": {
      "description": "In decimal degrees.  Latitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "p_c2lat",
      "required": false,
      "type": "number"
    },
    "f.p_c2lon": {
      "description": "In decimal degrees.  Longitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be provided.",
      "in": "formData",
      "name": "p_c2lon",
      "required": false,
      "type": "number"
    },
    "f.p_co": {
      "description": "Facility County Filter. Provide a single county name in combination with a state value provided via p_st.",
      "in": "formData",
      "name": "p_co",
      "required": false,
      "type": "string"
    },
    "f.p_ct": {
      "description": "Facility City Filter. Enter a single case-insensitive city name to filter results.",
      "in": "formData",
      "name": "p_ct",
      "required": false,
      "type": "string"
    },
    "f.p_da1": {
      "description": "Active Date Filter Start.  To filter by the active date, enter a start date here and an end date in the p_da2 parameter.  Both dates are required for filtering.",
      "in": "formData",
      "name": "p_da1",
      "required": false,
      "type": "string"
    },
    "f.p_da2": {
      "description": "Active Date Filter End.  To filter by the active date, enter an end date here and a start date in the p_da1 parameter.  Both dates are required for filtering.",
      "in": "formData",
      "name": "p_da2",
      "required": false,
      "type": "string"
    },
    "f.p_ds1": {
      "description": "Submitted Date Filter Start.  To filter by the date of submission, enter a start date here and an end date in the p_ds2 parameter.  Both dates are required for filtering.",
      "in": "formData",
      "name": "p_ds1",
      "required": false,
      "type": "string"
    },
    "f.p_ds2": {
      "description": "Submitted Date Filter End.  To filter by the date of submission, enter an end date here and a start date in the p_ds1 parameter.  Both dates are required for filtering.",
      "in": "formData",
      "name": "p_ds2",
      "required": false,
      "type": "string"
    },
    "f.p_dwd": {
      "description": "Direct Water Discharges. Pounds of toxic chemicals released directly to surface water as reported to the Toxics Release Inventory.",
      "enum": [
        "0",
        "GT0",
        "GT1000",
        "GT5000",
        "GT10000",
        "GT20000",
        "GT50000"
      ],
      "in": "formData",
      "name": "p_dwd",
      "required": false,
      "type": "string"
    },
    "f.p_e90_count": {
      "description": "Number of E90 Exceedances.  Identifies water permits with a number of E90 (Effluient Exceedances) >= the value provided for the last number of years provided by the p_e90_years value.",
      "in": "formData",
      "name": "p_e90_count",
      "required": false,
      "type": "number"
    },
    "f.p_e90_years": {
      "description": "Number of years for the p_e90_count search.  Identified the past number of years to be used for the p_e90_count search.",
      "in": "formData",
      "name": "p_e90_years",
      "required": false,
      "type": "number"
    },
    "f.p_ejscreen": {
      "description": "Enter \"Y\" to limit facilities to Census block groups where one of more Environmental Justice indexes above 80th percentile.",
      "in": "formData",
      "name": "p_ejscreen",
      "required": false,
      "type": "string"
    },
    "f.p_ejscreen_over80cnt": {
      "description": "The number of Environmenmt Justice Indicators above the 80th percentile.  Valid values are 1 through 11.",
      "enum": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11"
      ],
      "in": "formData",
      "name": "p_ejscreen_over80cnt",
      "required": false,
      "type": "string"
    },
    "f.p_fa": {
      "description": "Federal Agency. 1 character or 5-character values; may contain multiple comma-separated values. ALL will retrieve all facilities where the federal agency code is not null.  Use the Federal Agencies lookup service to obtain a list of values.",
      "in": "formData",
      "name": "p_fa",
      "required": false,
      "type": "string"
    },
    "f.p_fac_ico": {
      "description": "FRS tribal land code flag.  Enter \"Y\" or \"N\" to include or exclude facilities based on FRS tribal land code.",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "p_fac_ico",
      "required": false,
      "type": "string"
    },
    "f.p_fac_icos": {
      "description": "FRS tribal land spatial flag.  Enter \"Y\" or \"N\" to include or exclude facilities based on FRS tribal land spatial flag.",
      "in": "formData",
      "name": "p_fac_icos",
      "required": false,
      "type": "string"
    },
    "f.p_fea": {
      "description": "Formal Enforcement Actions [within / not within] specified date range indicator. The date range is determined by parameters p_fead1 and p_fead2 or by parameter p_feay.\n- W = within date range\n- N = not within date range",
      "enum": [
        "W",
        "N"
      ],
      "in": "formData",
      "name": "p_fea",
      "required": false,
      "type": "string"
    },
    "f.p_feaa": {
      "description": "Agency associated with Formal Enforcement Actions:\n- E = EPA\n- S = State\n- A = All",
      "enum": [
        "A",
        "E",
        "S"
      ],
      "in": "formData",
      "name": "p_feaa",
      "required": false,
      "type": "string"
    },
    "f.p_feay": {
      "description": "Years (1 to 5) Range.  This value is used to create a date range for Formal Enforcement Actions (FEA). Used along with p_fea (which indicates whether to look within or outside of the date range) to find FEAs within (or not within) the number of years specified.",
      "enum": [
        1,
        2,
        3,
        4,
        5
      ],
      "in": "formData",
      "name": "p_feay",
      "required": false,
      "type": "number"
    },
    "f.p_ff": {
      "description": "Federal Facility Indicator Flag. Enter Y to restrict searches to federal facilities.",
      "enum": [
        "Y"
      ],
      "in": "formData",
      "name": "p_ff",
      "required": false,
      "type": "string"
    },
    "f.p_fips": {
      "description": "FIPS Code Filter.  Enter a single 5-character Federal Information Processing Standards (FIPS) state + county value to restrict results.  E.g. to limit results to Kenosha County, Wisconsin, use 55059.",
      "in": "formData",
      "name": "p_fips",
      "required": false,
      "type": "string"
    },
    "f.p_fn": {
      "description": "Facility Name Filter. Enter one or more case-insensitive facility names to filter results.  Provide multiple values as a comma-delimited list.  See p_fntype for additional modifiers.",
      "in": "formData",
      "name": "p_fn",
      "required": false,
      "type": "string"
    },
    "f.p_fntype": {
      "description": "Controls type of text search performed on facility name with parameter p_fn.\n- EXACT = Find facilities having the exact provided name(s).\n- BEGINS = Find facilities with names starting with the provided term(s).\n- ALL = Find facilities using Oracle text search terms.\n- CONTAINS = ",
      "enum": [
        "ALL",
        "CONTAINS",
        "EXACT",
        "BEGINS"
      ],
      "in": "formData",
      "name": "p_fntype",
      "required": false,
      "type": "string"
    },
    "f.p_frs": {
      "description": "Facility Registry Service ID Filter. Enter a single 12-digit FRS identifier to filter results.",
      "in": "formData",
      "name": "p_frs",
      "required": false,
      "type": "string"
    },
    "f.p_frswbd": {
      "description": "Works exactly the same as the p_wbd parameter.  2-, 4-, 6-, 8-, 10-, or 12-character watershed (WBD from the USGS Watershed Boundary Dataset). May contain multiple comma-separated values.  Uses the FRS Best Pick Coordinate to obtain the WBD12 Huc value.",
      "in": "formData",
      "name": "p_frswbd",
      "required": false,
      "type": "string"
    },
    "f.p_huc": {
      "description": "2-, 4-, 6-, or 8-character watershed code. May contain multiple comma-separated values.",
      "in": "formData",
      "name": "p_huc",
      "required": false,
      "type": "string"
    },
    "f.p_iagency": {
      "description": "Issuing Agency Limiter.  Enter a single value to filter results by the issuing agency, e.g. \"State\" or \"EPA\".",
      "in": "formData",
      "name": "p_iagency",
      "required": false,
      "type": "string"
    },
    "f.p_ico": {
      "description": "Indian Country Flag.  Enter a \"Y\" or \"N\" to restrict searches to facilities inside or outside Indian Country.",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "p_ico",
      "required": false,
      "type": "string"
    },
    "f.p_icoo": {
      "description": "Indian country search and/or flag.  Enter \"Y\" to set indian country search conditions to return any results found using p_ico, p_fac_ico or p_fac_icoo.  Otherwise only results matching all provided p_ico, p_fac_ico or p_fac_icoo conditions will be returned.",
      "in": "formData",
      "name": "p_icoo",
      "required": false,
      "type": "string"
    },
    "f.p_id": {
      "description": "Nine-character code used to uniquely identify a permitted NPDES facility. The NPDES permit program regulates the direct discharge of pollutants into US waters.",
      "in": "formData",
      "name": "p_id",
      "required": true,
      "type": "string"
    },
    "f.p_idt1": {
      "description": "Beginning of date range of most recent facility inspection.",
      "in": "formData",
      "name": "p_idt1",
      "required": false,
      "type": "string"
    },
    "f.p_idt2": {
      "description": "End of date range of most recent facility inspection.",
      "in": "formData",
      "name": "p_idt2",
      "required": false,
      "type": "string"
    },
    "f.p_iea": {
      "description": "Informal Enforcement Actions [within / not within] specified date range.  The date range is determined by parameters p_iead1 and p_iead2 or by parameter p_ieay.\n- W = within date range\n- N = not within date range",
      "enum": [
        "W",
        "N"
      ],
      "in": "formData",
      "name": "p_iea",
      "required": false,
      "type": "string"
    },
    "f.p_ieaa": {
      "description": "Agency associated with Informal Enforcement Actions. If left blank, both agencies are included.\n- E = EPA\n- S = State",
      "enum": [
        "E",
        "S"
      ],
      "in": "formData",
      "name": "p_ieaa",
      "required": false,
      "type": "string"
    },
    "f.p_ieay": {
      "description": "Years (1 to 5) Range.  This value is used to create a date range for Informal Enforcement Actions (IEA). Used along with p_iea (which indicates whether to look within or outside of the date range) to find IEAs within (or not within) the number of years specified.",
      "enum": [
        1,
        2,
        3,
        4,
        5
      ],
      "in": "formData",
      "name": "p_ieay",
      "required": false,
      "type": "number"
    },
    "f.p_imp_cau_grp": {
      "description": "Facility is discharging a pollutant group causing a waterbody to be impaired.  Enter 1 through 34 (the internal number of the pollutant group); or enter a partial name such as Dioxin,Temp,tUrBidity.",
      "enum": [
        "ALGAL GROWTH",
        "AMMONIA",
        "BIOTOXINS",
        "CAUSE UNKNOWN",
        "CAUSE UNKNOWN - FISH KILLS",
        "CAUSE UNKNOWN - IMPAIRED BIOTA",
        "CHLORINE",
        "DIOXINS",
        "FISH CONSUMPTION ADVISORY",
        "FLOW ALTERATION(S)",
        "HABITAT ALTERATIONS",
        "MERCURY",
        "METALS (OTHER THAN MERCURY)",
        "NOXIOUS AQUATIC PLANTS",
        "NUISANCE EXOTIC SPECIES",
        "NUISANCE NATIVE SPECIES",
        "NUTRIENTS",
        "OIL AND GREASE",
        "ORGANIC ENRICHMENT/OXYGEN DEPLETION",
        "OTHER CAUSE",
        "PATHOGENS",
        "PESTICIDES",
        "PH/ACIDITY/CAUSTIC CONDITIONS",
        "POLYCHLORINATED BIPHENYLS (PCBS)",
        "RADIATION",
        "SALINITY/TOTAL DISSOLVED SOLIDS/CHLORIDES/SULFATES",
        "SEDIMENT",
        "TASTE, COLOR AND ODOR",
        "TEMPERATURE",
        "TOTAL TOXICS",
        "TOXIC INORGANICS",
        "TOXIC ORGANICS",
        "TRASH",
        "TURBIDITY"
      ],
      "in": "formData",
      "name": "p_imp_cau_grp",
      "required": false,
      "type": "string"
    },
    "f.p_imp_pol": {
      "description": "Facility is discharging pollutants that are potentially contributing to the impairment of local waterbodies according to the ATTAINS database.",
      "enum": [
        "Y",
        "N"
      ],
      "in": "formData",
      "name": "p_imp_pol",
      "required": false,
      "type": "string"
    },
    "f.p_impw": {
      

# --- truncated at 32 KB (539 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/openapi/echo-cwa-openapi.json