{
  "openapi": "3.0.1",
  "info": {
    "title": "US STR Permit Registry & Market Evidence",
    "description": "Check 1–25 addresses against complete official STR permit queries, export normalized records across 32 US jurisdictions, or reconcile rights-bound market observations. Includes source links, publisher and retrieval clocks, receipts, and opt-in change monitoring; not a legal determination.",
    "version": "0.5",
    "x-build-id": "KEtiW7YnRj2Afv2Sc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/civicdataforge~str-permit-registry/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-civicdataforge-str-permit-registry",
        "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/civicdataforge~str-permit-registry/runs": {
      "post": {
        "operationId": "runs-sync-civicdataforge-str-permit-registry",
        "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/civicdataforge~str-permit-registry/run-sync": {
      "post": {
        "operationId": "run-sync-civicdataforge-str-permit-registry",
        "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": {
          "outputMode": {
            "title": "What do you need?",
            "enum": [
              "registry_records",
              "address_evidence",
              "market_evidence"
            ],
            "type": "string",
            "description": "Return published registry records, check addresses, or reconcile lawfully acquired market observations against one complete official registry.",
            "default": "registry_records"
          },
          "addresses": {
            "title": "Addresses to check",
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "description": "Address evidence mode only. Enter 1-25 property addresses. The Actor checks the complete selected publisher scope and returns one source-bound decision per address.",
            "items": {
              "type": "string"
            }
          },
          "marketSources": {
            "title": "Authorized market observation sources",
            "minItems": 1,
            "maxItems": 10,
            "type": "array",
            "description": "Market-evidence mode only. Provide 1-10 official, openly licensed, customer-authorized, or contracted sources and their observations. Every source must record an allowed commercial-use and redistribution basis; unresolved or prohibited rights fail closed.",
            "items": {
              "type": "object"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Which of the 32 covered cities to pull. Published fields vary by city — see the README coverage table.",
            "items": {
              "type": "string",
              "enum": [
                "seattle",
                "orlando",
                "new_orleans",
                "denver",
                "chicago",
                "marin",
                "norfolk",
                "nashville",
                "osceola_county",
                "polk_county",
                "austin",
                "houston",
                "sacramento",
                "san_bernardino",
                "bend",
                "aspen",
                "philadelphia",
                "albuquerque",
                "asheville",
                "louisville",
                "arlington",
                "san_diego",
                "scottsdale",
                "huntington_beach",
                "coconino",
                "san_juan",
                "chattanooga",
                "boston",
                "las_vegas",
                "kansas_city",
                "washington_dc",
                "honolulu"
              ],
              "enumTitles": [
                "Seattle, WA",
                "Orlando, FL",
                "New Orleans, LA",
                "Denver, CO",
                "Chicago, IL",
                "Marin County, CA",
                "Norfolk, VA",
                "Nashville, TN",
                "Osceola County, FL",
                "Polk County, FL",
                "Austin, TX",
                "Houston, TX",
                "Sacramento, CA",
                "San Bernardino County, CA",
                "Bend, OR",
                "Aspen, CO",
                "Philadelphia, PA",
                "Albuquerque, NM",
                "Asheville, NC",
                "Louisville, KY",
                "Arlington, TX",
                "San Diego, CA",
                "Scottsdale, AZ",
                "Huntington Beach, CA",
                "Coconino County, AZ",
                "San Juan County, WA",
                "Chattanooga, TN",
                "Boston, MA",
                "Las Vegas, NV",
                "Kansas City, MO",
                "Washington, DC",
                "Honolulu, HI"
              ]
            },
            "default": [
              "orlando"
            ]
          },
          "status": {
            "title": "Permit status filter",
            "enum": [
              "all",
              "active"
            ],
            "type": "string",
            "description": "Return all permits, or only currently-active licenses.",
            "default": "all"
          },
          "maxRecordsPerCity": {
            "title": "Max records per city",
            "minimum": 1,
            "type": "integer",
            "description": "Registry-record mode only: cap records per city. Address evidence mode always checks the complete selected publisher query.",
            "default": 50
          },
          "resolveJurisdiction": {
            "title": "Resolve governing jurisdiction",
            "type": "boolean",
            "description": "Use coordinates and Census boundaries to distinguish an incorporated city from an unincorporated county area. Disable for a faster raw-source pull.",
            "default": true
          },
          "snapshot": {
            "title": "Monitor changes from a complete pull",
            "type": "boolean",
            "description": "Persist a query-scoped baseline and compare it with the prior complete run. Requires maxRecordsPerCity to be cleared; capped results are rejected so they cannot create false disappearance alerts.",
            "default": false
          },
          "caseWorkflow": {
            "title": "Create portable review cases",
            "type": "boolean",
            "description": "Address-evidence mode only. Writes a CASE-BUNDLE whose source decision, reviewer dispositions, and hash-chained transitions can be verified outside CivicDataForge. Raw addresses are not stored in the case file.",
            "default": false
          },
          "priorCases": {
            "title": "Prior customer-owned cases",
            "maxItems": 25,
            "type": "array",
            "description": "Optional prior CASE-BUNDLE cases for continuity. Receipts are verified and a changed official-source decision reopens a resolved case.",
            "items": {
              "type": "object"
            },
            "default": []
          },
          "caseActions": {
            "title": "Audited case dispositions",
            "maxItems": 100,
            "type": "array",
            "description": "Optional optimistic-lock transitions requiring case_id, expected_case_receipt, expected_version, to_status, actor_ref, reason, and at. Stale or forged writes fail closed.",
            "items": {
              "type": "object"
            },
            "default": []
          },
          "webhookUrl": {
            "title": "Case bundle webhook",
            "type": "string",
            "description": "Optional public HTTPS endpoint. Delivery uses a stable event ID, an HMAC signature, up to three attempts, and a redacted WEBHOOK-DELIVERY receipt."
          },
          "webhookSecret": {
            "title": "Webhook signing secret",
            "type": "string",
            "description": "At least 16 characters. Used only to sign the exact webhook body and never written to output."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}