# `UXID.Registered`
[🔗](https://github.com/riddler/uxid-ex/blob/v2.9.1/lib/uxid/registered.ex#L1)

Marks a module (typically an Ecto schema) as belonging to a `UXID.Registry`
key, so the registry can assemble its runtime prefix → schema routing table by
reflection at boot - *without* the base-layer registry ever naming the
upper-layer schema module in code.

    defmodule MyApp.CRM.Contact do
      use Ecto.Schema
      use UXID.Registered, key: :contact
      @primary_key {:id, UXID, [autogenerate: true] ++ MyApp.IDs.field_opts(:contact)}
    end

This defines `__uxid_key__/0`, the marker that `MyApp.IDs.build_routes!/1` /
`verify!/1` collect. Every reference points **down** - the schema names a
registry *key*, never the reverse - so a layered app keeps the correct
dependency direction: the registry can live at the base layer while the
schemas it routes to live above it. See `UXID.Registry` for the routing and
boot-verification story.

An app with its own base schema macro (`use MyApp.Schema`) can simply have that
macro emit `def __uxid_key__(), do: ...` instead of using this mixin.

---

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