From b8308a9a040005c7a06369d6f71a6f2db6ee9c92 Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Sun, 3 Dec 2023 10:29:59 +0000 Subject: [PATCH 1/2] Amend NIP-52 to require the content field to be provided, and decouple calendar identifier from calendar name --- 52.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/52.md b/52.md index 15cc8fc5dc..71b1df268c 100644 --- a/52.md +++ b/52.md @@ -22,14 +22,14 @@ This kind of calendar event starts on a date and ends before a different date in The format uses a parameterized replaceable event kind `31922`. -The `.content` of these events is optional and should be a detailed description of the calendar event. +The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. The list of tags are as follows: * `d` (required) universally unique identifier (UUID). Generated by the client creating the calendar event. * `name` (required) name of the calendar event * `start` (required) inclusive start date in ISO 8601 format (YYYY-MM-DD). Must be less than `end`, if it exists. * `end` (optional) exclusive end date in ISO 8601 format (YYYY-MM-DD). If omitted, the calendar event ends on the same date as `start`. -* `location` (optional) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call +* `location` (optional, repeated) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call * `g` (optional) [geohash](https://en.wikipedia.org/wiki/Geohash) to associate calendar event with a searchable physical location * `p` (optional, repeated) 32-bytes hex pubkey of a participant, optional recommended relay URL, and participant's role in the meeting * `t` (optional, repeated) hashtag to categorize calendar event @@ -78,7 +78,7 @@ This kind of calendar event spans between a start time and end time. The format uses a parameterized replaceable event kind `31923`. -The `.content` of these events is optional and should be a detailed description of the calendar event. +The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. The list of tags are as follows: * `d` (required) universally unique identifier (UUID). Generated by the client creating the calendar event. @@ -87,7 +87,7 @@ The list of tags are as follows: * `end` (optional) exclusive end Unix timestamp in seconds. If omitted, the calendar event ends instantaneously. * `start_tzid` (optional) time zone of the start timestamp, as defined by the IANA Time Zone Database. e.g., `America/Costa_Rica` * `end_tzid` (optional) time zone of the end timestamp, as defined by the IANA Time Zone Database. e.g., `America/Costa_Rica`. If omitted and `start_tzid` is provided, the time zone of the end timestamp is the same as the start timestamp. -* `location` (optional) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call +* `location` (optional, repeated) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call * `g` (optional) [geohash](https://en.wikipedia.org/wiki/Geohash) to associate calendar event with a searchable physical location * `p` (optional, repeated) 32-bytes hex pubkey of a participant, optional recommended relay URL, and participant's role in the meeting * `t` (optional, repeated) hashtag to categorize calendar event @@ -137,15 +137,23 @@ A calendar is a collection of calendar events, represented as a custom replaceab ### Format +The `.content` of these events should be a detailed description of the calendar. It is required but can be an empty string. + The format uses a custom replaceable list of kind `31924` with a list of tags as described below: -* `d` (required) calendar name +* `d` (required) universally unique identifier. Generated by the client creating the calendar. +* `name` (required) calendar name * `a` (repeated) reference tag to kind `31922` or `31923` calendar event being responded to ```json { + "id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>, + "pubkey": <32-bytes lowercase hex-encoded public key of the event creator>, + "created_at": , "kind": 31924, + "content": "", "tags": [ - ["d", ""], + ["d", ""], + ["name", ""], ["a", "<31922 or 31923>::", ""], ["a", "<31922 or 31923>::", ""] ] From ec08d65665fd533be685702501b69fe9ce7bdd24 Mon Sep 17 00:00:00 2001 From: Terry Yiu <963907+tyiu@users.noreply.github.com> Date: Fri, 8 Dec 2023 09:59:44 -0800 Subject: [PATCH 2/2] Deprecate 'name' for 'title' on calendar events and add 'title' as a shared tag via NIP-24 --- 24.md | 1 + 52.md | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/24.md b/24.md index f830b68d12..d444a4bc1e 100644 --- a/24.md +++ b/24.md @@ -39,3 +39,4 @@ tags These tags may be present in multiple event kinds. Whenever a different meaning is not specified by some more specific NIP, they have the following meanings: - `r`: a web URL the event is referring to in some way + - `title`: title of the event diff --git a/52.md b/52.md index 71b1df268c..4ec6836935 100644 --- a/52.md +++ b/52.md @@ -26,7 +26,7 @@ The `.content` of these events should be a detailed description of the calendar The list of tags are as follows: * `d` (required) universally unique identifier (UUID). Generated by the client creating the calendar event. -* `name` (required) name of the calendar event +* `title` (required) title of the calendar event * `start` (required) inclusive start date in ISO 8601 format (YYYY-MM-DD). Must be less than `end`, if it exists. * `end` (optional) exclusive end date in ISO 8601 format (YYYY-MM-DD). If omitted, the calendar event ends on the same date as `start`. * `location` (optional, repeated) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call @@ -35,6 +35,9 @@ The list of tags are as follows: * `t` (optional, repeated) hashtag to categorize calendar event * `r` (optional, repeated) references / links to web pages, documents, video calls, recorded videos, etc. +The following tags are deprecated: +* `name` name of the calendar event. Use only if `title` is not available. + ```json { "id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>, @@ -45,7 +48,7 @@ The list of tags are as follows: "tags": [ ["d", ""], - ["name", ""], + ["title", ""], // Dates ["start", "<YYYY-MM-DD>"], @@ -82,7 +85,7 @@ The `.content` of these events should be a detailed description of the calendar The list of tags are as follows: * `d` (required) universally unique identifier (UUID). Generated by the client creating the calendar event. -* `name` (required) name of the calendar event +* `title` (required) title of the calendar event * `start` (required) inclusive start Unix timestamp in seconds. Must be less than `end`, if it exists. * `end` (optional) exclusive end Unix timestamp in seconds. If omitted, the calendar event ends instantaneously. * `start_tzid` (optional) time zone of the start timestamp, as defined by the IANA Time Zone Database. e.g., `America/Costa_Rica` @@ -93,6 +96,9 @@ The list of tags are as follows: * `t` (optional, repeated) hashtag to categorize calendar event * `r` (optional, repeated) references / links to web pages, documents, video calls, recorded videos, etc. +The following tags are deprecated: +* `name` name of the calendar event. Use only if `title` is not available. + ```json { "id": <32-bytes lowercase hex-encoded SHA-256 of the the serialized event data>, @@ -103,7 +109,7 @@ The list of tags are as follows: "tags": [ ["d", "<UUID>"], - ["name", "<name of calendar event>"], + ["title", "<title of calendar event>"], // Timestamps ["start", "<Unix timestamp in seconds>"], @@ -141,7 +147,7 @@ The `.content` of these events should be a detailed description of the calendar. The format uses a custom replaceable list of kind `31924` with a list of tags as described below: * `d` (required) universally unique identifier. Generated by the client creating the calendar. -* `name` (required) calendar name +* `title` (required) calendar title * `a` (repeated) reference tag to kind `31922` or `31923` calendar event being responded to ```json @@ -153,7 +159,7 @@ The format uses a custom replaceable list of kind `31924` with a list of tags as "content": "<description of calendar>", "tags": [ ["d", "<UUID>"], - ["name", "<calendar name>"], + ["title", "<calendar title>"], ["a", "<31922 or 31923>:<calendar event author pubkey>:<d-identifier of calendar event>", "<optional relay url>"], ["a", "<31922 or 31923>:<calendar event author pubkey>:<d-identifier of calendar event>", "<optional relay url>"] ]