<?xml version='1.0'?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
  ns="http://www.iana.org/assignments">

  <include href="../_support/iana-registry.rng"/>

  <start>
    <element name="registry">
      <ref name="registryMeta"/>
      
      
      <!-- access token types -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="name"><text/></element>
            <element name="additional"><ref name="text_with_references"/></element>
            <element name="http"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- endpoint -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="name"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- extensions-error -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="name"><text/></element>
            <element name="usage"><text/></element>
            <element name="protocol"><ref name="text_with_references"/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- parameters -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="name"><text/></element>
            <element name="usage"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
     <!-- token type hint -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="name"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- uri -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="urn"><text/></element>
            <element name="name"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- client metadata -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="description"><ref name="richText"/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- Token Endpoint Authentication Methods -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- PKCE Code Challenge Methods -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- OAuth Token Introspection Response -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="value"><text/></element>
            <element name="description"><ref name="richText"/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <!-- OAuth Authorization Server Metadata -->
      
      <element name="registry">
        <ref name="registryMeta"/>
        <zeroOrMore>
          <element name="record">
            <optional><attribute name="date"><ref name="genericDate"/></attribute></optional>
            <optional><attribute name="updated"><ref name="genericDate"/></attribute></optional>
            <element name="name"><text/></element>
            <element name="description"><ref name="richText"/></element>
            <element name="controller"><ref name="text_with_references"/></element>
            <ref name="references"/>
          </element>
        </zeroOrMore>
      </element>
      
      <ref name="people"/>
    </element>
  </start>

</grammar>
