Multi-tenant resolver: the tenant is carried in the URL. POST /webhooks/:tenant_id/:source_id maps to %Route{tenant_id: t, source_id: s}, so
one instance serves many tenants and the tenant is authoritative from the path
rather than inferred from the source. A tenant outside [A-Za-z0-9_-]{1,64}
doesn't resolve (a 404): it names a storage partition and a claim-check
path segment, so it is refused before anything is written.
Opts:
:prefix— path segments beforetenant/source. Default["webhooks"].