<?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-rfc2629 version 1.5.6 -->
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpapi-rfc7807bis-01" category="std" obsoletes="7807" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title>Problem Details for HTTP APIs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-rfc7807bis-01"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <postal>
          <postalLine>Prahran</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <author initials="E." surname="Wilde" fullname="Erik Wilde">
      <organization/>
      <address>
        <email>erik.wilde@dret.net</email>
        <uri>http://dret.net/netdret/</uri>
      </address>
    </author>
    <author initials="S." surname="Dalal" fullname="Sanjay Dalal">
      <organization/>
      <address>
        <email>sanjay.dalal@cal.berkeley.edu</email>
        <uri>https://github.com/sdatspun2</uri>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTPAPI</workgroup>
    <keyword>status</keyword>
    <keyword>HTTP</keyword>
    <keyword>error</keyword>
    <keyword>problem</keyword>
    <keyword>API</keyword>
    <keyword>JSON</keyword>
    <keyword>XML</keyword>
    <abstract>
      <t>This document defines a "problem detail" as a way to carry machine-readable details of errors in a HTTP response to avoid the need to define new error response formats for HTTP APIs.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/ietf-wg-httpapi/rfc7807bis"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>HTTP <xref target="HTTP" format="default"/> status codes are sometimes not sufficient to convey enough information about an error to be helpful. While humans behind Web browsers can be informed about the nature of the problem with an HTML <xref target="HTML5" format="default"/> response body, non-human consumers of so-called "HTTP APIs" are usually not.</t>
      <t>This specification defines simple JSON <xref target="RFC8259" format="default"/> and XML <xref target="XML" format="default"/> document formats to suit this purpose. They are designed to be reused by HTTP APIs, which can identify distinct "problem types" specific to their needs.</t>
      <t>Thus, API clients can be informed of both the high-level error class (using the status code) and the finer-grained details of the problem (using one of these formats).</t>
      <t>For example, consider a response that indicates that the client's account doesn't have enough credit. The 403 Forbidden status code might be deemed most appropriate to use, as it will inform HTTP-generic software (such as client libraries, caches, and proxies) of the general semantics of the response.</t>
      <t>However, that doesn't give the API client enough information about why the request was forbidden, the applicable account balance, or how to correct the problem. If these details are included in the response body in a machine-readable format, the client can treat it appropriately; for example, triggering a transfer of more credit into the account.</t>
      <t>This specification does this by identifying a specific type of problem (e.g., "out of credit") with a URI <xref target="RFC3986" format="default"/>; HTTP APIs can do this by nominating new URIs under their control, or by reusing existing ones.</t>
      <t>Additionally, problem details can contain other information, such as a URI that identifies the specific occurrence of the problem (effectively giving an identifier to the concept "The time Joe didn't have enough credit last Thursday"), which can be useful for support or forensic purposes.</t>
      <t>The data model for problem details is a JSON <xref target="RFC8259" format="default"/> object; when formatted as a JSON document, it uses the "application/problem+json" media type. <xref target="xml-syntax" format="default"/> defines how to express them in an equivalent XML format, which uses the "application/problem+xml" media type.</t>
      <t>Note that problem details are (naturally) not the only way to convey the details of a problem in HTTP; if the response is still a representation of a resource, for example, it's often preferable to accommodate describing the relevant details in that application's format. Likewise, in many situations, there is an appropriate HTTP status code that does not require extra detail to be conveyed.</t>
      <t>Instead, the aim of this specification is to define common error formats for those applications that need one, so that they aren't required to define their own, or worse, tempted to redefine the semantics of existing HTTP status codes. Even if an application chooses not to use it to convey errors, reviewing its design can help guide the design decisions faced when conveying errors in an existing format.</t>
    </section>
    <section anchor="requirements" numbered="true" toc="default">
      <name>Requirements</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 anchor="problem-json" numbered="true" toc="default">
      <name>The Problem Details JSON Object</name>
      <t>The canonical model for problem details is a JSON <xref target="RFC8259" format="default"/> object.</t>
      <t>When serialized as a JSON document, that format is identified with the "application/problem+json" media type.</t>
      <t>For example, an HTTP response carrying JSON problem details:</t>
      <sourcecode type="http-message"><![CDATA[
HTTP/1.1 403 Forbidden
Content-Type: application/problem+json
Content-Language: en

{
 "type": "https://example.com/probs/out-of-credit",
 "title": "You do not have enough credit.",
 "detail": "Your current balance is 30, but that costs 50.",
 "instance": "/account/12345/msgs/abc",
 "balance": 30,
 "accounts": ["/account/12345",
              "/account/67890"]
}
]]></sourcecode>
      <t>Here, the out-of-credit problem (identified by its type URI) indicates the reason for the 403 in "title", gives a reference for the specific problem occurrence with "instance", gives occurrence-specific details in "detail", and adds two extensions; "balance" conveys the account's balance, and "accounts" gives links where the account can be topped up.</t>
      <t>The ability to convey problem-specific extensions allows more than one problem to be conveyed. For example:</t>
      <sourcecode type="http-message"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
