# searchCities

Find US cities by (partial) name and return each match's `id`, `name` and `state`. This is how you IDENTIFY a city: the `cityFilters` condition in a property filter tree takes the returned `id` as its `value` (with `label` set to "Name, ST", e.g. "Memphis, TN"), and saveFilter/updateFilter REJECT a bare city name on PROPERTY filters (CONTACT matches a name leniently): a name alone is ambiguous across states (11,347 US city names occur in more than one state), so a filter built from one would match nothing. Disambiguate by including the state in the search term (e.g. "Memphis TN") when a name is common. The same `id` is also what getZoningCodes takes as `cityId`.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "searchCities", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no
- Result cap: `limit` is clamped to 10, without an error

## Variables

- `searchTerm`: `String!` (required)
- `limit`: `Int` (default `10`)

## Response (data, an example)

```json
{
  "geography": {
    "searchCities": [
      {
        "id": "…",
        "name": "…",
        "state": "AL"
      }
    ]
  }
}
```

## Example

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