# com.pipobscure.bundle.listing

> Published by [pipobscure.com](https://lexicon.garden/identity/did:plc:rwypz6edxmzyhob2k3rsl2fw)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:rwypz6edxmzyhob2k3rsl2fw/com.pipobscure.bundle.listing)
- [Documentation](https://lexicon.garden/lexicon/did:plc:rwypz6edxmzyhob2k3rsl2fw/com.pipobscure.bundle.listing/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:rwypz6edxmzyhob2k3rsl2fw/com.pipobscure.bundle.listing/examples)

## Definitions

### `com.pipobscure.bundle.listing`

**Type**: `record`

A bundle the repository's owner makes available under a name: the record key, which is also what it installs as. It is an app, or a plugin for one, as its subject says. The record says only where the bundle is fetched from — a url, or a domain whose 'nzip:' TXT record names one, exactly one of the two. It vouches for nothing, and whatever is fetched is verified like any other download.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `createdAt` | `string` (datetime) | Yes | When the bundle was first listed, by the publisher's clock. |
| `description` | `string` | No | What the bundle is, in a sentence or two. |
| `domain` | `string` | No | A domain whose 'nzip:<url>' TXT record says where the bundle is fetched from, so the publisher manages the URL in DNS: lowercase, no trailing dot. Exactly one of url and domain. |
| `subject` | `string` (uri) | Yes | For an app: 'sha256:aa2e2af5c7e057ae771b9c28543044546b9107216418fbb511d1353fd55c1169', the sha256 of this lexicon's NSID, the same in every app's listing, so that a backlink index can enumerate every app listed on the network. For a plugin: the at:// address of the listing of the app it is for, so that the backlink index finds an app's plugins, and never lists them among apps. |
| `title` | `string` | No | A display name; the record key stands in when it is absent. |
| `url` | `string` (uri) | No | Where the bundle is fetched from: an https URL, expected to stay the same across releases. Exactly one of url and domain. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A bundle the repository's owner makes available under a name: the record key, which is also what it installs as. It is an app, or a plugin for one, as its subject says. The record says only where the bundle is fetched from — a url, or a domain whose 'nzip:' TXT record names one, exactly one of the two. It vouches for nothing, and whatever is fetched is verified like any other download.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "description": "When the bundle was first listed, by the publisher's clock.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "What the bundle is, in a sentence or two.",
            "maxGraphemes": 300,
            "maxLength": 3000,
            "type": "string"
          },
          "domain": {
            "description": "A domain whose 'nzip:<url>' TXT record says where the bundle is fetched from, so the publisher manages the URL in DNS: lowercase, no trailing dot. Exactly one of url and domain.",
            "maxLength": 253,
            "type": "string"
          },
          "subject": {
            "description": "For an app: 'sha256:aa2e2af5c7e057ae771b9c28543044546b9107216418fbb511d1353fd55c1169', the sha256 of this lexicon's NSID, the same in every app's listing, so that a backlink index can enumerate every app listed on the network. For a plugin: the at:// address of the listing of the app it is for, so that the backlink index finds an app's plugins, and never lists them among apps.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          },
          "title": {
            "description": "A display name; the record key stands in when it is absent.",
            "maxGraphemes": 64,
            "maxLength": 640,
            "type": "string"
          },
          "url": {
            "description": "Where the bundle is fetched from: an https URL, expected to stay the same across releases. Exactly one of url and domain.",
            "format": "uri",
            "maxLength": 2048,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "com.pipobscure.bundle.listing",
  "lexicon": 1
}
```
