# `MishkaDocument.Resources.Validations.SectionAddress`
[🔗](https://github.com/mishka-group/mishka_document/blob/v0.0.1/lib/mishka_document/resources/__validates/section_address.ex#L5)

Refuses a page whose whole address in its version (`MishkaDocument.Address`) another page of the
version already has.

A slug is unique among the pages that share a parent, which kept every address unique while each
address held every slug above it. A front page's and a group's slugs are in no address, so two
pages under two parents can now meet at one: a top-level `breadcrumb` and a `breadcrumb` filed
under the group `navigation` are both `/chelekom/docs/breadcrumb`.

A group with a page of its own is read at its own slug while the pages under it leave that slug
out, so a page filed under the group `navigation` with the slug `navigation` meets the group's own
page at `/navigation`, and is refused.

Checked on a create, and on an update that changes the slug, the parent, the version, or whether
the page is a front page, a group or a group with a page — which moves the pages under it as well,
so their addresses are checked too. The version's other pages not archived are read as the
system, since the address must be free whether or not the writer may read them. A group with no
page has no address and is never refused; two front pages are refused by
`unique_front_page_per_version`.

Each refusal is written in the Gettext locale of the process the action runs in, `errors` domain
of `MishkaCmsCore.Gettext`.

## Usage

    validate MishkaDocument.Resources.Validations.SectionAddress

---

*Consult [api-reference.md](api-reference.md) for complete listing*
