Files
next.orly.dev/app/web/src/eventKinds.js
mleku 7f1785a39a Add prebuild script to fetch event kinds from nostr library
- Add scripts/fetch-kinds.js to fetch kinds.json from central source
- Update package.json with prebuild hook to auto-fetch on build
- Regenerate eventKinds.js from https://git.mleku.dev/mleku/nostr/raw/branch/main/encoders/kind/kinds.json
- Now uses single source of truth for all 184 event kinds

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 05:07:34 +01:00

2609 lines
49 KiB
JavaScript

/**
* Nostr Event Kinds Database
* Auto-generated from https://git.mleku.dev/mleku/nostr/raw/branch/main/encoders/kind/kinds.json
* Version: 2025-12-21
* Source: https://github.com/nostr-protocol/nips
*
* DO NOT EDIT - This file is auto-generated by scripts/fetch-kinds.js
*/
export const eventKinds = [
{
"kind": 0,
"name": "Metadata",
"description": "User profile information (name, about, picture, nip05, etc.)",
"nip": "01",
"isReplaceable": true,
"template": {
"kind": 0,
"content": "",
"tags": []
}
},
{
"kind": 1,
"name": "Short Text Note",
"description": "Short-form text post (like a tweet)",
"nip": "01",
"template": {
"kind": 1,
"content": "",
"tags": []
}
},
{
"kind": 2,
"name": "Recommend Relay",
"description": "Relay recommendation",
"nip": "01",
"deprecated": true,
"template": {
"kind": 2,
"content": "",
"tags": []
}
},
{
"kind": 3,
"name": "Follows",
"description": "Following list with optional relay hints",
"nip": "02",
"isReplaceable": true,
"template": {
"kind": 3,
"content": "",
"tags": []
}
},
{
"kind": 4,
"name": "Encrypted Direct Message",
"description": "Private message using NIP-04 encryption",
"nip": "04",
"deprecated": true,
"template": {
"kind": 4,
"content": "",
"tags": []
}
},
{
"kind": 5,
"name": "Event Deletion Request",
"description": "Request to delete events",
"nip": "09",
"template": {
"kind": 5,
"content": "",
"tags": []
}
},
{
"kind": 6,
"name": "Repost",
"description": "Share/repost another text note",
"nip": "18",
"template": {
"kind": 6,
"content": "",
"tags": []
}
},
{
"kind": 7,
"name": "Reaction",
"description": "Like, emoji reaction to an event",
"nip": "25",
"template": {
"kind": 7,
"content": "",
"tags": []
}
},
{
"kind": 8,
"name": "Badge Award",
"description": "Award a badge to someone",
"nip": "58",
"template": {
"kind": 8,
"content": "",
"tags": []
}
},
{
"kind": 9,
"name": "Chat Message",
"description": "Chat message",
"nip": "C7",
"template": {
"kind": 9,
"content": "",
"tags": []
}
},
{
"kind": 10,
"name": "Group Chat Threaded Reply",
"description": "Threaded reply in group chat",
"nip": "29",
"deprecated": true,
"template": {
"kind": 10,
"content": "",
"tags": []
}
},
{
"kind": 11,
"name": "Thread",
"description": "Thread event",
"nip": "7D",
"template": {
"kind": 11,
"content": "",
"tags": []
}
},
{
"kind": 12,
"name": "Group Thread Reply",
"description": "Reply in group thread",
"nip": "29",
"deprecated": true,
"template": {
"kind": 12,
"content": "",
"tags": []
}
},
{
"kind": 13,
"name": "Seal",
"description": "Sealed/encrypted event wrapper",
"nip": "59",
"template": {
"kind": 13,
"content": "",
"tags": []
}
},
{
"kind": 14,
"name": "Direct Message",
"description": "Private direct message using NIP-17",
"nip": "17",
"template": {
"kind": 14,
"content": "",
"tags": []
}
},
{
"kind": 15,
"name": "File Message",
"description": "File message in DMs",
"nip": "17",
"template": {
"kind": 15,
"content": "",
"tags": []
}
},
{
"kind": 16,
"name": "Generic Repost",
"description": "Repost any event kind",
"nip": "18",
"template": {
"kind": 16,
"content": "",
"tags": []
}
},
{
"kind": 17,
"name": "Reaction to Website",
"description": "Reaction to a website URL",
"nip": "25",
"template": {
"kind": 17,
"content": "",
"tags": []
}
},
{
"kind": 20,
"name": "Picture",
"description": "Picture-first feed post",
"nip": "68",
"template": {
"kind": 20,
"content": "",
"tags": []
}
},
{
"kind": 21,
"name": "Video Event",
"description": "Horizontal video event",
"nip": "71",
"template": {
"kind": 21,
"content": "",
"tags": []
}
},
{
"kind": 22,
"name": "Short-form Video",
"description": "Short-form portrait video (like TikTok)",
"nip": "71",
"template": {
"kind": 22,
"content": "",
"tags": []
}
},
{
"kind": 40,
"name": "Channel Creation",
"description": "Create a public chat channel",
"nip": "28",
"template": {
"kind": 40,
"content": "",
"tags": []
}
},
{
"kind": 41,
"name": "Channel Metadata",
"description": "Set channel name, about, picture",
"nip": "28",
"template": {
"kind": 41,
"content": "",
"tags": []
}
},
{
"kind": 42,
"name": "Channel Message",
"description": "Post message in channel",
"nip": "28",
"template": {
"kind": 42,
"content": "",
"tags": []
}
},
{
"kind": 43,
"name": "Channel Hide Message",
"description": "Hide a message in channel",
"nip": "28",
"template": {
"kind": 43,
"content": "",
"tags": []
}
},
{
"kind": 44,
"name": "Channel Mute User",
"description": "Mute a user in channel",
"nip": "28",
"template": {
"kind": 44,
"content": "",
"tags": []
}
},
{
"kind": 62,
"name": "Request to Vanish",
"description": "Request permanent deletion of all user data",
"nip": "62",
"template": {
"kind": 62,
"content": "",
"tags": []
}
},
{
"kind": 64,
"name": "Chess (PGN)",
"description": "Chess game in PGN format",
"nip": "64",
"template": {
"kind": 64,
"content": "",
"tags": []
}
},
{
"kind": 443,
"name": "KeyPackage",
"description": "Marmot protocol key package",
"nip": null,
"spec": "Marmot",
"template": {
"kind": 443,
"content": "",
"tags": []
}
},
{
"kind": 444,
"name": "Welcome Message",
"description": "Marmot protocol welcome message",
"nip": null,
"spec": "Marmot",
"template": {
"kind": 444,
"content": "",
"tags": []
}
},
{
"kind": 445,
"name": "Group Event",
"description": "Marmot protocol group event",
"nip": null,
"spec": "Marmot",
"template": {
"kind": 445,
"content": "",
"tags": []
}
},
{
"kind": 818,
"name": "Merge Requests",
"description": "Git merge request",
"nip": "54",
"template": {
"kind": 818,
"content": "",
"tags": []
}
},
{
"kind": 1018,
"name": "Poll Response",
"description": "Response to a poll",
"nip": "88",
"template": {
"kind": 1018,
"content": "",
"tags": []
}
},
{
"kind": 1021,
"name": "Bid",
"description": "Auction bid",
"nip": "15",
"template": {
"kind": 1021,
"content": "",
"tags": []
}
},
{
"kind": 1022,
"name": "Bid Confirmation",
"description": "Confirmation of auction bid",
"nip": "15",
"template": {
"kind": 1022,
"content": "",
"tags": []
}
},
{
"kind": 1040,
"name": "OpenTimestamps",
"description": "OpenTimestamps attestation",
"nip": "03",
"template": {
"kind": 1040,
"content": "",
"tags": []
}
},
{
"kind": 1059,
"name": "Gift Wrap",
"description": "Encrypted gift-wrapped event",
"nip": "59",
"template": {
"kind": 1059,
"content": "",
"tags": []
}
},
{
"kind": 1060,
"name": "Gift Wrap (Kind 4)",
"description": "Gift wrap variant for NIP-04 compatibility",
"nip": "59",
"template": {
"kind": 1060,
"content": "",
"tags": []
}
},
{
"kind": 1063,
"name": "File Metadata",
"description": "Metadata for shared files",
"nip": "94",
"template": {
"kind": 1063,
"content": "",
"tags": []
}
},
{
"kind": 1068,
"name": "Poll",
"description": "Create a poll",
"nip": "88",
"template": {
"kind": 1068,
"content": "",
"tags": []
}
},
{
"kind": 1111,
"name": "Comment",
"description": "Comment on events or external content",
"nip": "22",
"template": {
"kind": 1111,
"content": "",
"tags": []
}
},
{
"kind": 1222,
"name": "Voice Message",
"description": "Voice message",
"nip": "A0",
"template": {
"kind": 1222,
"content": "",
"tags": []
}
},
{
"kind": 1244,
"name": "Voice Message Comment",
"description": "Comment on voice message",
"nip": "A0",
"template": {
"kind": 1244,
"content": "",
"tags": []
}
},
{
"kind": 1311,
"name": "Live Chat Message",
"description": "Message in live stream chat",
"nip": "53",
"template": {
"kind": 1311,
"content": "",
"tags": []
}
},
{
"kind": 1337,
"name": "Code Snippet",
"description": "Code snippet post",
"nip": "C0",
"template": {
"kind": 1337,
"content": "",
"tags": []
}
},
{
"kind": 1517,
"name": "Bitcoin Block",
"description": "Bitcoin block data",
"nip": null,
"spec": "Nostrocket",
"template": {
"kind": 1517,
"content": "",
"tags": []
}
},
{
"kind": 1617,
"name": "Patches",
"description": "Git patches",
"nip": "34",
"template": {
"kind": 1617,
"content": "",
"tags": []
}
},
{
"kind": 1618,
"name": "Pull Requests",
"description": "Git pull request",
"nip": "34",
"template": {
"kind": 1618,
"content": "",
"tags": []
}
},
{
"kind": 1619,
"name": "Pull Request Updates",
"description": "Updates to git pull request",
"nip": "34",
"template": {
"kind": 1619,
"content": "",
"tags": []
}
},
{
"kind": 1621,
"name": "Issues",
"description": "Git issues",
"nip": "34",
"template": {
"kind": 1621,
"content": "",
"tags": []
}
},
{
"kind": 1622,
"name": "Git Replies",
"description": "Replies on git objects",
"nip": "34",
"deprecated": true,
"template": {
"kind": 1622,
"content": "",
"tags": []
}
},
{
"kind": 1630,
"name": "Status",
"description": "Git status",
"nip": "34",
"template": {
"kind": 1630,
"content": "",
"tags": []
}
},
{
"kind": 1631,
"name": "Status",
"description": "Git status",
"nip": "34",
"template": {
"kind": 1631,
"content": "",
"tags": []
}
},
{
"kind": 1632,
"name": "Status",
"description": "Git status",
"nip": "34",
"template": {
"kind": 1632,
"content": "",
"tags": []
}
},
{
"kind": 1633,
"name": "Status",
"description": "Git status",
"nip": "34",
"template": {
"kind": 1633,
"content": "",
"tags": []
}
},
{
"kind": 1808,
"name": "Live Stream",
"description": "Live streaming event",
"nip": null,
"spec": "zap.stream",
"template": {
"kind": 1808,
"content": "",
"tags": []
}
},
{
"kind": 1971,
"name": "Problem Tracker",
"description": "Problem tracking",
"nip": null,
"spec": "Nostrocket",
"template": {
"kind": 1971,
"content": "",
"tags": []
}
},
{
"kind": 1984,
"name": "Reporting",
"description": "Report content or users",
"nip": "56",
"template": {
"kind": 1984,
"content": "",
"tags": []
}
},
{
"kind": 1985,
"name": "Label",
"description": "Label/tag content with namespace",
"nip": "32",
"template": {
"kind": 1985,
"content": "",
"tags": []
}
},
{
"kind": 1986,
"name": "Relay Reviews",
"description": "Reviews of relays",
"nip": null,
"template": {
"kind": 1986,
"content": "",
"tags": []
}
},
{
"kind": 1987,
"name": "AI Embeddings",
"description": "AI embeddings/vector lists",
"nip": null,
"spec": "NKBIP-02",
"template": {
"kind": 1987,
"content": "",
"tags": []
}
},
{
"kind": 2003,
"name": "Torrent",
"description": "Torrent magnet link",
"nip": "35",
"template": {
"kind": 2003,
"content": "",
"tags": []
}
},
{
"kind": 2004,
"name": "Torrent Comment",
"description": "Comment on torrent",
"nip": "35",
"template": {
"kind": 2004,
"content": "",
"tags": []
}
},
{
"kind": 2022,
"name": "Coinjoin Pool",
"description": "Coinjoin coordination",
"nip": null,
"spec": "joinstr",
"template": {
"kind": 2022,
"content": "",
"tags": []
}
},
{
"kind": 4550,
"name": "Community Post Approval",
"description": "Approve post in community",
"nip": "72",
"template": {
"kind": 4550,
"content": "",
"tags": []
}
},
{
"kind": 5000,
"name": "Job Request",
"description": "Data vending machine job request (start of range)",
"nip": "90",
"template": {
"kind": 5000,
"content": "",
"tags": []
}
},
{
"kind": 6000,
"name": "Job Result",
"description": "Data vending machine job result (start of range)",
"nip": "90",
"template": {
"kind": 6000,
"content": "",
"tags": []
}
},
{
"kind": 7000,
"name": "Job Feedback",
"description": "Feedback on job request/result",
"nip": "90",
"template": {
"kind": 7000,
"content": "",
"tags": []
}
},
{
"kind": 7374,
"name": "Reserved Cashu Wallet Tokens",
"description": "Reserved Cashu wallet tokens",
"nip": "60",
"template": {
"kind": 7374,
"content": "",
"tags": []
}
},
{
"kind": 7375,
"name": "Cashu Wallet Tokens",
"description": "Cashu wallet tokens",
"nip": "60",
"template": {
"kind": 7375,
"content": "",
"tags": []
}
},
{
"kind": 7376,
"name": "Cashu Wallet History",
"description": "Cashu wallet transaction history",
"nip": "60",
"template": {
"kind": 7376,
"content": "",
"tags": []
}
},
{
"kind": 7516,
"name": "Geocache Log",
"description": "Geocaching log entry",
"nip": null,
"spec": "geocaching",
"template": {
"kind": 7516,
"content": "",
"tags": []
}
},
{
"kind": 7517,
"name": "Geocache Proof of Find",
"description": "Proof of geocache find",
"nip": null,
"spec": "geocaching",
"template": {
"kind": 7517,
"content": "",
"tags": []
}
},
{
"kind": 8000,
"name": "Add User",
"description": "Add user to group",
"nip": "43",
"template": {
"kind": 8000,
"content": "",
"tags": []
}
},
{
"kind": 8001,
"name": "Remove User",
"description": "Remove user from group",
"nip": "43",
"template": {
"kind": 8001,
"content": "",
"tags": []
}
},
{
"kind": 9000,
"name": "Group Control Events",
"description": "Group control events (start of range)",
"nip": "29",
"template": {
"kind": 9000,
"content": "",
"tags": []
}
},
{
"kind": 9041,
"name": "Zap Goal",
"description": "Fundraising goal for zaps",
"nip": "75",
"template": {
"kind": 9041,
"content": "",
"tags": []
}
},
{
"kind": 9321,
"name": "Nutzap",
"description": "Cashu nutzap",
"nip": "61",
"template": {
"kind": 9321,
"content": "",
"tags": []
}
},
{
"kind": 9467,
"name": "Tidal Login",
"description": "Tidal streaming login",
"nip": null,
"spec": "Tidal-nostr",
"template": {
"kind": 9467,
"content": "",
"tags": []
}
},
{
"kind": 9734,
"name": "Zap Request",
"description": "Request Lightning payment",
"nip": "57",
"template": {
"kind": 9734,
"content": "",
"tags": []
}
},
{
"kind": 9735,
"name": "Zap",
"description": "Lightning payment receipt",
"nip": "57",
"template": {
"kind": 9735,
"content": "",
"tags": []
}
},
{
"kind": 9802,
"name": "Highlights",
"description": "Highlighted text selection",
"nip": "84",
"template": {
"kind": 9802,
"content": "",
"tags": []
}
},
{
"kind": 10000,
"name": "Mute List",
"description": "List of muted users/content",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10000,
"content": "",
"tags": []
}
},
{
"kind": 10001,
"name": "Pin List",
"description": "Pinned events",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10001,
"content": "",
"tags": []
}
},
{
"kind": 10002,
"name": "Relay List Metadata",
"description": "User's preferred relays for read/write",
"nip": "65",
"isReplaceable": true,
"template": {
"kind": 10002,
"content": "",
"tags": []
}
},
{
"kind": 10003,
"name": "Bookmark List",
"description": "Bookmarked events",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10003,
"content": "",
"tags": []
}
},
{
"kind": 10004,
"name": "Communities List",
"description": "Communities user belongs to",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10004,
"content": "",
"tags": []
}
},
{
"kind": 10005,
"name": "Public Chats List",
"description": "Public chats user is in",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10005,
"content": "",
"tags": []
}
},
{
"kind": 10006,
"name": "Blocked Relays List",
"description": "Relays user has blocked",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10006,
"content": "",
"tags": []
}
},
{
"kind": 10007,
"name": "Search Relays List",
"description": "Preferred search relays",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10007,
"content": "",
"tags": []
}
},
{
"kind": 10008,
"name": "Relay Group Configuration",
"description": "Relay group configuration",
"nip": null,
"isReplaceable": true,
"template": {
"kind": 10008,
"content": "",
"tags": []
}
},
{
"kind": 10009,
"name": "User Groups",
"description": "Groups user belongs to",
"nip": "29",
"isReplaceable": true,
"template": {
"kind": 10009,
"content": "",
"tags": []
}
},
{
"kind": 10012,
"name": "Favorite Relays List",
"description": "User's favorite relays",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10012,
"content": "",
"tags": []
}
},
{
"kind": 10013,
"name": "Private Event Relay List",
"description": "Relays for private events",
"nip": "37",
"isReplaceable": true,
"template": {
"kind": 10013,
"content": "",
"tags": []
}
},
{
"kind": 10015,
"name": "Interests List",
"description": "User interests/topics",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10015,
"content": "",
"tags": []
}
},
{
"kind": 10019,
"name": "Nutzap Mint Recommendation",
"description": "Recommended Cashu mints for nutzaps",
"nip": "61",
"isReplaceable": true,
"template": {
"kind": 10019,
"content": "",
"tags": []
}
},
{
"kind": 10020,
"name": "Media Follows",
"description": "Followed media accounts",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10020,
"content": "",
"tags": []
}
},
{
"kind": 10030,
"name": "User Emoji List",
"description": "Custom emoji list",
"nip": "51",
"isReplaceable": true,
"template": {
"kind": 10030,
"content": "",
"tags": []
}
},
{
"kind": 10050,
"name": "DM Relays List",
"description": "Relays to receive DMs on",
"nip": "17",
"isReplaceable": true,
"template": {
"kind": 10050,
"content": "",
"tags": []
}
},
{
"kind": 10051,
"name": "KeyPackage Relays List",
"description": "Marmot key package relays",
"nip": null,
"isReplaceable": true,
"spec": "Marmot",
"template": {
"kind": 10051,
"content": "",
"tags": []
}
},
{
"kind": 10063,
"name": "User Server List",
"description": "Blossom server list",
"nip": null,
"isReplaceable": true,
"spec": "Blossom",
"template": {
"kind": 10063,
"content": "",
"tags": []
}
},
{
"kind": 10096,
"name": "File Storage Server List",
"description": "File storage servers",
"nip": "96",
"isReplaceable": true,
"deprecated": true,
"template": {
"kind": 10096,
"content": "",
"tags": []
}
},
{
"kind": 10166,
"name": "Relay Monitor Announcement",
"description": "Relay monitoring announcement",
"nip": "66",
"isReplaceable": true,
"template": {
"kind": 10166,
"content": "",
"tags": []
}
},
{
"kind": 10312,
"name": "Room Presence",
"description": "Presence in live room",
"nip": "53",
"isReplaceable": true,
"template": {
"kind": 10312,
"content": "",
"tags": []
}
},
{
"kind": 10377,
"name": "Proxy Announcement",
"description": "Nostr proxy announcement",
"nip": null,
"isReplaceable": true,
"spec": "Nostr Epoxy",
"template": {
"kind": 10377,
"content": "",
"tags": []
}
},
{
"kind": 11111,
"name": "Transport Method Announcement",
"description": "Transport method announcement",
"nip": null,
"isReplaceable": true,
"spec": "Nostr Epoxy",
"template": {
"kind": 11111,
"content": "",
"tags": []
}
},
{
"kind": 12345,
"name": "Relay Policy Configuration",
"description": "Relay-internal policy configuration (admin only)",
"nip": null,
"isReplaceable": true,
"spec": "orly",
"template": {
"kind": 12345,
"content": "",
"tags": []
}
},
{
"kind": 13004,
"name": "JWT Binding",
"description": "Link between JWT certificate and pubkey",
"nip": null,
"isReplaceable": true,
"template": {
"kind": 13004,
"content": "",
"tags": []
}
},
{
"kind": 13194,
"name": "Wallet Service Info",
"description": "NWC wallet service information",
"nip": "47",
"isReplaceable": true,
"template": {
"kind": 13194,
"content": "",
"tags": []
}
},
{
"kind": 13534,
"name": "Membership Lists",
"description": "Group membership lists",
"nip": "43",
"isReplaceable": true,
"template": {
"kind": 13534,
"content": "",
"tags": []
}
},
{
"kind": 14388,
"name": "User Sound Effect Lists",
"description": "Sound effect lists",
"nip": null,
"isReplaceable": true,
"spec": "Corny Chat",
"template": {
"kind": 14388,
"content": "",
"tags": []
}
},
{
"kind": 17375,
"name": "Cashu Wallet Event",
"description": "Cashu wallet event",
"nip": "60",
"isReplaceable": true,
"template": {
"kind": 17375,
"content": "",
"tags": []
}
},
{
"kind": 21000,
"name": "Lightning Pub RPC",
"description": "Lightning.Pub RPC",
"nip": null,
"isEphemeral": true,
"spec": "Lightning.Pub",
"template": {
"kind": 21000,
"content": "",
"tags": []
}
},
{
"kind": 22242,
"name": "Client Authentication",
"description": "Authenticate to relay",
"nip": "42",
"isEphemeral": true,
"template": {
"kind": 22242,
"content": "",
"tags": []
}
},
{
"kind": 23194,
"name": "Wallet Request",
"description": "NWC wallet request",
"nip": "47",
"isEphemeral": true,
"template": {
"kind": 23194,
"content": "",
"tags": []
}
},
{
"kind": 23195,
"name": "Wallet Response",
"description": "NWC wallet response",
"nip": "47",
"isEphemeral": true,
"template": {
"kind": 23195,
"content": "",
"tags": []
}
},
{
"kind": 23196,
"name": "Wallet Notification (NIP-04)",
"description": "NWC wallet notification (NIP-04 encrypted)",
"nip": "47",
"isEphemeral": true,
"template": {
"kind": 23196,
"content": "",
"tags": []
}
},
{
"kind": 23197,
"name": "Wallet Notification",
"description": "NWC wallet notification",
"nip": "47",
"isEphemeral": true,
"template": {
"kind": 23197,
"content": "",
"tags": []
}
},
{
"kind": 24133,
"name": "Nostr Connect",
"description": "Remote signer connection",
"nip": "46",
"isEphemeral": true,
"template": {
"kind": 24133,
"content": "",
"tags": []
}
},
{
"kind": 24242,
"name": "Blobs Stored on Mediaservers",
"description": "Blossom blob storage",
"nip": null,
"isEphemeral": true,
"spec": "Blossom",
"template": {
"kind": 24242,
"content": "",
"tags": []
}
},
{
"kind": 27235,
"name": "HTTP Auth",
"description": "Authenticate HTTP requests",
"nip": "98",
"isEphemeral": true,
"template": {
"kind": 27235,
"content": "",
"tags": []
}
},
{
"kind": 28934,
"name": "Join Request",
"description": "Request to join group",
"nip": "43",
"isEphemeral": true,
"template": {
"kind": 28934,
"content": "",
"tags": []
}
},
{
"kind": 28935,
"name": "Invite Request",
"description": "Invite to group",
"nip": "43",
"isEphemeral": true,
"template": {
"kind": 28935,
"content": "",
"tags": []
}
},
{
"kind": 28936,
"name": "Leave Request",
"description": "Leave group request",
"nip": "43",
"isEphemeral": true,
"template": {
"kind": 28936,
"content": "",
"tags": []
}
},
{
"kind": 30000,
"name": "Follow Sets",
"description": "Categorized people lists",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30000,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30001,
"name": "Generic Lists",
"description": "Generic categorized lists",
"nip": "51",
"isAddressable": true,
"deprecated": true,
"template": {
"kind": 30001,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30002,
"name": "Relay Sets",
"description": "Categorized relay lists",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30002,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30003,
"name": "Bookmark Sets",
"description": "Categorized bookmark lists",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30003,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30004,
"name": "Curation Sets",
"description": "Curated content sets",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30004,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30005,
"name": "Video Sets",
"description": "Video playlists",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30005,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30007,
"name": "Kind Mute Sets",
"description": "Muted event kinds",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30007,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30008,
"name": "Profile Badges",
"description": "Badges displayed on profile",
"nip": "58",
"isAddressable": true,
"template": {
"kind": 30008,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30009,
"name": "Badge Definition",
"description": "Define a badge/achievement",
"nip": "58",
"isAddressable": true,
"template": {
"kind": 30009,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30015,
"name": "Interest Sets",
"description": "Interest/topic sets",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30015,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30017,
"name": "Stall",
"description": "Marketplace stall definition",
"nip": "15",
"isAddressable": true,
"template": {
"kind": 30017,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30018,
"name": "Product",
"description": "Marketplace product listing",
"nip": "15",
"isAddressable": true,
"template": {
"kind": 30018,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30019,
"name": "Marketplace UI/UX",
"description": "Marketplace interface settings",
"nip": "15",
"isAddressable": true,
"template": {
"kind": 30019,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30020,
"name": "Product Sold as Auction",
"description": "Auction product listing",
"nip": "15",
"isAddressable": true,
"template": {
"kind": 30020,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30023,
"name": "Long-form Content",
"description": "Blog post, article in markdown",
"nip": "23",
"isAddressable": true,
"template": {
"kind": 30023,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30024,
"name": "Draft Long-form Content",
"description": "Draft article",
"nip": "23",
"isAddressable": true,
"template": {
"kind": 30024,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30030,
"name": "Emoji Sets",
"description": "Custom emoji sets",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30030,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30040,
"name": "Curated Publication Index",
"description": "Publication index",
"nip": null,
"isAddressable": true,
"spec": "NKBIP-01",
"template": {
"kind": 30040,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30041,
"name": "Curated Publication Content",
"description": "Publication content",
"nip": null,
"isAddressable": true,
"spec": "NKBIP-01",
"template": {
"kind": 30041,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30063,
"name": "Release Artifact Sets",
"description": "Software release artifacts",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30063,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30078,
"name": "Application-specific Data",
"description": "App-specific key-value storage",
"nip": "78",
"isAddressable": true,
"template": {
"kind": 30078,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30166,
"name": "Relay Discovery",
"description": "Relay discovery/monitoring",
"nip": "66",
"isAddressable": true,
"template": {
"kind": 30166,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30267,
"name": "App Curation Sets",
"description": "Curated app sets",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 30267,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30311,
"name": "Live Event",
"description": "Live streaming event",
"nip": "53",
"isAddressable": true,
"template": {
"kind": 30311,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30312,
"name": "Interactive Room",
"description": "Interactive live room",
"nip": "53",
"isAddressable": true,
"template": {
"kind": 30312,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30313,
"name": "Conference Event",
"description": "Conference/meetup event",
"nip": "53",
"isAddressable": true,
"template": {
"kind": 30313,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30315,
"name": "User Statuses",
"description": "User status updates",
"nip": "38",
"isAddressable": true,
"template": {
"kind": 30315,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30388,
"name": "Slide Set",
"description": "Presentation slides",
"nip": null,
"isAddressable": true,
"spec": "Corny Chat",
"template": {
"kind": 30388,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30402,
"name": "Classified Listing",
"description": "Classified ad listing",
"nip": "99",
"isAddressable": true,
"template": {
"kind": 30402,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30403,
"name": "Draft Classified Listing",
"description": "Draft classified ad",
"nip": "99",
"isAddressable": true,
"template": {
"kind": 30403,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30617,
"name": "Repository Announcements",
"description": "Git repository announcement",
"nip": "34",
"isAddressable": true,
"template": {
"kind": 30617,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30618,
"name": "Repository State Announcements",
"description": "Git repository state",
"nip": "34",
"isAddressable": true,
"template": {
"kind": 30618,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30818,
"name": "Wiki Article",
"description": "Wiki article",
"nip": "54",
"isAddressable": true,
"template": {
"kind": 30818,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 30819,
"name": "Redirects",
"description": "URL redirects",
"nip": "54",
"isAddressable": true,
"template": {
"kind": 30819,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31234,
"name": "Draft Event",
"description": "Draft of any event",
"nip": "37",
"isAddressable": true,
"template": {
"kind": 31234,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31388,
"name": "Link Set",
"description": "Link collection",
"nip": null,
"isAddressable": true,
"spec": "Corny Chat",
"template": {
"kind": 31388,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31890,
"name": "Feed",
"description": "Custom feed definition",
"nip": null,
"isAddressable": true,
"spec": "NUD: Custom Feeds",
"template": {
"kind": 31890,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31922,
"name": "Date-Based Calendar Event",
"description": "All-day calendar event",
"nip": "52",
"isAddressable": true,
"template": {
"kind": 31922,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31923,
"name": "Time-Based Calendar Event",
"description": "Calendar event with time",
"nip": "52",
"isAddressable": true,
"template": {
"kind": 31923,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31924,
"name": "Calendar",
"description": "Calendar definition",
"nip": "52",
"isAddressable": true,
"template": {
"kind": 31924,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31925,
"name": "Calendar Event RSVP",
"description": "RSVP to calendar event",
"nip": "52",
"isAddressable": true,
"template": {
"kind": 31925,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31989,
"name": "Handler Recommendation",
"description": "Recommended app for event kind",
"nip": "89",
"isAddressable": true,
"template": {
"kind": 31989,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 31990,
"name": "Handler Information",
"description": "App handler declaration",
"nip": "89",
"isAddressable": true,
"template": {
"kind": 31990,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 32123,
"name": "WaveLake Track",
"description": "WaveLake music track",
"nip": null,
"isAddressable": true,
"spec": "WaveLake",
"template": {
"kind": 32123,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 32267,
"name": "Software Application",
"description": "Software application listing",
"nip": null,
"isAddressable": true,
"template": {
"kind": 32267,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 32388,
"name": "User Room Favorites",
"description": "Favorite rooms",
"nip": null,
"isAddressable": true,
"spec": "Corny Chat",
"template": {
"kind": 32388,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 33388,
"name": "High Scores",
"description": "Game high scores",
"nip": null,
"isAddressable": true,
"spec": "Corny Chat",
"template": {
"kind": 33388,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 34235,
"name": "Video Event Horizontal",
"description": "Horizontal video event",
"nip": "71",
"isAddressable": true,
"template": {
"kind": 34235,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 34236,
"name": "Video Event Vertical",
"description": "Vertical video event",
"nip": "71",
"isAddressable": true,
"template": {
"kind": 34236,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 34388,
"name": "Sound Effects",
"description": "Sound effect definitions",
"nip": null,
"isAddressable": true,
"spec": "Corny Chat",
"template": {
"kind": 34388,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 34550,
"name": "Community Definition",
"description": "Define a community",
"nip": "72",
"isAddressable": true,
"template": {
"kind": 34550,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 37516,
"name": "Geocache Listing",
"description": "Geocache location listing",
"nip": null,
"isAddressable": true,
"spec": "geocaching",
"template": {
"kind": 37516,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 38172,
"name": "Cashu Mint Announcement",
"description": "Cashu mint announcement",
"nip": "87",
"isAddressable": true,
"template": {
"kind": 38172,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 38173,
"name": "Fedimint Announcement",
"description": "Fedimint announcement",
"nip": "87",
"isAddressable": true,
"template": {
"kind": 38173,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 38383,
"name": "Peer-to-peer Order Events",
"description": "P2P trading orders",
"nip": "69",
"isAddressable": true,
"template": {
"kind": 38383,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 39000,
"name": "Group Metadata Events",
"description": "Group metadata (start of range)",
"nip": "29",
"isAddressable": true,
"template": {
"kind": 39000,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 39089,
"name": "Starter Packs",
"description": "Starter pack lists",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 39089,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 39092,
"name": "Media Starter Packs",
"description": "Media starter packs",
"nip": "51",
"isAddressable": true,
"template": {
"kind": 39092,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 39701,
"name": "Web Bookmarks",
"description": "Web URL bookmarks",
"nip": "B0",
"isAddressable": true,
"template": {
"kind": 39701,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
},
{
"kind": 39998,
"name": "ACL Event",
"description": "Access control list event",
"nip": null,
"isAddressable": true,
"template": {
"kind": 39998,
"content": "",
"tags": [
[
"d",
"identifier"
]
]
}
}
];
// Kind ranges for classification
export const kindRanges = {
"regular": {
"start": 1000,
"end": 9999,
"description": "Regular events - all versions kept, never replaced"
},
"replaceable": {
"start": 10000,
"end": 19999,
"description": "Replaceable events - only latest per pubkey kept"
},
"ephemeral": {
"start": 20000,
"end": 29999,
"description": "Ephemeral events - forwarded but not stored"
},
"parameterized": {
"start": 30000,
"end": 39999,
"description": "Parameterized replaceable - replaced by d tag value"
}
};
// Privileged kinds (require auth)
export const privilegedKinds = [4,13,14,15,1059,1060,30078];
// Directory kinds (public discovery)
export const directoryKinds = [0,3,5,1984,10002,10000,10050];
// Kind aliases
export const kindAliases = {
"SetMetadata": 0,
"Follows": 3,
"Contacts": 3,
"Deletion": 5,
"MemoryHole": 1984,
"BlockList": 10000,
"Article": 30023,
"CategorizedPeopleList": 30000,
"CategorizedBookmarksList": 30001
};
// Helper function to get event kind by number
export function getEventKind(kindNumber) {
return eventKinds.find(k => k.kind === kindNumber);
}
// Alias for compatibility
export function getKindInfo(kind) {
return getEventKind(kind);
}
export function getKindName(kind) {
const info = getEventKind(kind);
return info ? info.name : `Kind ${kind}`;
}
// Helper function to search event kinds by name or description
export function searchEventKinds(query) {
const lowerQuery = query.toLowerCase();
return eventKinds.filter(k =>
k.name.toLowerCase().includes(lowerQuery) ||
k.description.toLowerCase().includes(lowerQuery) ||
k.kind.toString().includes(query)
);
}
// Helper function to get all event kinds grouped by category
export function getEventKindsByCategory() {
return {
regular: eventKinds.filter(k => k.kind < 10000 && !k.isReplaceable),
replaceable: eventKinds.filter(k => k.isReplaceable),
ephemeral: eventKinds.filter(k => k.isEphemeral),
addressable: eventKinds.filter(k => k.isAddressable)
};
}
// Helper function to create a template event with current timestamp
export function createTemplateEvent(kindNumber, userPubkey = null) {
const kindInfo = getEventKind(kindNumber);
if (!kindInfo) {
return {
kind: kindNumber,
content: "",
tags: [],
created_at: Math.floor(Date.now() / 1000),
pubkey: userPubkey || "<your_pubkey_here>"
};
}
return {
...kindInfo.template,
created_at: Math.floor(Date.now() / 1000),
pubkey: userPubkey || "<your_pubkey_here>"
};
}
export function isReplaceable(kind) {
if (kind === 0 || kind === 3) return true;
return kind >= 10000 && kind < 19999;
}
export function isEphemeral(kind) {
return kind >= 20000 && kind < 29999;
}
export function isAddressable(kind) {
return kind >= 30000 && kind <= 39999;
}
export function isPrivileged(kind) {
return privilegedKinds.includes(kind);
}
// Export kind categories for filtering in UI
export const kindCategories = [
{ id: "all", name: "All Kinds", filter: () => true },
{ id: "regular", name: "Regular Events (0-9999)", filter: k => k.kind < 10000 && !k.isReplaceable },
{ id: "replaceable", name: "Replaceable (10000-19999)", filter: k => k.isReplaceable },
{ id: "ephemeral", name: "Ephemeral (20000-29999)", filter: k => k.isEphemeral },
{ id: "addressable", name: "Addressable (30000-39999)", filter: k => k.isAddressable },
{ id: "social", name: "Social", filter: k => [0, 1, 3, 6, 7].includes(k.kind) },
{ id: "messaging", name: "Messaging", filter: k => [4, 9, 10, 11, 12, 14, 15, 40, 41, 42].includes(k.kind) },
{ id: "lists", name: "Lists", filter: k => k.name.toLowerCase().includes("list") || k.name.toLowerCase().includes("set") },
{ id: "marketplace", name: "Marketplace", filter: k => [30017, 30018, 30019, 30020, 1021, 1022, 30402, 30403].includes(k.kind) },
{ id: "lightning", name: "Lightning/Zaps", filter: k => [9734, 9735, 9041, 9321, 7374, 7375, 7376].includes(k.kind) },
{ id: "media", name: "Media", filter: k => [20, 21, 22, 1063, 1222, 1244].includes(k.kind) },
{ id: "git", name: "Git/Code", filter: k => [818, 1337, 1617, 1618, 1619, 1621, 1622, 30617, 30618].includes(k.kind) },
{ id: "calendar", name: "Calendar", filter: k => [31922, 31923, 31924, 31925].includes(k.kind) },
{ id: "groups", name: "Groups", filter: k => (k.kind >= 9000 && k.kind <= 9030) || (k.kind >= 39000 && k.kind <= 39009) },
];