# codes.tcm.release

> A release of a tcm package, announced by its author: the namespace hash a version is, and tcm servers it can be fetched from. Its key is <package>:<version> (with any other character as ~), so a version is one record.

- Kind: record
- Record key: any
- Authority: tcm.codes
- Lexicon: 1
- Published by [tcm.codes](https://lexicon.garden/identity/did:plc:vh4czvu5aijkaqge5huayq53), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:vh4czvu5aijkaqge5huayq53/codes.tcm.release)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:vh4czvu5aijkaqge5huayq53/codes.tcm.release/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:vh4czvu5aijkaqge5huayq53/codes.tcm.release/analytics)

## Record (`codes.tcm.release`)

Type: record · key any

### Properties

- `createdAt` (string · datetime, required): When the release was made.
- `entry` (string, required): The hash of the history entry the release names.
  - Constraints: minLength: 8, maxLength: 128
- `hashFormat` (integer, required): The hash format the hashes are in (tcm's IR version).
  - Constraints: minimum: 1
- `namespace` (string, required): The package's namespace hash, as released: what `tcm lib add` mounts.
  - Constraints: minLength: 8, maxLength: 128
- `notes` (string, required): The release notes, as markdown.
  - Constraints: maxLength: 100000
- `package` (string, required): The package's name, as its manifest gives it: an npm package name.
  - Constraints: minLength: 1, maxLength: 214
- `sources` (array, required): tcm servers to fetch it from, in order. What they send is re-hashed, so they need no trust.
  - Constraints: maxLength: 16
  - `items` (string · uri): A tcm server's URL (http or https), as `tcm serve` serves it.
    - Constraints: maxLength: 2048
- `version` (string, required): The version: major.minor.patch, semver.
  - Constraints: minLength: 5, maxLength: 64

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A release of a tcm package, announced by its author: the namespace hash a version is, and tcm servers it can be fetched from. Its key is <package>:<version> (with any other character as ~), so a version is one record.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "description": "When the release was made.",
            "format": "datetime",
            "type": "string"
          },
          "entry": {
            "description": "The hash of the history entry the release names.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          },
          "hashFormat": {
            "description": "The hash format the hashes are in (tcm's IR version).",
            "minimum": 1,
            "type": "integer"
          },
          "namespace": {
            "description": "The package's namespace hash, as released: what `tcm lib add` mounts.",
            "maxLength": 128,
            "minLength": 8,
            "type": "string"
          },
          "notes": {
            "description": "The release notes, as markdown.",
            "maxLength": 100000,
            "type": "string"
          },
          "package": {
            "description": "The package's name, as its manifest gives it: an npm package name.",
            "maxLength": 214,
            "minLength": 1,
            "type": "string"
          },
          "sources": {
            "description": "tcm servers to fetch it from, in order. What they send is re-hashed, so they need no trust.",
            "items": {
              "description": "A tcm server's URL (http or https), as `tcm serve` serves it.",
              "format": "uri",
              "maxLength": 2048,
              "type": "string"
            },
            "maxLength": 16,
            "type": "array"
          },
          "version": {
            "description": "The version: major.minor.patch, semver.",
            "maxLength": 64,
            "minLength": 5,
            "type": "string"
          }
        },
        "required": [
          "package",
          "version",
          "namespace",
          "entry",
          "hashFormat",
          "notes",
          "sources",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "A release of a tcm package, announced on the AT Protocol by its author.",
  "id": "codes.tcm.release",
  "lexicon": 1
}
```
