{
  "openapi": "3.0.1",
  "info": {
    "title": "Legistar Agenda Radar - City Council Agenda Keyword Alerts",
    "description": "Scan city council agendas for zoning, contract, RFP, and bid keywords across 86 U.S. cities (Chicago, Boston, Austin, Denver, and more). Returns matched items with attachment links. Optional vote records and RSS feed for Slack/Zapier alerts. No browser needed — pure API, runs on the cheapest plan.",
    "version": "1.0",
    "x-build-id": "fRwqpvyxXXfdhWIqG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/opalescent_game~legistar-agenda-radar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-opalescent_game-legistar-agenda-radar",
        "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/opalescent_game~legistar-agenda-radar/runs": {
      "post": {
        "operationId": "runs-sync-opalescent_game-legistar-agenda-radar",
        "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/opalescent_game~legistar-agenda-radar/run-sync": {
      "post": {
        "operationId": "run-sync-opalescent_game-legistar-agenda-radar",
        "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": [
          "client"
        ],
        "properties": {
          "client": {
            "title": "City or County (Legistar Client ID)",
            "type": "string",
            "description": "Legistar Web API client ID. Often matches the subdomain (e.g., seattle from seattle.legistar.com). Some are non-obvious (e.g., austintexas, cityofdallas, atlantaga, miamifl, minneapolismn, cabq, sfgov). See SUPPORTED_CLIENTS.md for the full verified list of 86 IDs."
          },
          "daysBack": {
            "title": "How Far Back (Days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Search meetings from the last N days. For example, 14 = last two weeks.",
            "default": 14
          },
          "keywords": {
            "title": "Keywords to Match",
            "type": "string",
            "description": "Comma-separated keywords to search for in agenda items. Case-insensitive. Leave empty to return ALL items (no filtering)."
          },
          "includeAttachments": {
            "title": "Include Attachment URLs",
            "type": "boolean",
            "description": "Grab direct download links for PDFs, Word docs, and other files attached to agenda items.",
            "default": true
          },
          "includeVotes": {
            "title": "Include Vote Records",
            "type": "boolean",
            "description": "Fetch who voted and how on each matched item. Slower (extra API call per matched item).",
            "default": false
          },
          "rss": {
            "title": "Generate RSS Feed",
            "type": "boolean",
            "description": "Create an RSS feed of matched items (saved to Key-Value Store as OUTPUT_RSS). Useful for Slack/Zapier/email/feed readers.",
            "default": false
          },
          "maxEvents": {
            "title": "Max Meetings to Scan",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Limit how many meetings to process. Lower = faster run.",
            "default": 50
          },
          "maxItemsPerEvent": {
            "title": "Max Items Per Meeting",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Limit how many agenda items to fetch per meeting. Most meetings have under 100.",
            "default": 200
          },
          "debug": {
            "title": "Debug Mode",
            "type": "boolean",
            "description": "Show detailed logs including API URLs and sample output. Useful for troubleshooting.",
            "default": false
          },
          "apiKey": {
            "title": "API Key (optional)",
            "type": "string",
            "description": "Only needed for a small set of clients that block unauthenticated requests (see SUPPORTED_CLIENTS.md). Leave empty for most cities."
          },
          "authHeaderName": {
            "title": "Auth Header",
            "enum": [
              "Authorization",
              "X-API-KEY"
            ],
            "type": "string",
            "description": "How to send the API key. Authorization sends as Bearer token. X-API-KEY sends the raw key.",
            "default": "Authorization"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}