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

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

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-wright-http-progress-00" category="exp">

  <front>
    <title abbrev="HTTP Progress">Reporting Progress of Long-Running Operations in HTTP</title>

    <author initials="A." surname="Wright" fullname="Austin Wright">
      <organization></organization>
      <address>
        <email>aaa@bzfx.net</email>
      </address>
    </author>

    <date year="2019" month="May" day="28"/>

    
    <workgroup>HTTP</workgroup>
    <keyword>Internet-Draft</keyword> <keyword>HTTP</keyword>

    <abstract>


<t>This document defines a mechanism for following the real-time progress of long-running operations over HTTP.</t>



    </abstract>


  </front>

  <middle>


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

<t>HTTP is often used for making and observing the progress of long-running operations, including:</t>

<t><list style="symbols">
  <t>Copying, patching, or deleting large sets of files</t>
  <t>Waiting on a task to be started at a specific time</t>
  <t>Adding an operation to a lengthy queue</t>
  <t>Working through a multi-step operation, e.g. provisioning a server</t>
  <t>Receiving updates to a long running task, e.g. construction of a building</t>
</list></t>

<t>This document specifies a way to receive updates from the server on progress of such an operation, by defining a “progress” HTTP preference indicating the client would prefer to receive regular progress updates, a header for describing the current progress, and a 1xx intermediate status response to convey this progress information.</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>

<t>This document uses ABNF as defined in <xref target="RFC5234"/> and imports grammar rules from <xref target="RFC7230"/> and <xref target="RFC8187"/>.</t>

<t>Examples in this document may add whitespace for clarity, or omit some HTTP headers for brevity; requests and responses may require additional Host, Connection, and/or Content-Length headers to be properly received.</t>

</section>
</section>
<section anchor="status-document-workflow" title="Status Document Workflow">

<t>The Status Document Workflow uses a status document that is related to a single request. This status document is updated with the status of the operation, until the operation completes, and then finalizes, specifying the results of the operation.</t>

<t>The server SHOULD keep the status document available for a period of time after the operation finishes.</t>

<section anchor="initial-request" title="Initial Request">

<t>To begin, the client makes the initial request with an unsafe method. For example, <spanx style="verb">POST http://example.com/resource</spanx>.</t>

<t><list style="symbols">
  <t>If the operation finishes quickly, the server can issue the final response with a non-1xx, non-202 status code. The server may respond with any response allowed by HTTP, including a document describing the result of the operation, a representation of the new state of the resource, or a minimal representation.</t>
  <t>If the client sent a <spanx style="verb">Prefer: processing</spanx> preference, the server SHOULD issue a <spanx style="verb">102 Processing</spanx> intermediate response upon receipt of the request, and every time there is an update to the operation progress. The first intermediate response SHOULD include a <spanx style="verb">Location</spanx> header identifying the status document created for this request.  When the request finishes, respond normally with the final non-1xx, non-202 status code. If the client additionally sent a <spanx style="verb">Prefer: progress</spanx> preference, each response SHOULD include a <spanx style="verb">Progress</spanx> header in each response.</t>
  <t>If the request includes <spanx style="verb">Prefer: respond-async, wait=n</spanx>, and has been running longer than the preferred wait time, then background the operation and emit <spanx style="verb">202 Accepted</spanx>, with a <spanx style="verb">Location</spanx> header. If the server emitted a 102 Processing intermediate response, this will be the same header as before.</t>
</list></t>

<t>If the server responds with the result of the operation, or a representation of the new state of the resource, the <spanx style="verb">Content-Location</spanx> header identifies where this document can be requested in the future.</t>

<t>Note that clients may make requests with all of the above preferences; they can all be honored at the same time, see below for an example.</t>

</section>
<section anchor="status-document-request" title="Status Document Request">

<t>If the client received an operation status document from the initial unsafe request, it may make a GET request to this document to re-download the result of the request.</t>

<t>The client may do this for any reason, including:</t>

<t><list style="symbols">
  <t>The operation resulted in a 202 Accepted response and the client wants to know if the operation finished.</t>
  <t>The user wants to review the outcome of the request after having discarded the initial 2xx (non-202) response.</t>
  <t>The connection was reset before the initial request could respond with a non-1xx status code.</t>
</list></t>

<t>If the client makes this request with the <spanx style="verb">Prefer: processing</spanx> preference, the server SHOULD send an initial <spanx style="verb">102 Processing</spanx> header, and <spanx style="verb">102 Processing</spanx> responses for every progress update until the operation completes.</t>

