# pub.aris.scroll

> Published by [aris-pub.bsky.social](https://lexicon.garden/identity/did:plc:7i46wjtdwxov7vxxlkfnafbd)

✓ This is the authoritative definition for this NSID.

## Description

Metadata record for a scroll on Aris Press. The record points at the canonical Press URL; the scroll content itself remains on Press's content-addressable storage. urlHash + contentHash anchor the record to a specific immutable artifact.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:7i46wjtdwxov7vxxlkfnafbd/pub.aris.scroll)
- [Documentation](https://lexicon.garden/lexicon/did:plc:7i46wjtdwxov7vxxlkfnafbd/pub.aris.scroll/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:7i46wjtdwxov7vxxlkfnafbd/pub.aris.scroll/examples)

## Definitions

### `pub.aris.scroll#author`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No | Author's atproto DID if known. |
| `displayName` | `string` | Yes |  |
| `orcid` | `string` | No | ORCID iD, e.g. 0000-0002-1234-5678. |

### `pub.aris.scroll`

**Type**: `record`

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `abstract` | `string` | Yes | Abstract as plain text. Included in the record so discovery surfaces can render decision context without a click-through. |
| `arch` | `string` | No | ARCH spec version the scroll conforms to (https://aris.pub/arch/). Substrate-trust signal distinguishing Press scrolls from text preprints. |
| `authors` | `array` | Yes | Ordered list of authors. v1: display name only; ORCID and DID will appear once Press resolves per-author identifiers. |
| `canonicalUrl` | `string` (uri) | Yes | Canonical Press URL. This is the artifact location; the record is a pointer, not a replacement. |
| `contentHash` | `string` | Yes | SHA-256 of the canonical scroll content. Lets downstream consumers verify the record points at the artifact it claims to point at. |
| `doi` | `string` | No | DOI assigned by Zenodo, if minted. |
| `format` | `string` | No | Artifact format. interactive_html signals that the scroll is a rich HTML document with progressive-enhancement JavaScript, not a static PDF. |
| `keywords` | `array` | No |  |
| `license` | `string` | Yes | License identifier (e.g. cc-by-4.0, arr). |
| `publicationYear` | `integer` | No |  |
| `publishedAt` | `string` (datetime) | Yes | When the scroll was published on Press. |
| `title` | `string` | Yes | Scroll title. |
| `urlHash` | `string` | Yes | Press's short content-addressable identifier. Used as the atproto record key (rkey) so republish is idempotent. |
| `version` | `integer` | No | Version number within a scroll series. Each version is its own atproto record with its own rkey. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "author": {
      "properties": {
        "did": {
          "description": "Author's atproto DID if known.",
          "format": "did",
          "maxLength": 100,
          "type": "string"
        },
        "displayName": {
          "maxLength": 200,
          "type": "string"
        },
        "orcid": {
          "description": "ORCID iD, e.g. 0000-0002-1234-5678.",
          "maxLength": 30,
          "type": "string"
        }
      },
      "required": [
        "displayName"
      ],
      "type": "object"
    },
    "main": {
      "key": "any",
      "record": {
        "properties": {
          "abstract": {
            "description": "Abstract as plain text. Included in the record so discovery surfaces can render decision context without a click-through.",
            "maxLength": 10000,
            "type": "string"
          },
          "arch": {
            "description": "ARCH spec version the scroll conforms to (https://aris.pub/arch/). Substrate-trust signal distinguishing Press scrolls from text preprints.",
            "maxLength": 10,
            "type": "string"
          },
          "authors": {
            "description": "Ordered list of authors. v1: display name only; ORCID and DID will appear once Press resolves per-author identifiers.",
            "items": {
              "ref": "#author",
              "type": "ref"
            },
            "maxLength": 100,
            "type": "array"
          },
          "canonicalUrl": {
            "description": "Canonical Press URL. This is the artifact location; the record is a pointer, not a replacement.",
            "format": "uri",
            "maxLength": 500,
            "type": "string"
          },
          "contentHash": {
            "description": "SHA-256 of the canonical scroll content. Lets downstream consumers verify the record points at the artifact it claims to point at.",
            "maxLength": 64,
            "minLength": 64,
            "type": "string"
          },
          "doi": {
            "description": "DOI assigned by Zenodo, if minted.",
            "maxLength": 200,
            "type": "string"
          },
          "format": {
            "description": "Artifact format. interactive_html signals that the scroll is a rich HTML document with progressive-enhancement JavaScript, not a static PDF.",
            "knownValues": [
              "interactive_html"
            ],
            "maxLength": 50,
            "type": "string"
          },
          "keywords": {
            "items": {
              "maxLength": 100,
              "type": "string"
            },
            "type": "array"
          },
          "license": {
            "description": "License identifier (e.g. cc-by-4.0, arr).",
            "maxLength": 50,
            "type": "string"
          },
          "publicationYear": {
            "maximum": 2200,
            "minimum": 1900,
            "type": "integer"
          },
          "publishedAt": {
            "description": "When the scroll was published on Press.",
            "format": "datetime",
            "type": "string"
          },
          "title": {
            "description": "Scroll title.",
            "maxLength": 500,
            "type": "string"
          },
          "urlHash": {
            "description": "Press's short content-addressable identifier. Used as the atproto record key (rkey) so republish is idempotent.",
            "maxLength": 20,
            "minLength": 8,
            "type": "string"
          },
          "version": {
            "description": "Version number within a scroll series. Each version is its own atproto record with its own rkey.",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "title",
          "authors",
          "abstract",
          "canonicalUrl",
          "urlHash",
          "contentHash",
          "publishedAt",
          "license"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "Metadata record for a scroll on Aris Press. The record points at the canonical Press URL; the scroll content itself remains on Press's content-addressable storage. urlHash + contentHash anchor the record to a specific immutable artifact.",
  "id": "pub.aris.scroll",
  "lexicon": 1
}
```
