diff --git a/82.md b/82.md index 75d00c3..74b302d 100644 --- a/82.md +++ b/82.md @@ -1,41 +1,62 @@ NIP-82 ====== -Applications ------------- +Software Applications +--------------------- `draft` `optional` This NIP defines kind 32267 to represent a software application. -The description and visuals of an application are optionally provided via a linked [NIP-54](54.md) kind 30818 wiki article. - ## Application ```jsonc { "kind": 32267, - "content": "", + "content": "", // Description of the application, markdown is allowed "tags": [ ["d", ""], // Usually reverse domain notation: com.example.app - ["name", ""], // Name, in case wiki article is missing - ["icon", ""], // Icon URL: https://cdn.zap.store/8a8fc42aed83d76ccb48afd6eec40bb8b15af6296e03a27a9eeab015f07e2a54.png + ["name", ""], // Name: Example App + ["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 - ["commit-id", ""], // SHA1 commit id used to build the release - ["a", "30818::", ""], // Pointer to NIP-54 wiki article ["a", "30617::", ""], // Pointer to NIP-34 repository - ["license", ""] // License ID from https://spdx.org/licenses/: Apache-2.0 + ["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 except for `d`. Android applications MUST use the application identifier as the `d` tag. +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. -The `content` field SHOULD be empty. For `icon` 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. +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. -Clients SHOULD first check for the availability of the linked kind 30818 to retrieve the app description and display information contained in tags including `title`, `summary`, `image`, `icon`, `url`, `t`, etc. The `name` field MUST be used as fallback if `title` was not available. +License IDs are SPDX IDs as defined in https://spdx.org/licenses/. -Note on [NIP-89](89.md): Not all applications can or should handle nostr events. Those that do MAY choose to publish a NIP-89 event. +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 @@ -43,4 +64,4 @@ App authors MAY include their pubkeys as `p` tags and `zap` tags as per [NIP-57 ## Usage -A kind 30063 [release artifact set](51.md) SHOULD have an `"a"` tag reference to this event, alongside its references to `"e"` [file metadata](94.md) events. \ No newline at end of file +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. \ No newline at end of file