<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC1035 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
<!ENTITY RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC3597 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3597.xml">
<!ENTITY RFC7493 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7493.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7208 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7208.xml">
<!ENTITY RFC8552 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
<!ENTITY I-D.kowalik-domainconnect SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.kowalik-domainconnect.xml">
]>


<rfc ipr="trust200902" docName="draft-hoffman-duj-04" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="DNS Update with JSON">DNS Update with JSON</title>

    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>

    <date year="2025" month="September" day="30"/>

    
    
    

    <abstract>


<?line 35?>

<t>It is common for service providers such as certificate authorities and social media providers to want users to update the users' zones to prove that they control those zones, or to add other features.
Currently, service providers tell users to do this using human language describing the resource record type and data values to enter into the zone.
This document describes a text format, called "DNS update with JSON" or "DUJ", for such a service provider to give to a user, with the expectation that the user would copy and paste the text to their DNS operator to update the user's zone.
DNS operators who know how to handle DUJ strings will make the update process easier and more predictable for their users.</t>



    </abstract>



  </front>

  <middle>


<?line 42?>

<section anchor="introduction"><name>Introduction</name>

<t>There are many scenarios where someone gives instructions to a human to update their DNS zone in order to prove that they control those zones, or to add other features.
For example, someone suggesting that you add an SPF <xref target="RFC7208"/> record to a zone might say "add a TXT record with the value "v=spf1 a:mail.yourname.example ip4:192.0.2.49" to your zone".
The expectation is that you are either able to edit your zone file directly and understand the format of the records, or you use a DNS operator who has an interface for you to be able to add and modify records in your zone.</t>

<t>This document proposes a method for giving a human a string that can be copy-and-pasted to give a precise update for a zone.
The protocol, called "DNS update with JSON" or "DUJ", specifies a string format in I-JSON <xref target="RFC7493"/> that represents the addition and deletion of records in a DNS zone.
It is designed for DNS operators who accept strings in their interface for zone updates.
The format self-identifies a string as DUJ, and the protocol lists what is and is not acceptable for DUJ strings.
Using DUJ makes the update process more reliable for DNS operators and their users.</t>

<section anchor="use-case"><name>DUJ Use Case</name>

<t>DUJ is specifically targeted at improving the current common scenario of a user being told by an application service or a helpful friend to modify their DNS zone.
DUJ is not intended for any automatic zone updates.
DUJ is intended only for users who copy-and-paste.</t>

<t>There are two types of DUJ strings: DUJS and DUJ64.
DUJS strings can be typed by users, but doing so can easily introduce errors that might negatively affect their DNS zone.
DUJ64 strings cannot be safely typed by users.</t>

<t>There is no intention in the design for the user to change the text in a DUJ string.
Because DUJ strings contain quoted text, and some typing systems might automatically unhelpfully convert quotation marks into "smart quotes", for some users typing DUJ strings might be impossible.</t>

<t>Different, more elaborate protocols for automatic updates, may be proposed separately.
For example, DomainConnect (<xref target="DomainConnect"/>, <xref target="I-D.kowalik-domainconnect"/>) defines an automated protocol that includes user affirmation before updates.
DUJ is purposely more limited and less ambitious than those protocols, with the assumption that it will be much easier to deploy.
Service providers might allow manual updates as they do today, manual updates by DUJ, and automated updates with a protocol like DomainConnect.</t>

</section>
<section anchor="design"><name>DUJ Design</name>

<t>This format is explicitly only meant for the use cases in <xref target="use-case"/>.
If the designer of an automated protocol is thinking of re-using DUJ in that protocol, they should not.
DUJ is specifically designed for copy-and-paste by end users.
It would be trivial to design a better format for describing automated DNS updates.</t>

<t>The design choice to use JSON arrays instead of objects is to increase security and reliability.
This is to prevent key-value pairs to be added that might cause users or operators to possibly process the DUJ strings incorrectly or to misinterpret them.
For example, it is not possible to include comments in a DUJ string such as "For DKIM".
The reason for this is that such comments could be used by an attacker to convince a user to make a change that they otherwise might not by adding a comment such as "Urgent security update".</t>

