# Contact page API

## Storefront

`GET /api/v1/contact`

Public endpoint. The contact document is returned in `data` with an `ETag` header and
`Cache-Control: public`. Clients may send that value as `If-None-Match`; an unchanged
document returns `304 Not Modified`.

## Admin

`GET /api/v1/admin/contact`

Authentication is temporarily disabled for this endpoint while the admin UI is tested.
The response body contains the same document as the storefront and its current revision
is sent in the `ETag` header.

`PUT /api/v1/admin/contact`

Replaces the complete document. Authentication is temporarily disabled; the latest
ETag must still be sent in `If-Match`:

```http
If-Match: "contact_0"
Content-Type: application/json
```

- Missing `If-Match`: `428 Precondition Required`
- Stale `If-Match`: `412 Precondition Failed`, with the current ETag
- Invalid content: `422 Unprocessable Entity`

Admin responses use `Cache-Control: private, no-store`. Text fields accept plain text
only; support links must be internal paths; `tel:` and `mailto:` values must match
their displayed values; icons and map providers are allow-listed.
