<?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-15" 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-15"/>
    <author initials="B." surname="Rosen" fullname="Brian Rosen">
      <organization/>
      <address>
        <email>br@brianrosen.net</email>
      </address>
    </author>
    <date year="2026" month="April" day="29"/>
    <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: 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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
AA==

-->

</rfc>
