<?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-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ecrit-lost-planned-changes-18" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="LoST Planned Changes">Validation of Locations Around a Planned Change</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ecrit-lost-planned-changes-18"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2026" month="June" day="15"/>
    <area>ART</area>
    <workgroup>ecrit</workgroup>
    <abstract>
      <?line 53?>

<t>This document defines an extension to the Location to Service Translation (LoST) protocol (RFC5222) that allows  a LoST server to notify a client of planned changes to location data.  This extension is only useful with the validation function of LoST.  It is beneficial for LoST validation clients to be aware of planned changes, since at a known future date, previously valid records may become invalid, and new records may become valid.  This extension adds an element to the &lt;findService&gt; request to allow a LoST client to request validation as of a specified date.  It adds an optional Time-To-Live element to the response, which informs clients of the current expected lifetime of a validation.  It also adds a separate interface to a LoST server that allows a client to poll for planned changes.  Additionally, this document provides a conventional XML Schema for LoST, as a backwards compatible, non authoritative alternative to the RelaxNG schema in RFC5222.</t>
    </abstract>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Validation of civic locations involves dealing with data that may change over time.  A typical example is when a portion of a county or district that was not part of a municipality is "annexed" to a municipality.  Prior to the change, a Presence Information Data Format Location Object (PIDF-LO) <xref target="RFC5139"/> specifying a civic location in the affected area would have a blank A3 element, or would contain some other value; after the change, a PIDF-LO specifying the same location would contain an A3 element set to the name of the municipality that annexed that part of the county/district.  This kind of annexation has an effective date and time (typically 00:00 on the first or last day of a month), known in advance.  Other kinds of changes may also occur, and these will almost always also have an effective date that is known in advance.</t>
      <t>Records in a LoST client such as a Location Information Server (LIS) must change around these kinds of events.  Each affected old record must be discarded, and a new, validated record must be loaded into the client's database.  It is often difficult for a LIS operator to know that records must be changed around such events.  There are other circumstances where locations that were previously valid become invalid, such as a street renaming or renumbering event.  Using <xref target="RFC5222"/> validation, the only way for a LoST client such as a LIS to discover such changes is to periodically revalidate its entire database.  Of course, this does not facilitate timely changes, is not coordinated with the actual change event, and also adds significant load to LoST servers as well as LoST clients such as LISs.  Even when re-validation is used, a server has no mechanism to control, or suggest the time period for revalidation.</t>
      <t>This extension allows a LoST client to obtain from a LoST server sets of locations which may change.  It makes use of "partial location information" which is a set of location elements and values that, when compared against client location records, identify which of the client records may change as a result of the planned change.  A set of such partial locations is termed a "ChangeSet". ChangeSets have an ID, and a date when the change is effective.  IDs are ordered so that changes can be completed in the correct order.  The planned change interface is a REST/JSON interface that allows a client to poll a server using the last ID that it obtained from that server.  The response to a poll is a list of all the newer planned changes the server knows about beyond the ChangeSet whose ID was included in the poll.  The ID of the last ChangeSet in the returned list is used by the client in its next poll.</t>
      <t>When a LoST client such as a LIS receives a new ChangeSet, it may prepare one or more new records so that, at the precise planned event date and time, it may insert the new records into its active database and delete the old records.  As part of preparing the new records in advance of the change, a client may use the "asOf" date component of this extension to perform a LoST validation of the new record as of the effective date.</t>
      <t>The "asOf" date component of this extension  allow a LoST client such as a LIS to be prepared for and smoothly transition to planned changes.  The polling mechanism allows a client to be informed of planned changes, while the "asOf" date allows it to verify the validity of locations before they become active.</t>
      <t>Unplanned changes will occur, and periodic revalidation can still be used to maintain the data in the client's records.  However, LoST servers should be able to influence the rate of such revalidation.  For this purpose, this extension adds an optional "expires" element to the &lt;findServiceResponse&gt; to provide advice from a server to a client as to when revalidation is suggested. In a &lt;findServiceResponse&gt;, a LoST server may include the "expires" element to expressly state when the location should be re-validated. This avoids clients blindly revalidating every address on an arbitrary schedule.</t>
      <t>There are quite a few implementations of LoST.  Experience with these implementations indicates that the RelaxNG schema is very difficult to deal with, both because many commonly used development tools don't support it, and development staff is often unfamiliar with it.  Informal alternative schemas have been circulated, which is undesirable as they may not be in conformance with the RelaxNG schema in <xref target="RFC5222"/>.  This document provides an XML Schema <xref target="W3C.XSD10-1"/> and <xref target="W3C.XSD10-2"/> that replaces the RelaxNG schema.  It can be used by any implementation interchangeably with the RelaxNG schema.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions used in this document</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

