<?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.3.17 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-gruessing-sdp-http-02" category="std">

  <front>
    <title abbrev="SDP Mapping into HTTP structured headers">SDP Mapping into HTTP structured headers</title>

    <author initials="J." surname="Gruessing" fullname="James Gruessing">
      <organization></organization>
      <address>
        <email>james.ietf@gmail.com</email>
      </address>
    </author>

    <date />

    <area>Applications and Real-Time</area>
    <workgroup>Multiparty Multimedia Session Control</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document specifies a HTTP header based representation of the Session
Description Protocol which can be used in describing media being negotiated or
delivered via HTTP.</t>



    </abstract>


    <note title="Note to Readers">


<t><spanx style="emph">RFC Editor: please remove this section before publication</spanx></t>

<t>Source code and issues for this draft can be found at
<eref target="https://github.com/fiestajetsam/I-D/tree/main/draft-gruessing-sdp-http">https://github.com/fiestajetsam/I-D/tree/main/draft-gruessing-sdp-http</eref>.</t>


    </note>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Services either negotiating or offering media over HTTP may want to express a
greater amount of information beyond a MIME type of content and its preference.</t>

<t>The Session Description Protocol <xref target="RFC8866"/> describes multimedia sessions for
the purpose of session announcement and initiation.</t>

<t>The Session-Description and Session-Media headers may be used for either a HTTP
request or response and may be included as part of any HTTP method.</t>

<section anchor="notational-conventions" title="Notational Conventions">

<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>

</section>
</section>
<section anchor="the-session-description-header" title="The Session-Description Header">

<t>The Session-Description header field conveys the entire session description
information, using <xref target="I-D.ietf-httpbis-header-structure"/> to describe the
structure. Its value MUST be a dictionary containing containing only the
following keys, receivers MUST ignore all other values. Dictionary keys MUST be
ordered in the order presented in this document, but MAY be omitted where they
are explicitly declared as OPTIONAL.</t>

<section anchor="time-description" title="Time Description">

<t>All values within time description fields that represent wall time MUST be
values shown as integers which represent NTP timestamps with second resolution.
To facilitate ease of parsing, fields that are used to represet a time duration
or offset as described in Section 5.10 of <xref target="RFC8866"/> MUST NOT use the compact
version e.g “1h” instead of “3600”.</t>

</section>
<section anchor="session-description" title="Session Description">

<t><list style="hanging">
  <t hangText="v">
  The version, represented as an sh-integer that MUST be set 0.</t>
  <t hangText="o">
  The originator of the session, whose value is an sh-list. The order of values
present in the list MUST map to the order specified in Section 5.2 of
<xref target="RFC8866"/>.</t>
  <t hangText="s">
  The name of the SDP, whose values is a string and MUST NOT be empty.</t>
  <t hangText="i">
  An OPTIONAL description of the session, whose value is a string.</t>
  <t hangText="u">
  An OPTIONAL URI reference containing additional information about the
session, whose value is a string and SHOULD be represented as <xref target="RFC3986"/>.</t>
  <t hangText="e">
  An OPTIONAL email address, whose value is a string and SHOULD be represented
using <xref target="RFC5322"/> address semantics.</t>
  <t hangText="p">
  An OPTIONAL phone number whose value is a string, which SHOULD be represented
as <xref target="E.164"/>.</t>
  <t hangText="c">
  An OPTIONAL field containing connection data, whose value is an inner-list, and
whose elements are each a string type matching the order of elements as
defined in Section 5.7 of <xref target="RFC8866"/>. This field MUST be set if no media
entities in the description contain connection information.</t>
  <t hangText="b">
  An OPTIONAL field containing the proposed bandwidth to be used by the
session, whose value is an inner-list with only two elements, the first being a
string type whose value corresponds to a <spanx style="verb">bwtype</spanx> as listed in the IANA
registry, or a string prefixed “X-“ to denote an experiemental value. The
second element is an integer type and MUST NOT be negative.</t>
  <t hangText="k">
  The key-field field is obsolete and MUST NOT be used. Implementations MUST
discard the field if it is received.</t>
  <t hangText="t">
  An OPTIONAL field containing the start and end times of the session, whose
value is an inner-list containing two elements - the first being the wall time
start time, and the latter being the stopping time.</t>
  <t hangText="r">
  An OPTIONAL field containing the repeat times, whose value is an inner-list
containing three elements. The first element contains the repeat interval
whose value is an integer, and the second element containing the active
duration whose value is an integer. The third element of the offsets from
start-time whose value is an inner-list containing two elements containing
integer values representing the offsets.</t>
  <t hangText="z">
  An OPTIONAL field containing time zone adjustment information, whose value is
an inner-list containing elements where each is an inner-list with two elements;
the first element being an integer representing the wall time which the
adjustment should take place, and the second element whose value is an
integer representing the offset.</t>
  <t hangText="a">
  An OPTIONAL field containing session-level attributes, whose value is an
