<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-illyes-aipref-jafar-01" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="JAFAR">A JSON-Based Format for Publishing IP Ranges of Automated HTTP Clients</title>
    <seriesInfo name="Internet-Draft" value="draft-illyes-aipref-jafar-01"/>
    <author initials="G." surname="Illyes" fullname="Gary Illyes">
      <organization>Independent</organization>
      <address>
        <email>synack@garyillyes.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="09"/>
    <keyword>next generation</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 33?>

<t>This document defines a standardized JSON format for operators of automated HTTP
clients (e.g., web crawlers, AI bots) to publicly disclose their IP address
ranges. A consistent, machine-readable format for IP range publication
simplifies the task of identifying and verifying legitimate automated traffic,
thereby decreasing maintenance load on website operators while reducing the risk
of inadvertently blocking beneficial clients. This specification codifies and
extends common existing practices to provide a simple yet extensible format that
accommodates a variety of use cases.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    AI Preferences Working Group mailing list (ai-control@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ai-control/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/garyillyes/jafar"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a data format using JavaScript Object Notation (JSON).
It is intended for the publication of IP address ranges associated with
automated HTTP clients.
The scope of this specification is limited to the syntax and semantics of the
JSON file itself. It does not specify the transport mechanism for retrieving the
file. It also does not prescribe specific policies for how consumers should use
the data (e.g., allowlisting, rate-limiting, or monitoring).
This format is intended to complement, not replace, other established methods
for crawler verification. Techniques such as forward-confirmed reverse DNS
(FCrDNS) lookups remain a vital part of a comprehensive verification strategy.
This specification provides a scalable, machine-readable component that can be
integrated into a multi-layered verification process.</t>
    </section>
    <section anchor="format">
      <name>Format</name>
      <section anchor="top-level-object-definition">
        <name>Top-Level Object Definition</name>
        <t>An IP range publication file <bcp14>MUST</bcp14> be a single JSON object. The text encoding of
the file <bcp14>MUST</bcp14> be UTF-8. This top-level object serves as the root container for
essential metadata and the list of IP prefixes.</t>
        <t>The top-level object contains the fields defined in Table 1.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Type</th>
              <th align="left">Requirement</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">formatVersion</td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">The version of this specification that the file conforms to, represented as a string in "major.minor" format (e.g., "1.0"). Consumers <bcp14>MUST</bcp14> use this to handle potential future breaking changes. See Section 3.2 for processing rules.</td>
            </tr>
            <tr>
              <td align="left">synctoken</td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">An opaque synchronization token that changes whenever there is a change to any metadata associated with one or more prefixes.</td>
            </tr>
            <tr>
              <td align="left">creationTime</td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">An ISO 8601 timestamp in the "Z" timezone (UTC) indicating when the file was generated (e.g., "2025-08-15T14:30:00Z").</td>
            </tr>
            <tr>
              <td align="left">notes</td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">A human-readable string containing any relevant notes, disclaimers, or comments from the publisher. This can be used to provide context that is not captured by the structured data.</td>
            </tr>
            <tr>
              <td align="left">prefixes</td>
              <td align="left">Array</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">An array of Prefix Objects, as defined in Section 2.3. Each object in the array describes an IPv4 or IPv6 address range. This array <bcp14>MAY</bcp14> be empty if the publisher currently has no active IP ranges to declare.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="the-prefixes-array">
        <name>The prefixes Array</name>
        <t>The prefixes member of the top-level object <bcp14>MUST</bcp14> contain an array of JSON
objects. Each of these objects is a Prefix Object, as defined in Section 2.3.</t>
        <t>To simplify implementation for consumers, there <bcp14>MUST</bcp14> be a single, unified array
for both IPv4 and IPv6 prefixes.</t>
      </section>
      <section anchor="the-prefix-object">
        <name>The Prefix Object</name>
        <t>Each object within the prefixes array represents a single IP address range and
its associated metadata.</t>
        <t>A Prefix Object <bcp14>MUST</bcp14> contain exactly one of either the ipv4Prefix field or the
ipv6Prefix field. An object containing both or neither of these fields is
invalid and <bcp14>MUST</bcp14> be ignored by consumers. The fields are defined in Table 2.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Type</th>
              <th align="left">Requirement</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ipv4Prefix</td>
              <td align="left">String</td>
              <td align="left">CONDITIONAL</td>
              <td align="left">The IPv4 address range in Classless Inter-Domain Routing (CIDR) notation (e.g., "66.249.64.0/20"). This field <bcp14>MUST</bcp14> be present if the ipv6Prefix field is absent.</td>
            </tr>
            <tr>
              <td align="left">ipv6Prefix</td>
              <td align="left">String</td>
              <td align="left">CONDITIONAL</td>
              <td align="left">The IPv6 address range in CIDR notation (e.g., "2001:4860:4000::/36"). This field <bcp14>MUST</bcp14> be present if the ipv4Prefix field is absent.</td>
            </tr>
            <tr>
              <td align="left">service</td>
              <td align="left">String</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">A publisher-defined, case-sensitive string that identifies the specific service, bot, or purpose associated with this prefix. Examples include "Bingbot", "AdsBot-Google". This allows consumers to apply more granular policies.</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="processing-and-consumption-rules">
      <name>Processing and Consumption Rules</name>
      <section anchor="fetching-and-caching">
        <name>Fetching and Caching</name>
        <t>Consumers <bcp14>SHOULD</bcp14> fetch the machine-readable IP range publication file from a
stable URL provided by the publisher. The file location <bcp14>MUST</bcp14> be disclosed by the
publisher of the file on the page that describes the crawler.</t>
        <t>Publishers <bcp14>SHOULD</bcp14> update the file when there is any change to the prefixes, or
at least every 24 hours, even if the only update is to <tt>creationTime</tt>. Consumers
<bcp14>SHOULD</bcp14> implement a polling mechanism to check for updates at a reasonable
interval, such as once every 24 hours. Consumers <bcp14>MUST NOT</bcp14> poll more frequently
than once per hour unless explicitly permitted by the publisher's documentation
or HTTP caching headers.</t>
        <t>To minimize server load for the publisher and reduce unnecessary bandwidth usage
for the consumer, consumers <bcp14>MUST</bcp14> respect standard HTTP caching headers that may
be present in the response, such as Cache-Control, ETag, and Last-Modified.
Publishers <bcp14>SHOULD</bcp14> provide these headers to facilitate efficient caching.</t>
      </section>
      <section anchor="handling-format-versioning">
        <name>Handling Format Versioning</name>
        <t>To ensure long-term stability and allow for future evolution of this
specification, consumers <bcp14>MUST</bcp14> inspect the formatVersion field in the top-level
object of the file. The version is expressed as "major.minor".</t>
        <ul spacing="normal">
          <li>
            <t>Major Version Changes: A change in the major version number (e.g., from "1.0"
to "2.0") indicates a non-backward-compatible change to the specification. If a
consumer encounters a file with a major version number greater than the major
version it is programmed to handle, the consumer <bcp14>MUST NOT</bcp14> attempt to parse the
file. It <bcp14>SHOULD</bcp14> treat this situation as an error and <bcp14>MAY</bcp14> continue to use its
last known valid list until it can be updated to support the new version. This
prevents the misinterpretation of data from a significantly altered schema.</t>
          </li>
          <li>
            <t>Minor Version Changes: A change in the minor version number (e.g., from "1.0"
to "1.1") indicates the addition of new features or fields that are
backward-compatible. For example, a new <bcp14>OPTIONAL</bcp14> field might be added to the
Prefix Object. A consumer programmed to handle version "1.0" <bcp14>MUST</bcp14> be able to
correctly parse a file with version "1.1". The minor version number increases
numerically independently of the major version number,
for instance: 1.9 -&gt; 1.10 -&gt; 1.11. The consumer <bcp14>MUST</bcp14> ignore any unrecognized
fields or properties within the JSON objects.</t>
          </li>
        </ul>
      </section>
      <section anchor="prefix-aggregation-and-specificity">
        <name>Prefix Aggregation and Specificity</name>
        <t>A publication file <bcp14>MAY</bcp14> contain overlapping IP address ranges. For instance, a
publisher might list a broad range like 198.51.100.0/22 with a generic service
tag, and also list a more specific range within it, such as 198.51.100.0/24,
with a more specific service tag.</t>
        <t>When a consumer evaluates a specific IP address against the list, it <bcp14>MAY</bcp14> match
multiple Prefix Objects. In such cases, the consumer's logic <bcp14>SHOULD</bcp14> use the data
from the Prefix Object with the most specific CIDR range (i.e., the one with the
largest prefix length) for that IP address.</t>
      </section>
    </section>
    <section anchor="use-cases-and-examples">
      <name>Use Cases and Examples</name>
      <section anchor="example-1-basic-publication">
        <name>Example 1: Basic Publication</name>
        <t>This example demonstrates a minimal, valid file for a publisher with a single
type of automated client. It uses only the required fields, making it simple to
generate and consume.</t>
        <t><tt>
{
  "formatVersion": "1.0",
  "creationTime": "2025-08-15T14:30:00Z",
  "prefixes": [
    {
      "ipv4Prefix": "66.249.64.0/20"
    },
    {
      "ipv4Prefix": "34.64.0.0/12"
    },
    {
      "ipv6Prefix": "2001:4860:4000::/36"
    }
  ]
}
</tt></t>
      </section>
      <section anchor="example-2-advanced-publication-with-multiple-services">
        <name>Example 2: Advanced Publication with Multiple Services</name>
        <t>This example illustrates a more complex file from a large cloud provider that
uses optional fields to provide richer context. It differentiates between IP
ranges used for a general web crawler, a specialized ads crawler, and a
user-triggered fetching service. This allows consumers to implement more
granular access policies.</t>
        <t><tt>
{
  "formatVersion": "1.0",
  "creationTime": "2025-09-01T10:00:00Z",
  "notes": "IP ranges for ExampleCloud services. For verification, FCrDNS is also recommended.",
  "Prefixes": "FILL OUT WITH EXAMPLE"
}
</tt></t>
      </section>
      <section anchor="example-3-aggregated-publication-by-a-third-party">
        <name>Example 3: Aggregated Publication by a Third Party</name>
        <t>This example shows how a third-party security provider or an open-source project
could aggregate IP lists from multiple publishers into a single file. The
service field is used to attribute each prefix to its original source, allowing
consumers to apply policies based on the original publisher. This reflects the
use case of services that provide curated lists of known bots.</t>
        <t><tt>
{
  "formatVersion": "1.0",
  "creationTime": "2025-09-02T00:00:00Z",
  "notes": "Aggregated list of known good bots. Data is updated daily from original publisher sources.",
  "Prefixes": FILL OUT WITH EXAMPLE
}
</tt></t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <ul spacing="normal">
        <li>
          <t>Spoofing: Malicious actors claiming IP ranges they don't own. Mitigate with
FCrDNS</t>
        </li>
        <li>
          <t>DoS: Clients being tricked into polling the JSON file too frequently.
Mitigate by setting a reasonable polling limit, rely on caching (add 9110)</t>
        </li>
        <li>
          <t>Data Integrity: The risk of the file being intercepted and modified. Mitigated
by HTTPS, which should be mandated for the transport.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. (It does but need to flesh it out)</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="IPV6">
        <front>
          <title>IP Version 6 Addressing Architecture</title>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <date month="February" year="2006"/>
          <abstract>
            <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
            <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4291"/>
        <seriesInfo name="DOI" value="10.17487/RFC4291"/>
      </reference>
      <reference anchor="CIDR">
        <front>
          <title>Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan</title>
          <author fullname="V. Fuller" initials="V." surname="Fuller"/>
          <author fullname="T. Li" initials="T." surname="Li"/>
          <date month="August" year="2006"/>
          <abstract>
            <t>This memo discusses the strategy for address assignment of the existing 32-bit IPv4 address space with a view toward conserving the address space and limiting the growth rate of global routing state. This document obsoletes the original Classless Inter-domain Routing (CIDR) spec in RFC 1519, with changes made both to clarify the concepts it introduced and, after more than twelve years, to update the Internet community on the results of deploying the technology described. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="122"/>
        <seriesInfo name="RFC" value="4632"/>
        <seriesInfo name="DOI" value="10.17487/RFC4632"/>
      </reference>
      <reference anchor="JSON">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 274?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61a63LbOJb+j6fAqn9M3CVpJMXtTVSzPavYuajLt7WV6Z2Z
mqpAJCShTRIcXuwocd5ln2WfbL9zAPBiq7u6ararOpYoEjiX73znAo5GI1GZ
KtFzOVjIn26vLkdvVKlj+c4Wqarkxhbyul4nptyZbCuX1/JGZVtdSruRi7qy
uAc3f1itruVpYnRWlQOh1utC32PBnxbvFjcDEeGerS32c2myjRUitlGmUuwY
F2pTjUyS7HU5UiYv9Gb0i9qoYjSZirJep6Ysjc2qfa7p2VjnGv9klcjqdK2L
uYix8lxgq2PxnVSFVnO5uHm7wJcHW9xtC1vnc/nze/kzvpH47+mKuNN7/BzP
hRzJTH+u5FZnulAVtqJLZa6Ku4Ruj01ZFWZdk4qJjre6EELV1c4W9KyQ+M9k
5Vy+H8slK8GXNnWSOP3eq2Lf/cUWW5WZL7zTXC47CtGvOlUmmctyn6no7j+3
eNZZZhzZVIiM/WHuoS/uXV7/5WQui010PHs9pQuny7Mbd+Hk5YwukCv5wqvZ
D6+FIMs3C4jxeCzEaDSSag0NVVQJsdqZUsIzdQp5ZKw3JoOXlSwrlcWqiM0X
GIEWlZsWGTYnu9mC4aB6cBCRg4N8ocfb8VA+6LWMCvWQ6KIcysVSrm1VHsnK
ypzgFSV7MneU2FLLaqdNQVhTcVzoshQFY24sFzKyWQmvYOWhTFUEUOoR/B6r
daK7kuFhfsiv7pxbmjRPzMZAMWwhK1XekeCGXGA2e3I5lJX3uvDfEr01lSGl
OtrBYJuNiYYCaxR6Dbl1BBFKegAuzCCcyiItE6tiaTPSvDRYoTXWw85A2kLH
dUQPkSyFKe8EyZKpGPuTgrDIOrERA3cNhGJPoxLp7TqW7LEy1xE0cgrCOrFT
D2oIIBvoKnExTfGb/gy70Vo5OdxEZAQYv7D30J8cTcbRcq8ryU+WpmPSaqcq
oSJeioKOkHGvCqOrPVmwhtMi0EYJWDGuUhPHiRYIxGVWFRaKsgOeoMwLz6th
VRV2q9mWP6l7dRsVJq/k1foXHVXy0lZOzxcExKOxWFYS67HJY3iGHE/G7Pic
pGuB5DCB7crSwpjkzQdT7UQfuo2JIa6WZQTH0TLVc3vjQmJSw6iwvDWit1Kf
GUYlAhq4ikr3sBYuesj1pip1sgFrINIs5MlsMMbeIRNylrktKpnqaAfOKFNW
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

-->

</rfc>