<t>"Server" in this document refers to a LoST server and "Client" is a LoST client.</t>
    </section>
    <section anchor="planned-change-poll-interface">
      <name>Planned Change Poll Interface</name>
      <t>This document defines a new interface to a LoST server.  The interface has three endpoints:</t>
      <ol spacing="normal" type="1"><li>
          <t>Versions, which returns the current version(s) the interface supports.  This allows the interface to evolve over time.</t>
        </li>
        <li>
          <t>PlannedChangePoll, which supports a polling mechanism.  The poll returns a list of changeSetIds which identify ChangeSet objects.</t>
        </li>
        <li>
          <t>GetChangeSet, which accepts a changeSetId and returns the identified ChangeSet object.</t>
        </li>
      </ol>
      <t>A ChangeSet object contains an identifier (changeSetId), a date (changeSetEffective) and an array of partial locations.</t>
      <t>A partial location is an array of location information element namespace/name and value pairs.  A LoST client (such as a LIS) compares the location elements with its records.  For each of the client's records where all of the location elements provided in the partial location have the same values as those in the partial location, that client record may be affected by the planned change.  The client's records may have other location elements, but those are not considered in the comparison.  So, for example, a partial location may have Country, A1, A2, A3 and A4 location elements, which means that any address with those Country, A1, A2, A3 and A4 values may be affected by the planned change, regardless of street name and number.  As another example, a partial location with Country, A1, A2, A3, A4, RD and POD but not HN applies to any address number on the specified street.</t>
      <t>Servers supporting this extension maintain an ordered list of changeSetIds.  A changeSetId is a string, which might not show the ordering.  For example, the ID could be a hashed timestamp, or a hashed sequence number, among other things.  Given a changeSetId returned in a prior poll, a server can identify which ChangeSets it has that come next, in order, after the specified changeSetId.  The effective date of a ChangeSet returned by a server need not be in the future.  Tardy clients might not keep up.  On the other hand, a server is not obligated to keep ChangeSets whose changeSetEffective date has passed by more than some arbitrary time.  A 12 month time period may be appropriate for a server whose service area doesn't have many changes, while a three month time period may be needed in a service area with frequent changes. A tardy client in a fast-changing environment might receive a large number of ChangeSetIds in response to a poll.</t>
      <t>Polls are expected every few minutes.  A new client (or one that has lost its last changeSetID) performs a poll without specifying an ID, and the server responds with all the changeSetsIds that it knows about.  Thereafter, the client retains the last changeSetId from its most recent poll and uses that in the next poll.  If the response to that poll contains no changeSetIds, it means the changeSetId the client has is the latest change the server knows about; the client uses the same changeSetId in subsequent polls until the server returns a new changeSetId.</t>
      <t>The version mechanism returns a list of versions of the web service the server supports.  This document specifies version 1.0. Versions are described as a major version and a minor version, where major and minor versions are integers, and a version description is a string consisting of the major version, a dot, and the minor version.  A backwards-compatible change within a major version <bcp14>MAY</bcp14> increment only the minor version number.  A non-backwards-compatible change <bcp14>MUST</bcp14> increment the major version number.  To achieve backwards compatibility, implementations <bcp14>MUST</bcp14> ignore any object members they do not recognize.  Minor version specifications <bcp14>SHALL</bcp14> only add objects, non-required members of existing objects, and non-mandatory-to-use functions and <bcp14>SHALL NOT</bcp14> delete any objects, members of objects or functions.  This means an implementation of a specific major version and minor version is backwards compatible with all minor versions of the major version.  The versions mechanism returns an array of supported versions, one for each major version supported, with the minor version listed being the highest supported minor version.  When versions are written or used as a string, the major version is first and separated from the minor version with a period.  For example major version 3, minor version 2 is written as "3.2".</t>
      <t>The normative definition of the web interface for these endpoints is contained in <xref target="pollInterface"/></t>
      <t>Discovering the Planned Change Poll interface uses the "lost+plannedChange" application tag with U-NAPTR <xref target="RFC4848"/> using the name (application unique string) of the LoST server that provided validation as input along with this new service tag. Similarly to LoST, valid protocol tags for use in combination with "lost+plannedChange" are "http" and "https". The U-NAPTR responds with the base URI of the interface and the client must use the value to replace "localhost" in the yaml in <xref target="pollInterface"/>.</t>
    </section>
    <section anchor="ltasofgt-element">
      <name>&lt;asOf&gt; Element</name>
      <t>This document defines a new element in the &lt;findService&gt; request and &lt;findServiceRespponse&gt; called &lt;asOf&gt;, which contains a date and time in dateTime format with a required timezone.  A server supporting this extension validates the location in the request as of the date and time specified, taking into account planned changes.  This allows a client to verify in advance that it can make changes in its records in accordance with changes at the LoST server.</t>
      <t>A server responds with what it knows (as of the moment of the request) will be in effect on or before the &lt;asOf&gt; date</t>
      <t>The LoST server is not expected to retain a history of changes.  Therefore, an &lt;asOf&gt; date in the past will return the same results as omitting it (meaning current data).  There are no constraints on how far in advance planned changes may occur, and changes to the data may occur at any time.  Therefore, two queries with the same future &lt;asOf&gt; value placed at different times can return different results.  The server responds with its current understanding of planned changes (including any planned or unplanned changes that have already occurred) and makes no guarantees about future queries of the same location.</t>
      <t>When a server responds with a result &lt;asOf&gt; a time other than the time of the query, the &lt;findServiceResponse&gt; <bcp14>MUST</bcp14> include &lt;asOf&gt; containing the time used and each &lt;mapping&gt; included <bcp14>MUST</bcp14> have the 'expires' attribute set to "NO-CACHE".  If &lt;asOf&gt; is not specified in the request it <bcp14>MUST NOT</bcp14> be specified in the response.  A client receiving a response containing &lt;asOf&gt; <bcp14>MUST NOT</bcp14> assume that any mappings returned will remain unchanged and be in effect in the future; a client wishing to contact a service is still expected to use LoST contemporaneously with that need.</t>
    </section>
    <section anchor="ltrevalidateaftergt-in-response">
      <name>&lt;revalidateAfter&gt; in Response</name>
      <t>This extension defines a new element &lt;revalidateAfter&gt; to be added to the extension point of the &lt;locationValidation&gt; element appearing in a &lt;findServiceResponse&gt;. The element contains a date and time after which the client may wish to revalidate the location with the server. Alternatively, the element may contain the value "NO-EXPIRATION" which is an assertion that the server is not currently aware of any planned changes that would affect the future validation result, but makes no suggestion as to when the client should revalidate.  A server <bcp14>MAY</bcp14> add this element to a response when validation is requested. A server is not expected to add this element when the client is asking for validation &lt;asOf&gt; a specified time significantly into the future.</t>
      <t>Selecting a revalidation interval is a complex balancing of timeliness, server load, stability of the underlying data, and policy at the LoST server.  Too short, and load on the server may be undesirably large.  Too long, and invalid data may persist in clients for unacceptable lengths of time.  The polling mechanism provides timely notice to synchronize changes, but even with it, it is advisable for clients to periodically revalidate their records.
