NIP-82 ====== Software Applications --------------------- `draft` `optional` This NIP defines kind 32267 to represent a software application. ## Application ```jsonc { "kind": 32267, "content": "", // Full description of the application, markdown is allowed "tags": [ ["d", ""], // Usually reverse domain notation: com.example.app ["name", ""], // Name: Example App ["summary", ""], // Summary, short description: An app that does example ["icon", ""], // Icon URL ["image", ""], // Image URL, can be used multiple times ["t", ""], // Tags related to the application, can be used multiple times ["url", ""], // Website URL for the app ["repository", ""], // Source code repository URL: https://github.com/example/android ["a", "30617::", ""], // Pointer to NIP-34 repository ["a", "30063::@"], // Pointer to the latest NIP-51 release artifact set ["commit-id", ""], // SHA1 commit id used to build the release ["f", ""], // Platform identifier, can be used multiple times ["license", ""] // License ID ] } ``` All tags are optional but the `d` tag MUST be present. Applications SHOULD use their application or bundle identifier as the `d` tag, which typically is an ID with dots in reverse-domain notation. For `icon` and `image` tags any URL is valid but a Blossom [BUD-01](https://github.com/hzrd149/blossom/blob/master/buds/01.md#get-sha256---get-blob) endpoint is recommended. License IDs are SPDX IDs as defined in https://spdx.org/licenses/. An `a` tag reference to the latest 30063 event SHOULD be present to facilitate discovering the latest release of an app. Similarly, `f` tags SHOULD be included to describe supported platforms that MUST match predefined identifiers. ### Platforms Platform is defined as the specific underlying system on which the application is executed, a combination of operating system and hardware architecture. We use the `f` tag for this purpose, with the following identifiers loosely based off `uname -sm`: | Identifier | OS | Architecture | | --------- | --- | --- | | `android-arm64-v8a` | Android | ARMv8-A | | `android-armeabi-v7a` | Android | ARMv7-A | | `android-x86` | Android | x86 | | `android-x86_64` | Android | x86-64 | | `darwin-arm64` | MacOS | ARM64 | | `darwin-x86_64` | MacOS | x86-64 | | `linux-aarch64` | Linux | ARM64 | | `linux-x86_64` | Linux | x86-64 | | `windows-aarch64` | Windows | ARM64 | | `windows-x86_64` | Windows | x86-64 | | `ios-arm64` | iOS | ARM64 | | `web` | (Web browsers) | - | ### Attribution App authors MAY include their pubkeys as `p` tags and `zap` tags as per [NIP-57 - Appendix G](57.md). This is useful in the case of an author other than the one who signed the event, or multiple authors. ## Usage A kind 30063 [release artifact set](51.md) SHOULD have an `a` tag reference back to this event, alongside its references to `"e"` [file metadata](94.md) events.