<t>DUJS strings are meant to be somewhat readable by the user.
They might not understand what it says, but if they understand something about the DNS, they might.
For example, you might see that a particular RRtype and Rdata are proposed to be added to your zone by looking at the DUJ string you are presented.</t>

<t>DUJ64 strings are purposely not readable by the user.
However, the user can still see if records are being added or deleted.</t>

<t>DUJ strings should not be difficult for a service to create.
There are cases described later where the quoting on the Rdata field can be tricky, but forcing an application to understand backslash quoting and apply it correctly is considered out of scope for a format this is only meant to replace human-readable instructions like "enter this record into your zone".</t>

<t>This document assumes that the application service will have looked in the user's zone before suggesting a zone update.
That would likely be true in the current use case where the application service suggests an update to the user's zone.</t>

<t>Another explicit design for DUJ is that it is not extensible.
If there is a reason to create a later version, the first string ("DJUS" or "DUJ64") can be changed to one that includes a new version identifier.</t>

<t>During the development of DUJ, there was a suggestion that each action string be followed by a list of record-data for that action.
For example, to add two records, there would be only one action template of "add", which has two records.
This suggested was rejected because it complicates the processing while saving only a tiny amount of space.</t>

</section>
<section anchor="bcp-14-language"><name>BCP 14 Language</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>
<section anchor="specification"><name>Specification</name>

<t>An example of a DUJS string is:</t>

<figure><artwork><![CDATA[
[ "DUJS", [ ["add", "mail.yourname.example TXT \"v=spf1 a:mail.yourname.example ip4:192.0.2.49\""] ] ]
]]></artwork></figure>

<t>An example of a DUJS string is:</t>

<figure><artwork><![CDATA[
[ "DUJ64", [ ["add", "bWFpbC55b3VybmFtZS5leGFtcGxlIFRYVCAidj1zcGYxIGE6bWFpbC55b3VybmFtZS5leGFtcGxlIGlwNDoxOTIuMC4yLjQ5Ig=="] ] ]
]]></artwork></figure>

<t>A DUJ string <bcp14>MUST</bcp14> be a JSON array with two values. The first value is the string "DUJS" or "DUJ64".
The second value is an array, called the "update array", which lists all the updates.
The update array <bcp14>MUST</bcp14> have a length of at least 1.</t>

<t>The arrays in the update array are called "action templates".
Every action template is exactly two values: "action" and "record-data".</t>

<t>The action is a string specifying the action to be taken.
The action string <bcp14>MUST</bcp14> be either "add" or "delete"; no other values are allowed.</t>

<t>The record-data is a string that is in the zone file format defined in <xref target="RFC1035"/>.
The record-data <bcp14>MAY</bcp14> contain class names, as described in <xref target="RFC1035"/>.
The record-data <bcp14>MAY</bcp14> contain time-to-live (TTL) values, as described in <xref target="RFC1035"/>.</t>

<section anchor="dujs"><name>DUJS</name>

<t>The record-data in DUJS strings <bcp14>MUST NOT</bcp14> include zone file comments, directives, or embedded newlines from <xref target="RFC1035"/>.
The record-data in DUJS stings <bcp14>MAY</bcp14> contain \DDD and \X escapes, and parentheses, from <xref target="RFC1035"/>.</t>

</section>
<section anchor="duj64"><name>DUJ64</name>

<t>A DUJ64 string is identical to a DUJS string except that the record-data in a DUJ64 string is the Base64 <xref target="RFC4648"/> encoding of he record-data that would have gone into a DUJS string.</t>

</section>
<section anchor="notes-on-owner-names"><name>Notes on Owner Names</name>

<t>The owner name of a zone in a record-data string might be a name that does not yet exist because it is being created by an "add" action.
A common example of this is adding an "underscore name" <xref target="RFC8552"/> such as "_smimecert" and "_xmpp".
A DNS operator would have to determine whether the full owner name given in the record-data could be created, which might not be possible due to zone cuts.</t>

