{
  "openapi": "3.0.1",
  "info": {
    "title": "NOAA Essential Fish Habitat Screener — EFH Consultation Check",
    "description": "Screen coastal & offshore coordinates against live NOAA Essential Fish Habitat (EFH) polygons. Per point: designated species/sites, life stages, fishery-management council, acres, state-waters flag, and a Magnuson-Stevens EFH consultation flag. Batch, MCP-ready. $0.01 per asset check.",
    "version": "1.1",
    "x-build-id": "ex087yFAMBdWhmDD2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/malonestar~noaa-efh-consultation-screener/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-malonestar-noaa-efh-consultation-screener",
        "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/malonestar~noaa-efh-consultation-screener/runs": {
      "post": {
        "operationId": "runs-sync-malonestar-noaa-efh-consultation-screener",
        "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/malonestar~noaa-efh-consultation-screener/run-sync": {
      "post": {
        "operationId": "run-sync-malonestar-noaa-efh-consultation-screener",
        "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",
        "required": [
          "assets"
        ],
        "properties": {
          "assets": {
            "title": "Assets (coordinates to screen)",
            "type": "array",
            "description": "Coastal/offshore points to screen against live NOAA Essential Fish Habitat and Habitat Area of Particular Concern polygons. Each item is {\"lat\": <-90..90>, \"lon\": <-180..180>, \"label\": \"<your name>\"}. Each EFH species/lifestage overlap produces one billable row; a point with no EFH produces one billable CLEAR row explaining why (EFH is coastal and marine only, so an inland point is legitimately clear). HAPC overlap is reported as fields on those rows, not as extra billable rows.",
            "default": [
              {
                "lat": 27.8756,
                "lon": -93.8158,
                "label": "Flower Garden Banks, Gulf of Mexico (EFH + coral HAPC)"
              },
              {
                "lat": 39.7392,
                "lon": -104.9903,
                "label": "Denver CO (inland control - genuine clear)"
              }
            ]
          },
          "radiusMiles": {
            "title": "Search radius (miles)",
            "minimum": 0,
            "maximum": 25,
            "type": "number",
            "description": "Optional buffer, in statute miles, added around each point. Default 0 = pure point-in-polygon (is the point inside designated EFH?). Set > 0 to also catch EFH near — but not directly under — the point (useful for a site adjacent to a habitat boundary). Clamped to 0..25.",
            "default": 0
          },
          "maxAssets": {
            "title": "Max asset checks",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Safety cap on the number of assets screened per run. Assets beyond this cap are skipped with a warning.",
            "default": 500
          },
          "contextRadiusMiles": {
            "title": "Context radius (miles)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Radius used to answer WHY a clear point is clear. The actor counts EFH and HAPC designations within this distance, which distinguishes an inland site (nothing for miles) from a coastal site that just missed a boundary. Set 0 to skip the probe; coastal_context then says it was not checked rather than implying an inland site. Clamped to 0..200.",
            "default": 25
          },
          "includeHapc": {
            "title": "Include Habitat Areas of Particular Concern",
            "type": "boolean",
            "description": "Query the separate NOAA HAPC layer (237 national polygons) as well as EFH. HAPCs are the subset of EFH that NOAA treats as higher priority in consultation, and they carry a CFR citation. Verified live: the EFH layer itself contains ZERO HAPC records, so this is the only way to get a real HAPC answer.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}