<?xml version="1.0" encoding="utf-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="std"
     docName="draft-ranjbar-regext-rdap-subordinate-referrals-02"
     ipr="trust200902"
     submissionType="IETF"
     version="3">

  <front>
    <title abbrev="RDAP Subordinate Referrals">Referrals to Holder-Designated RDAP Services for Subordinate Resources</title>
    <seriesInfo name="Internet-Draft" value="draft-ranjbar-regext-rdap-subordinate-referrals-02"/>
    <author fullname="Kaveh Ranjbar" initials="K." surname="Ranjbar">
      <organization>Whisper Security</organization>
      <address>
        <email>kaveh@whisper.security</email>
      </address>
    </author>
    <date year="2026" month="October" day="15"/>
    <area>Applications and Real-Time</area>
    <workgroup>Registration Protocols Extensions</workgroup>
    <keyword>RDAP</keyword>
    <keyword>referral</keyword>
    <keyword>redirect</keyword>
    <abstract>
      <t>An RDAP query can be followed from the IANA bootstrap registries
      down to the most specific object a registry operator holds, and no
      further. When the holder of a registered resource keeps registration
      data for resources below it, such as names below a registered domain
      or more-specific networks below an address allocation, and publishes
      that data from an RDAP service of its own, a client has no in-band
      way to find that service. This document describes how a registry
      operator refers clients to such a holder-designated service. The registry redirects lookups for subordinate resources to the holder's service, so an unchanged client receives the most specific record as it would from any other redirect. On top of that, the covering object can advertise
      the holder's service, so a client that cares can discover the
      delegation and cross the authority boundary knowingly. The document
      uses the object relations and the redirect controls of
      draft-ietf-regext-rdap-referrals, and defines a family of
      "rdap-base" link relations whose target is the base URL of an RDAP
      service rather than an object.</t>
    </abstract>
    <note title="Discussion Venues" removeInRFC="true">
      <t>Discussion of this document takes place on the Registration
      Protocols Extensions (regext) Working Group mailing list
      (regext@ietf.org).</t>
    </note>
  </front>

  <middle>

    <section anchor="intro" numbered="true">
      <name>Introduction</name>
      <t>RDAP <xref target="RFC7480"/> <xref target="RFC9082"/>
      <xref target="RFC9083"/> lets a client find the authoritative service
      for a resource through the IANA bootstrap registries
      <xref target="RFC9224"/>, and, for Internet number resources, navigate between
      objects with the link relations of <xref target="RFC9910"/>. Where
      more specific data sits inside the registry system, for example with
      a National Internet Registry, redirects already carry the client
      there. Outside that system the walk ends at the most specific object
      the registry operator holds: the registered domain at a domain
      registry or registrar, or the covering allocation or aggregated
      assignment at a Regional Internet Registry (RIR).</t>
      <t>Below that point, holders increasingly keep registration data of
      their own: names below a registered domain that are created and
      retired by software, or individual networks and addresses inside an
      allocation that are assigned at machine speed. Registries do not hold
      this detail, and for number resources the aggregation conventions
      exist precisely to keep it out of the central database. A holder can
      serve it instead from a conformant RDAP service, straight from the
      system where it is maintained. Today that service cannot be found
      in-band. A client walking down from the bootstrap has no sign that a
      more specific answer exists, or where.</t>
      <t>Reverse DNS works this way:
      the registry keeps the covering delegation and points to the
      holder's name servers for the space below it. This document applies
      the same idea to registration data. The registry keeps the covering
      object and points, and the holder answers for what is inside it.</t>
      <t>Two things are needed, and they are kept apart on purpose.
      Transport: a client that asks the registry about a subordinate
      resource should reach the holder's record without changing anything
      on its side, which an ordinary HTTP redirect already does. Discovery:
      a client should be able to see that a delegation exists, and where,
      before it crosses from data the registry maintains to data the
      holder asserts. Redirects alone give the first and not the second.
      This document requires the redirect and makes the discovery link
      additive on top of it.</t>
      <section anchor="related-work" numbered="true">
        <name>Relationship to Other Documents</name>
        <t><xref target="I-D.ietf-regext-rdap-referrals"/> defines the
        "redirects0" extension, through which a client asks a server to
        redirect it to a related resource, and the "noRedirects0"
        extension, through which a client asks not to be redirected. It also
        registers the "rdap-related-up", "rdap-related-down",
        "rdap-related-top" and "rdap-related-bottom" relations, whose target
        is an RDAP object. This document uses "noRedirects0" and
        "rdap-related-up", and redefines nothing. The "noRedirects0" signal
        is carried in the media type parameter defined in
        <xref target="I-D.ietf-regext-rdap-x-media-type"/>.</t>
        <t>Discovering a holder-designated service needs a second kind of
        target: the base URL of an RDAP service, which the client combines
        with a lookup path, in the way <xref target="RFC9224"/> base URLs
        are used. A redirect cannot carry such a target, because a redirect
        has to land on an object. This document therefore defines the
        "rdap-base" family of relations (<xref target="rels"/>). The same
        need appears elsewhere: <xref target="I-D.ietf-regext-rdap-rpki"/>
        has to point at the RDAP service of an organisation operating
        delegated or hybrid RPKI. Because the family is general, it was suggested
        on the list that it be registered in
        <xref target="I-D.ietf-regext-rdap-extensions"/>, which the RPKI
        work also depends on. Until that is settled, this document carries
        the registrations as a holding position. If they move,
        <xref target="rels"/> and the matching IANA registrations go with
        them, and this document keeps only the holder-designated case
        described in <xref target="registry"/> and
        <xref target="holder"/>.</t>
      </section>
    </section>

    <section anchor="terms" numbered="true">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
      "MAY", and "OPTIONAL" in this document are to be interpreted as
      described in BCP 14 <xref target="RFC2119"/>
      <xref target="RFC8174"/> when, and only when, they appear in all
      capitals, as shown here.</t>
      <dl newline="false">
        <dt>Registry operator:</dt>
        <dd>The operator of the RDAP service that holds the registered
        resource, such as a domain name registry, a registrar, or an
        RIR.</dd>
        <dt>Covering object:</dt>
        <dd>The object held by the registry operator for the registered
        resource: the registered domain, or the allocation or assignment
        that contains the subordinate resources.</dd>
        <dt>Subordinate resource:</dt>
        <dd>A resource strictly more specific than the covering object: a
        domain name below the registered domain, or a network or address
        contained within, and smaller than, the covering network.</dd>
        <dt>Holder-designated service:</dt>
        <dd>An RDAP service operated by or for the holder of the covering
        object, which the holder has designated to the registry operator
        to answer for subordinate resources.</dd>
        <dt>Base URL:</dt>
        <dd>A URL to which a client appends an RDAP lookup path
        <xref target="RFC9082"/> to form a query, as defined for the
        bootstrap registries in <xref target="RFC9224"/>. It ends in a
        "/" character.</dd>
      </dl>
    </section>

    <section anchor="registry" numbered="true">
      <name>Registry Operator Behaviour</name>
      <t>A registry operator learns of a holder-designated service only
      because the holder tells it. How that happens is a matter for the
      registry operator and is out of scope here
      (<xref target="ops"/>). Everything in this section applies only to
      covering objects for which a holder has done so.</t>
      <section anchor="redirect" numbered="true">
        <name>Redirect for Transport</name>
        <t>When a registry operator's server receives a lookup for a
        subordinate resource and the most specific object it holds is a
        covering object with a holder-designated service, it MUST respond
        with an HTTP redirect (<xref target="RFC7480" section="5.2"/>)
        whose Location is the holder-designated service's base URL with the
        request's lookup path, relative to the registry operator's own base
        URL, appended. Query parameters are not copied. The one exception is
        a request carrying "noRedirects0" that the server chooses to honour,
        described below. An unchanged client therefore lands on the holder's
        record exactly as it would land on any other redirected record
        today.</t>
        <t>This is the backwards-compatible part of the design and it is
        not optional. Without it, the most specific record would be
        reachable only by clients that understand the links in
        <xref target="advertise"/>.</t>
        <t>A lookup that names the covering object itself, for example the
        exact covering network, is never redirected. The registry operator answers it with the covering object. This is
        what lets the holder's service link back to the covering object
        without creating a loop (<xref target="holder"/>).</t>
        <t>A client that wants the registry's own covering object can ask
        for it with the "noRedirects0" extension
        <xref target="I-D.ietf-regext-rdap-referrals"/>. A server that
        honours the request returns the covering object, carrying any links
        described in <xref target="advertise"/>. A server is not obliged to
        honour it, and the client must still be able to follow a
        redirect.</t>
      </section>
      <section anchor="advertise" numbered="true">
        <name>Advertising the Delegation</name>
        <t>In addition to the redirect, a registry operator's server MAY
        include in the covering object an "rdap-base-down" link
        (<xref target="rels"/>) whose target is the base URL of the
        holder-designated service. A server that does so SHOULD include it
        in responses to both lookups and searches, for domain and number
        objects alike.</t>
        <t>This link is discovery, not transport. It tells a client that a
        delegation exists below the covering object and where the
        holder's service is, so the client can query that service for subordinate
        resources, or enumerate them where the service supports searches,
        and can decide for itself
        to cross from registry-maintained data to holder-asserted data. A
        client that ignores the link loses nothing it has today.</t>
        <t>The following elided example shows an IPv6 allocation with a
        holder-designated service:</t>
        <sourcecode type="json"><![CDATA[
{
  "objectClassName": "ip network",
  "handle": "2001:db8::/32",
  "startAddress": "2001:db8::",
  "endAddress": "2001:db8:ffff:ffff:ffff:ffff:ffff:ffff",
  "ipVersion": "v6",
  "links": [
    {
      "value": "https://rir.example/ip/2001:db8::/32",
      "rel": "self",
      "href": "https://rir.example/ip/2001:db8::/32",
      "type": "application/rdap+json"
    },
    {
      "value": "https://rir.example/ip/2001:db8::/32",
      "rel": "rdap-base-down",
      "href": "https://rdap.holder.example/"
    }
  ]
}
]]></sourcecode>
      </section>
    </section>

    <section anchor="holder" numbered="true">
      <name>Holder-Designated Service Behaviour</name>
      <t>A holder-designated service is an ordinary RDAP service. It
      answers for subordinate resources of the covering object and for
      nothing else.</t>
      <t>Because the registry operator redirects every lookup below the
      covering object, the holder's service will receive lookups for
      resources it holds nothing more specific for. It MUST NOT invent
      registration data for them, and it MUST NOT redirect the client back
      to the registry operator, which would be a redirect loop as defined in
      <xref target="I-D.ietf-regext-rdap-extensions"/>. Instead:</t>
      <ul>
        <li>For an IP network lookup, it SHOULD return its own object for
        the covering network, of which it is the holder, carrying the
        "rdap-related-up" link and the notice described below. An unchanged
        client then still receives an object for the covering network, as
        it did before the designation, together with a pointer to the
        registry operator's record for it.</li>
        <li>For a domain lookup, it returns a 404 (Not Found) response, as
        the registry operator would have for a name it does not hold.</li>
      </ul>
      <t>Each object it returns for a subordinate resource SHOULD carry an
      "rdap-related-up" link <xref target="I-D.ietf-regext-rdap-referrals"/>
      whose target is the lookup URL of the covering object itself at the
      registry operator, so the hierarchy can be walked back up across the
      authority boundary. That target MUST NOT be a lookup for the
      subordinate resource at the registry operator, which would redirect
      straight back and form a loop. The service MAY also carry an
      "rdap-base-up" link to the registry operator's base URL.</t>
      <t>The holder-designated service can find the registry operator's
      base URL for those links in the bootstrap registries
      <xref target="RFC9224"/>, by resolving the covering resource, and builds the covering object's
      lookup URL from it. The
      links then stay correct if the registry operator moves its service.
      Where the bootstrap is not specific enough, the registry operator can
      give the base URL to the holder when the designation is set up.
      Neither way needs a private arrangement to keep the links
      current.</t>
      <t>Each such object SHOULD also carry a notice
      (<xref target="RFC9083" section="4.3"/>) stating that its data is
      published by the holder, for resources subordinate to the covering
      object, so that a person reading a response that arrived through a
      redirect can see whose data it is.</t>
    </section>

    <section anchor="rels" numbered="true">
      <name>The rdap-base Link Relations</name>
      <t>The "rdap-related" relations of
      <xref target="I-D.ietf-regext-rdap-referrals"/> point at an object.
      The relations in this section point at a service. They mirror the
      four relations of <xref target="RFC9910"/>, so the pattern reads the
      same, and the only thing that changes is the kind of target.</t>
      <section anchor="rels-processing" numbered="true">
        <name>Processing</name>
        <t>Section 5.2 of <xref target="I-D.ietf-regext-rdap-extensions"/>
        requires an extension to state any processing a client must apply
        to a link before using it. For every relation in this family:</t>
        <ul>
          <li>The target is a base URL. A client MUST NOT dereference it
          expecting an object. To use it, the client appends an RDAP lookup
          path <xref target="RFC9082"/> to the target, exactly as it would
          with a base URL taken from the bootstrap registries
          <xref target="RFC9224"/>.</li>
          <li>Queries built in this way return responses of the
          "application/rdap+json" media type <xref target="RFC7480"/>, which
          is how this document states the media type that Section 5.2 of
          <xref target="I-D.ietf-regext-rdap-extensions"/> asks for. The
          media type describes those responses and not the base URL itself,
          so a link in this family SHOULD NOT include a "type" member, which
          would invite a client to fetch the target directly.</li>
          <li>The target MUST use the "https" scheme.</li>
        </ul>
      </section>
      <section anchor="rels-defs" numbered="true">
        <name>Definitions</name>
        <dl newline="true">
          <dt>rdap-base</dt>
          <dd>The base URL of the RDAP service for the context object.</dd>
          <dt>rdap-base-up</dt>
          <dd>The base URL of an RDAP service from which the RDAP parent of
          the context object can be reached.</dd>
          <dt>rdap-base-down</dt>
          <dd>The base URL of an RDAP service that holds RDAP child objects
          of the context object, including objects delegated below the
          context object that the covering service does not hold
          itself.</dd>
          <dt>rdap-base-top</dt>
          <dd>The base URL of an RDAP service from which the topmost RDAP
          parent of the context object can be reached.</dd>
          <dt>rdap-base-bottom</dt>
          <dd>The base URL of an RDAP service that holds the RDAP child
          objects of the context object that do not themselves have child
          objects.</dd>
        </dl>
        <t>The directional relations make the direction explicit where the
        link is used. This document treats the <xref target="RFC9910"/>
        relations as navigation within the data of a single service and
        does not change them. A link that crosses to another authority uses
        one of the relations in this section, or one of the "rdap-related"
        relations when the target is an object.</t>
      </section>
    </section>

    <section anchor="names" numbered="true">
      <name>Nested Delegation</name>
      <t>Delegation can nest. A holder may itself delegate part of its
      space to a customer that runs its own RDAP service, and for names a
      registry may run further registries below its top level, under which
      a registered domain designates its own service. Each level that holds
      a covering object states its own boundary on that object, much as
      each zone in the DNS states its own delegation. A client reaches the
      right service by following those boundaries level by level, without
      falling back on heuristics such as a public suffix list to guess
      where they are. In the common case of one covering object and one
      holder-designated service, it is one hop.</t>
    </section>

    <section anchor="loops" numbered="true">
      <name>Loops and Hop Limits</name>
      <t>The loop rules of <xref target="I-D.ietf-regext-rdap-extensions"/>
      apply to the redirects and links in this document: servers MUST NOT
      issue responses that cause redirect or referral loops, and clients
      MUST stop processing a query when they detect one.</t>
      <t>Clients MUST also bound the number of holder-designated referrals
      they follow while resolving a single query. The bound should allow
      for the levels of nesting a client expects to cross
      (<xref target="names"/>).</t>
    </section>

    <section anchor="applicability" numbered="true">
      <name>Applicability Beyond Holder-Designated Services</name>
      <t>Because "rdap-base-down" names a kind of target and not a role, it
      fits wherever one RDAP response needs to point a client at another
      RDAP service holding more specific or delegated data:</t>
      <ul>
        <li>Delegated and hybrid RPKI.
        <xref target="I-D.ietf-regext-rdap-rpki"/> needs a client to find
        the RDAP service of an organisation that operates delegated or
        hybrid RPKI for a resource, and currently uses an "rdap-help"
        relation for it. "rdap-base-down" carries the same information
        directly.</li>
        <li>Replacing referral whois. Where holders today publish detail
        below an allocation through RWhois <xref target="RFC2167"/>, the
        registry's RDAP response can point to the holder's RDAP service
        with "rdap-base-down" instead.</li>
      </ul>
      <t>The "rdap-bootstrap" relation of
      <xref target="I-D.ietf-regext-rdap-referrals"/> complements these. It
      reaches the service that can be derived from the bootstrap
      registries; "rdap-base-down" reaches a service that, by construction,
      cannot be, because the data it serves is not in the bootstrap.</t>
    </section>

    <section anchor="ops" numbered="true">
      <name>Operational Considerations</name>
      <t>How a holder designates a service to the registry operator is out
      of scope. It could be a portal, an attribute on the registered
      object, or a future EPP extension for domain registrations; a
      registry operator might also show the designation in its other query
      interfaces, so that users who do not use RDAP can see where the
      detail is kept.</t>
      <t>The mandatory redirect changes one failure mode. Before designation,
      a lookup for an address inside the covering network returns the
      covering object, and a lookup for a name below a registered domain
      returns not found. After designation, the same lookup is redirected,
      and if the holder-designated service is down the client gets an error
      instead. Broken referrals are a known
      problem in deployed registration services, and they are worse than
      none. A registry operator therefore:</t>
      <ul>
        <li>SHOULD check, before it starts redirecting, that the designated
        service answers conformant RDAP for the holder's subordinate
        resources;</li>
        <li>SHOULD keep checking afterwards, and withdraw the designation of a
        service that fails, so that it stops redirecting and advertising it
        and clients fall back to the covering object as before; and</li>
        <li>MAY set availability expectations for holder-designated
        services as a condition of designation, and MAY give clients a way
        to report a failing referral, including one that answers some
        clients and not others.</li>
      </ul>
      <t>A client that gets an error after a redirect can ask again with
      "noRedirects0", and a server that honours it returns the covering
      object.</t>
    </section>

    <section anchor="security" numbered="true">
      <name>Security Considerations</name>
      <t>Data from a holder-designated service is asserted by the holder,
      not maintained by the registry operator. For registration data used
      in abuse handling and law enforcement, that difference matters. A
      client that follows the redirect may not notice that it crossed an
      authority boundary; the notice in <xref target="holder"/> and the
      "rdap-base-down" link on the covering object are how the boundary
      stays visible. Clients that present such data SHOULD distinguish it
      from registry-maintained data.</t>
      <t>A holder-designated service can only speak for subordinate
      resources. Clients MUST NOT treat it as a source for any other
      resource. A client SHOULD check that an object received from it lies
      within the covering object, for example that the address range is
      contained in the covering network or that the name is below the
      registered domain, and discard anything that does not.</t>
      <t>Queries for subordinate resources reach the holder's
      infrastructure, so the holder can see interest in its own resources,
      much as the operator of a DNS zone sees queries for it. A client that
      does not want this can ask for "noRedirects0", which a server may or
      may not honour, and need not follow the links.</t>
      <t>The security considerations of <xref target="RFC7480"/>,
      <xref target="RFC7481"/>, and
      <xref target="I-D.ietf-regext-rdap-referrals"/> apply.</t>
    </section>

    <section anchor="iana" numbered="true">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following values in the "Link
      Relation Types" registry <xref target="RFC8288"/>. These
      registrations are a holding position (<xref target="related-work"/>).
      If the working group moves this family to
      <xref target="I-D.ietf-regext-rdap-extensions"/>, they move with it
      and are removed from this document.</t>
      <dl newline="true">
        <dt>Relation Name: rdap-base</dt>
        <dd>Description: Refers to the base URL of the RDAP service for the
        context object.<br/>
        Note: The target is a base URL against which the client constructs
        queries; it is not dereferenced to obtain an object (see
        <xref target="rels-processing"/>).<br/>
        Reference: This document</dd>
        <dt>Relation Name: rdap-base-up</dt>
        <dd>Description: Refers to the base URL of an RDAP service from
        which the RDAP parent of the context object can be reached.<br/>
        Note: The target is a base URL against which the client constructs
        queries; it is not dereferenced to obtain an object (see
        <xref target="rels-processing"/>).<br/>
        Reference: This document</dd>
        <dt>Relation Name: rdap-base-down</dt>
        <dd>Description: Refers to the base URL of an RDAP service that
        holds RDAP child objects of the context object, including objects
        delegated below the context object that the covering service does
        not hold itself.<br/>
        Note: The target is a base URL against which the client constructs
        queries; it is not dereferenced to obtain an object (see
        <xref target="rels-processing"/>).<br/>
        Reference: This document</dd>
        <dt>Relation Name: rdap-base-top</dt>
        <dd>Description: Refers to the base URL of an RDAP service from
        which the topmost RDAP parent of the context object can be
        reached.<br/>
        Note: The target is a base URL against which the client constructs
        queries; it is not dereferenced to obtain an object (see
        <xref target="rels-processing"/>).<br/>
        Reference: This document</dd>
        <dt>Relation Name: rdap-base-bottom</dt>
        <dd>Description: Refers to the base URL of an RDAP service that
        holds the RDAP child objects of the context object that do not
        themselves have child objects.<br/>
        Note: The target is a base URL against which the client constructs
        queries; it is not dereferenced to obtain an object (see
        <xref target="rels-processing"/>).<br/>
        Reference: This document</dd>
      </dl>
    </section>

    <section anchor="impl" numbered="true" removeInRFC="true">
      <name>Implementation Status</name>
      <t>A holder-designated service is in production at
      rdap.whisper.online. It is a purpose-built implementation serving
      per-name and per-address objects for subordinate names and IPv6
      /128 assignments that are created and retired programmatically
      inside 2a04:2a01::/32, announced by AS219419. Its responses already link back to the RIPE NCC.
      Today that link uses "rdap-up" and targets the lookup for the
      address itself; it will change to "rdap-related-up" with the covering
      object's own lookup URL as its target, as <xref target="holder"/>
      requires, before any registry-side redirect is in place.</t>
      <t>The registry side does not exist yet. A proposal for the RIPE
      Database to support a holder-designated service for number resources
      was raised on the RIPE Database Working Group list in July 2026, and
      has been submitted for that working group's session at RIPE 93
      (Sofia, 29 October 2026).</t>
    </section>

    <section anchor="open" numbered="true" removeInRFC="true">
      <name>Open Issues</name>
      <ul>
        <li>Where the "rdap-base" family is registered: here as a holding
        position, or in <xref target="I-D.ietf-regext-rdap-extensions"/>,
        as suggested on the list.</li>
        <li>Whether the behaviour in this document should be signalled with
        an RDAP extension identifier in "rdapConformance", so that a client
        can tell a server that advertises holder-designated services from
        one that does not.</li>
        <li>How "rdap-related-down" applies to explicit redirects
        <xref target="I-D.ietf-regext-rdap-referrals"/> for a covering
        object whose child objects are held by a holder-designated service.
        For transport, the ordinary redirect in <xref target="redirect"/>
        already reaches the subordinate object, so this document does not
        specify it.</li>
        <li>Whether "rdap-base-top" and "rdap-base-bottom" are needed now,
        or only the directional pair and the undirected form.</li>
        <li>For an address the holder holds nothing more specific for, this
        document has the holder's service answer with its own object for the
        covering network rather than redirect back, because
        <xref target="I-D.ietf-regext-rdap-extensions"/> defines any
        redirect back to a server already visited as a loop, even when the
        second request names a different resource. If the working group
        would rather allow that one bounded return to the covering object,
        the registry's own record could be served instead.</li>
      </ul>
    </section>

    <section anchor="changes" numbered="true" removeInRFC="true">
      <name>Changes from -01</name>
      <ul>
        <li>Rebuilt the document on two families of relations with two
        kinds of target, as agreed on the list in September 2026: the
        "rdap-related" relations, which point at an object and are now in
        <xref target="I-D.ietf-regext-rdap-referrals"/>, and the
        "rdap-base" relations, which point at a service.</li>
        <li>Used "rdap-related-up" for the holder's link back to the
        covering object, in place of the "rdap-base-up" back link of -01,
        and required its target to be the covering object's own lookup URL
        so the link cannot loop.</li>
        <li>Specified what the holder's service returns for lookups it holds
        nothing more specific for: its own object for the covering network
        for IP lookups, so an unchanged client still receives an object for
        the covering network, and not found for names, as today. It never
        redirects back to the registry operator, which would be a loop.</li>
        <li>Stated that the registry operator answers a lookup for the
        covering object itself directly, so the back link cannot loop.</li>
        <li>Removed the -01 example of explicit redirects with a
        subordinate lookup path.</li>
        <li>Restored, from -01, that clients must not treat a
        holder-designated service as a source for resources outside the
        covering object.</li>
        <li>Moved <xref target="I-D.ietf-regext-rdap-extensions"/> and
        <xref target="RFC9910"/> to the normative references, and added
        <xref target="I-D.ietf-regext-rdap-x-media-type"/>.</li>
        <li>Left explicit redirects with "rdap-related-down" as an open
        issue rather than specifying them.</li>
        <li>Replaced the generic redirect-suppression control with the
        "noRedirects0" extension of
        <xref target="I-D.ietf-regext-rdap-referrals"/>.</li>
        <li>Expanded the "rdap-base" family from two relations to five, in
        line with the four relations of <xref target="RFC9910"/> plus the
        undirected form, and stated the processing rules once for the
        whole family, as Section 5.2 of
        <xref target="I-D.ietf-regext-rdap-extensions"/> requires. Defined
        the undirected "rdap-base" as the base URL of the service for the
        context object, without the sentence about authority, at Jasdip
        Singh's suggestion; crossing an authority boundary is what the
        directional relations are for.</li>
        <li>With the object relations now in
        <xref target="I-D.ietf-regext-rdap-referrals"/>, dropped the -01
        aim of merging this document into it. The "rdap-base" registrations
        are carried here as a holding position and may move to
        <xref target="I-D.ietf-regext-rdap-extensions"/>, leaving this
        document as the holder-designated case only.</li>
        <li>Kept advertising the "rdap-base-down" link as a MAY on top of
        the mandatory redirect, as agreed on the list in July.</li>
        <li>Added an operational section on the failure mode the mandatory
        redirect introduces, and on checking, withdrawing and reporting
        broken referrals.</li>
        <li>Added a section on nested delegation for both names and number
        resources, a notice identifying holder-published data, and a client
        check that objects from a holder-designated service lie within the
        covering object.</li>
        <li>Added an Open Issues section.</li>
        <li>Changed the title to describe the document as it now is.</li>
      </ul>
    </section>

  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7480.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9082.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9083.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9224.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8288.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-regext-rdap-referrals.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-regext-rdap-extensions.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9910.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7481.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2167.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-regext-rdap-x-media-type.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-regext-rdap-rpki.xml"/>
      </references>
    </references>

    <section anchor="ack" numbered="false">
      <name>Acknowledgements</name>
      <t>Jasdip Singh suggested naming the relation for the base URL it
      targets, then splitting it by direction, and reviewed the definitions
      on the list. Tom Harrison held the
      design to backwards compatibility, which is why the registry still
      redirects. Andy Newton saw that an object pointer and a service
      pointer are different things, which is what turned one relation into
      two families. Pawel Kowalik raised the multi-level case for names
      and the question of how a registry learns of a designation. Gavin
      Brown and Andy Newton wrote the redirect mechanism this builds on.
      On the RIPE Database Working Group list, Leo Vegoda asked why a holder would not simply synchronise its data
      into the registry, and Radu Anghel asked about lifetimes,
      availability requirements and broken referrals; the operational
      considerations reflect that discussion.</t>
    </section>
  </back>
</rfc>