<t>If or when the operation completes, the server SHOULD include <spanx style="verb">Status-URI</spanx> and, if applicable, <spanx style="verb">Status-Location</spanx> headers specifying the status code and Location (if any) of the final response to the initial request.</t>

</section>
<section anchor="closing-the-operation" title="Closing the Operation">

<t>The client MAY acknowledge it has reacted to the completed operation by issuing a <spanx style="verb">DELETE</spanx> request on the status document. Servers SHOULD limit requests on the status document to the user that issued the initial request.</t>

<t>Servers MAY delete the status document any time after the operation finishes, but SHOULD wait a period of time long enough for clients to check back on the operation on another business day.</t>

</section>
<section anchor="example" title="Example">

<t>Clients may send all four preferences in a request. In this example, the client issues a POST request to capture a photograph of a scenic landscape by issuing a POST request to &lt;<spanx style="verb">http://example.com/capture</spanx>&gt;, and the server generates a status document for this request at &lt;<spanx style="verb">http://example.com/capture?request=42</spanx>&gt;.</t>

<figure><artwork type="example"><![CDATA[
POST http://example.com/capture HTTP/1.1
Prefer: processing, respond-async, wait=20

]]></artwork></figure>

<t>To which the server might reply:</t>

<figure><artwork type="example"><![CDATA[
HTTP/1.1 102 Processing
Location: <?request=42>
Progress: 0/3 "Herding cats"

HTTP/1.1 102 Processing
Progress: 1/3 "Knitting sweaters"

HTTP/1.1 102 Processing
Progress: 2/3 "Slaying dragons"

HTTP/1.1 201 Created
Progress: 3/3 "Available"
Location: </photos/42>
Content-Location: <?request=42>
Content-Type: text/plain

The photographer uploaded your image to:
  <http://example.com/photos/42>
]]></artwork></figure>

<t>If this same request took significantly longer (more than 20 seconds), then due to the respond-async preference, the response might look like this instead:</t>

<figure><artwork type="example"><![CDATA[
HTTP/1.1 102 Processing 
Progress: 0/3 "Herding cats"
Location: </status>

HTTP/1.1 102 Processing
Progress: 1/3 "Knitting sweaters"

HTTP/1.1 202 Accepted
Location: </status>
Content-Location: </status>
Content-Type: text/plain

The photographer is on step 2: Knitting sweaters
]]></artwork></figure>

<t>The client can re-subscribe to updates by making a GET request to the status document with <spanx style="verb">Prefer: processing</spanx>:</t>

<figure><artwork type="example"><![CDATA[
GET http://example.com/capture?request=42 HTTP/1.1
Prefer: processing, respond-async, wait=20

HTTP/1.1 102 Processing
Progress: 1/3 "Knitting sweaters"

HTTP/1.1 102 Processing
Progress: 2/3 "Slaying dragons"

HTTP/1.1 200 OK
Progress: 3/3 "Available"
Content-Type: application/json
Status-URI: 201 </capture>
Status-Location: </photos/42>
Content-Type: text/plain

The photographer uploaded your image to:
  <http://example.com/photos/42>
]]></artwork></figure>

</section>
</section>
<section anchor="definitions" title="Definitions">

<section anchor="the-102-processing-status-code" title="The “102 Processing” status code">

<t>The 102 (Processing) status code is an interim response used to inform the client that the server has accepted the request, but has not yet completed it. This status code SHOULD send this status when the request could potentially take long enough to time out connections due to inactivity, or when there is new progress to report via a <spanx style="verb">Progress</spanx> or <spanx style="verb">Status-URI</spanx> header.</t>

<t>The <spanx style="verb">102 Processing</spanx> status was first described by WebDAV in <xref target="RFC2518"/>, but was not included in subsequent revisions of WebDAV for lack of implementations. This document updates the semantics of the “102 Processing” status code first defined there.</t>

<section anchor="use-of-the-location-header-in-102-processing" title="Use of the “Location” header in 102 Processing">

<t>The meaning of a Location header <xref target="RFC7231"/> is the same as in a <spanx style="verb">202 Accepted</spanx> response: It identifies a document that will be updated with the progress, current status, and result of the operation.</t>

<t>A Location header SHOULD be sent in the first <spanx style="verb">102 Processing</spanx> response, as well as the <spanx style="verb">202 Accepted</spanx> response to the same request.</t>

