# ExNominatim v3.0.0 - Table of Contents

> A full-featured client for the OpenStreetMap Nominatim API V1 (public and self-hosted), with extensive request validation, robust error-handling and reporting, rate limiting, optional caching, telemetry instrumentation, retry with exponential backoff, and geohash enrichment.

## Pages

- [ExNominatim](readme.md)

## Modules

- [ExNominatim](ExNominatim.md): Main user-friendly functions for interacting with the endpoints of a Nominatim API server.
- [ExNominatim.Cache](ExNominatim.Cache.md): Protocol for cache adapters used by ExNominatim.
- [ExNominatim.CachexCache](ExNominatim.CachexCache.md): Cache adapter for ExNominatim backed by Cachex v4.x.
- [ExNominatim.CircuitBreaker](ExNominatim.CircuitBreaker.md): Per-server circuit breaker backed by ETS.
- [ExNominatim.Client](ExNominatim.Client.md): Functions for preparing an HTTP request, including validating the base URL of the target Nominatim API server setting the User-Agent header automatically, selecting all the non-nil request parameters, creating a validated request, and dispatching it to the requested endpoint.
- [ExNominatim.Client.DetailsParams](ExNominatim.Client.DetailsParams.md): The struct for a request to the `/details` API endpoint.

- [ExNominatim.Client.LookupParams](ExNominatim.Client.LookupParams.md): The struct for a request to the `/lookup` API endpoint.

- [ExNominatim.Client.ReverseParams](ExNominatim.Client.ReverseParams.md): The struct for a request to the `/reverse` API endpoint.

- [ExNominatim.Client.SearchParams](ExNominatim.Client.SearchParams.md): The struct for a request to the `/search` API endpoint.

- [ExNominatim.Client.StatusParams](ExNominatim.Client.StatusParams.md): The struct for a request to the `/status` API endpoint.

- [ExNominatim.Concurrency](ExNominatim.Concurrency.md): Per-server concurrency limiter backed by ETS.
- [ExNominatim.RateLimiter](ExNominatim.RateLimiter.md): Best-effort per-server rate limiter backed by ETS.
- [ExNominatim.Report](ExNominatim.Report.md): Functions for reporting processed responses from the Nominatim API.

- [ExNominatim.StreamMany](ExNominatim.StreamMany.md): Concurrent batch dispatching across multiple query option sets.
- [ExNominatim.Telemetry](ExNominatim.Telemetry.md): Telemetry events emitted by ExNominatim.
- [ExNominatim.Validations](ExNominatim.Validations.md): Functions used for the automatic validation of the keys of a request parameters struct according to the target endpoint, their values according to the API endpoint's specification, and invalidate any request parameters with confusing intent that might have unexpected results, such as defining both the `:q` free-form query parameter and at least one of the parameters of a structured query (`:city`, `:country`, etc.).