<t>The owner-name <bcp14>MUST NOT</bcp14> contain a wildcard.</t>

</section>
<section anchor="notes-on-rrtypes"><name>Notes on RRtypes</name>

<t>The RRtype in the record-data with the name of the resource record type for the action.
The RRtype's name is given in the "TYPE" column of the "Resource Record (RR) TYPEs" IANA registry <xref target="Types-registry"/>.</t>

<t>To specify an RRtype that is not yet in the registry, use the format specified in <xref target="RFC3597"/>.
For example:</t>

<figure><artwork><![CDATA[
["DUJS", [ ["add", "yourname.example TYPE4321 \# 4 0A000001"] ] ]
]]></artwork></figure>

</section>
</section>
<section anchor="processing"><name>Processing</name>

<t>This section defines rules for DNS operators who allow updates with DUJ to process DUJ strings they receive.</t>

<t>The update array is an ordered list of action templates.
The DNS operator <bcp14>MUST</bcp14> process each action template in the order it appears in the update array.
However, the DNS operator does so only after verifying that the entire DUJ string can be atomically applied to the target zone.
The DNS operator <bcp14>MUST NOT</bcp14> process any action within the DUJ if any action would prevent the atomic application of the entire DUJ string.</t>

<t>The DNS operator <bcp14>MAY</bcp14> choose to skip an "add" action if it would create a record that is already in the zone.
The DNS operator <bcp14>MAY</bcp14> choose to skip a "delete" action if it would delete a record that did not exist in the zone.</t>

<t>The DNS operator <bcp14>SHOULD</bcp14> be able to handle <xref target="RFC3597"/> RRtypes.
However, they may have a local policy to not allow users to add or delete unknown RRtypes.</t>

<t>A DNS operator <bcp14>MAY</bcp14> reject any DUJ string for any reason, such as if it adds and then deletes the same record.
If the DUJ was received from a user interface, the DNS operator <bcp14>SHOULD</bcp14> clearly describe why a DUJ was rejected.</t>

<section anchor="string-verification"><name>String Verification</name>

<t>The DNS operator <bcp14>MUST</bcp14> not process any DUJ string where any of the following rules are not met:</t>

<t><list style="symbols">
  <t>The DUJ string <bcp14>MUST</bcp14> be valid I-JSON.</t>
  <t>The first element of the DUJ string <bcp14>MUST</bcp14> be "DUJS" or "DUJ64".</t>
  <t>The update array <bcp14>MUST</bcp14> have at least one action template.</t>
  <t>Every action template <bcp14>MUST</bcp14> meet the following rules:
  <list style="symbols">
      <t>The action element <bcp14>MUST</bcp14> be either the exact string "add" or "delete"</t>
      <t>The FQDN <bcp14>MUST</bcp14> be a valid fully-qualified domain name</t>
      <t>The FQDN <bcp14>MUST NOT</bcp14> contain a wildcard</t>
      <t>The RRtype <bcp14>MUST</bcp14> be recognized, or be in the format specified in <xref target="RFC3597"/></t>
      <t>The Rdata <bcp14>MUST</bcp14> be appropriate for the given RRtype</t>
    </list></t>
</list></t>

</section>
<section anchor="action-processing"><name>Action Processing</name>

<t>After verifying the DUJ string, the DNS operator processes each action template in order.
When processing an action template, the DNS operator <bcp14>MUST</bcp14> verify:</t>

<t><list style="symbols">
  <t>that the user is authorized to change the zone named in the FQDN</t>
  <t>that, for "delete" actions, that the exact record described in the action template exists</t>
  <t>that, for "add" actions, that the exact record described in the action template does not already exist</t>
</list></t>

<t>A DNS operator <bcp14>SHOULD</bcp14> tell a user about every change made from a DUJ.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document contains no actions for IANA.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A DUJ has no cryptographic protection.
It is, by design, only as secure as the current common scenario where a service tells a user to manually copy and paste some data (the RRtype and Rdata values) into an interface run by the DNS operator.</t>