</section>
</section>
<section anchor="the-progress-header" title="The “Progress” header">

<t>The “Progress” header is used to indicate the current progress on an operation being run by the origin server. Use of this header implies the server supports <spanx style="verb">102 Processing</spanx> responses and the <spanx style="verb">processing</spanx> preference.</t>

<figure><artwork type="abnf"><![CDATA[
Progress        = 1*DIGIT "/" [ 1*DIGIT ] [ WS progress-remark ]
progress-remark = comment / quoted-string / ext-value
comment         = <comment, see [RFC7230], Section 3.2.6>
quoted-string   = <quoted-string, see [RFC7230], Section 3.2.6>
ext-value       = <ext-value, see [RFC8187]>
]]></artwork></figure>

<t>The Progress header includes three datum: A numerator, a denominator, and a message.</t>

<t>The numerator specifies the number of sub-operations that have completed. The numerator MUST NOT decrease in value.</t>

<t>The denominator specifies the total expected operations to be completed before a final status code can be delivered. The denominator MUST be larger than the numerator, if specified. If the length of the operation is unknown, it may be omitted. If additional tasks need to be performed, the denominator MAY increase.</t>

<t>The message is some sort of remark indicating the current task being carried out. If multiple files are being operated on, this might refer to the most recent file to be opened. Three forms are provided:</t>

<t><list style="symbols">
  <t>Use of the “comment” production implies the text is not intended for end users.</t>
  <t>If the HTTP server supports localization, the server SHOULD negotiate a language using <spanx style="verb">Accept-Language</spanx>, if it exists in the request. The header field value should use the “ext-value” production and include the language tag of the negotiated language, which MAY be different than the <spanx style="verb">Content-Language</spanx>.</t>
  <t>Use of a quoted-string is also supported if the text is entirely 7-bit ASCII. This is suitable for reporting filenames or similar data.</t>
</list></t>

<t>Example usage:</t>

<figure><artwork type="example"><![CDATA[
Progress: 0/1
Progress: 88020/85918489 (bytes)
Progress: 5/16 UTF-8'ja-JP'%e9%a3%9f%e3%81%b9%e3%81%a6
Progress: 3/20 "POST http://example.com/item/3"

]]></artwork></figure>

</section>
<section anchor="the-status-uri-header" title="The “Status-URI” header">

<t>The Status-URI header reports the status of an operation performed on a resource by another request.</t>

<t>The Status-URI header MAY be used any number of times in a <spanx style="verb">101 Processing</spanx> response to report the result of a subordinate operation for the request or the request that the status document is about.</t>

<t>The Status-URI header SHOULD be used to report the final response status that the status document is about.</t>

<figure><artwork type="abnf"><![CDATA[
Status-URI    = #status-pair
status-pair   = status-code OWS "<" URI-Reference ">"
status-code   = <status-code, see [RFC7230], Section 3.1.2>
URI-Reference = <URI-reference, see [RFC7230], Section 2.7>
]]></artwork></figure>

<t>Example usage:</t>

<figure><artwork type="example"><![CDATA[
Status-URI: 507 <http://example.com/photo/41>
Status-URI: 200 <http://example.com/capture>
]]></artwork></figure>

</section>
<section anchor="the-status-location-header" title="The “Status-Location” header">

<t>If the response is <spanx style="verb">200 OK</spanx> and includes <spanx style="verb">Progress</spanx>, <spanx style="verb">Status-URI</spanx>, and <spanx style="verb">Status-Location</spanx> headers, and the progress numerator is the same as the denominator, then the document is a status document about a completed operation, and the <spanx style="verb">Status-Location</spanx> header identifies the URI of the resource that would have been identified by the <spanx style="verb">Location</spanx> header in the initial request. The meaning of the value of this header is dependent on the value of the status code from the <spanx style="verb">Status-URI</spanx> header.</t>

<t>The purpose of this header is to have a field that is semantically the same as the Location header on the initial response. This is slightly different than the Link header <xref target="RFC8288"/>, which conveys a link relationship between documents.</t>

<t>This header is so named as it is the URI from a location header in the final response to an initial request, that has since been copied to a status document response.</t>

</section>
<section anchor="the-processing-preference" title="The “processing” preference">

<t>The “processing” HTTP preference <xref target="RFC7240"/> specifies if the server should emit <spanx style="verb">102 Processing</spanx> status responses.</t>

