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