In areas that have little change in data, such as fully built out, stable communities already part of a municipality, it may be reasonable to set revalidation periods of six months or longer.  In areas that are quickly growing, 20-30 day revalidation may be more appropriate, even though these revalidations might be a majority of the traffic at the LoST server.</t>
    </section>
    <section anchor="schema">
      <name>Replacement XML schema</name>
      <t>======================</t>
      <t>This schema is an alternative to The Relax NG schema in <xref target="RFC5222"/>.  This schema is believed to be equivalent to the RelaxNG schema, but the RelaxNG schema remains authoritative for LoST.  Accordingly, this schema is not registered in the IANA xml-schema or namespace registries, and any subsequently discovered discrepancies would be treated as errors in this schema.  Future extensions to LoST are requested to use this schema as the base for the extensions, rather than the Relax NG schema but RelaxNG extensions would still be valid per <xref target="RFC5222"/>.  Existing extensions described using the Relax NG schema continue to be valid.</t>
      <sourcecode type="XML"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="urn:ietf:params:xml:ns:lost1"
           targetNamespace="urn:ietf:params:xml:ns:lost1"
           elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" />

  <xs:element name="findService">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="requestLocation"/>
        <xs:group ref="commonRequestPattern"/>
      </xs:sequence>
      <xs:attribute name="validateLocation" type="xs:boolean" 
          default="false" />
      <xs:attribute name="serviceBoundary" default="reference">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="reference"/>
            <xs:enumeration value="value"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="recursive" type="xs:boolean" 
           default="false"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServices">
    <xs:complexType>
      <xs:group ref="commonRequestPattern"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServicesByLocation">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="requestLocation"/>
        <xs:group ref="commonRequestPattern"/>
      </xs:sequence>
      <xs:attribute name="recursive" type="xs:boolean" 
         default="true" />
    </xs:complexType>
  </xs:element>

  <xs:element name="getServiceBoundary">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="serviceBoundaryKey"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="findServiceResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="mapping" maxOccurs="unbounded"/>
        <xs:element ref="locationValidation" minOccurs="0"/>
        <xs:group ref="commonResponsePattern"/>
        <xs:group ref="locationUsed"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServicesResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="serviceList"/>
        <xs:group ref="commonResponsePattern"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="listServicesByLocationResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="serviceList"/>
        <xs:group ref="commonResponsePattern"/>
        <xs:group ref="locationUsed"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="getServiceBoundaryResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="serviceBoundary"/>
        <xs:group ref="commonResponsePattern"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:group name="commonRequestPattern">
    <xs:sequence>
      <xs:group ref="service"/>
      <xs:element ref="path" minOccurs="0"/>
      <xs:group ref="extensionPoint"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="commonResponsePattern">
    <xs:sequence>
      <xs:element ref="warnings" minOccurs="0"
        maxOccurs="unbounded"/>
      <xs:element ref="path"/>
      <xs:group ref="extensionPoint"/>
    </xs:sequence>
  </xs:group>

  <xs:group name="requestLocation">
    <xs:sequence>
      <xs:element ref="location" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="location">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="locationInformation">
          <xs:attribute name="id" type="xs:token" 
              use="required"/>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="locationInformation">
    <xs:group ref="extensionPoint" maxOccurs="unbounded"/>
    <xs:attribute name="profile" type="xs:NMTOKEN"/>
  </xs:complexType>

  <xs:group name="serviceBoundary">
    <xs:sequence>
      <xs:element ref="serviceBoundary" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="serviceBoundary" type="locationInformation"/>

  <xs:element name="serviceBoundaryReference">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="source"/>
      <xs:attributeGroup ref="serviceBoundaryKey"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="serviceBoundaryKey">
    <xs:attribute name="key" type="xs:token" use="required"/>
  </xs:attributeGroup>

  <xs:element name="path">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="via" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="via">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attributeGroup ref="source"/>
    </xs:complexType>
  </xs:element>

  <xs:group name="locationUsed">
    <xs:sequence>
      <xs:element ref="locationUsed" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="locationUsed">
    <xs:complexType>
      <xs:attribute name="id" type="xs:token" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="expires">
    <xs:attribute name="expires" use="required">
      <xs:simpleType>
        <xs:union memberTypes="xs:dateTime">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="NO-CACHE"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="NO-EXPIRATION"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:simpleType name="qnameList">
    <xs:list itemType="xs:QName"/>
  </xs:simpleType>

  <xs:element name="mapping">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="displayName"
             minOccurs="0" maxOccurs="unbounded"/>
        <xs:group ref="service"/>
        <xs:choice minOccurs="0">
          <xs:group ref="serviceBoundary"/>
          <xs:element ref="serviceBoundaryReference"/>
        </xs:choice>
        <xs:element ref="uri"
             minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="serviceNumber" minOccurs="0"/>
        <xs:group ref="extensionPoint"/>
      </xs:sequence>
      <xs:attributeGroup ref="expires"/>
      <xs:attribute name="lastUpdated" type="xs:dateTime"
            use="required"/>
      <xs:attributeGroup ref="source"/>
      <xs:attribute name="sourceId" type="xs:token"
            use="required"/>
      <xs:attributeGroup ref="message"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="displayName">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute ref="xml:lang" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name="uri" type="xs:anyURI"/>

  <xs:element name="serviceNumber">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:pattern value="[0-9*#]+"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

  <xs:element name="locationValidation">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="valid" minOccurs="0"/>
        <xs:element ref="invalid" minOccurs="0"/>
        <xs:element ref="unchecked" minOccurs="0"/>
        <xs:group ref="extensionPoint"/>
     </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="valid" type="qnameList"/>

  <xs:element name="invalid" type="qnameList"/>

  <xs:element name="unchecked" type="qnameList"/>

  <xs:complexType name="exceptionContainer">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="badRequest"/>
        <xs:element ref="internalError"/>
        <xs:element ref="serviceSubstitution"/>
        <xs:element ref="defaultMappingReturned"/>
        <xs:element ref="forbidden"/>
        <xs:element ref="notFound"/>
        <xs:element ref="loop"/>
        <xs:element ref="serviceNotImplemented"/>
        <xs:element ref="serverTimeout"/>
        <xs:element ref="serverError"/>
        <xs:element ref="SRSInvalid"/>
        <xs:element ref="locationInvalid"/>
        <xs:element ref="locationProfileUnrecognized"/>
      </xs:choice>
      <xs:group ref="extensionPoint"/>
    </xs:sequence>
    <xs:attributeGroup ref="source"/>
  </xs:complexType>

  <xs:element name="errors" type="exceptionContainer"/>

  <xs:element name="warnings" type="exceptionContainer"/>

  <xs:complexType name="basicException">
    <xs:annotation>
      <xs:documentation>
        Exception pattern.
      </xs:documentation>
    </xs:annotation>
    <xs:group ref="extensionPoint"/>
    <xs:attributeGroup ref="message"/>
  </xs:complexType>

  <xs:element name="badRequest" type="basicException"/>

  <xs:element name="internalError" type="basicException"/>

  <xs:element name="serviceSubstitution" type="basicException"/>

  <xs:element name="defaultMappingReturned" type="basicException"/>

  <xs:element name="forbidden" type="basicException"/>

  <xs:element name="notFound" type="basicException"/>

  <xs:element name="loop" type="basicException"/>

  <xs:element name="serviceNotImplemented" type="basicException"/>

  <xs:element name="serverTimeout" type="basicException"/>

  <xs:element name="serverError" type="basicException"/>

  <xs:element name="SRSInvalid" type="basicException"/>

  <xs:element name="locationInvalid" type="basicException"/>

  <xs:element name="locationValidationUnavailable"
          type="basicException"/>

  <xs:element name="locationProfileUnrecognized"
          type="basicException"/>
  <xs:element name="redirect">
    <xs:complexType>
      <xs:group ref="extensionPoint"/>
      <xs:attribute name="target" type="appUniqueString"
          use="required"/>
      <xs:attributeGroup ref="source"/>
      <xs:attributeGroup ref="message"/>
    </xs:complexType>
  </xs:element>

  <xs:attributeGroup name="message">
    <xs:attribute name="message" type="xs:token"/>
    <xs:attribute ref="xml:lang"/>
  </xs:attributeGroup>

  <xs:group name="service">
    <xs:sequence>
      <xs:element ref="service" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:element name="service" type="xs:anyURI"/>

  <xs:simpleType name="appUniqueString">
    <xs:restriction base="xs:token">
      <xs:pattern value="([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]+"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:attributeGroup name="source">
    <xs:attribute name="source" type="appUniqueString"
    use="required"/>
  </xs:attributeGroup>

  <xs:element name="serviceList">
    <xs:simpleType>
      <xs:list itemType="xs:anyURI"/>
    </xs:simpleType>
  </xs:element>

  <xs:group name="notLost">
    <xs:annotation>
      <xs:documentation>
        Any element not in the LoST namespace.
      </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:any namespace="##other" processContents="skip"/>
      <xs:any namespace="##local" processContents="skip"/>
    </xs:choice>
  </xs:group>

  <xs:group name="extensionPoint">
    <xs:annotation>
      <xs:documentation>
        A point where future extensions
        (elements from other namespaces)
        can be added.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:group ref="notLost"
           minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:group>