inner-list. Each element may either be a sh-dictionary when representing a value
attribute, or a string where it is a property attribute. For value
attributes, the contents MUST be a single name/value pair with the name being
the attribute name, and the value as a string.</t>
</list></t>

</section>
</section>
<section anchor="the-session-media-header" title="The Session-Media Header">

<t>The Session-Media header describes each media element within the session, and at
the top level is an sh-list.</t>

<t>Each media representation may additionally contain a media title (i), connection
information (c), or bandwidth (b).</t>

<section anchor="implementation-considerations" title="Implementation Considerations">

<t>The Session-Description header MAY be sent at the same time in a response with a
HTTP body that also contains the SDP payload for backwards compatibility. In
such case the values of the header MUST be identical in semantic meaning to the
body payload and not include additional information or redaction. It may also,
dependant on implementation be sent in response to a HEAD request - in such
cases the body MUST be omitted but the server MUST also send the
“application/sdp” <spanx style="verb">Content-Type</spanx> HTTP header.</t>

</section>
<section anchor="character-set-usage" title="Character set usage">

<t>TODO: Cover character sets</t>

</section>
</section>
<section anchor="examples" title="Examples">

<t>TODO: Examples</t>

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

<t>This specification registers the following entry in the Permanent Message Header
Field Names registry established by <xref target="RFC3864"/>:</t>

<t>o  Header field name: Session-Description</t>

<t>o  Applicable protocol: http</t>

<t>o  Status: standard</t>

<t>o  Author/Change Controller: IETF</t>

<t>o  Specification document(s): [this document]</t>

<t>o  Related information:</t>

<t>o  Header field name: Session-Media</t>

<t>o  Applicable protocol: http</t>

<t>o  Status: standard</t>

<t>o  Author/Change Controller: IETF</t>

<t>o  Specification document(s): [this document]</t>

<t>o  Related information:</t>

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

<t>TODO: Incorporate things like secure transport (HTTPS), in addition to
considerations raised in the structured header draft.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<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 initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="RFC3864" target='https://www.rfc-editor.org/info/rfc3864'>
<front>
<title>Registration Procedures for Message Header Fields</title>
<author initials='G.' surname='Klyne' fullname='G. Klyne'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='J.' surname='Mogul' fullname='J. Mogul'><organization /></author>
<date year='2004' month='September' />
<abstract><t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications.  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='90'/>
<seriesInfo name='RFC' value='3864'/>
<seriesInfo name='DOI' value='10.17487/RFC3864'/>
</reference>



<reference  anchor="RFC3986" target='https://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>



<reference  anchor="RFC5322" target='https://www.rfc-editor.org/info/rfc5322'>
<front>
<title>Internet Message Format</title>
<author initials='P.' surname='Resnick' fullname='P. Resnick' role='editor'><organization /></author>
<date year='2008' month='October' />
<abstract><t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of &quot;electronic mail&quot; messages.  This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, &quot;Standard for the Format of ARPA Internet Text Messages&quot;, updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5322'/>
<seriesInfo name='DOI' value='10.17487/RFC5322'/>
</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 initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>



<reference  anchor="RFC8866" target='https://www.rfc-editor.org/info/rfc8866'>
<front>
<title>SDP: Session Description Protocol</title>
<author initials='A.' surname='Begen' fullname='A. Begen'><organization /></author>
<author initials='P.' surname='Kyzivat' fullname='P. Kyzivat'><organization /></author>
<author initials='C.' surname='Perkins' fullname='C. Perkins'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<date year='2021' month='January' />
<abstract><t>This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation. This document obsoletes RFC 4566.</t></abstract>
</front>
<seriesInfo name='RFC' value='8866'/>
<seriesInfo name='DOI' value='10.17487/RFC8866'/>
</reference>



<reference anchor="I-D.ietf-httpbis-header-structure">
<front>
<title>Structured Field Values for HTTP</title>

<author initials='M' surname='Nottingham' fullname='Mark Nottingham'>
    <organization />
</author>

<author initials='P' surname='Kamp' fullname='Poul-Henning Kamp'>
    <organization />
</author>

<date month='June' day='3' year='2020' />

<abstract><t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers".  It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-httpbis-header-structure-19' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-httpbis-header-structure-19.txt' />
</reference>


<reference anchor="E.164" target="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;id=T-REC-E.164-201011-I!!PDF-E&amp;type=items">
  <front>
    <title>The international public telecommunication numbering plan</title>
    <author >
      <organization></organization>
    </author>
    <date year="2010" month="November"/>
  </front>
</reference>


    </references>



<section numbered="no" anchor="acknowledgements" title="Acknowledgements">

<t>The author would like to thank Colin Perkins for very early feedback on this
document.</t>

</section>


  </back>

<!-- ##markdown-source:
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
sfgPUtGOpaQdAAA=

-->

</rfc>

