diff options
Diffstat (limited to '73.md')
| -rw-r--r-- | 73.md | 60 |
1 files changed, 60 insertions, 0 deletions
| @@ -0,0 +1,60 @@ | |||
| 1 | NIP-73 | ||
| 2 | ====== | ||
| 3 | |||
| 4 | External Content IDs | ||
| 5 | -------------------- | ||
| 6 | |||
| 7 | `draft` `optional` | ||
| 8 | |||
| 9 | There are certain established global content identifiers such as [Book ISBNs](https://en.wikipedia.org/wiki/ISBN), [Podcast GUIDs](https://podcastnamespace.org/tag/guid), and [Movie ISANs](https://en.wikipedia.org/wiki/International_Standard_Audiovisual_Number) that are useful to reference in nostr events so that clients can query all the events assosiated with these ids. | ||
| 10 | |||
| 11 | |||
| 12 | `i` tags are used for referencing these external content ids, with `k` tags representing the external content id kind so that clients can query all the events for a specific kind. | ||
| 13 | |||
| 14 | ## Supported IDs | ||
| 15 | |||
| 16 | | Type | `i` tag | `k` tag | | ||
| 17 | |- | - | - | | ||
| 18 | | URLs | "`<URL, normalized, no fragment>`" | "`<scheme-host, normalized>`" | | ||
| 19 | | Hashtags | "#`<topic, lowercase>`" | "#" | | ||
| 20 | | Geohashes| "geo:`<geohash, lowercase>`" | "geo" | | ||
| 21 | | Books | "isbn:`<id, without hyphens>`" | "isbn" | | ||
| 22 | | Podcast Feeds | "podcast:guid:`<guid>`" | "podcast:guid" | | ||
| 23 | | Podcast Episodes | "podcast:item:guid:`<guid>`" | "podcast:item:guid" | | ||
| 24 | | Podcast Publishers | "podcast:publisher:guid:`<guid>`" | "podcast:publisher:guid" | | ||
| 25 | | Movies | "isan:`<id, without version part>`" | "isan" | | ||
| 26 | | Papers | "doi:`<id, lowercase>`" | "doi" | | ||
| 27 | |||
| 28 | --- | ||
| 29 | |||
| 30 | ## Examples | ||
| 31 | |||
| 32 | ### Books: | ||
| 33 | |||
| 34 | - Book ISBN: `["i", "isbn:9780765382030"]` - https://isbnsearch.org/isbn/9780765382030 | ||
| 35 | |||
| 36 | 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. | ||
| 37 | |||
| 38 | ### Podcasts: | ||
| 39 | |||
| 40 | - Podcast RSS Feed GUID: `["i", "podcast:guid:c90e609a-df1e-596a-bd5e-57bcc8aad6cc"]` - https://podcastindex.org/podcast/c90e609a-df1e-596a-bd5e-57bcc8aad6cc | ||
| 41 | - Podcast RSS Item GUID: `["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f"]` | ||
| 42 | - Podcast RSS Publisher GUID: `["i", "podcast:publisher:guid:18bcbf10-6701-4ffb-b255-bc057390d738"]` | ||
| 43 | |||
| 44 | ### Movies: | ||
| 45 | |||
| 46 | - Movie ISAN: `["i", "isan:0000-0000-401A-0000-7"]` - https://web.isan.org/public/en/isan/0000-0000-401A-0000-7 | ||
| 47 | |||
| 48 | 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 | ||
| 49 | |||
| 50 | --- | ||
| 51 | |||
| 52 | ### Optional URL Hints | ||
| 53 | |||
| 54 | 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: | ||
| 55 | |||
| 56 | `["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f", https://fountain.fm/episode/z1y9TMQRuqXl2awyrQxg]` | ||
| 57 | |||
| 58 | `["i", "isan:0000-0000-401A-0000-7", https://www.imdb.com/title/tt0120737]` | ||
| 59 | |||
| 60 | |||