<?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.35 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ecrit-lost-planned-changes-14" 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-14"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2026" month="April" day="22"/>
    <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" use="required"/>
  </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">
      <xs:complexType>
        <xs:complexContent>
          <xs:extension base="basicException">
            <xs:attribute name="unsupportedProfiles" type="xs:NMTOKENS" use="required"/>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
    </xs:element>

  <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/json:
                      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/json:
                      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/json:
                      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: datetime
                  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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
3dK9/wNkUqO4u4MAAA==

-->

</rfc>