<t>When a service gives the user a DUJ string, the authenticity of the source of the DUJ string and the integrity of the DUJ string is only as strong as the user's connection to the service.
When a user pastes a DUJ string to a DNS operator, the authenticity of the source of the DUJ string and the integrity of the DUJS is only as strong as the user's connection to the DNS operator.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC1035;
&RFC4648;
&RFC3597;
&RFC7493;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&RFC7208;
&RFC8552;
&I-D.kowalik-domainconnect;
<reference anchor="DomainConnect" target="https://www.domainconnect.org/">
  <front>
    <title>DomainConnect</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="Types-registry" target="https://www.iana.org/assignments/dns-parameters/">
  <front>
    <title>Domain Name System (DNS) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>


    </references>

</references>


<?line 240?>

<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Andy Newton,
Bob Harold,
Gavin Brown,
Jasdip Singh,
John Levine,
Libor Peltan,
Pawel Kowalik,
Peter Tomassen,
and
Robert Edmonds
contributed substantial comments to early versions of this draft.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA61b7XbbxrX9j6eY0j9id5GMZctOrNu0lSXLVirLiiindeOu
riEwJBEBGBQDiKa1lGe5z3Kf7J6vGQwoujftbbIckyAwcz732ecMMplMkjZv
C3Ogjs9n6n2d6daodd6u1Pezd+eJns8bc/OFHzObVrqER7NGL9rJyi4Wpa4m
Wffz5PF+ktfNgWqbzrVPHj9+8fhJ4rp5mTuX26rd1PDU6aurkyTV7YFybZYk
umtXtjlIlJrAH6Xyyh2oi6l6w8vSNd7uQnfF4LJtlrrKP+sW1oZ1jw7Pz+m6
KXVeHKga7p+KdH/MU11VU3giSSrblPDMjcFNL0+O9h4/fSYf95/vfysfnz57
8Y18/Gb/xdODJMmrxdaT3zx57G//9tmzJ/jxdHI8vbZrXeTXk8yCIFVqq8qk
Lf54TBeO+gtKeS/Ev/APulkaMNKqbWt38PXX6/V6OlgQlfmabkX/HKiFLpyB
71dgZTdpzDJ3bbPZsYs6B3Oq2ca1plQPwcWPwLQNXGtN4764d64rTVtq8OWy
Kk3Vuq+zyk3q8Ox9aZLJZKL0HATRoFZy2qrcqdSWpa0UGFM509zkqVF1Y2/y
DJZQrktXSsNNpmnzBXgNQo9DJG9z45SuMuVsmutClSbLdfRoa9VaV63qnHzr
OHLbleFrX6nPtjL0Ez6Fv+gWf96ATFXb2AK+WGf4tjHEF96qs0xZuKlRC6Pb
rjFumhx1TQMGKDbjHSq0pih6ITILi4LWncurpVp1EIyq0NWy00ujMuPSJp/j
LyglrG27JsUPqW0yhQlDGoMeWt3oomPpYWsQJ69aS4+huNPkCneB3OzQNX5l
tBgI9KlVHLtjleqiMJkaYWp3W6k9QpVHx++/H43ZPeSMeyqiCMsc7QfWIU3H
vAYKYz7VEJyUk8G+dI9a267IwNL1hnSqtRPnkHysS94Q5tjaNLpl+2958Ssn
+sb3ObVeWXVd2bVawR94agVbFEaBLgAzDRgYbsnBL6W+lrV4WdApNc4po10O
MqJgpW3wOkQX6DGHRdAULBt5dcphXeYZ7JAkD9Qpxk7WpahzAn4w8LyGP+Dq
jXKpqXSTWxQRf3C2NCA/GdAh2gFW0pOOzckRMtBbjIJqwwPgI/HB/zOIT+An
80mXdWHGQSzXLZfGtRyRsPDGdvQwyDS7OFG3twJ7d3chSFFqkq3Ml6tWOb1R
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
LjTb9L8vTJP/BctUXDEMMQAA

-->

</rfc>

