diff options
| author | hodlbod <jstaab@protonmail.com> | 2024-08-06 09:34:24 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-06 09:34:24 -0700 |
| commit | 738c4809a146187b9a2f494f180ce6d770307830 (patch) | |
| tree | f33f8107cbf39409e1a2084ef503b62616950607 | |
| parent | 5f651db43f96f065ea6952cf35126ff00f85ef95 (diff) | |
| parent | 4d9eb32dc9062868d0d61c15456935dad39364de (diff) | |
Merge pull request #1185 from MerryOscar/external-content-ids
NIP-73 - External Content IDs
| -rw-r--r-- | 24.md | 1 | ||||
| -rw-r--r-- | 73.md | 48 | ||||
| -rw-r--r-- | README.md | 3 |
3 files changed, 51 insertions, 1 deletions
| @@ -40,4 +40,5 @@ tags | |||
| 40 | 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: | 40 | 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: |
| 41 | 41 | ||
| 42 | - `r`: a web URL the event is referring to in some way | 42 | - `r`: a web URL the event is referring to in some way |
| 43 | - `i`: an external id the event is referring to in some way - see [NIP-73](73.md) | ||
| 43 | - `title`: name of [NIP-51](51.md) sets, [NIP-52](52.md) calendar event, [NIP-53](53.md) live event or [NIP-99](99.md) listing | 44 | - `title`: name of [NIP-51](51.md) sets, [NIP-52](52.md) calendar event, [NIP-53](53.md) live event or [NIP-99](99.md) listing |
| @@ -0,0 +1,48 @@ | |||
| 1 | NIP-73 | ||
| 2 | ====== | ||
| 3 | |||
| 4 | External Content IDs | ||
| 5 | ------------------------- | ||
| 6 | |||
| 7 | `draft` `optional` | ||
| 8 | |||
| 9 | There are certain established global content identifiers that would be useful to reference in nostr events so that clients can query all events assosiated with these ids. | ||
| 10 | |||
| 11 | - Book [ISBNs](https://en.wikipedia.org/wiki/ISBN) | ||
| 12 | - Podcast [GUIDs](https://podcastnamespace.org/tag/guid) | ||
| 13 | - Movie [ISANs](https://en.wikipedia.org/wiki/International_Standard_Audiovisual_Number) | ||
| 14 | |||
| 15 | Since the `i` tag is already used for similar references in kind-0 metadata events it makes sense to use it for these content ids as well. | ||
| 16 | |||
| 17 | |||
| 18 | ## Supported IDs | ||
| 19 | |||
| 20 | ### Books: | ||
| 21 | |||
| 22 | - Book ISBN: `["i", "isbn:9780765382030"]` - https://isbnsearch.org/isbn/9780765382030 | ||
| 23 | |||
| 24 | Book ISBNs MUST be referenced _**without hyphens**_ as many book search APIs return the ISBNs without hyphens. Removing hypens from ISBNs is trivial, whereas adding the hyphens back in is non-trivial requiring a library. | ||
| 25 | |||
| 26 | ### Podcasts: | ||
| 27 | |||
| 28 | - Podcast RSS Feed GUID: `["i", "podcast:guid:c90e609a-df1e-596a-bd5e-57bcc8aad6cc"]` - https://podcastindex.org/podcast/c90e609a-df1e-596a-bd5e-57bcc8aad6cc | ||
| 29 | - Podcast RSS Item GUID: `["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f"]` | ||
| 30 | - Podcast RSS Publisher GUID: `["i", "podcast:publisher:guid:18bcbf10-6701-4ffb-b255-bc057390d738"]` | ||
| 31 | |||
| 32 | ### Movies: | ||
| 33 | |||
| 34 | - Movie ISAN: `["i", "isan:0000-0000-401A-0000-7"]` - https://web.isan.org/public/en/isan/0000-0000-401A-0000-7 | ||
| 35 | |||
| 36 | Movie ISANs SHOULD be referenced _**without the version part**_ as the versions / edits of movies are not relevant. More info on ISAN parts here - https://support.isan.org/hc/en-us/articles/360002783131-Records-relations-and-hierarchies-in-the-ISAN-Registry | ||
| 37 | |||
| 38 | --- | ||
| 39 | |||
| 40 | ### Optional URL Hints | ||
| 41 | |||
| 42 | Each `i` tag MAY have a url hint as the second argument to redirect people to a website if the client isn't opinionated about how to interpret the id: | ||
| 43 | |||
| 44 | `["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f", https://fountain.fm/episode/z1y9TMQRuqXl2awyrQxg]` | ||
| 45 | |||
| 46 | `["i", "isan:0000-0000-401A-0000-7", https://www.imdb.com/title/tt0120737]` | ||
| 47 | |||
| 48 | |||
| @@ -77,6 +77,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | |||
| 77 | - [NIP-70: Protected Events](70.md) | 77 | - [NIP-70: Protected Events](70.md) |
| 78 | - [NIP-71: Video Events](71.md) | 78 | - [NIP-71: Video Events](71.md) |
| 79 | - [NIP-72: Moderated Communities](72.md) | 79 | - [NIP-72: Moderated Communities](72.md) |
| 80 | - [NIP-73: External Content IDs](73.md) | ||
| 80 | - [NIP-75: Zap Goals](75.md) | 81 | - [NIP-75: Zap Goals](75.md) |
| 81 | - [NIP-78: Application-specific data](78.md) | 82 | - [NIP-78: Application-specific data](78.md) |
| 82 | - [NIP-84: Highlights](84.md) | 83 | - [NIP-84: Highlights](84.md) |
| @@ -238,7 +239,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | |||
| 238 | | `-` | -- | -- | [70](70.md) | | 239 | | `-` | -- | -- | [70](70.md) | |
| 239 | | `g` | geohash | -- | [52](52.md) | | 240 | | `g` | geohash | -- | [52](52.md) | |
| 240 | | `h` | group id | -- | [29](29.md) | | 241 | | `h` | group id | -- | [29](29.md) | |
| 241 | | `i` | identity | proof | [39](39.md) | | 242 | | `i` | external identity | proof, url hint | [39](39.md), [73](73.md) | |
| 242 | | `k` | kind number (string) | -- | [18](18.md), [25](25.md), [72](72.md) | | 243 | | `k` | kind number (string) | -- | [18](18.md), [25](25.md), [72](72.md) | |
| 243 | | `l` | label, label namespace | -- | [32](32.md) | | 244 | | `l` | label, label namespace | -- | [32](32.md) | |
| 244 | | `L` | label namespace | -- | [32](32.md) | | 245 | | `L` | label namespace | -- | [32](32.md) | |