<t>When performing a unsafe action, the server should emit intermediate <spanx style="verb">102 Processing</spanx> responses until the action finishes.</t>

<t>In a GET or HEAD request to a status document, it means the client is only interested in the result of the operation that the status document is about, and the server should send <spanx style="verb">102 Processing</spanx> updates until then. The <spanx style="verb">respond-async</spanx> and <spanx style="verb">wait</spanx> preferences are ignored here as the request is not performing an action.</t>

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

<section anchor="status-uris" title="Status URIs">

<t>The fact that this operation produces a URI for each operation means that third parties can look at the requests being made by a user. Servers SHOULD ensure that only the user who made the request has access to the status document. Servers SHOULD generate URIs with sufficient entropy, although URIs supposed to be considered public knowledge (see HTTP).</t>

</section>
<section anchor="denial-of-service" title="Denial of Service">

<t>This may expose information about load, which may allow attackers to better exploit weak points already under stress. Servers with this functionality may make it cheap for server operators to accept work-intensive tasks. Usual precautions about mitigating denial-of-service attacks should be exercised.</t>

</section>
</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="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="RFC5234" target='https://www.rfc-editor.org/info/rfc5234'>
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><organization /></author>
<author initials='P.' surname='Overell' fullname='P. Overell'><organization /></author>
<date year='2008' month='January' />
<abstract><t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='68'/>
<seriesInfo name='RFC' value='5234'/>
<seriesInfo name='DOI' value='10.17487/RFC5234'/>
</reference>



<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC8187" target='https://www.rfc-editor.org/info/rfc8187'>
<front>
<title>Indicating Character Encoding and Language for HTTP Header Field Parameters</title>
<author initials='J.' surname='Reschke' fullname='J. Reschke'><organization /></author>
<date year='2017' month='September' />
<abstract><t>By default, header field values in Hypertext Transfer Protocol (HTTP) messages cannot easily carry characters outside the US-ASCII coded character set.  RFC 2231 defines an encoding mechanism for use in parameters inside Multipurpose Internet Mail Extensions (MIME) header field values.  This document specifies an encoding suitable for use in HTTP header fields that is compatible with a simplified profile of the encoding defined in RFC 2231.</t><t>This document obsoletes RFC 5987.</t></abstract>
</front>
<seriesInfo name='RFC' value='8187'/>
<seriesInfo name='DOI' value='10.17487/RFC8187'/>
</reference>



<reference  anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>



<reference  anchor="RFC7240" target='https://www.rfc-editor.org/info/rfc7240'>
<front>
<title>Prefer Header for HTTP</title>
<author initials='J.' surname='Snell' fullname='J. Snell'><organization /></author>
<date year='2014' month='June' />
<abstract><t>This specification defines an HTTP header field that can be used by a client to request that certain behaviors be employed by a server while processing a request.</t></abstract>
</front>
<seriesInfo name='RFC' value='7240'/>
<seriesInfo name='DOI' value='10.17487/RFC7240'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC2518" target='https://www.rfc-editor.org/info/rfc2518'>
<front>
<title>HTTP Extensions for Distributed Authoring -- WEBDAV</title>
<author initials='Y.' surname='Goland' fullname='Y. Goland'><organization /></author>
<author initials='E.' surname='Whitehead' fullname='E. Whitehead'><organization /></author>
<author initials='A.' surname='Faizi' fullname='A. Faizi'><organization /></author>
<author initials='S.' surname='Carter' fullname='S. Carter'><organization /></author>
<author initials='D.' surname='Jensen' fullname='D. Jensen'><organization /></author>
<date year='1999' month='February' />
<abstract><t>This document specifies a set of methods, headers, and content-types ancillary to HTTP/1.1 for the management of resource properties, creation and management of resource collections, namespace manipulation, and resource locking (collision avoidance).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2518'/>
<seriesInfo name='DOI' value='10.17487/RFC2518'/>
</reference>



<reference  anchor="RFC8288" target='https://www.rfc-editor.org/info/rfc8288'>
<front>
<title>Web Linking</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2017' month='October' />
<abstract><t>This specification defines a model for the relationships between resources on the Web (&quot;links&quot;) and the type of those relationships (&quot;link relation types&quot;).</t><t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t></abstract>
</front>
<seriesInfo name='RFC' value='8288'/>
<seriesInfo name='DOI' value='10.17487/RFC8288'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
zHjTAh6rO1Wn2vDNZvwDE+y0J/8NuHnw5201AAA=

-->

</rfc>

