upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/73.md
diff options
context:
space:
mode:
Diffstat (limited to '73.md')
-rw-r--r--73.md60
1 files changed, 60 insertions, 0 deletions
diff --git a/73.md b/73.md
new file mode 100644
index 0000000..afed8d1
--- /dev/null
+++ b/73.md
@@ -0,0 +1,60 @@
1NIP-73
2======
3
4External Content IDs
5--------------------
6
7`draft` `optional`
8
9There 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
36Book 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
48Movie 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
54Each `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