# countPropertySignals

Count PUBLIC-RECORD SIGNAL EVENTS in an area, by type and publication-day window. Filings, not contacts: tagged leads are filterContacts. An event is one property's signal of one type on one day (three liens = three); standing conditions (ABSENTEE_OWNER…) are not events, and it is NOT filterProperties' `total`. AREA: a saved `filterId` OR an inline `filterTree` (saveFilter's PROPERTY DSL, strict: `conditions` and `groups`, never `children`): a county is `countyFilters` with its `fips` (searchCounties), a city `cityFilters` with its `id` (searchCities). `signalTypes` narrows (omit for all); `from` / `to` are inclusive `YYYY-MM-DD` days. Returns `totalEvents`, `propertyCount` (distinct properties with a counted event), `byType`, and `uncountedByType` / `uncountedPropertyCount`: properties with a type only from an open recorded filing or listing mark (no day, so no event), which filterProperties finds. Each row is what that type's `byType` misses (rows overlap); `uncountedPropertyCount` counts properties missed entirely. Never call a type absent while `uncountedByType` lists it. `includeIncompleteRecords: true` lifts the completeness gate. Spends nothing.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "countPropertySignals", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no

## Variables

- `filterId`: `ID`
- `filterTree`: `JSON`
- `signalTypes`: `[String!]`
- `from`: `String`
- `to`: `String`
- `includeIncompleteRecords`: `Boolean`
- `inSavedAreas`: `Boolean`

## Response (data, an example)

```json
{
  "filterQuery": {
    "countPropertySignals": {
      "totalEvents": 0,
      "propertyCount": 0,
      "byType": [
        {
          "signalType": "…",
          "events": 0,
          "properties": 0
        }
      ],
      "uncountedByType": [
        {
          "signalType": "…",
          "properties": 0
        }
      ],
      "uncountedPropertyCount": 0
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "countPropertySignals",
    "variables": {}
  }'
```
