< draft-ietf-tzdist-service-09.txt   draft-ietf-tzdist-service-10.txt >
Network Working Group M. Douglass Network Working Group M. Douglass
Internet-Draft Spherical Cow Group Internet-Draft Spherical Cow Group
Intended status: Standards Track C. Daboo Intended status: Standards Track C. Daboo
Expires: December 31, 2015 Apple Expires: January 23, 2016 Apple
June 29, 2015 July 22, 2015
Time Zone Data Distribution Service Time Zone Data Distribution Service
draft-ietf-tzdist-service-09 draft-ietf-tzdist-service-10
Abstract Abstract
This document defines a time zone data distribution service that This document defines a time zone data distribution service that
allows reliable, secure and fast delivery of time zone data and leap allows reliable, secure and fast delivery of time zone data and leap
second rules to client systems such as calendaring and scheduling second rules to client systems such as calendaring and scheduling
applications or operating systems. applications or operating systems.
Status of This Memo Status of This Memo
skipping to change at page 1, line 34 skipping to change at page 1, line 34
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 31, 2015. This Internet-Draft will expire on January 23, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 35 skipping to change at page 2, line 35
4.1.3. Time Zone Localization . . . . . . . . . . . . . . . 12 4.1.3. Time Zone Localization . . . . . . . . . . . . . . . 12
4.1.4. Conditional Time Zone Requests . . . . . . . . . . . 12 4.1.4. Conditional Time Zone Requests . . . . . . . . . . . 12
4.1.5. Expanded Time Zone Data . . . . . . . . . . . . . . . 14 4.1.5. Expanded Time Zone Data . . . . . . . . . . . . . . . 14
4.1.6. Server Requirements . . . . . . . . . . . . . . . . . 14 4.1.6. Server Requirements . . . . . . . . . . . . . . . . . 14
4.1.7. Error Responses . . . . . . . . . . . . . . . . . . . 14 4.1.7. Error Responses . . . . . . . . . . . . . . . . . . . 14
4.1.8. Extensions . . . . . . . . . . . . . . . . . . . . . 14 4.1.8. Extensions . . . . . . . . . . . . . . . . . . . . . 14
4.2. Client Guidelines . . . . . . . . . . . . . . . . . . . . 14 4.2. Client Guidelines . . . . . . . . . . . . . . . . . . . . 14
4.2.1. Discovery . . . . . . . . . . . . . . . . . . . . . . 14 4.2.1. Discovery . . . . . . . . . . . . . . . . . . . . . . 14
4.2.1.1. Time Zone Data Distribution Service SRV Service 4.2.1.1. Time Zone Data Distribution Service SRV Service
Labels . . . . . . . . . . . . . . . . . . . . . 15 Labels . . . . . . . . . . . . . . . . . . . . . 15
4.2.1.2. Time Zone Data Distribution Service TXT records . 15 4.2.1.2. Time Zone Data Distribution Service TXT Records . 15
4.2.1.3. Time Zone Data Distribution Service Well-Known 4.2.1.3. Time Zone Data Distribution Service Well-Known
URI . . . . . . . . . . . . . . . . . . . . . . . 16 URI . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.1.3.1. Example: well-known URI redirects to actual 4.2.1.3.1. Example: well-known URI redirects to actual
context path . . . . . . . . . . . . . . . . 17 context path . . . . . . . . . . . . . . . . 17
4.2.2. Synchronization of Time Zones . . . . . . . . . . . . 17 4.2.2. Synchronization of Time Zones . . . . . . . . . . . . 17
4.2.2.1. Initial Synchronization of All Time Zones . . . . 17 4.2.2.1. Initial Synchronization of All Time Zones . . . . 17
4.2.2.2. Subsequent Synchronization of All Time Zones . . 17 4.2.2.2. Subsequent Synchronization of All Time Zones . . 17
4.2.2.3. Synchronization with Pre-Existing Time Zone Data 18 4.2.2.3. Synchronization with Pre-Existing Time Zone Data 18
5. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5. Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.1. "capabilities" Action . . . . . . . . . . . . . . . . . . 18 5.1. "capabilities" Action . . . . . . . . . . . . . . . . . . 18
5.1.1. Example: Get Capabilities . . . . . . . . . . . . . . 19 5.1.1. Example: get capabilities . . . . . . . . . . . . . . 19
5.2. "list" Action . . . . . . . . . . . . . . . . . . . . . . 21 5.2. "list" Action . . . . . . . . . . . . . . . . . . . . . . 21
5.2.1. Example: List time zone identifiers . . . . . . . . . 22 5.2.1. Example: list time zone identifiers . . . . . . . . . 22
5.3. "get" Action . . . . . . . . . . . . . . . . . . . . . . 23 5.3. "get" Action . . . . . . . . . . . . . . . . . . . . . . 23
5.3.1. Example: Get time zone data . . . . . . . . . . . . . 24 5.3.1. Example: get time zone data . . . . . . . . . . . . . 24
5.3.2. Example: Conditional Get time zone data . . . . . . . 24 5.3.2. Example: conditional get time zone data . . . . . . . 24
5.3.3. Example: Get time zone data using a time zone alias . 25 5.3.3. Example: get time zone data using a time zone alias . 25
5.3.4. Example: Get truncated time zone data . . . . . . . . 26 5.3.4. Example: get truncated time zone data . . . . . . . . 26
5.3.5. Example: Request for a non-existent time zone . . . . 27 5.3.5. Example: request for a non-existent time zone . . . . 27
5.4. "expand" Action . . . . . . . . . . . . . . . . . . . . . 28 5.4. "expand" Action . . . . . . . . . . . . . . . . . . . . . 28
5.4.1. Example: Expanded JSON Data Format . . . . . . . . . 29 5.4.1. Example: expanded JSON data format . . . . . . . . . 29
5.5. "find" Action . . . . . . . . . . . . . . . . . . . . . . 30 5.5. "find" Action . . . . . . . . . . . . . . . . . . . . . . 30
5.5.1. Example: Find action . . . . . . . . . . . . . . . . 32 5.5.1. Example: find action . . . . . . . . . . . . . . . . 32
5.6. "leapseconds" Action . . . . . . . . . . . . . . . . . . 34 5.6. "leapseconds" Action . . . . . . . . . . . . . . . . . . 34
5.6.1. Example: Get leapsecond information . . . . . . . . . 34 5.6.1. Example: get leapsecond information . . . . . . . . . 34
6. JSON Definitions . . . . . . . . . . . . . . . . . . . . . . 35 6. JSON Definitions . . . . . . . . . . . . . . . . . . . . . . 35
6.1. capabilities action response . . . . . . . . . . . . . . 36 6.1. capabilities Action Response . . . . . . . . . . . . . . 36
6.2. list/find action response . . . . . . . . . . . . . . . . 39 6.2. list/find Action Response . . . . . . . . . . . . . . . . 39
6.3. expand action response . . . . . . . . . . . . . . . . . 40 6.3. expand Action Response . . . . . . . . . . . . . . . . . 40
6.4. leapseconds action response . . . . . . . . . . . . . . . 42 6.4. leapseconds Action Response . . . . . . . . . . . . . . . 42
7. New iCalendar Properties . . . . . . . . . . . . . . . . . . 42 7. New iCalendar Properties . . . . . . . . . . . . . . . . . . 42
7.1. Time Zone Upper Bound . . . . . . . . . . . . . . . . . . 42 7.1. Time Zone Upper Bound . . . . . . . . . . . . . . . . . . 42
7.2. Time Zone Identifier Alias Property . . . . . . . . . . . 43 7.2. Time Zone Identifier Alias Property . . . . . . . . . . . 43
8. Security Considerations . . . . . . . . . . . . . . . . . . . 44 8. Security Considerations . . . . . . . . . . . . . . . . . . . 44
9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 45 9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 45
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47
10.1. Service Actions Registration . . . . . . . . . . . . . . 47 10.1. Service Actions Registration . . . . . . . . . . . . . . 47
10.1.1. Service Actions Registration Procedure . . . . . . . 47 10.1.1. Service Actions Registration Procedure . . . . . . . 47
10.1.2. Registration Template for Actions . . . . . . . . . 48 10.1.2. Registration Template for Actions . . . . . . . . . 48
10.1.3. Actions Registry . . . . . . . . . . . . . . . . . . 49 10.1.3. Actions Registry . . . . . . . . . . . . . . . . . . 49
10.2. timezone Well-Known URI Registration . . . . . . . . . . 49 10.2. timezone Well-Known URI Registration . . . . . . . . . . 49
10.3. Service Name Registrations . . . . . . . . . . . . . . . 49 10.3. Service Name Registrations . . . . . . . . . . . . . . . 49
10.3.1. timezone Service Name Registration . . . . . . . . . 50 10.3.1. timezone Service Name Registration . . . . . . . . . 50
10.3.2. timezones Service Name Registration . . . . . . . . 50 10.3.2. timezones Service Name Registration . . . . . . . . 50
10.4. tzdist Identifiers Registry . . . . . . . . . . . . . . 50 10.4. tzdist Identifiers Registry . . . . . . . . . . . . . . 50
10.4.1. Registration of invalid-action error URN . . . . . . 51 10.4.1. Registration of invalid-action Error URN . . . . . . 51
10.4.2. Registration of invalid-changedsince error URN . . . 51 10.4.2. Registration of invalid-changedsince Error URN . . . 51
10.4.3. Registration of tzid-not-found error URN . . . . . . 52 10.4.3. Registration of tzid-not-found Error URN . . . . . . 52
10.4.4. Registration of invalid-format error URN . . . . . . 52 10.4.4. Registration of invalid-format Error URN . . . . . . 52
10.4.5. Registration of invalid-start error URN . . . . . . 52 10.4.5. Registration of invalid-start Error URN . . . . . . 52
10.4.6. Registration of invalid-end error URN . . . . . . . 53 10.4.6. Registration of invalid-end Error URN . . . . . . . 53
10.4.7. Registration of invalid-pattern error URN . . . . . 53 10.4.7. Registration of invalid-pattern Error URN . . . . . 53
10.5. iCalendar Property Registrations . . . . . . . . . . . . 53 10.5. iCalendar Property Registrations . . . . . . . . . . . . 53
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 54 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 54
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 54
12.1. Normative References . . . . . . . . . . . . . . . . . . 54 12.1. Normative References . . . . . . . . . . . . . . . . . . 54
12.2. Informative References . . . . . . . . . . . . . . . . . 56 12.2. Informative References . . . . . . . . . . . . . . . . . 56
Appendix A. Change History (to be removed prior to publication Appendix A. Change History (to be removed prior to publication
as an RFC) . . . . . . . . . . . . . . . . . . . . . 56 as an RFC) . . . . . . . . . . . . . . . . . . . . . 56
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62
1. Introduction 1. Introduction
skipping to change at page 10, line 50 skipping to change at page 10, line 50
The time zone data distribution service protocol uses HTTP [RFC7230] The time zone data distribution service protocol uses HTTP [RFC7230]
for query and delivery of time zone data and meta-data, and leap for query and delivery of time zone data and meta-data, and leap
second information. The interactions with the HTTP server can be second information. The interactions with the HTTP server can be
broken down into a set of "actions" that define the overall function broken down into a set of "actions" that define the overall function
being requested (see Section 5). Each action targets a specific HTTP being requested (see Section 5). Each action targets a specific HTTP
resource using the GET method, with various request-URI parameters resource using the GET method, with various request-URI parameters
altering the behavior as needed. altering the behavior as needed.
The HTTP resources used for requests will be identified via URI The HTTP resources used for requests will be identified via URI
templates [RFC6570]. The overall time zone distribution service has templates [RFC6570]. The overall time zone data distribution service
a "context path" request-URI defined as "{/service-prefix}". This has a "context path" request-URI template defined as "{/service-
"root" prefix is discovered by the client as per Section 4.2.1. prefix}". This "root" prefix is discovered by the client as per
Section 4.2.1. Request-URIs that target time zone data directly use
Request-URIs that target time zone data directly use the prefix the prefix template "{/service-prefix,data-prefix}". The second
"{/service-prefix,data-prefix}". The second component of the prefix component of the prefix template can be used to introduce additional
template can be used to introduce additional path segments in the path segments in the request-URI to allow for alternative ways to
request-URI to allow for alternative ways to "partition" the time "partition" the time zone data. For example, time zone data might be
zone data. For example, time zone data might be partitioned by partitioned by publisher release dates, or version identifiers. This
publisher release dates, or version identifiers. This specification specification does not define any partitions, which is left for
does not define any partitions, which is left for future extensions. future extensions. When the "data-prefix" variable is empty, the
When the "data-prefix" variable is empty, the server is expected to server is expected to return the current version of time zone data it
return the current version of time zone data it has for all has for all publishers it supports.
publishers it supports.
All template-URI variable values, and URI request parameters that All URI template variable values, and URI request parameters that
contain text values, MUST be encoded using the UTF-8 [RFC3629] contain text values, MUST be encoded using the UTF-8 [RFC3629]
character set. All responses MUST return data using the UTF-8 character set. All responses MUST return data using the UTF-8
[RFC3629] character set. It is important to note that any "/" [RFC3629] character set. It is important to note that any "/"
characters, which are frequently found in time zone identifiers, are characters, which are frequently found in time zone identifiers, are
percent-encoded when used in the value of a path segment expansion percent-encoded when used in the value of a path segment expansion
variable in a URI template (as per Section 3.2.6 of [RFC6570]). Thus variable in a URI template (as per Section 3.2.6 of [RFC6570]). Thus
the time zone identifier "America/New_York" would appear as the time zone identifier "America/New_York" would appear as
"America%2FNew_York" when used as the value for the "{/tzid}" URI "America%2FNew_York" when used as the value for the "{/tzid}" URI
template variable defined later in this specification. template variable defined later in this specification.
skipping to change at page 15, line 41 skipping to change at page 15, line 41
records, as described by [RFC2782]. records, as described by [RFC2782].
Example: service record for server without transport layer security. Example: service record for server without transport layer security.
_timezone._tcp SRV 0 1 80 tz.example.com. _timezone._tcp SRV 0 1 80 tz.example.com.
Example: service record for server with transport layer security. Example: service record for server with transport layer security.
_timezones._tcp SRV 0 1 443 tz.example.com. _timezones._tcp SRV 0 1 443 tz.example.com.
4.2.1.2. Time Zone Data Distribution Service TXT records 4.2.1.2. Time Zone Data Distribution Service TXT Records
When SRV RRs are used to advertise a time zone data distribution When SRV RRs are used to advertise a time zone data distribution
service, it is also convenient to be able to specify a "context path" service, it is also convenient to be able to specify a "context path"
in the DNS to be retrieved at the same time. To enable that, this in the DNS to be retrieved at the same time. To enable that, this
specification uses a TXT RR that follows the syntax defined in specification uses a TXT RR that follows the syntax defined in
Section 6 of [RFC6763] and defines a "path" key for use in that Section 6 of [RFC6763] and defines a "path" key for use in that
record. The value of the key MUST be the actual "context path" to record. The value of the key MUST be the actual "context path" to
the corresponding service on the server. the corresponding service on the server.
A site might provide TXT records in addition to SRV records for each A site might provide TXT records in addition to SRV records for each
service. When present, clients MUST use the "path" value as the service. When present, clients MUST use the "path" value as the
"context path" for the service in HTTP requests. When not present, "context path" for the service in HTTP requests. When not present,
clients use the ".well-known" URI approach described in clients use the ".well-known" URI approach described in
Section 4.2.1.3. Section 4.2.1.3.
To facilitate "context path's" that might differ from user to user, As per Section 8, the server MAY require authentication when a client
the server MAY require authentication when a client tries to access tries to access the path URI specified by the TXT RR (i.e., the
the path URI specified by the TXT RR (i.e., the server would return a server would return a 401 status response to the unauthenticated
401 status response to the unauthenticated request from the client, request from the client, then return a redirect response after a
then return a redirect response after a successful authentication by successful authentication by the client).
the client).
Example: text record for service with transport layer security. Example: text record for service with transport layer security.
_timezones._tcp TXT path=/timezones _timezones._tcp TXT path=/timezones
4.2.1.3. Time Zone Data Distribution Service Well-Known URI 4.2.1.3. Time Zone Data Distribution Service Well-Known URI
A "well-known" URI [RFC5785] is registered by this specification for A "well-known" URI [RFC5785] is registered by this specification for
the Time Zone Data Distribution service, "timezone" (see Section 10). the Time Zone Data Distribution service, "timezone" (see Section 10).
This URI points to a resource that the client can use as the initial This URI points to a resource that the client can use as the initial
"context path" for the service they are trying to connect to. The "context path" for the service they are trying to connect to. The
server MUST redirect HTTP requests for that resource to the actual server MUST redirect HTTP requests for that resource to the actual
"context path" using one of the available mechanisms provided by HTTP "context path" using one of the available mechanisms provided by HTTP
(e.g., using an appropriate 3xx status response). Clients MUST (e.g., using an appropriate 3xx status response). Clients MUST
handle HTTP redirects on the ".well-known" URI. Servers MUST NOT handle HTTP redirects on the ".well-known" URI, taking into account
locate the actual time zone data distribution service endpoint at the security restrictions on redirects described in Section 8. Servers
".well-known" URI as per Section 1.1 of [RFC5785]. The "well-known" MUST NOT locate the actual time zone data distribution service
URI MUST be present on the server, even when a TXT RR endpoint at the ".well-known" URI as per Section 1.1 of [RFC5785].
(Section 4.2.1.2) is used in the DNS to specify a "context path". The "well-known" URI MUST be present on the server, even when a TXT
RR (Section 4.2.1.2) is used in the DNS to specify a "context path".
Servers SHOULD set an appropriate Cache-Control header field value Servers SHOULD set an appropriate Cache-Control header field value
(as per Section 5.2 of [RFC7234]) in the redirect response to ensure (as per Section 5.2 of [RFC7234]) in the redirect response to ensure
caching occurs as needed, or as required by the type of response caching occurs as needed, or as required by the type of response
generated. For example, if it is anticipated that the location of generated. For example, if it is anticipated that the location of
the redirect might change over time, then an appropriate "max-age" the redirect might change over time, then an appropriate "max-age"
value would be used. value would be used.
To facilitate "context path's" that might differ from user to user, As per Section 8, the server MAY require authentication when a client
the server MAY require authentication when a client tries to access tries to access the ".well-known" URI (i.e., the server would return
the ".well-known" URI (i.e., the server would return a 401 status a 401 status response to the unauthenticated request from the client,
response to the unauthenticated request from the client, then return then return the redirect response after a successful authentication
the redirect response after a successful authentication by the by the client).
client).
4.2.1.3.1. Example: well-known URI redirects to actual context path 4.2.1.3.1. Example: well-known URI redirects to actual context path
A Time Zone Data Distribution server has a "context path" that is A Time Zone Data Distribution server has a "context path" that is
"/servlet/timezone". The client will use "/.well-known/timezone" as "/servlet/timezone". The client will use "/.well-known/timezone" as
the path for the service after it has first found the FQDN and port the path for the service after it has first found the FQDN and port
number via an SRV lookup or via manual entry of information by the number via an SRV lookup or via manual entry of information by the
user. When the client makes its initial HTTP request against user. When the client makes its initial HTTP request against
"/.well-known/timezone", the server would issue an HTTP 301 redirect "/.well-known/timezone", the server would issue an HTTP 301 redirect
response with a Location response header field using the path response with a Location response header field using the path
skipping to change at page 17, line 35 skipping to change at page 17, line 35
4.2.2.1. Initial Synchronization of All Time Zones 4.2.2.1. Initial Synchronization of All Time Zones
When a secondary service or a client wishing to cache all time zone When a secondary service or a client wishing to cache all time zone
data first starts, or wishes to do a full refresh, it synchronizes data first starts, or wishes to do a full refresh, it synchronizes
with another server by first issuing a "list" action to retrieve all with another server by first issuing a "list" action to retrieve all
the time zone meta-data. The client would preserve the returned the time zone meta-data. The client would preserve the returned
opaque token for subsequent use (see "synctoken" in Section 5.2.1). opaque token for subsequent use (see "synctoken" in Section 5.2.1).
The client will store the meta-data for each time zone returned in The client will store the meta-data for each time zone returned in
the response. Time zone data for each corresponding time zone can the response. Time zone data for each corresponding time zone can
then be fetched and stored locally. In addition a mapping of aliases then be fetched and stored locally. In addition a mapping of aliases
to time zones can be built from the meta-data. to time zones can be built from the meta-data. A typical "list"
action response size is about 50-100 KB of "pretty printed" JSON
data, for a service using the IANA time zone database [RFC6557], as
of the time of publication of this specification.
4.2.2.2. Subsequent Synchronization of All Time Zones 4.2.2.2. Subsequent Synchronization of All Time Zones
A secondary service or a client caching all time zones needs to A secondary service or a client caching all time zones needs to
periodically synchronize with a server. To do so it would issue a periodically synchronize with a server. To do so it would issue a
"list" action with the "changedsince" URI query parameter set to the "list" action with the "changedsince" URI query parameter set to the
value of the opaque token returned by the last synchronization. The value of the opaque token returned by the last synchronization. The
client would again preserve the returned opaque token for subsequent client would again preserve the returned opaque token for subsequent
use. The client will update its stored time zone meta-data using the use. The client will update its stored time zone meta-data using the
new values returned in the response, which contains just the time new values returned in the response, which contains just the time
skipping to change at page 19, line 4 skipping to change at page 19, line 6
Name: capabilities Name: capabilities
Request-URI Template: Request-URI Template:
{/service-prefix}/capabilities {/service-prefix}/capabilities
Description: This action returns the capabilities of the server, Description: This action returns the capabilities of the server,
allowing clients to determine if a specific feature has been allowing clients to determine if a specific feature has been
deployed and/or enabled. deployed and/or enabled.
Parameters: None Parameters: None
Response A JSON object containing a "version" member, an "info" Response A JSON object containing a "version" member, an "info"
member, and an "actions" member, see Section 6.1. member, and an "actions" member, see Section 6.1.
Possible Error Codes No specific code. Possible Error Codes No specific code.
5.1.1. Example: Get Capabilities 5.1.1. Example: get capabilities
>> Request << >> Request <<
GET /servlet/timezone/capabilities HTTP/1.1 GET /servlet/timezone/capabilities HTTP/1.1
Host: tz.example.com Host: tz.example.com
>> Response << >> Response <<
HTTP/1.1 200 OK HTTP/1.1 200 OK
Date: Wed, 4 Jun 2008 09:32:12 GMT Date: Wed, 4 Jun 2008 09:32:12 GMT
skipping to change at page 22, line 13 skipping to change at page 22, line 13
changedsince OPTIONAL, and MUST NOT occur more than once. changedsince OPTIONAL, and MUST NOT occur more than once.
Response: A JSON object containing a "synctoken" member and a Response: A JSON object containing a "synctoken" member and a
"timezones" member, see Section 6.2. "timezones" member, see Section 6.2.
Possible Error Codes Possible Error Codes
urn:ietf:params:tzdist:error:invalid-changedsince The urn:ietf:params:tzdist:error:invalid-changedsince The
"changedsince" URI query parameter appears more than once. "changedsince" URI query parameter appears more than once.
5.2.1. Example: List time zone identifiers 5.2.1. Example: list time zone identifiers
In this example the client requests the full set of time zone In this example the client requests the full set of time zone
identifiers. identifiers.
>> Request << >> Request <<
GET /servlet/timezone/zones HTTP/1.1 GET /servlet/timezone/zones HTTP/1.1
Host: tz.example.com Host: tz.example.com
>> Response << >> Response <<
skipping to change at page 24, line 16 skipping to change at page 24, line 16
parameter has an incorrect value, or appears more than once, or parameter has an incorrect value, or appears more than once, or
does not match one of the fixed truncation range start values does not match one of the fixed truncation range start values
advertised in the "capabilities" action response. advertised in the "capabilities" action response.
urn:ietf:params:tzdist:error:invalid-end The "end" URI query urn:ietf:params:tzdist:error:invalid-end The "end" URI query
parameter has an incorrect value, or appears more than once, or parameter has an incorrect value, or appears more than once, or
has a value less than or equal to the "start" URI query has a value less than or equal to the "start" URI query
parameter, or does not match one of the fixed truncation range parameter, or does not match one of the fixed truncation range
end values advertised in the "capabilities" action response. end values advertised in the "capabilities" action response.
5.3.1. Example: Get time zone data 5.3.1. Example: get time zone data
In this example the client requests the time zone with a specific In this example the client requests the time zone with a specific
time zone identifier to be returned. time zone identifier to be returned.
>> Request << >> Request <<
GET /servlet/timezone/zones/America%2FNew_York HTTP/1.1 GET /servlet/timezone/zones/America%2FNew_York HTTP/1.1
Host: tz.example.com Host: tz.example.com
Accept:text/calendar Accept:text/calendar
skipping to change at page 24, line 43 skipping to change at page 24, line 43
ETag: "123456789-000-111" ETag: "123456789-000-111"
BEGIN:VCALENDAR BEGIN:VCALENDAR
... ...
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
TZID:America/New_York TZID:America/New_York
... ...
END:VTIMEZONE END:VTIMEZONE
END:VCALENDAR END:VCALENDAR
5.3.2. Example: Conditional Get time zone data 5.3.2. Example: conditional get time zone data
In this example the client requests the time zone with a specific In this example the client requests the time zone with a specific
time zone identifier to be returned, but uses an If-None-Match header time zone identifier to be returned, but uses an If-None-Match header
field in the request, set to the value of a previously returned ETag field in the request, set to the value of a previously returned ETag
header field, or the value of the "etag" member in a JSON "timezone" header field, or the value of the "etag" member in a JSON "timezone"
object returned from a "list" action response. In this example, the object returned from a "list" action response. In this example, the
data on the server has not changed, so a 304 response is returned. data on the server has not changed, so a 304 response is returned.
>> Request << >> Request <<
GET /servlet/timezone/zones/America%2FNew_York HTTP/1.1 GET /servlet/timezone/zones/America%2FNew_York HTTP/1.1
Host: tz.example.com Host: tz.example.com
Accept:text/calendar Accept:text/calendar
If-None-Match: "123456789-000-111" If-None-Match: "123456789-000-111"
>> Response << >> Response <<
HTTP/1.1 304 Not Modified HTTP/1.1 304 Not Modified
Date: Wed, 4 Jun 2008 09:32:12 GMT Date: Wed, 4 Jun 2008 09:32:12 GMT
5.3.3. Example: Get time zone data using a time zone alias 5.3.3. Example: get time zone data using a time zone alias
In this example the client requests the time zone with an aliased In this example the client requests the time zone with an aliased
time zone identifier to be returned, and the server returns the time time zone identifier to be returned, and the server returns the time
zone data with that identifier, and two aliases. zone data with that identifier, and two aliases.
>> Request << >> Request <<
GET /servlet/timezone/zones/US%2FEastern HTTP/1.1 GET /servlet/timezone/zones/US%2FEastern HTTP/1.1
Host: tz.example.com Host: tz.example.com
Accept:text/calendar Accept:text/calendar
skipping to change at page 26, line 32 skipping to change at page 26, line 32
BEGIN:VCALENDAR BEGIN:VCALENDAR
... ...
BEGIN:VTIMEZONE BEGIN:VTIMEZONE
TZID:US/Eastern TZID:US/Eastern
TZID-ALIAS-OF:America/New_York TZID-ALIAS-OF:America/New_York
TZID-ALIAS-OF:America/Montreal TZID-ALIAS-OF:America/Montreal
... ...
END:VTIMEZONE END:VTIMEZONE
END:VCALENDAR END:VCALENDAR
5.3.4. Example: Get truncated time zone data 5.3.4. Example: get truncated time zone data
Assume the server advertises a "truncated" object in its Assume the server advertises a "truncated" object in its
"capabilities" response that appears as: "capabilities" response that appears as:
"truncated": { "truncated": {
"any": false, "any": false,
"ranges": [ "ranges": [
{"start": "1970-01-01T00:00:00Z", "end": "*"}, {"start": "1970-01-01T00:00:00Z", "end": "*"},
{"start":"2010-01-01T00:00:00Z", "end":"2020-01-01T00:00:00Z"} {"start":"2010-01-01T00:00:00Z", "end":"2020-01-01T00:00:00Z"}
], ],
skipping to change at page 27, line 43 skipping to change at page 27, line 43
BEGIN:STANDARD BEGIN:STANDARD
DTSTART:20101231T190000 DTSTART:20101231T190000
TZNAME:EST TZNAME:EST
TZOFFSETFROM:-0500 TZOFFSETFROM:-0500
TZOFFSETTO:-0500 TZOFFSETTO:-0500
END:STANDARD END:STANDARD
... ...
END:VTIMEZONE END:VTIMEZONE
END:VCALENDAR END:VCALENDAR
5.3.5. Example: Request for a non-existent time zone 5.3.5. Example: request for a non-existent time zone
In this example the client requests the time zone with a specific In this example the client requests the time zone with a specific
time zone identifier to be returned. As it turns out, no time zone time zone identifier to be returned. As it turns out, no time zone
exists with that identifier. exists with that identifier.
>> Request << >> Request <<
GET /servlet/timezone/zones/America%2FPittsburgh HTTP/1.1 GET /servlet/timezone/zones/America%2FPittsburgh HTTP/1.1
Host: tz.example.com Host: tz.example.com
Accept:application/calendar+json Accept:application/calendar+json
skipping to change at page 29, line 36 skipping to change at page 29, line 36
parameter has an incorrect value, or appears more than once, or parameter has an incorrect value, or appears more than once, or
is missing, or has a value outside any fixed truncation ranges is missing, or has a value outside any fixed truncation ranges
advertised in the "capabilities" action response. advertised in the "capabilities" action response.
urn:ietf:params:tzdist:error:invalid-end The "end" URI query urn:ietf:params:tzdist:error:invalid-end The "end" URI query
parameter has an incorrect value, or appears more than once, or parameter has an incorrect value, or appears more than once, or
has a value less than or equal to the "start" URI query has a value less than or equal to the "start" URI query
parameter, or has a value outside any fixed truncation ranges parameter, or has a value outside any fixed truncation ranges
advertised in the "capabilities" action response.. advertised in the "capabilities" action response..
5.4.1. Example: Expanded JSON Data Format 5.4.1. Example: expanded JSON data format
In this example the client requests a time zone in the expanded form. In this example the client requests a time zone in the expanded form.
>> Request << >> Request <<
GET /servlet/timezone/zones/America%2FNew_York/observances GET /servlet/timezone/zones/America%2FNew_York/observances
?start=2008-01-01T00:00:00Z&end=2009-01-01T00:00:00Z HTTP/1.1 ?start=2008-01-01T00:00:00Z&end=2009-01-01T00:00:00Z HTTP/1.1
Host: tz.example.com Host: tz.example.com
>> Response << >> Response <<
skipping to change at page 32, line 11 skipping to change at page 32, line 11
Response: The response has the same format as the "list" action, Response: The response has the same format as the "list" action,
with one result object per successful match, see Section 6.2. with one result object per successful match, see Section 6.2.
Possible Error Codes Possible Error Codes
urn:ietf:params:tzdist:error:invalid-pattern The "pattern" URI urn:ietf:params:tzdist:error:invalid-pattern The "pattern" URI
query parameter has an incorrect value, or appears more than query parameter has an incorrect value, or appears more than
once. once.
5.5.1. Example: Find action 5.5.1. Example: find action
In this example the client asks for data about the time zone "US/ In this example the client asks for data about the time zone "US/
Eastern". Eastern".
>> Request << >> Request <<
GET /servlet/timezone/zones?pattern=US/Eastern HTTP/1.1 GET /servlet/timezone/zones?pattern=US/Eastern HTTP/1.1
Host: tz.example.com Host: tz.example.com
>> Response << >> Response <<
skipping to change at page 34, line 41 skipping to change at page 34, line 41
member specifies the date (with the implied time of 00:00:00 UTC) member specifies the date (with the implied time of 00:00:00 UTC)
at which the corresponding UTC offset from TAI takes effect. In at which the corresponding UTC offset from TAI takes effect. In
other words, a leap second is added or removed just prior to time other words, a leap second is added or removed just prior to time
00:00:00 UTC of the specified onset date. When a leap second is 00:00:00 UTC of the specified onset date. When a leap second is
added, the "utc-offset" value will be incremented by one, when a added, the "utc-offset" value will be incremented by one, when a
leap second is removed, the "utc-offset" value will be decremented leap second is removed, the "utc-offset" value will be decremented
by one. by one.
Possible Error Codes No specific code. Possible Error Codes No specific code.
5.6.1. Example: Get leapsecond information 5.6.1. Example: get leapsecond information
In this example the client requests the current leap second In this example the client requests the current leap second
information from the server. information from the server.
>> Request << >> Request <<
GET /servlet/timezone/leapseconds HTTP/1.1 GET /servlet/timezone/leapseconds HTTP/1.1
Host: tz.example.com Host: tz.example.com
>> Response << >> Response <<
skipping to change at page 36, line 37 skipping to change at page 36, line 37
STRING represents a JSON string, defined in Section 7 of [RFC7159]. STRING represents a JSON string, defined in Section 7 of [RFC7159].
BOOLEAN represents either of the JSON values "true" or "false", BOOLEAN represents either of the JSON values "true" or "false",
defined in Section 3 of [RFC7159]. defined in Section 3 of [RFC7159].
; a line starting with a ";" (0x3B) character is a comment. ; a line starting with a ";" (0x3B) character is a comment.
Note, clients MUST ignore any unexpected JSON members in responses Note, clients MUST ignore any unexpected JSON members in responses
from the server. from the server.
6.1. capabilities action response 6.1. capabilities Action Response
Rules for the JSON document returned for a "capabilities" action Rules for the JSON document returned for a "capabilities" action
request. request.
; root object ; root object
OBJECT (version, info, actions) OBJECT (version, info, actions)
; The version number of the protocol supported - MUST be 1 ; The version number of the protocol supported - MUST be 1
MEMBER version "version" : NUMBER MEMBER version "version" : NUMBER
skipping to change at page 39, line 5 skipping to change at page 39, line 5
MEMBER param_required "required" : BOOLEAN MEMBER param_required "required" : BOOLEAN
; If true the parameter can occur more than once in the request-URI ; If true the parameter can occur more than once in the request-URI
; default is false ; default is false
MEMBER param_multi "multi" : BOOLEAN, MEMBER param_multi "multi" : BOOLEAN,
; An array that defines the allowed set of values for the parameter ; An array that defines the allowed set of values for the parameter
; In the absence of this member, any string value is acceptable ; In the absence of this member, any string value is acceptable
MEMBER param_values "values" ARRAY STRING MEMBER param_values "values" ARRAY STRING
6.2. list/find action response 6.2. list/find Action Response
Rules for the JSON document returned for a "list" or "find" action Rules for the JSON document returned for a "list" or "find" action
request. request.
; root object ; root object
OBJECT (synctoken, timezones) OBJECT (synctoken, timezones)
; Server generated opaque token used for synchronizing changes, ; Server generated opaque token used for synchronizing changes,
MEMBER synctoken "synctoken" : STRING MEMBER synctoken "synctoken" : STRING
skipping to change at page 40, line 14 skipping to change at page 40, line 14
; Language tag for the language of the associated name ; Language tag for the language of the associated name
MEMBER: lang "lang" : STRING MEMBER: lang "lang" : STRING
; Localized name ; Localized name
MEMBER lname "name" : STRING MEMBER lname "name" : STRING
; Indicates whether this is the preferred name for the associated ; Indicates whether this is the preferred name for the associated
; language default: false ; language default: false
MEMBER pref "pref" : BOOLEAN MEMBER pref "pref" : BOOLEAN
6.3. expand action response 6.3. expand Action Response
Rules for the JSON document returned for a "expand" action request. Rules for the JSON document returned for a "expand" action request.
; root object ; root object
OBJECT ( OBJECT (
tzid, tzid,
?start, ?start,
?end, ?end,
observances observances
) )
skipping to change at page 42, line 5 skipping to change at page 42, line 5
; [RFC3339] UTC date-time value at which the observance takes effect ; [RFC3339] UTC date-time value at which the observance takes effect
MEMBER onset "onset" : STRING MEMBER onset "onset" : STRING
; The UTC offset in seconds before the start of this observance ; The UTC offset in seconds before the start of this observance
MEMBER utc_offset_from "utc-offset-from" : NUMBER MEMBER utc_offset_from "utc-offset-from" : NUMBER
; The UTC offset in seconds at and after the start of this observance ; The UTC offset in seconds at and after the start of this observance
MEMBER utc_offset_to "utc-offset-to" : NUMBER MEMBER utc_offset_to "utc-offset-to" : NUMBER
6.4. leapseconds action response 6.4. leapseconds Action Response
Rules for the JSON document returned for a "leapseconds" action Rules for the JSON document returned for a "leapseconds" action
request. request.
; root object ; root object
OBJECT ( OBJECT (
expires, expires,
publisher, publisher,
version, version,
leapseconds leapseconds
skipping to change at page 46, line 25 skipping to change at page 46, line 25
servers being able to identify the client by the specific servers being able to identify the client by the specific
periodicity of its polling behavior. periodicity of its polling behavior.
9. A server trying to "fingerprint" clients might insert a "fake" 9. A server trying to "fingerprint" clients might insert a "fake"
time zone into the time zone data, using a unique identifier for time zone into the time zone data, using a unique identifier for
each client making a request. The server can then watch for each client making a request. The server can then watch for
client requests that refer to that "fake" time zone and thus client requests that refer to that "fake" time zone and thus
track the activity of each client. It is hard for clients to track the activity of each client. It is hard for clients to
identify a "fake" time zone given that new time zones are added identify a "fake" time zone given that new time zones are added
from time to time. One option to mitigate this would be for the from time to time. One option to mitigate this would be for the
client to make use of two time zone distribution servers from two client to make use of two time zone data distribution servers
independent providers, that provide time zone data from the same from two independent providers, that provide time zone data from
publisher. The client can then compare the list of time zones the same publisher. The client can then compare the list of time
from each server (assuming they both have the same version of zones from each server (assuming they both have the same version
time zone data from the common publisher) and detect ones that of time zone data from the common publisher) and detect ones that
appear to be added on one server and not the other. appear to be added on one server and not the other.
Alternatively, the client can check the publisher data directly Alternatively, the client can check the publisher data directly
to verify that time zones match the set the publisher has. to verify that time zones match the set the publisher has.
Note that some of the above recommendations will result in less Note that some of the above recommendations will result in less
efficient use of the protocol due to fetching data that might not be efficient use of the protocol due to fetching data that might not be
relevant to the client. relevant to the client.
An organization can setup a secondary server within their own domain, An organization can setup a secondary server within their own domain,
and configure their clients to use that server, to protect the and configure their clients to use that server, to protect the
organization's users from the possibility of being tracked by an organization's users from the possibility of being tracked by an
untrusted time zone distribution server. Clients can then use more untrusted time zone data distribution server. Clients can then use
efficient protocol interactions, free from the concerns above, on the more efficient protocol interactions, free from the concerns above,
basis that their organization's server is trusted. When doing this, on the basis that their organization's server is trusted. When doing
the secondary server would follow the recommendations for clients this, the secondary server would follow the recommendations for
(listed in the previous paragraph) so that the untrusted server is clients (listed in the previous paragraph) so that the untrusted
not able to gain information about the organization as a whole. server is not able to gain information about the organization as a
Note, however, that if client requests to the secondary server are whole. Note, however, that if client requests to the secondary
subject to tracking by a network observer so clients ought to apply server are subject to tracking by a network observer so clients ought
some of the randomization techniques from the list above. to apply some of the randomization techniques from the list above.
Servers that want to avoid accidentally storing information that Servers that want to avoid accidentally storing information that
could be used to identify clients can take the following precautions: could be used to identify clients can take the following precautions:
1. Avoid logging client request activity, or anonymize information 1. Avoid logging client request activity, or anonymize information
in any logs (e.g., client IP address, client user-agent details, in any logs (e.g., client IP address, client user-agent details,
authentication credentials, etc). authentication credentials, etc).
2. Add an unused HTTP response header to each response with a random 2. Add an unused HTTP response header to each response with a random
amount of data in it (e.g., to pad the overall request size to amount of data in it (e.g., to pad the overall request size to
skipping to change at page 47, line 29 skipping to change at page 47, line 29
using the registration procedure and template from Section 5.1 of using the registration procedure and template from Section 5.1 of
[RFC5785], creates two new SRV service label aliases, and defines one [RFC5785], creates two new SRV service label aliases, and defines one
new iCalendar property parameter as per the registration procedure in new iCalendar property parameter as per the registration procedure in
[RFC5545]. It also adds a new "tzdist Identifiers Registry" to the [RFC5545]. It also adds a new "tzdist Identifiers Registry" to the
IETF parameters URN sub-namespace as per [RFC3553] for use with IETF parameters URN sub-namespace as per [RFC3553] for use with
protocol related error codes. protocol related error codes.
10.1. Service Actions Registration 10.1. Service Actions Registration
IANA is asked to create a new top-level category called "Time Zone IANA is asked to create a new top-level category called "Time Zone
Distribution Service (TZDIST) Parameters", and to put all the Data Distribution Service (TZDIST) Parameters", and to put all the
registries created herein into that category. registries created herein into that category.
IANA is asked to create a new registry called "TZDIST Service IANA is asked to create a new registry called "TZDIST Service
Actions", as defined below. Actions", as defined below.
10.1.1. Service Actions Registration Procedure 10.1.1. Service Actions Registration Procedure
This registry uses the "Specification Required" policy defined in This registry uses the "Specification Required" policy defined in
[I-D.leiba-cotton-iana-5226bis], which makes use of a designated [I-D.leiba-cotton-iana-5226bis], which makes use of a designated
expert to review potential registrations. expert to review potential registrations.
skipping to change at page 50, line 20 skipping to change at page 50, line 20
Assignee: IESG <iesg@ietf.org> Assignee: IESG <iesg@ietf.org>
Contact: IETF Chair <chair@ietf.org> Contact: IETF Chair <chair@ietf.org>
Description: Time Zone Data Distribution Service - non-TLS Description: Time Zone Data Distribution Service - non-TLS
Reference: RFCXXXX Reference: RFCXXXX
Assignment Note: This is an extension of the http service. Defined Assignment Note: This is an extension of the http service. Defined
TXT keys: path=<context path> TXT keys: path=<context path> (as per Section 6 of [RFC6763]).
10.3.2. timezones Service Name Registration 10.3.2. timezones Service Name Registration
Service Name: timezones Service Name: timezones
Transport Protocol(s): TCP Transport Protocol(s): TCP
Assignee: IESG <iesg@ietf.org> Assignee: IESG <iesg@ietf.org>
Contact: IETF Chair <chair@ietf.org> Contact: IETF Chair <chair@ietf.org>
Description: Time Zone Data Distribution Service - over TLS Description: Time Zone Data Distribution Service - over TLS
Reference: RFCXXXX Reference: RFCXXXX
Assignment Note: This is an extension of the https service. Defined Assignment Note: This is an extension of the https service. Defined
TXT keys: path=<context path> TXT keys: path=<context path> (as per Section 6 of [RFC6763]).
10.4. tzdist Identifiers Registry 10.4. tzdist Identifiers Registry
IANA is requested to register a new URN sub-namespace within the IETF IANA is requested to register a new URN sub-namespace within the IETF
URN Sub-namespace for Registered Protocol Parameter Identifiers URN Sub-namespace for Registered Protocol Parameter Identifiers
defined in [RFC3553]. defined in [RFC3553].
Registrations in this registry follow the "IETF Review"
[I-D.leiba-cotton-iana-5226bis] policy.
Registry name: tzdist Identifiers Registry name: tzdist Identifiers
URN prefix: urn:ietf:params:tzdist URN prefix: urn:ietf:params:tzdist
Specification: RFCXXXX Specification: RFCXXXX
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Index value:: Values in this registry are URNs or URN prefixes that Index value:: Values in this registry are URNs or URN prefixes that
start with the prefix "urn:ietf:params:tzdist:". Each is start with the prefix "urn:ietf:params:tzdist:". Each is
registered independently. The prefix registered independently. The prefix
"urn:ietf:params:tzdist:error:" is used to represent specific "urn:ietf:params:tzdist:error:" is used to represent specific
error codes within the protocol as defined in the list of actions error codes within the protocol as defined in the list of actions
in Section 5 and used in problem reports (Section 4.1.7). in Section 5 and used in problem reports (Section 4.1.7).
Each registration in the "tzdist Identifiers" registry requires the Each registration in the "tzdist Identifiers" registry requires the
skipping to change at page 51, line 31 skipping to change at page 51, line 32
Contact: Email for the person or groups making the registration. Contact: Email for the person or groups making the registration.
Index Value: As described in [RFC3553], URN prefixes that are Index Value: As described in [RFC3553], URN prefixes that are
registered include a description of how the URN is constructed. registered include a description of how the URN is constructed.
This is not applicable for specific URNs. This is not applicable for specific URNs.
The "tzdist Identifiers" registry has the initial registrations The "tzdist Identifiers" registry has the initial registrations
included in the following sections. included in the following sections.
10.4.1. Registration of invalid-action error URN 10.4.1. Registration of invalid-action Error URN
This section registers the "urn:ietf:params:tzdist:error:invalid- This section registers the "urn:ietf:params:tzdist:error:invalid-
action" URN in the "tzdist Identifiers" registry. action" URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:invalid-action URN: urn:ietf:params:tzdist:error:invalid-action
Specification: RFCXXXX, Section 5 Specification: RFCXXXX, Section 5
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Contact: IESG <iesg@ietf.org> Contact: IESG <iesg@ietf.org>
Index value:: N/A. Index value:: N/A.
10.4.2. Registration of invalid-changedsince error URN 10.4.2. Registration of invalid-changedsince Error URN
This section registers the "urn:ietf:params:tzdist:error:invalid- This section registers the "urn:ietf:params:tzdist:error:invalid-
changedsince" URN in the "tzdist Identifiers" registry. changedsince" URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:invalid-changedsince URN: urn:ietf:params:tzdist:error:invalid-changedsince
Specification: RFCXXXX, Section 5.2 Specification: RFCXXXX, Section 5.2
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Contact: IESG <iesg@ietf.org> Contact: IESG <iesg@ietf.org>
Index value:: N/A. Index value:: N/A.
10.4.3. Registration of tzid-not-found error URN 10.4.3. Registration of tzid-not-found Error URN
This section registers the "urn:ietf:params:tzdist:error:tzid-not- This section registers the "urn:ietf:params:tzdist:error:tzid-not-
found" URN in the "tzdist Identifiers" registry. found" URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:tzid-not-found URN: urn:ietf:params:tzdist:error:tzid-not-found
Specification: RFCXXXX, Section 5.3 & Section 5.4 Specification: RFCXXXX, Section 5.3 & Section 5.4
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Contact: IESG <iesg@ietf.org> Contact: IESG <iesg@ietf.org>
Index value:: N/A. Index value:: N/A.
10.4.4. Registration of invalid-format error URN 10.4.4. Registration of invalid-format Error URN
This section registers the "urn:ietf:params:tzdist:error:invalid- This section registers the "urn:ietf:params:tzdist:error:invalid-
format" URN in the "tzdist Identifiers" registry. format" URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:invalid-format URN: urn:ietf:params:tzdist:error:invalid-format
Specification: RFCXXXX, Section 5.3 Specification: RFCXXXX, Section 5.3
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Contact: IESG <iesg@ietf.org> Contact: IESG <iesg@ietf.org>
Index value:: N/A. Index value:: N/A.
10.4.5. Registration of invalid-start error URN 10.4.5. Registration of invalid-start Error URN
This section registers the "urn:ietf:params:tzdist:error:invalid- This section registers the "urn:ietf:params:tzdist:error:invalid-
start" URN in the "tzdist Identifiers" registry. start" URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:invalid-start URN: urn:ietf:params:tzdist:error:invalid-start
Specification: RFCXXXX, Section 5.3 & Section 5.4 Specification: RFCXXXX, Section 5.3 & Section 5.4
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Contact: IESG <iesg@ietf.org> Contact: IESG <iesg@ietf.org>
Index value:: N/A. Index value:: N/A.
10.4.6. Registration of invalid-end error URN 10.4.6. Registration of invalid-end Error URN
This section registers the "urn:ietf:params:tzdist:error:invalid-end" This section registers the "urn:ietf:params:tzdist:error:invalid-end"
URN in the "tzdist Identifiers" registry. URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:invalid-end URN: urn:ietf:params:tzdist:error:invalid-end
Specification: RFCXXXX, Section 5.3 & Section 5.4 Specification: RFCXXXX, Section 5.3 & Section 5.4
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
Contact: IESG <iesg@ietf.org> Contact: IESG <iesg@ietf.org>
Index value:: N/A. Index value:: N/A.
10.4.7. Registration of invalid-pattern error URN 10.4.7. Registration of invalid-pattern Error URN
This section registers the "urn:ietf:params:tzdist:error:invalid- This section registers the "urn:ietf:params:tzdist:error:invalid-
pattern" URN in the "tzdist Identifiers" registry. pattern" URN in the "tzdist Identifiers" registry.
URN: urn:ietf:params:tzdist:error:invalid-pattern URN: urn:ietf:params:tzdist:error:invalid-pattern
Specification: RFCXXXX, Section 5.5 Specification: RFCXXXX, Section 5.5
Repository: http://www.iana.org/assignments/tzdist-identifiers. Repository: http://www.iana.org/assignments/tzdist-identifiers.
skipping to change at page 54, line 12 skipping to change at page 54, line 12
| TZID-ALIAS-OF | Current | RFCXXXX, Section 7.2 | | TZID-ALIAS-OF | Current | RFCXXXX, Section 7.2 |
+----------------+----------+-----------------------+ +----------------+----------+-----------------------+
11. Acknowledgements 11. Acknowledgements
The authors would like to thank the members of the Calendaring and The authors would like to thank the members of the Calendaring and
Scheduling Consortium's Time Zone Technical Committee, and the Scheduling Consortium's Time Zone Technical Committee, and the
participants and chairs of the IETF tzdist working group. In participants and chairs of the IETF tzdist working group. In
particular, the following individuals have made important particular, the following individuals have made important
contributions to this work: Steve Allen, Lester Caine, Stephen contributions to this work: Steve Allen, Lester Caine, Stephen
Colebourne, Tobias Conradi, Steve Crocker, Paul Eggert, John Haug, Colebourne, Tobias Conradi, Steve Crocker, Daniel Kahn Gillmor, Paul
Ciny Joy, Bryan Keller, Barry Leiba, Andrew McMillan, Ken Murchison, Eggert, John Haug, Ciny Joy, Bryan Keller, Barry Leiba, Andrew
Tim Parenti, Arnaud Quillaud, Jose Edvaldo Saraiva, and Dave Thewlis. McMillan, Ken Murchison, Tim Parenti, Arnaud Quillaud, Jose Edvaldo
Saraiva, and Dave Thewlis.
This specification originated from work at the Calendaring and This specification originated from work at the Calendaring and
Scheduling Consortium, which has supported the development and Scheduling Consortium, which has supported the development and
testing of implementations of the specification. testing of implementations of the specification.
12. References 12. References
12.1. Normative References 12.1. Normative References
[I-D.ietf-appsawg-http-problem] [I-D.ietf-appsawg-http-problem]
skipping to change at page 56, line 48 skipping to change at page 56, line 48
(DTLS)", BCP 195, RFC 7525, May 2015. (DTLS)", BCP 195, RFC 7525, May 2015.
12.2. Informative References 12.2. Informative References
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC
2131, March 1997. 2131, March 1997.
Appendix A. Change History (to be removed prior to publication as an Appendix A. Change History (to be removed prior to publication as an
RFC) RFC)
Changes for -10
1. OPSDIR: minor editorial tweaks.
2. OPSDIR: Add RFC6763 reference into IANA registration templates.
3. IESG: add reference to security section for well-known redirects.
4. IESG: Add sentence describing current size of an initial JSON
response for IANA data.
5. IESG: don't mention per-user context paths - just refer to
generic HTTP auth.
6. IANA: tzdist registry policy added.
7. Make sure "data" appears between "time zone" and "distribution"
Changes for -09 Changes for -09
1. Added June 30th 2015 leap second data into example. 1. Added June 30th 2015 leap second data into example.
2. GENART: clarify how "utc-offset" changes as leap seconds are 2. GENART: clarify how "utc-offset" changes as leap seconds are
added or removed. added or removed.
3. GENART: ".well-known" MUST be present. 3. GENART: ".well-known" MUST be present.
4. GENART: switch RFC5226 reference to 5226bis. 4. GENART: switch RFC5226 reference to 5226bis.
 End of changes. 52 change blocks. 
103 lines changed or deleted 126 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/