</xs:schema>

]]></sourcecode>
    </section>
    <section anchor="extSchema">
      <name>Extension XML Schema</name>
      <t>This schema provides the extension to the prior section schema for planned changes:</t>
      <sourcecode type="XML"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="urn:ietf:params:xml:ns:lostPlannedChange1"
    elementFormDefault="qualified">

<!-- extend the extensionPoint of commonRequestPattern of findService
                            and findServiceResponse to include:  -->
      <xs:element name="asOf" type="xs:dateTime" />

<!-- extend the extensionPoint of locationValidation to include: -->
      <xs:element name="revalidateAfter">
        <xs:simpleType>
          <xs:union memberTypes="xs:dateTime">
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="NO-EXPIRATION"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
</xs:schema>
]]></sourcecode>
    </section>
    <section anchor="pollInterface">
      <name>plannedChangePoll Interface Description</name>
      <t>====================</t>
      <t>This definition of the plannedChangePoll interface uses the OpenAPI 3.0.1 format, as defined in <xref target="OpenAPI"/></t>
      <sourcecode type="JSON"><![CDATA[
openapi: 3.0.1
info:
  title: LoST plannedChange
  version: "1.0"

servers:
  - url: "{baseUri}/LoST/v1"
    variables:
      baseUri:
        default: https://localhost
        description: The base URI that is the output of 
          U-NAPTR resolution

paths:
  /PlannedChangePoll:
    get:
      summary: Get a list of planned changeSetIds
      operationId: getPlannedChangeIds
      responses:
        "200":
          description: Planned Changes
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/PlannedChangeIdList"

  /GetChangeSet:
    get:
      summary: Get a ChangeSet
      operationId: getChangeSet
      parameters:
        - in: query
          name: changeSetId
          schema:
            type: string
          description: ID of a ChangeSet
      responses:
        "200":
          description: return ChangeSet object
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/ChangeSet"

  /Versions:
    servers:
      - url: "{baseUri}/LoST"
        variables:
          baseUri:
            default: https://localhost
            description: The base URI that is the output of 
              U-NAPTR resolution
    get:
      summary: Retrieves all supported versions
      operationId: RetrieveVersions
      responses:
        "200":
          description: Versions supported
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/VersionsArray"

components:
  schemas:
    PlannedChangeIdList:
      type: array
      items:
        type: string

    ChangeSet:
      type: object
      properties:
        changeSetId:
          type: string
          description: ID of the ChangeSet
        changeSetEffective:
          type: string
          format: date-time
          description: date and time change will come into effect in 
            dateTime format with a required timezone
        partialLocationList:
          type: array
          items:
            type: object
            properties:
              namespace:
                type: string
                description: namespace of CAType name from IANA 
                  registry
              caType:
                type: string
                description: CAType name from IANA registry
              value:
                type: string
                description: value for this caType

    VersionsArray:
      type: object
      required:
        - versions
      properties:
        versions:
          type: array
          items:
            type: object
            required:
              - major
              - minor
            properties:
              major:
                type: integer
                format: int32
                description: Version major number
              minor:
                type: integer
                format: int32
                description: Version minor number
]]></sourcecode>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>As an extension to LoST, this document inherits the security issues raised in <xref target="RFC5222"/>.  Clients could poll at a rate which could affect other processing at the LoST server. This is not unlike any other type of denial of service attack at an HTTP server and similar mitigations are necessary.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="application-service-tag">
        <name>Application Service Tag</name>
        <t>This document registers the following U-NAPTR application service
   tag:</t>
        <artwork><![CDATA[
  Application Service Tag:  LoST-PlannedChange

  Defining Publication:  The specification contained within this
     document.
]]></artwork>
      </section>
      <section anchor="lost-xml-schema-registration">
        <name>LoST XML Schema Registration</name>
        <t>IANA is requested to add this document to the list of references for the lost1 entry in the schema subregistry of the IETF XML Registry</t>
      </section>
      <section anchor="planned-change-extension-xml-schema-registration">
        <name>Planned Change Extension XML Schema Registration</name>
        <artwork><![CDATA[
   BEGIN
   <?xml version="2.0"?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
     "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type"
           content="text/html;charset=iso-8859-1"/>
     <title>LoST Planned Change Namespace</title>
   </head>
   <body>
     <h1>Namespace for LoST Planned Changes</h1>
     <h2>urn:ietf:params:xml:ns:lostPlannedChange1</h2>
   <p>See <a href="http://www.rfc-editor.org/rfc/rfc????.txt">
      RFC????</a>.</p>
   </body>
   </html>
   END

]]></artwork>
        <t>The XML Schema is found in <xref target="extSchema"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4848">
          <front>
            <title>Domain-Based Application Service Location Using URIs and the Dynamic Delegation Discovery Service (DDDS)</title>
            <author fullname="L. Daigle" initials="L." surname="Daigle"/>
            <date month="April" year="2007"/>
            <abstract>
              <t>The purpose of this document is to define a new, straightforward Dynamic Delegation Discovery Service (DDDS) application to allow mapping of domain names to URIs for particular application services and protocols. Although defined as a new DDDS application, dubbed U-NAPTR, this is effectively an extension of the Straightforward NAPTR (S-NAPTR) DDDS Application. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4848"/>
          <seriesInfo name="DOI" value="10.17487/RFC4848"/>
        </reference>
        <reference anchor="RFC5139">
          <front>
            <title>Revised Civic Location Format for Presence Information Data Format Location Object (PIDF-LO)</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="J. Winterbottom" initials="J." surname="Winterbottom"/>
            <date month="February" year="2008"/>
            <abstract>
              <t>This document defines an XML format for the representation of civic location. This format is designed for use with Presence Information Data Format Location Object (PIDF-LO) documents and replaces the civic location format in RFC 4119. The format is based on the civic address definition in PIDF-LO, but adds several new elements based on the civic types defined for Dynamic Host Configuration Protocol (DHCP), and adds a hierarchy to address complex road identity schemes. The format also includes support for the xml:lang language tag and restricts the types of elements where appropriate. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5139"/>
          <seriesInfo name="DOI" value="10.17487/RFC5139"/>
        </reference>
        <reference anchor="RFC5222">
          <front>
            <title>LoST: A Location-to-Service Translation Protocol</title>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <author fullname="A. Newton" initials="A." surname="Newton"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document describes an XML-based protocol for mapping service identifiers and geodetic or civic location information to service contact URIs. In particular, it can be used to determine the location-appropriate Public Safety Answering Point (PSAP) for emergency services. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5222"/>
          <seriesInfo name="DOI" value="10.17487/RFC5222"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OpenAPI" target="https://github.com">
          <front>
            <title>OpenAPI Specification v3.0.1</title>
            <author>
              <organization>OpenAPI Initiative</organization>
            </author>
            <date year="2017" month="December"/>
          </front>
        </reference>
        <reference anchor="W3C.XSD10-1" target="https://w3.org">
          <front>
            <title>XML Schema Part 1: Structures Second Edition</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date year="2004" month="October"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
        <reference anchor="W3C.XSD10-2" target="https://w3.org">
          <front>
            <title>XML Schema Part 2: Datatypes Second Edition</title>
            <author>
              <organization>World Wide Web Consortium</organization>
            </author>
            <date year="2004" month="October"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
