# io.atcr.hold.captain

> Published by [did:web:lexicon.atcr.io](https://lexicon.garden/identity/did:web:lexicon.atcr.io)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:web:lexicon.atcr.io/io.atcr.hold.captain)
- [Documentation](https://lexicon.garden/lexicon/did:web:lexicon.atcr.io/io.atcr.hold.captain/docs)
- [Examples](https://lexicon.garden/lexicon/did:web:lexicon.atcr.io/io.atcr.hold.captain/examples)

## Definitions

### `io.atcr.hold.captain`

**Type**: `record`

Represents the hold's ownership and metadata. Stored as a singleton record at rkey 'self' in the hold's embedded PDS.

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `owner` | `string` (did) | Yes | DID of the hold owner |
| `public` | `boolean` | Yes | Whether this hold allows public blob reads (pulls) without authentication |
| `region` | `string` | No | S3 region where blobs are stored |
| `successor` | `string` (did) | No | DID of successor hold for migration redirect |
| `deployedAt` | `string` (datetime) | Yes | RFC3339 timestamp of when the hold was deployed |
| `allowAllCrew` | `boolean` | Yes | Allow any authenticated user to register as crew |
| `enableBlueskyPosts` | `boolean` | Yes | Enable Bluesky posts when manifests are pushed |

## Raw Schema

```json
{
  "id": "io.atcr.hold.captain",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "owner",
          "public",
          "allowAllCrew",
          "enableBlueskyPosts",
          "deployedAt"
        ],
        "properties": {
          "owner": {
            "type": "string",
            "format": "did",
            "description": "DID of the hold owner"
          },
          "public": {
            "type": "boolean",
            "description": "Whether this hold allows public blob reads (pulls) without authentication"
          },
          "region": {
            "type": "string",
            "maxLength": 64,
            "description": "S3 region where blobs are stored"
          },
          "successor": {
            "type": "string",
            "format": "did",
            "description": "DID of successor hold for migration redirect"
          },
          "deployedAt": {
            "type": "string",
            "format": "datetime",
            "description": "RFC3339 timestamp of when the hold was deployed"
          },
          "allowAllCrew": {
            "type": "boolean",
            "description": "Allow any authenticated user to register as crew"
          },
          "enableBlueskyPosts": {
            "type": "boolean",
            "description": "Enable Bluesky posts when manifests are pushed"
          }
        }
      },
      "description": "Represents the hold's ownership and metadata. Stored as a singleton record at rkey 'self' in the hold's embedded PDS."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
