diff options
| author | Kieran <kieran@harkin.me> | 2024-10-15 11:15:54 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-15 11:15:54 +0100 |
| commit | 1e2f19863ca56754daa2466881eb22087a71b17d (patch) | |
| tree | 4f7be759dce290fea1d3ae10c403260b466ee16c /52.md | |
| parent | 53afaaece61f02e92b5ef9c3e9c32945c7ebf522 (diff) | |
| parent | e381b577c997b849fa544eea7dc9f08b360b4a33 (diff) | |
Merge branch 'master' into nip71-imeta
Diffstat (limited to '52.md')
| -rw-r--r-- | 52.md | 29 |
1 files changed, 23 insertions, 6 deletions
| @@ -6,7 +6,7 @@ Calendar Events | |||
| 6 | 6 | ||
| 7 | `draft` `optional` | 7 | `draft` `optional` |
| 8 | 8 | ||
| 9 | This specification defines calendar events representing an occurrence at a specific moment or between moments. These calendar events are _parameterized replaceable_ and deletable per [NIP-09](09.md). | 9 | This specification defines calendar events representing an occurrence at a specific moment or between moments. These calendar events are _addressable_ and deletable per [NIP-09](09.md). |
| 10 | 10 | ||
| 11 | Unlike the term `calendar event` specific to this NIP, the term `event` is used broadly in all the NIPs to describe any Nostr event. The distinction is being made here to discern between the two terms. | 11 | Unlike the term `calendar event` specific to this NIP, the term `event` is used broadly in all the NIPs to describe any Nostr event. The distinction is being made here to discern between the two terms. |
| 12 | 12 | ||
| @@ -20,7 +20,7 @@ This kind of calendar event starts on a date and ends before a different date in | |||
| 20 | 20 | ||
| 21 | #### Format | 21 | #### Format |
| 22 | 22 | ||
| 23 | The format uses a parameterized replaceable event kind `31922`. | 23 | The format uses an _addressable event_ of `kind:31922`. |
| 24 | 24 | ||
| 25 | The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. | 25 | The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. |
| 26 | 26 | ||
| @@ -79,7 +79,7 @@ This kind of calendar event spans between a start time and end time. | |||
| 79 | 79 | ||
| 80 | #### Format | 80 | #### Format |
| 81 | 81 | ||
| 82 | The format uses a parameterized replaceable event kind `31923`. | 82 | The format uses an _addressable event_ kind `31923`. |
| 83 | 83 | ||
| 84 | The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. | 84 | The `.content` of these events should be a detailed description of the calendar event. It is required but can be an empty string. |
| 85 | 85 | ||
| @@ -90,9 +90,12 @@ The list of tags are as follows: | |||
| 90 | * `end` (optional) exclusive end Unix timestamp in seconds. If omitted, the calendar event ends instantaneously. | 90 | * `end` (optional) exclusive end Unix timestamp in seconds. If omitted, the calendar event ends instantaneously. |
| 91 | * `start_tzid` (optional) time zone of the start timestamp, as defined by the IANA Time Zone Database. e.g., `America/Costa_Rica` | 91 | * `start_tzid` (optional) time zone of the start timestamp, as defined by the IANA Time Zone Database. e.g., `America/Costa_Rica` |
| 92 | * `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. | 92 | * `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. |
| 93 | * `summary` (optional) brief description of the calendar event | ||
| 94 | * `image` (optional) url of an image to use for the event | ||
| 93 | * `location` (optional, repeated) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call | 95 | * `location` (optional, repeated) location of the calendar event. e.g. address, GPS coordinates, meeting room name, link to video call |
| 94 | * `g` (optional) [geohash](https://en.wikipedia.org/wiki/Geohash) to associate calendar event with a searchable physical location | 96 | * `g` (optional) [geohash](https://en.wikipedia.org/wiki/Geohash) to associate calendar event with a searchable physical location |
| 95 | * `p` (optional, repeated) 32-bytes hex pubkey of a participant, optional recommended relay URL, and participant's role in the meeting | 97 | * `p` (optional, repeated) 32-bytes hex pubkey of a participant, optional recommended relay URL, and participant's role in the meeting |
| 98 | * `l` (optional, repeated) label to categorize calendar event. e.g. `audiospace` to denote a scheduled event from a live audio space implementation such as cornychat.com | ||
| 96 | * `t` (optional, repeated) hashtag to categorize calendar event | 99 | * `t` (optional, repeated) hashtag to categorize calendar event |
| 97 | * `r` (optional, repeated) references / links to web pages, documents, video calls, recorded videos, etc. | 100 | * `r` (optional, repeated) references / links to web pages, documents, video calls, recorded videos, etc. |
| 98 | 101 | ||
| @@ -110,6 +113,8 @@ The following tags are deprecated: | |||
| 110 | ["d", "<UUID>"], | 113 | ["d", "<UUID>"], |
| 111 | 114 | ||
| 112 | ["title", "<title of calendar event>"], | 115 | ["title", "<title of calendar event>"], |
| 116 | ["summary", "<brief description of the calendar event>"], | ||
| 117 | ["image", "<string with image URI>"], | ||
| 113 | 118 | ||
| 114 | // Timestamps | 119 | // Timestamps |
| 115 | ["start", "<Unix timestamp in seconds>"], | 120 | ["start", "<Unix timestamp in seconds>"], |
| @@ -126,6 +131,10 @@ The following tags are deprecated: | |||
| 126 | ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>", "<role>"], | 131 | ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>", "<role>"], |
| 127 | ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>", "<role>"], | 132 | ["p", "<32-bytes hex of a pubkey>", "<optional recommended relay URL>", "<role>"], |
| 128 | 133 | ||
| 134 | // Labels (example using com.cornychat namespace denoting the event as an audiospace) | ||
| 135 | ["L", "com.cornychat"], | ||
| 136 | ["l", "audiospace", "com.cornychat"], | ||
| 137 | |||
| 129 | // Hashtags | 138 | // Hashtags |
| 130 | ["t", "<tag>"], | 139 | ["t", "<tag>"], |
| 131 | ["t", "<tag>"], | 140 | ["t", "<tag>"], |
| @@ -178,17 +187,23 @@ This NIP is intentionally not defining who is authorized to attend a calendar ev | |||
| 178 | 187 | ||
| 179 | This NIP is also intentionally not defining what happens if a calendar event changes after an RSVP is submitted. | 188 | This NIP is also intentionally not defining what happens if a calendar event changes after an RSVP is submitted. |
| 180 | 189 | ||
| 190 | The RSVP MUST have an `a` tag of the event coordinates to the calendar event, and optionally an `e` tag of the id of the specific calendar event revision. If an `e` tag is present, clients SHOULD interpret it as an indication that the RSVP is a response to that revision of the calendar event, and MAY interpret it to not necessarily apply to other revisions of the calendar event. | ||
| 191 | |||
| 192 | The RSVP MAY tag the author of the calendar event it is in response to using a `p` tag so that clients can easily query all RSVPs that pertain to the author. | ||
| 193 | |||
| 181 | ### Format | 194 | ### Format |
| 182 | 195 | ||
| 183 | The format uses a parameterized replaceable event kind `31925`. | 196 | The format uses an _addressable event_ kind `31925`. |
| 184 | 197 | ||
| 185 | The `.content` of these events is optional and should be a free-form note that adds more context to this calendar event response. | 198 | The `.content` of these events is optional and should be a free-form note that adds more context to this calendar event response. |
| 186 | 199 | ||
| 187 | The list of tags are as follows: | 200 | The list of tags are as follows: |
| 188 | * `a` (required) reference tag to kind `31922` or `31923` calendar event being responded to. | 201 | * `a` (required) coordinates to a kind `31922` or `31923` calendar event being responded to. |
| 202 | * `e` (optional) event id of a kind `31922` or `31923` calendar event being responded to. | ||
| 189 | * `d` (required) universally unique identifier. Generated by the client creating the calendar event RSVP. | 203 | * `d` (required) universally unique identifier. Generated by the client creating the calendar event RSVP. |
| 190 | * `status` (required) `accepted`, `declined`, or `tentative`. Determines attendance status to the referenced calendar event. | 204 | * `status` (required) `accepted`, `declined`, or `tentative`. Determines attendance status to the referenced calendar event. |
| 191 | * `fb` (optional) `free` or `busy`. Determines if the user would be free or busy for the duration of the calendar event. This tag must be omitted or ignored if the `status` label is set to `declined`. | 205 | * `fb` (optional) `free` or `busy`. Determines if the user would be free or busy for the duration of the calendar event. This tag must be omitted or ignored if the `status` label is set to `declined`. |
| 206 | * `p` (optional) pubkey of the author of the calendar event being responded to. | ||
| 192 | 207 | ||
| 193 | ```json | 208 | ```json |
| 194 | { | 209 | { |
| @@ -198,10 +213,12 @@ The list of tags are as follows: | |||
| 198 | "kind": 31925, | 213 | "kind": 31925, |
| 199 | "content": "<note>", | 214 | "content": "<note>", |
| 200 | "tags": [ | 215 | "tags": [ |
| 201 | ["a", "<31922 or 31923>:<calendar event author pubkey>:<d-identifier of calendar event>", "<optional relay url>"], | 216 | ["e", "<kind 31922 or 31923 event id", "<optional recommended relay URL>"] |
| 217 | ["a", "<31922 or 31923>:<calendar event author pubkey>:<d-identifier of calendar event>", "<optional recommended relay URL>"], | ||
| 202 | ["d", "<UUID>"], | 218 | ["d", "<UUID>"], |
| 203 | ["status", "<accepted/declined/tentative>"], | 219 | ["status", "<accepted/declined/tentative>"], |
| 204 | ["fb", "<free/busy>"], | 220 | ["fb", "<free/busy>"], |
| 221 | ["p", "<hex pubkey of kind 31922 or 31923 event>", "<optional recommended relay URL>"] | ||
| 205 | ] | 222 | ] |
| 206 | } | 223 | } |
| 207 | ``` | 224 | ``` |