Content-Language: en

{
"type": "https://example.net/validation-error",
"title": "Your request parameters didn't validate.",
"invalid_params": [ {
                      "name": "age",
                      "reason": "must be a positive integer"
                    },
                    {
                      "name": "color",
                      "reason": "must be 'green', 'red' or 'blue'"}
                  ]
}
]]></sourcecode>
      <t>Note that this requires each of the subproblems to be similar enough to use the same HTTP status code. If they do not, the 207 (Multi-Status) code <xref target="RFC4918" format="default"/> could be used to encapsulate multiple status messages.</t>
      <section anchor="members" numbered="true" toc="default">
        <name>Members of a Problem Details Object</name>
        <t>Problem detail objects can have the following members. If the type of a member's value does not match the specified type, the member MUST be ignored -- i.e., processing will continue as if the member had not been present.</t>
        <section anchor="type" numbered="true" toc="default">
          <name>"type"</name>
          <t>The "type" member is a JSON string containing a URI reference <xref target="RFC3986" format="default"/> that identifies the problem type. Consumers MUST use the "type" URI (after resolution, if necessary) as the primary identifier for the problem type.</t>
          <t>When this member is not present, its value is assumed to be "about:blank".</t>
          <t>If the type URI is a locator (e.g., those with a "http" or "https" scheme), dereferencing it SHOULD provide human-readable documentation for the problem type (e.g., using HTML <xref target="HTML5" format="default"/>). However, consumers SHOULD NOT automatically dereference the type URI, unless they do so in the course of providing information to developers (e.g., when a debugging tool is in use).</t>
          <t>When "type" contains a relative URI, it is resolved relative to the document's base URI, as per <xref section="5" sectionFormat="comma" target="RFC3986" format="default"/>. However, using relative URIs can cause confusion, and they might not be handled correctly by all implementations.</t>
          <t>For example, if the two resources "https://api.example.org/foo/bar/123" and "https://api.example.org/widget/456" both respond with a "type" equal to the relative URI reference "example-problem", when resolved they will identify different resources ("https://api.example.org/foo/bar/example-problem" and "https://api.example.org/widget/example-problem" respectively). As a result, it is RECOMMENDED that absolute URIs be used in "type" when possible, and that when relative URIs are used, they include the full path (e.g., "/types/123").</t>
          <t>The type URI can also be a non-resolvable URI. For example, the tag URI scheme <xref target="RFC4151" format="default"/> can be used to uniquely identify problem types:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
