idnits 2.17.1 draft-divination-cfapi-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 23, 2018) is 2225 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Informational ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 5785 (Obsoleted by RFC 8615) ** Obsolete normative reference: RFC 7230 (Obsoleted by RFC 9110, RFC 9112) ** Obsolete normative reference: RFC 7234 (Obsoleted by RFC 9111) ** Obsolete normative reference: RFC 7807 (Obsoleted by RFC 9457) -- Obsolete informational reference (is this intentional?): RFC 5246 (Obsoleted by RFC 8446) Summary: 4 errors (**), 0 flaws (~~), 1 warning (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group G. Destiny 3 Internet-Draft C. Luck 4 Intended status: Informational Divination Inc. 5 Expires: September 24, 2018 March 23, 2018 7 An API For Calendar-Based Fortune Heuristics Services 8 draft-divination-cfapi-00 10 Abstract 12 This document describes a JSON HTTP API for online services that 13 provide calendar-based fortune heuristics. 15 Status of This Memo 17 This Internet-Draft is submitted in full conformance with the 18 provisions of BCP 78 and BCP 79. 20 Internet-Drafts are working documents of the Internet Engineering 21 Task Force (IETF). Note that other groups may also distribute 22 working documents as Internet-Drafts. The list of current Internet- 23 Drafts is at https://datatracker.ietf.org/drafts/current/. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress." 30 This Internet-Draft will expire on September 24, 2018. 32 Copyright Notice 34 Copyright (c) 2018 IETF Trust and the persons identified as the 35 document authors. All rights reserved. 37 This document is subject to BCP 78 and the IETF Trust's Legal 38 Provisions Relating to IETF Documents 39 (https://trustee.ietf.org/license-info) in effect on the date of 40 publication of this document. Please review these documents 41 carefully, as they describe your rights and restrictions with respect 42 to this document. 44 Table of Contents 46 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 47 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 48 3. Fortune Heuristics Service Well-Known URI . . . . . . . . . . 3 49 3.1. Well-Known URI Redirection . . . . . . . . . . . . . . . 3 50 3.2. Well-Known URI Cache Behavior . . . . . . . . . . . . . . 3 51 4. New HTTP Methods: SEEK and DIVINE . . . . . . . . . . . . . . 4 52 5. Defined Data Types: Date-Time Formats . . . . . . . . . . . . 4 53 6. Fortune Heuristics Service Discovery . . . . . . . . . . . . 4 54 6.1. Root of Fortune Path URI ("/") . . . . . . . . . . . . . 4 55 7. Fortune Heuristics Service Endpoint . . . . . . . . . . . . . 5 56 7.1. Service Specification Request . . . . . . . . . . . . . . 6 57 7.2. Service Specification Object . . . . . . . . . . . . . . 8 58 8. Fortune Heuristics Report Request and Response . . . . . . . 9 59 8.1. Fortune Heuristics Report Request . . . . . . . . . . . . 9 60 8.2. Fortune Heuristics Report Response . . . . . . . . . . . 10 61 8.3. Report Interval Object . . . . . . . . . . . . . . . . . 12 62 8.4. Report Events Object . . . . . . . . . . . . . . . . . . 13 63 8.5. Report Generation Errors . . . . . . . . . . . . . . . . 14 64 9. Security Considerations . . . . . . . . . . . . . . . . . . . 15 65 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 66 10.1. Well-Known URI Registrations . . . . . . . . . . . . . . 15 67 10.1.1. "fortune" Well-Known URI Registration . . . . . . . 15 68 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 69 11.1. Normative References . . . . . . . . . . . . . . . . . . 16 70 11.2. Informative References . . . . . . . . . . . . . . . . . 16 71 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 17 72 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 74 1. Introduction 76 Fortune-telling, the practice of predicting information about a 77 person's life, is an activity practiced throughout history. 79 While there are myriad forms of fortune telling methodologies, this 80 document applies to a particular form of service that provides 81 fortune heuristics, commonly known as "luck", for a particular 82 subject based on a calendar-based input. 84 Since HTTP [RFC7230] status codes are insufficient to convey 85 information about fortune heuristics, this specification defines a 86 simple JSON [RFC8259] document format for this purpose. The response 87 can be used by HTTP APIs to deliver results to non-human clients or 88 to an end-user. 90 2. Conventions Used in This Document 92 The key words "*MUST*", "*MUST NOT*", "*REQUIRED*", "*SHALL*", 93 "*SHALL NOT*", "*SHOULD*", "*SHOULD NOT*", "*RECOMMENDED*", "*NOT 94 RECOMMENDED*", "*MAY*", and "*OPTIONAL*" in this document are to be 95 interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only 96 when, they appear in all capitals, as shown here. 98 The following definitions apply in this document: 100 Well-known URI 101 This specification makes use of the "well-known URI" feature of 102 HTTP servers [RFC5785] to provide a bootstrapping URI for the 103 client usage of fortune heuristics services. 105 Root of Fortune 106 The service discovery endpoint that provides a URI list of 107 available fortune heuristic endpoints available, in accordance 108 with Section 6. 110 3. Fortune Heuristics Service Well-Known URI 112 A well-known URI called "fortune" is registered by this specification 113 for fortune heuristics services (see Section 10). 115 Services complying with this document *SHOULD* have its well-known 116 URI pointing (directly or through redirection) to the Root of 117 Fortune. 119 The Root of Fortune can be used by the client for service discovery, 120 namely, the available calendar-based fortune heuristics services 121 available on the server, as specified in Section 6. 123 3.1. Well-Known URI Redirection 125 Servers *MUST* redirect HTTP requests for that resource to the actual 126 "context path" using one of the available mechanisms provided by HTTP 127 [RFC7230] (e.g., using a 301, 303, or 307 response). 129 Clients *MUST* handle HTTP redirects on the well-known URI. 131 3.2. Well-Known URI Cache Behavior 133 Servers *SHOULD* set an appropriate Cache-Control header value (as 134 according to Section 5.2 of [RFC7234]) in the redirect response to 135 set caching behavior as required by the type of response generated. 137 4. New HTTP Methods: SEEK and DIVINE 139 This specification defines two new HTTP methods: "SEEK" and "DIVINE" 140 methods for HTTP [RFC7230]. 142 While HTTP GET requests are treated equivalently as the "SEEK" and 143 "DIVINE" requests, its usage is discouraged and therefore *SHOULD 144 NOT* be used. 146 Usage of these methods are defined in the sections below. 148 5. Defined Data Types: Date-Time Formats 150 This specification defines a number of date-time formats as according 151 to the conventions of [RFC3339] for the unambiguous communication 152 between client and server. 154 The types defined are as follows. 156 DATETIME 157 As described in Section 5.6 of [RFC3339], with the addition that 158 reduced accuracy representations described in [ISO.8601-1.2018] 159 are supported. Reduced accuracy date and times are accepted where 160 a date or time component (2-digits long) is replaced by "--". 161 For example, the date time "2018-04---T01:02:00Z" represents the 162 UTC time of 1:02am, on an unknown day within April of the year 163 2018. 165 DATE 166 As described in "DATETIME", but the "time" component will not be 167 taken into account in the algorithm. 169 6. Fortune Heuristics Service Discovery 171 6.1. Root of Fortune Path URI ("/") 173 The Root of Fortune URI, defined as "/" in this document, is used for 174 service discovery on types of calendar-based fortune heuristics 175 available. 177 An empty SEEK request with the "application/json" request type *MUST* 178 be sent to this endpoint to retrieve the available endpoints. All 179 other HTTP methods *MUST NOT* be supported at this URI. 181 An example of such a response is as follows: 183 HTTP/1.1 200 Success 184 Content-Type: application/json 185 Content-Language: en 187 { 188 "diviners" : [ 189 "/astrology", 190 "/bazi", 191 ] 192 } 194 A service discovery object *MUST* have the following members: 196 diviners 197 (JSON array) An array that contains endpoints that conform to this 198 specification. All endpoints listed here are relative to the Root 199 of Fortune path. For example, the path "/astrology" listed in the 200 example has an endpoint path of "[root-of-fortune]/astrology", 201 where "[root-of-fortune]" indicates the real path of the Root of 202 Fortune. 204 7. Fortune Heuristics Service Endpoint 206 An endpoint offering fortune heuristics services *MUST* adhere to 207 specifications in this section. 209 A service *MAY* implement multiple divination services based on 210 different divination methods, such as the digital oracle shown in 211 Figure 1. 213 __ 214 __===^-\ 215 __=== -\ 216 __===- -\ 217 __===- -\ 218 ___===- -\ 219 ===- ---__ -\ 220 \\\ |||^^\ \__ -\ 221 \\\ ||| \__ -\ 222 \\\ ||| ______\_ -\ 223 \\\ ||| _/-******\\__ -\ 224 \\\ || /-****_****-\ \_ -\ 225 \\\ || |-***/ \***-\ \_ -\ 226 \\\ || |-***\___/***-| \ -\ 227 \\\ || \-*********-/ __--/ -\ 228 \\\ || \-******/__-- -\ 229 \\\ || __-- -\ 230 \\\ || __-- -\ 231 \\\ ||__-- -\ 232 \\\ -\ 233 \\\ -\ 234 \\\ -\ 235 \\\ -\ 236 \\\ __ -\ 237 \\\ //##\\ -\ 238 \\\ \\##// -\ 239 \\\ ^^ __--==^ 240 \\\ __--=== 241 \\\ __--=== 242 \\\ __--=== 243 \\\ __--== 244 \\= 246 Figure 1: Dimensional Eye, a digital oracle that communicates through 247 one button 249 7.1. Service Specification Request 251 To retrieve capabilities and parameters of an endpoint complying with 252 this specification, a service specification JSON object is returned. 254 An empty SEEK request with the "application/json" request type *MUST* 255 be sent to this endpoint to retrieve the service specification that 256 describes parameters accepted by this endpoint. 258 Two examples of such a response are given below. 260 HTTP/1.1 200 Success 261 Content-Type: application/json 262 Content-Language: en 264 { 265 "description": "Gaze into your upcoming luck!", 266 "details": "https://divine.example.com/manual/astrology-api", 267 "parameters": { 268 "birthday": { 269 "type": "DATE", 270 "description": "Your birth date in UTC" 271 }, 272 "targetDateBegin": { 273 "type": "DATE", 274 "description": "Start of the target date range to report on" 275 }, 276 "targetDateEnd": { 277 "type": "DATE", 278 "description": "End of the target date range to report on" 279 }, 280 "interval": { 281 "values": { 282 "D": "Daily", 283 "M": "Monthly", 284 "Y": "Yearly" 285 }, 286 "description": "Available intervals to report on." 287 } 288 } 289 } 291 HTTP/1.1 200 Success 292 Content-Type: application/json 293 Content-Language: en 295 { 296 "description": "Matches and mis-matches according to the " 297 "Yin Yang and Five Elements techniques", 298 "details": "https://divine.example.com/manual/bazi-api", 299 "parameters": { 300 "birthday": { 301 "type": "DATETIME", 302 "description": "Your birth date and time in UTC" 303 }, 304 "targetDateBegin": { 305 "type": "DATETIME", 306 "description": "Start of the target date/time range to report on" 307 }, 308 "targetDateEnd": { 309 "type": "DATETIME", 310 "description": "End of the target date/time range to report on" 311 }, 312 "interval": { 313 "values": { 314 "H": "Hourly", 315 "D": "Daily", 316 "M": "Monthly", 317 "Y": "Yearly" 318 }, 319 "description": "Available intervals to report on." 320 } 321 } 322 } 324 7.2. Service Specification Object 326 A service specification object *MUST* contain the following members. 328 description 329 (string) A short, human-readable summary of the fortune heuristic 330 service at this endpoint. This *SHOULD* be a stable reference. 332 details 333 (URI, optional) A URI reference that provides further details for 334 human consumption, such as API documentation that includes details 335 of parameters accepted or response states. 337 parameters 338 (object, mandatory) An object that specifies what parameters are 339 accepted by this endpoint. Each parameter key within this object 340 specifies an accepted parameter name, and its value is a parameter 341 specification object, which is described below. 343 A parameter specification object *SHOULD* contain the following 344 members: 346 type 347 (string, optional) The value type accepted by this parameter. 348 Value types are described in this document. This member is 349 mutually exclusive with "values". 351 description 352 (string, mandatory) The purpose of this parameter. 354 values 355 (object, optional) The accepted values of this parameter, unlisted 356 values *SHOULD* not be accepted by the parameter. Each key within 357 this object specifies an accepted value, and its value provides a 358 description of the purpose of the value. 360 8. Fortune Heuristics Report Request and Response 362 8.1. Fortune Heuristics Report Request 364 A request using the HTTP "DIVINE" method and the "application/json" 365 type *MUST* be sent to the fortune heuristic endpoint to retrieve 366 results for a fortune heuristic query. 368 The request made *MUST* conform to the specifications of the 369 endpoint, as retrieved via the "SEEK" method described in 370 Section 7.1. 372 An example of a request is provided below. 374 URI: /divination/astrology 375 Method: DIVINE 376 Content-Type: application/json 377 Content-Language: en 379 { 380 "birthday": "1976-02-11T00:00:00Z", 381 "targetDateBegin": "2018-01-01T00:00:00Z", 382 "targetDateEnd": "2019-01-01T00:00:00Z", 383 "interval": "M" 384 } 386 8.2. Fortune Heuristics Report Response 388 A fortune heuristic query using the "DIVINE" method triggers a 389 response that contains a fortune heuristics report. 391 A successful response returns a JSON object that *MUST* conform to 392 the object structure described in this section. 394 A report object *SHOULD* contain the following members: 396 type 397 (URI, mandatory) A URI that defines the type of the report located 398 at the "report" key of this object. 400 report 401 (object, mandatory) An object that contains two keys, "intervals" 402 and "events". The "intervals" object contains an array of 403 interval objects that matches the demanded intervals in the 404 request within the target date range. The "events" object 405 contains an array of significant event objects within the target 406 date range. 408 An example of a response is provided below. 410 URI: /divination/astrology 411 Method: DIVINE 412 HTTP/1.1 200 Success 413 Content-Type: application/json 414 Content-Language: en 416 { 417 "type": "https://association-of.astrology/reports/monthly", 418 "report": { 419 "intervals": [ 420 { 421 "dateStart": "2018-01-01T00:00:00Z", 422 "dateEnd": "2018-02-01T00:00:00Z", 423 "categories": [ 424 { 425 "category": 426 "https://divine.example.com/astrology/categories/health" 427 "value": 80, 428 "description": "Charge ahead with excellent health." 429 }, 430 { 431 "category": 432 "https://divine.example.com/astrology/categories/love" 433 "value": 70, 434 "description": 435 "Give a certain person or situation another try!" 436 }, 437 { 438 "category": 439 "https://divine.example.com/astrology/categories/finance" 440 "value": 5, 441 "description": "You've just realized that you don't have 442 any cash on hand." 443 } 444 ] 445 }, 446 { 447 "dateStart": "2018-02-01T00:00:00Z", 448 "dateEnd": "2018-03-01T00:00:00Z", 449 "..." 450 }, 451 "..." 452 ], 453 "events": [ 454 { 455 "dateStart": "2018-01-15T03:20:00", 456 "dateEnd": "2018-01-16T20:22:15", 457 "description": "The planet of growth and good luck, Jupiter 458 will make a harmonious connection with power planet Pluto, 459 helping you connect with influential people", 460 "recommendation": "Engage in networking during this time." 461 }, 462 { 463 "dateStart": "2018-03-22T00:12:40", 464 "dateEnd": "2018-03-28T02:45:03", 465 "description": "Communication planet Mercury enters your sign, 466 which will find you in a busier and chattier mood.", 467 "recommendation": 468 "Take charge of work with your newfound energy." 469 } 470 "..." 471 ] 472 } 473 } 475 Fortune heuristic reports are created by a divination output that 476 *MAY* requires quantitative interpretation. A sample representation 477 of interpreting a graphical divination output is provided in 478 Figure 2. 480 0000000000000000000000000 481 0000000000000000000000001 G 1000000000000000000000000 482 0000000000000000000000011 R 1100000000000000000000000 483 0000000000000000000000111 A 1110000000000000000000000 484 0000000000000000000001111 C 1111000000000000000000000 485 0000000000000000000011111 E 1111100000000000000000000 486 0000000000000000000111111 , 1111110000000000000000000 487 0000000000000000001111111 1111111000000000000000000 488 0000000011111111111111111 M 1111111111111111100000000 489 0000000111111111111111111 E 1111111111111111110000000 490 0000001111111111111111111 R 1111111111111111111000000 491 0000011111111111111111111 C 1111111111111111111100000 492 0000111111111111111111111 Y 1111111111111111111110000 493 0001111111111111111111111 , 1111111111111111111111000 494 0011111111111111111111111 1111111111111111111111100 495 0111111111111111111111111 A 1111111111111111111111110 496 0000000000000000011111111 N 1111111100000000000000000 497 0000000000000000111111111 D 1111111110000000000000000 498 0000000000000001111111111 1111111111000000000000000 499 0000000000000011111111111 P 1111111111100000000000000 500 0000000000000111111111111 E 1111111111110000000000000 501 0000000000001111111111111 A 1111111111111000000000000 502 0000000000011111111111111 C 1111111111111100000000000 503 0000000000111111111111111 E 1111111111111110000000000 504 0000000001111111111111111 . 1111111111111111000000000 506 Figure 2: Forty-nine yarrow sticks reveals a mystical message on 507 fortune 509 8.3. Report Interval Object 511 The "intervals" value of a report object contains a number of report 512 intervals -- each representing a non-overlapping period of the 513 selected interval length. When all of these intervals are put 514 together, the combined period *MUST* fully cover the requested report 515 target period. 517 An example interval object is shown below. 519 { 520 "dateStart": "2018-01-01T00:00:00Z", 521 "dateEnd": "2018-02-01T00:00:00Z", 522 "categories": [ 523 { 524 "category": 525 "https://divine.example.com/astrology/categories/health" 526 "value": 80, 527 "description": "Charge ahead with your excellent health." 528 }, 529 { 530 "category": 531 "https://divine.example.com/astrology/categories/love" 532 "value": 70, 533 "description": "Give a certain person or situation another try!" 534 }, 535 { 536 "category": 537 "https://divine.example.com/astrology/categories/finance" 538 "value": 5, 539 "description": "You've just realized that you don't have 540 any cash on hand." 541 } 542 ] 543 } 545 An interval object *MUST* contain the following members: 547 dateStart 548 (datetime, mandatory) This value specifies the start of the period 549 which this interval object applies to. 551 dateEnd 552 (datetime, mandatory) This value specifies the end of the period 553 which this interval object applies to. 555 In the given example, the "categories" key is an implementation 556 specific object that details heuristic results returned by the 557 selected algorithm. This *MAY* differ in different algorithms. 559 8.4. Report Events Object 561 The "events" value of a report object contains a number of event 562 objects. Each event object represents an event relevant to the 563 calculation of fortune heuristics during a target report period. 564 These events *MAY* be of variable time lengths, and *MAY* be 565 overlapping amongst each other. 567 The following example demonstrates two event objects the service 568 determines relevant to a user's query. 570 { 571 "dateStart": "2018-01-15T03:20:00", 572 "dateEnd": "2018-01-16T20:22:15", 573 "description": "The planet of growth and good luck, Jupiter will 574 make a harmonious connection with power planet Pluto, helping you 575 connect with influential people", 576 "recommendation": "Engage in networking during this time." 577 }, 578 { 579 "dateStart": "2018-03-22T00:12:40", 580 "dateEnd": "2018-03-28T02:45:03", 581 "description": "Communication planet Mercury enters your sign, 582 which will find you in a busier and chattier mood.", 583 "recommendation": "Take charge of work with your newfound energy." 584 } 586 Similar to an interval object, an event object *MUST* contain the 587 following members: 589 dateStart 590 (datetime, mandatory) This value specifies the start of the period 591 described by the event. 593 dateEnd 594 (datetime, mandatory) This value specifies the end of the period 595 described by the event. 597 In the given example, the keys "description" and "recommendation" are 598 implementation-specific details. This *MAY* differ in different 599 algorithms. 601 8.5. Report Generation Errors 603 This specification makes use of normal HTTP error codes with the 604 following extensions. 606 Errors *MUST* be returned using the Problem JSON Structure as 607 accordance with [RFC7807]. 609 422 Unprocessable Entity 610 For example, a malformed date-time parameter, or an illogical 611 input, such as when the subject's birthday occurs after the report 612 target date period. 614 473 Beyond Existing Capability 615 The service determines that the outcome is too difficult to 616 predict. For example, in the case where the calculation is too 617 complex to complete in a certain time period. The service 618 *SHOULD* issue this response code to indicate that the client 619 should not try the same request again. 621 474 Outcome Impossible 622 The service determines that the outcome is impossible. For 623 example, when the algorithm determines that the subject will have 624 deceased before the start of the requested target period. 626 9. Security Considerations 628 o TLS [RFC5246] and authenticated HTTP requests should be used to 629 protect the DIVINE request and responses due to the personal 630 nature of information transmitted. 632 o A client *SHOULD* verify the identity of the server on every 633 request to prevent impersonation or man-in-the-middle attacks, as 634 data transmitted to and from the server is sensitive information, 635 and at times critical information to the user. 637 o Synchronization of client and server time *MUST* be well- 638 considered in the implementation of this specification. A 639 mismatch of client and server time *MAY* lead to algorithm 640 miscalculations that can cause mistaken choices of a user that 641 depends on the reliability of this system. 643 10. IANA Considerations 645 10.1. Well-Known URI Registrations 647 This document defines a well-known URI using the registration 648 procedure and template from Section 5.1 of [RFC5785]. 650 10.1.1. "fortune" Well-Known URI Registration 652 URI suffix 653 fortune 655 Change controller 656 IETF 658 Specification document(s) 659 This document 661 Related information 662 N/A. 664 11. References 666 11.1. Normative References 668 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 669 Requirement Levels", BCP 14, RFC 2119, 670 DOI 10.17487/RFC2119, March 1997, 671 . 673 [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known 674 Uniform Resource Identifiers (URIs)", RFC 5785, 675 DOI 10.17487/RFC5785, April 2010, 676 . 678 [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer 679 Protocol (HTTP/1.1): Message Syntax and Routing", 680 RFC 7230, DOI 10.17487/RFC7230, June 2014, 681 . 683 [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, 684 Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", 685 RFC 7234, DOI 10.17487/RFC7234, June 2014, 686 . 688 [RFC7807] Nottingham, M. and E. Wilde, "Problem Details for HTTP 689 APIs", RFC 7807, DOI 10.17487/RFC7807, March 2016, 690 . 692 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 693 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 694 May 2017, . 696 [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data 697 Interchange Format", STD 90, RFC 8259, 698 DOI 10.17487/RFC8259, December 2017, 699 . 701 11.2. Informative References 703 [ISO.8601-1.2018] 704 ISO/IEC, "ISO/DIS 8601-1:2018, Data elements and 705 interchange formats -- Information interchange -- 706 Representation of dates and times -- Part 1: Basic rules", 707 January 2018, 708 . 710 [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: 711 Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, 712 . 714 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 715 (TLS) Protocol Version 1.2", RFC 5246, 716 DOI 10.17487/RFC5246, August 2008, 717 . 719 Appendix A. Acknowledgements 721 The authors thank the following individuals for their valuable 722 feedback on this specification, and commend them for making fortune 723 heuristics more accessible for the benefit of mankind. 725 Authors' Addresses 727 Gabriel Destiny 728 Divination Inc. 729 9288 N Divine Street 730 Dunn, NC 28334 731 United States of America 733 Email: gabriel.destiny@ribose.com 735 Charise Luck 736 Divination Inc. 737 9288 N Divine Street 738 Dunn, NC 28334 739 United States of America 741 Email: charise.luck@ribose.com