<?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.36 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ecrit-lost-planned-changes-16" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.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-16"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2026" month="May" day="08"/>
    <area>ART</area>
    <workgroup>ecrit</workgroup>
    <abstract>
      <?line 25?>

<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 alternative to the RelaxNG schema in RFC5222.</t>
    </abstract>
  </front>
  <middle>
    <?line 29?>

<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 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 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".  A server <bcp14>SHOULD NOT</bcp14> include &lt;asOf&gt; in the result if &lt;asOf&gt; was not requested or if it otherwise used the current time to formulate 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"/>.  Future extensions to LoST are expected to use this schema as the base for the extensions, rather than the Relax NG schema.  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>
      <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-normative-references">
      <name>Normative References</name>
      <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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