tag:mnot@mnot.net,2021-09-17:OutOfLuck
]]></artwork>
          <t>Non-resolvable URIs ought not be used when there is some future possibility that it might become desireable to do so. For example, if the URI above were used in an API and later a tool was adopted that resolves type URIs to discover information about the error, taking advantage of that capability would require switching to a resolvable URI, thereby creating a new identity for the problem type and thus introducing a breaking change.</t>
        </section>
        <section anchor="status" numbered="true" toc="default">
          <name>"status"</name>
          <t>The "status" member is a JSON number indicating the HTTP status code (<xref section="15" sectionFormat="comma" target="HTTP" format="default"/>) generated by the origin server for this occurrence of the problem.</t>
          <t>The "status" member, if present, is only advisory; it conveys the HTTP status code used for the convenience of the consumer. Generators MUST use the same status code in the actual HTTP response, to assure that generic HTTP software that does not understand this format still behaves correctly. See <xref target="security-considerations" format="default"/> for further caveats regarding its use.</t>
          <t>Consumers can use the status member to determine what the original status code used by the generator was, in cases where it has been changed (e.g., by an intermediary or cache), and when message bodies persist without HTTP information. Generic HTTP software will still use the HTTP status code.</t>
        </section>
        <section anchor="title" numbered="true" toc="default">
          <name>"title"</name>
          <t>The "title" member is a JSON string containing a short, human-readable summary of the problem type.</t>
          <t>It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see <xref section="12.1" sectionFormat="comma" target="HTTP" format="default"/>).</t>
          <t>The "title" string is advisory and included only for users who are not aware of the semantics of the URI and do not have the ability to discover them (e.g., offline log analysis).</t>
        </section>
        <section anchor="detail" numbered="true" toc="default">
          <name>"detail"</name>
          <t>The "detail" member is a JSON string containing a human-readable explanation specific to this occurrence of the problem.</t>
          <t>The "detail" member, if present, ought to focus on helping the client correct the problem, rather than giving debugging information.</t>
          <t>Consumers SHOULD NOT parse the "detail" member for information; extensions are more suitable and less error-prone ways to obtain such information.</t>
        </section>
        <section anchor="instance" numbered="true" toc="default">
          <name>"instance"</name>
          <t>The "instance" member is a JSON string containing a URI reference that identifies the specific occurrence of the problem.</t>
          <t>When the "instance" URI is dereferenceable, the problem details object can be fetched from it. It might also return information about the problem occurrence in other formats through use of proactive content negotiation (see <xref section="12.5.1" sectionFormat="comma" target="HTTP" format="default"/>).</t>
          <t>When the "instance" URI is not dereferenceable, it serves as a unique identifier for the problem occurrence that may be of significance to the server, but is opaque to the client.</t>
          <t>When "instance" contains a relative URI, it is resolved relative to the document's base URI, as per <xref section="5" sectionFormat="comma" target="RFC3986" format="default"/>. However, using relative URIs can cause confusion, and they might not be handled correctly by all implementations.</t>
          <t>For example, if the two resources "https://api.example.org/foo/bar/123" and "https://api.example.org/widget/456" both respond with an "instance" equal to the relative URI reference "example-instance", when resolved they will identify different resources ("https://api.example.org/foo/bar/example-instance" and "https://api.example.org/widget/example-instance" respectively). As a result, it is RECOMMENDED that absolute URIs be used in "instance" when possible, and that when relative URIs are used, they include the full path (e.g., "/instances/123").</t>
        </section>
      </section>
      <section anchor="extension-members" numbered="true" toc="default">
        <name>Extension Members</name>
        <t>Problem type definitions MAY extend the problem details object with additional members.</t>
        <t>For example, our "out of credit" problem above defines two such extensions -- "balance" and "accounts" to convey additional, problem-specific information.</t>
        <t>Clients consuming problem details MUST ignore any such extensions that they don't recognize; this allows problem types to evolve and include additional information in the future.</t>
        <t>Note that because extensions are effectively put into a namespace by the problem type, it is not possible to define new "standard" members without defining a new media type.</t>
      </section>
    </section>
    <section anchor="defining" numbered="true" toc="default">
      <name>Defining New Problem Types</name>
      <t>When an HTTP API needs to define a response that indicates an error condition, it might be appropriate to do so by defining a new problem type.</t>
      <t>Before doing so, it's important to understand what they are good for, and what's better left to other mechanisms.</t>
      <t>Problem details are not a debugging tool for the underlying implementation; rather, they are a way to expose greater detail about the HTTP interface itself. Designers of new problem types need to carefully consider the Security Considerations (<xref target="security-considerations" format="default"/>), in particular, the risk of exposing attack vectors by exposing implementation internals through error messages.</t>
      <t>Likewise, truly generic problems -- i.e., conditions that could potentially apply to any resource on the Web -- are usually better expressed as plain status codes. For example, a "write access disallowed" problem is probably unnecessary, since a 403 Forbidden status code in response to a PUT request is self-explanatory.</t>
      <t>Finally, an application might have a more appropriate way to carry an error in a format that it already defines. Problem details are intended to avoid the necessity of establishing new "fault" or "error" document formats, not to replace existing domain-specific formats.</t>
      <t>That said, it is possible to add support for problem details to existing HTTP APIs using HTTP content negotiation (e.g., using the Accept request header to indicate a preference for this format; see <xref section="12.5.1" sectionFormat="comma" target="HTTP" format="default"/>).</t>
      <t>New problem type definitions MUST document:</t>
      <ol spacing="normal" type="1"><li>a type URI (typically, with the "http" or "https" scheme),</li>
        <li>a title that appropriately describes it (think short), and</li>
        <li>the HTTP status code for it to be used with.</li>
      </ol>
      <t>Problem type definitions MAY specify the use of the Retry-After response header (<xref section="10.2.3" sectionFormat="comma" target="HTTP" format="default"/>) in appropriate circumstances.</t>
      <t>A problem's type URI SHOULD resolve to HTML <xref target="HTML5" format="default"/> documentation that explains how to resolve the problem.</t>
      <t>A problem type definition MAY specify additional members on the problem details object. For example, an extension might use typed links <xref target="RFC8288" format="default"/> to another resource that can be used by machines to resolve the problem.</t>
      <t>If such additional members are defined, their names SHOULD start with a letter (ALPHA, as per <xref section="B.1" sectionFormat="comma" target="RFC5234" format="default"/>) and SHOULD consist of characters from ALPHA, DIGIT (<xref section="B.1" sectionFormat="comma" target="RFC5234" format="default"/>), and "_" (so that it can be serialized in formats other than JSON), and they SHOULD be three characters or longer.</t>
      <section anchor="example" numbered="true" toc="default">
        <name>Example</name>
        <t>For example, if you are publishing an HTTP API to your online shopping cart, you might need to indicate that the user is out of credit (our example from above), and therefore cannot make the purchase.</t>
        <t>If you already have an application-specific format that can accommodate this information, it's probably best to do that. However, if you don't, you might consider using one of the problem details formats -- JSON if your API is JSON-based, or XML if it uses that format.</t>
        <t>To do so, you might look for an already-defined type URI that suits your purposes. If one is available, you can reuse that URI.</t>
        <t>If one isn't available, you could mint and document a new type URI (which ought to be under your control and stable over time), an appropriate title and the HTTP status code that it will be used with, along with what it means and how it should be handled.</t>
        <t>In summary: an instance URI will always identify a specific occurrence of a problem. On the other hand, type URIs can be reused if an appropriate description of a problem type is already available someplace else, or they can be created for new problem types.</t>
      </section>
      <section anchor="registry" numbered="true" toc="default">
        <name>Registered Problem Types</name>
        <t>This specification defines the HTTP Problem Type registry for common, widely-used problem type URIs, to promote reuse.</t>
        <t>Registration requests are reviewed and approved by a Designated Expert, as per <xref section="4.5" sectionFormat="comma" target="RFC8126" format="default"/>. A specification document is appreciated, but not required.</t>
        <t>When evaluating requests the Expert(s) should consider community feedback, how well-defined the problem type is, and this specification's requirements. Vendor-specific, application-specific, and deployment-specific values are not registrable.</t>
        <t>Registrations MAY use the prefix "https://iana.org/assignments/http-problem-types#", and are encouraged to do so when a stable, neutral URI is desirable.</t>
        <t>Registration requests should use the following template:</t>
        <ul spacing="normal">
          <li>Type URI: [a URI for the problem type]</li>
          <li>Title: [a short description of the problem type]</li>
          <li>Recommended HTTP status code: [what status code is most appropriate to use with the type]</li>
          <li>Reference: [to a specification defining the type]</li>
        </ul>
        <t>See the registry at <eref target="https://iana.org/assignments/http-problem-types">https://iana.org/assignments/http-problem-types</eref> for details on where to send registration requests.</t>
        <section anchor="blank" numbered="true" toc="default">
          <name>about:blank</name>
          <t>This specification registers one Problem Type, "about:blank".</t>
          <ul spacing="normal">
            <li>Type URI: about:blank</li>
            <li>Title: See HTTP Status Code</li>
            <li>Recommended HTTP status code: N/A</li>
            <li>Reference: [this document]</li>
          </ul>
          <t>The "about:blank" URI <xref target="RFC6694" format="default"/>, when used as a problem type, indicates that the problem has no additional semantics beyond that of the HTTP status code.</t>
          <t>When "about:blank" is used, the title SHOULD be the same as the recommended HTTP status phrase for that code (e.g., "Not Found" for 404, and so on), although it MAY be localized to suit client preferences (expressed with the Accept-Language request header).</t>
          <t>Please note that according to how the "type" member is defined (<xref target="members" format="default"/>), the "about:blank" URI is the default value for that member. Consequently, any problem details object not carrying an explicit "type" member implicitly uses this URI.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>When defining a new problem type, the information included must be carefully vetted. Likewise, when actually generating a problem -- however it is serialized -- the details given must also be scrutinized.</t>
      <t>Risks include leaking information that can be exploited to compromise the system, access to the system, or the privacy of users of the system.</t>
      <t>Generators providing links to occurrence information are encouraged to avoid making implementation details such as a stack dump available through the HTTP interface, since this can expose sensitive details of the server implementation, its data, and so on.</t>
      <t>The "status" member duplicates the information available in the HTTP status code itself, thereby bringing the possibility of disagreement between the two. Their relative precedence is not clear, since a disagreement might indicate that (for example) an intermediary has modified the HTTP status code in transit (e.g., by a proxy or cache).</t>
      <t>As such, those defining problem types as well as generators and consumers of problems need to be aware that generic software (such as proxies, load balancers, firewalls, and virus scanners) are unlikely to know of or respect the status code conveyed in this member.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>Please update the "application/problem+json" and "application/problem+xml" registrations in the Internet media types registry <xref target="RFC6838" format="default"/>. to refer to this document.</t>
      <t>Please create the HTTP Problem Types Registry, as specified in <xref target="registry" format="default"/>, and populate it with "about:blank" as per <xref target="blank" format="default"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="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="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <date month="January" year="2005"/>
            <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="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray">
              <organization/>
            </author>
            <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="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="Roy T. Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke">
              <organization>greenbytes GmbH</organization>
            </author>
            <date day="12" month="September" year="2021"/>
            <abstract>
              <t>   The Hypertext Transfer Protocol (HTTP) is a stateless application-
   level protocol for distributed, collaborative, hypertext information
   systems.  This document describes the overall architecture of HTTP,
   establishes common terminology, and defines aspects of the protocol
   that are shared by all versions.  In this definition are core
   protocol elements, extensibility mechanisms, and the "http" and
   "https" Uniform Resource Identifier (URI) schemes.

   This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="XML" target="https://www.w3.org/TR/2008/REC-xml-20081126">
          <front>
            <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
            <author fullname="Tim Bray" initials="T." surname="Bray">
              <organization/>
            </author>
            <author fullname="Jean Paoli" initials="J." surname="Paoli">
              <organization/>
            </author>
            <author fullname="Michael Sperberg-McQueen" initials="M." surname="Sperberg-McQueen">
              <organization/>
            </author>
            <author fullname="Eve Maler" initials="E." surname="Maler">
              <organization/>
            </author>
            <author fullname="FranÃ§ois Yergeau" initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date day="26" month="November" year="2008"/>
          </front>
          <seriesInfo name="World Wide Web Consortium Recommendation" value="REC-xml-20081126"/>
        </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">
              <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>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4918">
          <front>
            <title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</title>
            <author fullname="L. Dusseault" initials="L." role="editor" surname="Dusseault">
              <organization/>
            </author>
            <date month="June" year="2007"/>
            <abstract>
              <t>Web Distributed Authoring and Versioning (WebDAV) consists of 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, URL namespace manipulation, and resource locking (collision avoidance).</t>
              <t>RFC 2518 was published in February 1999, and this specification obsoletes RFC 2518 with minor revisions mostly due to interoperability experience.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4918"/>
          <seriesInfo name="DOI" value="10.17487/RFC4918"/>
        </reference>
        <reference anchor="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham">
              <organization/>
            </author>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</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>
        <reference anchor="RFC6694">
          <front>
            <title>The "about" URI Scheme</title>
            <author fullname="S. Moonesamy" initials="S." role="editor" surname="Moonesamy">
              <organization/>
            </author>
            <date month="August" year="2012"/>
            <abstract>
              <t>This document describes the "about" URI scheme, which is widely used by Web browsers and some other applications to designate access to their internal resources, such as settings, application information, hidden built-in functionality, and so on.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6694"/>
          <seriesInfo name="DOI" value="10.17487/RFC6694"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed">
              <organization/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization/>
            </author>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="ISO-19757-2">
          <front>
            <title>Information Technology -- Document Schema Definition Languages (DSDL) -- Part 2: Grammar-based Validation -- RELAX NG</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date year="2003"/>
          </front>
          <seriesInfo name="ISO/IEC" value="19757-2"/>
        </reference>
        <reference anchor="HTML5" target="https://html.spec.whatwg.org">
          <front>
            <title>HTML - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RDFA" target="https://www.w3.org/TR/2015/REC-rdfa-core-20150317">
          <front>
            <title>RDFa Core 1.1 - Third Edition</title>
            <author fullname="Ben Adida" initials="B." surname="Adida">
              <organization/>
            </author>
            <author fullname="Mark Birbeck" initials="M." surname="Birbeck">
              <organization/>
            </author>
            <author fullname="Shane McCarron" initials="S." surname="McCarron">
              <organization/>
            </author>
            <author fullname="Ivan Herman" initials="I." surname="Herman">
              <organization/>
            </author>
            <date day="17" month="March" year="2015"/>
          </front>
          <seriesInfo name="World Wide Web Consortium Recommendation" value="REC-rdfa-core-20150317"/>
        </reference>
        <reference anchor="XSLT" target="https://www.w3.org/TR/2010/REC-xml-stylesheet-20101028">
          <front>
            <title>Associating Style Sheets with XML documents 1.0 (Second Edition)</title>
            <author fullname="James Clark" initials="J." surname="Clark">
              <organization/>
            </author>
            <author fullname="Simon Pieters" initials="S." surname="Pieters">
              <organization/>
            </author>
            <author fullname="Henry Thompson" initials="H." surname="Thompson">
              <organization/>
            </author>
            <date day="28" month="October" year="2010"/>
          </front>
          <seriesInfo name="World Wide Web Consortium Recommendation" value="REC-xml-stylesheet-20101028"/>
        </reference>
        <reference anchor="RFC4151">
          <front>
            <title>The 'tag' URI Scheme</title>
            <author fullname="T. Kindberg" initials="T." surname="Kindberg">
              <organization/>
            </author>
            <author fullname="S. Hawke" initials="S." surname="Hawke">
              <organization/>
            </author>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document describes the "tag" Uniform Resource Identifier (URI) scheme.  Tag URIs (also known as "tags") are designed to be unique across space and time while being tractable to humans.  They are distinct from most other URIs in that they have no authoritative resolution mechanism.  A tag may be used purely as an entity identifier.  Furthermore, using tags has some advantages over the common practice of using "http" URIs as identifiers for non-HTTP-accessible resources.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4151"/>
          <seriesInfo name="DOI" value="10.17487/RFC4151"/>
        </reference>
        <reference anchor="I-D.draft-bhutton-json-schema-00">
          <front>
            <title>JSON Schema: A Media Type for Describing JSON Documents</title>
            <author fullname="Austin Wright" initials="A." surname="Wright">
         </author>
            <author fullname="Henry Andrews" initials="H." surname="Andrews">
         </author>
            <author fullname="Ben Hutton" initials="B." surname="Hutton">
         </author>
            <author fullname="Greg Dennis" initials="G." surname="Dennis">
         </author>
            <date day="8" month="December" year="2020"/>
            <abstract>
              <t>   JSON Schema defines the media type "application/schema+json", a JSON-
   based format for describing the structure of JSON data.  JSON Schema
   asserts what a JSON document must look like, ways to extract
   information from it, and how to interact with it.  The "application/
   schema-instance+json" media type provides additional feature-rich
   integration with "application/schema+json" beyond what can be offered
   for "application/json" documents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bhutton-json-schema-00"/>
        </reference>
      </references>
    </references>
    <section anchor="json-schema" numbered="true" toc="default">
      <name>JSON Schema for HTTP Problems</name>
      <t>This section presents a non-normative JSON Schema <xref target="I-D.draft-bhutton-json-schema-00" format="default"/> for HTTP Problem Details. If there is any disagreement between it and the text of the specification, the latter prevails.</t>
      <sourcecode type="json"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "A problem object RFC 7807bis",
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "format": "uri-reference",
      "description": "A URI reference RFC3986 that identifies the \
problem type."
    },
    "title": {
      "type": "string",
      "description": "A short, human-readable summary of the \
problem type. It SHOULD NOT change from occurrence to occurrence \
of the problem, except for purposes of localization (e.g., using \
proactive content negotiation; see RFC7231, Section 3.4)"
    },
    "status": {
      "type": "integer",
      "description": "The HTTP status code (RFC7231, Section 6) \
generated by the origin server for this occurrence of the problem.",
      "minimum": 100,
      "maximum": 599
    },
    "detail": {
      "type": "string",
      "description": "A human-readable explanation specific to \
this occurrence of the problem."
    },
    "instance": {
      "type": "string",
      "format": "uri-reference",
      "description": "A URI reference that identifies the \
specific occurrence of the problem. It may or may not yield \
further information if dereferenced."
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="xml-syntax" numbered="true" toc="default">
      <name>HTTP Problems and XML</name>
      <t>Some HTTP-based APIs use XML <xref target="XML" format="default"/> as their primary format convention. Such APIs can express problem details using the format defined in this appendix.</t>
      <t>The RELAX NG schema <xref target="ISO-19757-2" format="default"/> for the XML format is as follows. Keep in mind that this schema is only meant as documentation, and not as a normative schema that captures all constraints of the XML format. Also, it would be possible to use other XML schema languages to define a similar set of constraints (depending on the features of the chosen schema language).</t>
      <sourcecode type="relax-ng-compact-syntax"><![CDATA[
   default namespace ns = "urn:ietf:rfc:7807"

   start = problem

   problem =
     element problem {
       (  element  type            { xsd:anyURI }?
        & element  title           { xsd:string }?
        & element  detail          { xsd:string }?
        & element  status          { xsd:positiveInteger }?
        & element  instance        { xsd:anyURI }? ),
       anyNsElement
     }

   anyNsElement =
     (  element    ns:*  { anyNsElement | text }
      | attribute  *     { text })*
]]></sourcecode>
      <t>The media type for this format is "application/problem+xml".</t>
      <t>Extension arrays and objects are serialized into the XML format by considering an element containing a child or children to represent an object, except for elements that contain only child element(s) named 'i', which are considered arrays. For example, the example above appears in XML as follows:</t>
      <sourcecode type="http-message"><![CDATA[
HTTP/1.1 403 Forbidden
Content-Type: application/problem+xml
Content-Language: en

<?xml version="1.0" encoding="UTF-8"?>
<problem xmlns="urn:ietf:rfc:7807">
  <type>https://example.com/probs/out-of-credit</type>
  <title>You do not have enough credit.</title>
  <detail>Your current balance is 30, but that costs 50.</detail>
  <instance>https://example.net/account/12345/msgs/abc</instance>
  <balance>30</balance>
  <accounts>
    <i>https://example.net/account/12345</i>
    <i>https://example.net/account/67890</i>
  </accounts>
</problem>
]]></sourcecode>
      <t>Note that this format uses an XML namespace. This is primarily to allow embedding it into other XML-based formats; it does not imply that it can or should be extended with elements or attributes in other namespaces. The RELAX NG schema explicitly only allows elements from the one namespace used in the XML format. Any extension arrays and objects MUST be serialized into XML markup using only that namespace.</t>
      <t>When using the XML format, it is possible to embed an XML processing instruction in the XML that instructs clients to transform the XML, using the referenced XSLT code <xref target="XSLT" format="default"/>. If this code is transforming the XML into (X)HTML, then it is possible to serve the XML format, and yet have clients capable of performing the transformation display human-friendly (X)HTML that is rendered and displayed at the client. Note that when using this method, it is advisable to use XSLT 1.0 in order to maximize the number of clients capable of executing the XSLT code.</t>
    </section>
    <section anchor="using-problem-details-with-other-formats" numbered="true" toc="default">
      <name>Using Problem Details with Other Formats</name>
      <t>In some situations, it can be advantageous to embed problem details in formats other than those described here. For example, an API that uses HTML <xref target="HTML5" format="default"/> might want to also use HTML for expressing its problem details.</t>
      <t>Problem details can be embedded in other formats either by encapsulating one of the existing serializations (JSON or XML) into that format or by translating the model of a problem detail (as specified in <xref target="problem-json" format="default"/>) into the format's conventions.</t>
      <t>For example, in HTML, a problem could be embedded by encapsulating JSON in a script tag:</t>
      <sourcecode type="html"><![CDATA[
<script type="application/problem+json">
  {
   "type": "https://example.com/probs/out-of-credit",
   "title": "You do not have enough credit.",
   "detail": "Your current balance is 30, but that costs 50.",
   "instance": "/account/12345/msgs/abc",
   "balance": 30,
   "accounts": ["/account/12345",
                "/account/67890"]
  }
</script>
]]></sourcecode>
      <t>or by inventing a mapping into RDFa <xref target="RDFA" format="default"/>.</t>
      <t>This specification does not make specific recommendations regarding embedding problem details in other formats; the appropriate way to embed them depends both upon the format in use and application of that format.</t>
    </section>
    <section numbered="false" anchor="acknowledgements" toc="default">
      <name>Acknowledgements</name>
      <t>The authors would like to thank
Jan Algermissen,
Subbu Allamaraju,
Mike Amundsen,
Roy Fielding,
Eran Hammer,
Sam Johnston,
Mike McCall,
Julian Reschke, and
James Snell
for review of this specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
BnNT1Wth8rw3o/wGVjTtfpl11Ps/mxxglGNmAAA=

-->

</rfc>
