# CEL Filters
skyway supports the [Common Expression Language](https://cel.dev/) (CEL) for filtering elements.
Each time the filter is evaluated for a given element, that expression's context (local variables) is updated to match the element's metadata.
For now, **CEL filters may only return a boolean value**, indicating whether or not the element should be kept.
Please [file an issue](https://github.com/MapRVA/skyway/issues) if you'd like to see more complex CEL return types supported.
## CEL Context
The following table describes each variable available to your expression:
| `tags` | `map` with `string` keys and `string` values |
| `changeset` | `int` |
| `user` | `string` |
| `uid` | `int` |
| `id` | `int` |
| `timestamp` | `string` |
| `visible` | `bool` |
| `type` | `string` ("node", "way", or "relation") |
## Examples
Elements from a specific changeset:
```cel
changeset == 323878
```
Elements from a specific user id:
```cel
uid == 13159395
```
Only ways:
```cel
type == "way"
```
Elements with the key golf:
```cel
has(tags.golf)
```