<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.2 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wiethuechter-drip-dia-http-00" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.7.0 -->
  <front>
    <title abbrev="DIA HTTP Interface">DRIP Information Agent (DIA) HTTP Interface</title>
    <seriesInfo name="Internet-Draft" value="draft-wiethuechter-drip-dia-http-00"/>
    <author initials="A." surname="Wiethuechter" fullname="Adam Wiethuechter">
      <organization>AX Enterprize, LLC</organization>
      <address>
        <postal>
          <street>4947 Commercial Drive</street>
          <city>Yorkville</city>
          <region>NY</region>
          <code>13495</code>
          <country>USA</country>
        </postal>
        <email>adam.wiethuechter@axenterprize.com</email>
      </address>
    </author>
    <author initials="S." surname="Card" fullname="Stuart Card">
      <organization>AX Enterprize, LLC</organization>
      <address>
        <postal>
          <street>4947 Commercial Drive</street>
          <city>Yorkville</city>
          <region>NY</region>
          <code>13495</code>
          <country>USA</country>
        </postal>
        <email>stu.card@axenterprize.com</email>
      </address>
    </author>
    <author initials="R." surname="Moskowitz" fullname="Robert Moskowitz">
      <organization>HTT Consulting</organization>
      <address>
        <postal>
          <street/>
          <city>Oak Park</city>
          <region>MI</region>
          <code>48237</code>
          <country>USA</country>
        </postal>
        <email>rgm@labs.htt-consult.com</email>
      </address>
    </author>
    <date year="2022" month="September" day="27"/>
    <area>Internet</area>
    <workgroup>drip Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines an HTTP based interface using either JSON or CBOR for object encodings for the DRIP Provisioning Agent (DPA) or Registry to insert, update or delete information from a DRIP Information Agent (DIA). JSON Web Tokens (JWTs) are used between the entities to encapsulate and authenticate the transactions.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The DIA is one of the required components in a DIME for it to fulfill the role of registration of DRIP Entity Tags (DETs) of clients. A standardized interface is needed for this to avoid interoperability issues between vendors supporting DRIP and the various logical components of the DIME.</t>
      <t>Per <xref target="drip-detim" format="default"/> the DIA MUST:</t>
      <ul empty="true" spacing="normal">
        <li>provided an HTTP interface for clients to access with JSON or CBOR encoding of objects being sent to the DIA.</li>
      </ul>
      <t>This document is the definition of this interface and its behavior; specifically between the DIA and a DPA or DIA and a Registry. A snapshot of the OpenAPI specification is in <xref target="api-spec" format="default"/> at the time of this documents publishing; with a URI to access an updated specification.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <section anchor="required-terminology" numbered="true" toc="default">
        <name>Required 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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="jwt-use" numbered="true" toc="default">
      <name>JWT Use</name>
      <t>When using the JWT the <tt>iss</tt> is filled with the DET FQDN of the DIME component (typically the DPA). The <tt>sub</tt> is filled with the FQDN of the entity being registered. For a Serial Number this is the Serial Number FQDN of the UA, for the Operator/GCS the DET FQDN of the Operator/GCS and for the Session ID this is the DET FQDN of the UA.</t>
      <t>A <tt>data</tt> field is filled with specific information to be stored in the RDDS by the DIA for the given subject.</t>
      <t>Another field <tt>drip</tt> is used to hold various DRIP information elements.</t>
      <t>The JWT is signed using the private key (an EdDSA25519 key) of the <tt>iss</tt> entity; the DPA.</t>
    </section>
    <section anchor="endpoint-definitions-behavior" numbered="true" toc="default">
      <name>Endpoint Definitions &amp; Behavior</name>
      <t>All endpoints that send DRIP Endorsements use the JSON/CBOR forms as specified in <xref target="drip-detim" format="default"/>.</t>
      <t>If there is any failure during validation in any endpoint a HTTP 400 code MUST be sent to the client with a detailed reason for the error.</t>
      <section anchor="serial-number" numbered="true" toc="default">
        <name>Serial Number</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iss": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "sub": "<id>.<mfr_code>.mfr.hhit.arpa",
    "iat": 0,
    "exp": 0,
    "drip": {
        "det": "base16 HHIT/DET",
        "hi": "base64 HI",
        "endorsements": [
            self_endorsement,
            broadcast_endorsement
        ]
    },
    "data": {
        "serial": "Serial Number",
        "manufacturer": "Manufacturer",
        "make": "Make",
        "model": "Model",
        "color": "Color",
        "material": "Material",
        "weight": 1.0,
        "length": 1.0,
        "width": 1.0,
        "height": 1.0,
        "numRotors": 1,
        "propLength": 1.0,
        "batteryCapacity": 1.0,
        "batteryVoltage": 1.0,
        "batteryWeight": 1.0,
        "batteryChemistry": "Battery Chemistry",
        "takeOffWeight": 1.0,
        "maxPayloadWeight": 0.1,
        "maxFlightTime": 1.0,
        "minOperatingTemp": 1.0,
        "maxOperatingTemp": 2.0,
        "ipRating": "None"
    }
}
]]></artwork>
        <ul empty="true" spacing="normal">
          <li>Note: the <tt>drip</tt> field is optional.</li>
        </ul>
      </section>
      <section anchor="operator" numbered="true" toc="default">
        <name>Operator</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iss": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "sub": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "iat": 0,
    "exp": 0,
    "drip": {
        "det": "base16 HHIT/DET",
        "hi": "base64 HI",
        "endorsements": [
            self_endorsement,
            endorsement
        ]
    },
    "data": {
        "name": "",
        "addr": {
            "street1": "",
            "street2": "",
            "city": "",
            "sp": "",
            "pc": "",
            "cc": ""
        },
        "voice": "",
        "email": "",
        "part107": "",
        "recFlyerId": ""
    }
}
]]></artwork>
      </section>
      <section anchor="ground-control-station-gcs" numbered="true" toc="default">
        <name>Ground Control Station (GCS)</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iss": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "sub": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "iat": 0,
    "exp": 0,
    "drip": {
        "det": "base16 HHIT/DET",
        "hi": "base64 HI",
        "endorsements": [
            self_endorsement,
            endorsement
        ]
    },
    "data": {
        ...
    }
}
]]></artwork>
      </section>
      <section anchor="session-id" numbered="true" toc="default">
        <name>Session ID</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iss": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "sub": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "iat": 0,
    "exp": 0,
    "drip": {
        "det": "base16 HHIT/DET",
        "hi": "base64 HI",
        "endorsements": [
            self_endorsement,
            broadcast_endorsement,
            mutual_endorsement,
            endorsement
        ]
    },
    "data": {
        "serial": "Serial Number",
        "session_id": "base16 HHIT/DET of UA",
        "utm_id": UUIDv4,
        "utm_src": URI,
        "operator_det": "base16 HHIT/DET",
        "operator_id": "CAA Operator ID"
    }
}
]]></artwork>
      </section>
      <section anchor="child-dime" numbered="true" toc="default">
        <name>Child DIME</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
{
    "iss": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "sub": "<hash>.<oga_id>.<hda>.<raa>.<prefix>.hhit.arpa",
    "iat": 0,
    "exp": 0,
    "drip": {
        "det": "base16 HHIT/DET",
        "hi": "base64 HI",
        "endorsements": [
            self_endorsement,
            endorsement,
            broadcast_endorsement
        ]
    },
    "data": {
        "name": "",
        "abbreviation": "",
        "mfrCode": "",
        "addr": {
            "street1": "",
            "street2": "",
            "city": "",
            "sp": "",
            "pc": "",
            "cc": ""
        },
        "voice": "",
        "email": ""
    }
}
]]></artwork>
        <ul empty="true" spacing="normal">
          <li>Note: the <tt>mfrCode</tt> field is only used by an MRA when registering with an IRM  and holds the ICAO assigned Manufacturer Code for ANSI CTA2063-A Serial Numbers.</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC9153" target="https://www.rfc-editor.org/info/rfc9153">
        <front>
          <title>Drone Remote Identification Protocol (DRIP) Requirements and Terminology</title>
          <author fullname="S. Card" initials="S." role="editor" surname="Card">
            <organization/>
          </author>
          <author fullname="A. Wiethuechter" initials="A." surname="Wiethuechter">
            <organization/>
          </author>
          <author fullname="R. Moskowitz" initials="R." surname="Moskowitz">
            <organization/>
          </author>
          <author fullname="A. Gurtov" initials="A." surname="Gurtov">
            <organization/>
          </author>
          <date month="February" year="2022"/>
          <abstract>
            <t>This document defines terminology and requirements for solutions produced by the Drone Remote Identification Protocol (DRIP) Working Group. These solutions will support Unmanned Aircraft System Remote Identification and tracking (UAS RID) for security, safety, and other purposes (e.g., initiation of identity-based network sessions supporting UAS applications). DRIP will facilitate use of existing Internet resources to support RID and to enable enhanced related services, and it will enable online and offline verification that RID information is trustworthy.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9153"/>
        <seriesInfo name="DOI" value="10.17487/RFC9153"/>
      </reference>
      <reference anchor="drip-detim" target="https://www.ietf.org/archive/id/draft-wiethuechter-drip-detim-arch-00.txt">
        <front>
          <title>DRIP Entity Tag (DET) Identity Management Architecture</title>
          <author fullname="Adam Wiethuechter" initials="A." surname="Wiethuechter">
            <organization>AX Enterprize, LLC</organization>
          </author>
          <author fullname="Stuart W. Card" initials="S. W." surname="Card">
            <organization>AX Enterprize, LLC</organization>
          </author>
          <author fullname="Robert Moskowitz" initials="R." surname="Moskowitz">
            <organization>HTT Consulting</organization>
          </author>
          <author fullname="Jim Reid" initials="J." surname="Reid">
            <organization>RTFM llp</organization>
          </author>
          <date day="27" month="September" year="2022"/>
          <abstract>
            <t>   This document describes the high level architecture for the
   registration and discovery of DRIP Entity Tags (DETs) using DNS
   technologies and practices.  Discovery of DETs and their artifacts
   are through the existing DNS structure and methods by using FQDNs.  A
   general overview of the interfaces required between components is
   described in this document with supporting documents giving technical
   specifications.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-wiethuechter-drip-detim-arch-00"/>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner">
            <organization/>
          </author>
          <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" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <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>
    <section anchor="api-spec" numbered="true" toc="default">
      <name>OpenAPI Specification</name>
      <t>TODO</t>
      <!-- TODO: put OpenAPI YAML/JSON file into GitHub of draft and point it here -->

</section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
