# com.cultureblocs.defs

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

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:l3726um33xesakwqhjkkpoet/com.cultureblocs.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:l3726um33xesakwqhjkkpoet/com.cultureblocs.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:l3726um33xesakwqhjkkpoet/com.cultureblocs.defs/examples)

## Definitions

### `com.cultureblocs.defs#geo`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `lat` | `number` | Yes |  |
| `lng` | `number` | Yes |  |
| `precision` | `string` | Yes | Declared coordinate fuzzing level. Coordinates MUST already be fuzzed to this precision before the record leaves Tier 0. |

### `com.cultureblocs.defs#didRef`

**Type**: `object`

A person or organisation by DID, with a descriptive fallback name.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes |  |
| `name` | `string` | No |  |

### `com.cultureblocs.defs#linkRef`

**Type**: `object`

External link attached to a bead or strand: event page, venue page, ticket listing.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uri` | `string` (uri) | Yes |  |
| `title` | `string` | No |  |

### `com.cultureblocs.defs#workRef`

**Type**: `object`

Reference to an artwork/creative work. At least one resolvable ID or a descriptive fallback (title).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `date` | `string` | No | Freeform creation date, e.g. '1972' or 'c. 1889' |
| `image` | `ref` → `#mediaRef` | No |  |
| `title` | `string` | No |  |
| `creator` | `string` | No |  |
| `wikidata` | `string` | No | Wikidata QID, e.g. Q1892745 |
| `accession` | `ref` → `#accessionRef` | No |  |
| `linkedArt` | `string` (uri) | No | Linked Art object URI |
| `creatorDid` | `string` (did) | No | DID of the creative who made this work, when known. The `creator` string remains the descriptive fallback. |

### `com.cultureblocs.defs#imageRef`

**Type**: `object`

A published image and the two things a reader needs to present it honestly: what it shows, and how much room it takes. Field names match app.bsky.embed.images#image and the community standalone-image proposal, so this can become a ref to a shared lexicon without changing the published payload.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `string` | No | What the image shows. Absent means absent — readers must not substitute a title. |
| `image` | `blob` | Yes |  |
| `aspectRatio` | `ref` → `#aspectRatio` | No |  |

### `com.cultureblocs.defs#mediaRef`

**Type**: `object`

Tier 0/1 media reference. Replaced by an imageRef at promotion time; alt text and aspectRatio carry across unchanged.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `string` | No |  |
| `uri` | `string` (uri) | Yes |  |
| `mime` | `string` | No |  |
| `aspectRatio` | `ref` → `#aspectRatio` | No |  |

### `com.cultureblocs.defs#placeRef`

**Type**: `object`

A venue with an ATProto identity, or an ad-hoc named place.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No | Venue DID if it has an ATProto account |
| `geo` | `ref` → `#geo` | No |  |
| `name` | `string` | No |  |

### `com.cultureblocs.defs#creditRef`

**Type**: `object`

A named contributor. `role` is deliberately freeform: role vocabularies differ per industry and belong in referencing layers, not in this schema.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | No |  |
| `name` | `string` | Yes |  |
| `role` | `string` | No |  |

### `com.cultureblocs.defs#strongRef`

**Type**: `object`

Local stand-in for com.atproto.repo.strongRef

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` | No |  |
| `uri` | `string` (uri) | Yes |  |

### `com.cultureblocs.defs#externalId`

**Type**: `object`

An identifier for this subject in another system. Registries are peers: no scheme is privileged, and knownValues is advisory so new schemes need no schema change.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | `string` | Yes |  |
| `uri` | `string` (uri) | No | Resolvable URL for this identifier, where one exists. |
| `scheme` | `string` | Yes |  |

### `com.cultureblocs.defs#provenance`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `app` | `string` | Yes | Producing app id, e.g. 'culturebloc', 'ar-gallery' |
| `device` | `string` | No | Device identifier, e.g. StickS3 id |
| `mintId` | `string` | No | Device-generated mint identifier (hex). Shared between both parties' beads on a mutual mint — the encounter join key. |
| `mintedAt` | `string` (datetime) | Yes |  |
| `mutualMint` | `boolean` | No | True if created by a mutual-press ceremony |
| `timeAnchored` | `boolean` | No | False when the device knew only the time-of-day or nothing; createdAt is then a best guess |

### `com.cultureblocs.defs#aspectRatio`

**Type**: `object`

Pixel dimensions, so a reader can reserve layout space before the image bytes arrive. Shape matches app.bsky.embed.images#aspectRatio.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `width` | `integer` | Yes |  |
| `height` | `integer` | Yes |  |

### `com.cultureblocs.defs#accessionRef`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | `string` | Yes | Accession/inventory number |
| `institution` | `string` (did) | Yes | DID of the holding institution |

## Raw Schema

```json
{
  "id": "com.cultureblocs.defs",
  "defs": {
    "geo": {
      "type": "object",
      "required": [
        "lat",
        "lng",
        "precision"
      ],
      "properties": {
        "lat": {
          "type": "number"
        },
        "lng": {
          "type": "number"
        },
        "precision": {
          "type": "string",
          "description": "Declared coordinate fuzzing level. Coordinates MUST already be fuzzed to this precision before the record leaves Tier 0.",
          "knownValues": [
            "exact",
            "100m",
            "1km",
            "city"
          ]
        }
      }
    },
    "didRef": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "name": {
          "type": "string",
          "maxGraphemes": 300
        }
      },
      "description": "A person or organisation by DID, with a descriptive fallback name."
    },
    "linkRef": {
      "type": "object",
      "required": [
        "uri"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "uri"
        },
        "title": {
          "type": "string",
          "maxGraphemes": 300
        }
      },
      "description": "External link attached to a bead or strand: event page, venue page, ticket listing."
    },
    "workRef": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "description": "Freeform creation date, e.g. '1972' or 'c. 1889'",
          "maxGraphemes": 100
        },
        "image": {
          "ref": "#mediaRef",
          "type": "ref"
        },
        "title": {
          "type": "string",
          "maxGraphemes": 500
        },
        "creator": {
          "type": "string",
          "maxGraphemes": 300
        },
        "wikidata": {
          "type": "string",
          "description": "Wikidata QID, e.g. Q1892745"
        },
        "accession": {
          "ref": "#accessionRef",
          "type": "ref"
        },
        "linkedArt": {
          "type": "string",
          "format": "uri",
          "description": "Linked Art object URI"
        },
        "creatorDid": {
          "type": "string",
          "format": "did",
          "description": "DID of the creative who made this work, when known. The `creator` string remains the descriptive fallback."
        }
      },
      "description": "Reference to an artwork/creative work. At least one resolvable ID or a descriptive fallback (title)."
    },
    "imageRef": {
      "type": "object",
      "required": [
        "image"
      ],
      "properties": {
        "alt": {
          "type": "string",
          "description": "What the image shows. Absent means absent — readers must not substitute a title.",
          "maxGraphemes": 2000
        },
        "image": {
          "type": "blob",
          "accept": [
            "image/*"
          ],
          "maxSize": 2000000
        },
        "aspectRatio": {
          "ref": "#aspectRatio",
          "type": "ref"
        }
      },
      "description": "A published image and the two things a reader needs to present it honestly: what it shows, and how much room it takes. Field names match app.bsky.embed.images#image and the community standalone-image proposal, so this can become a ref to a shared lexicon without changing the published payload."
    },
    "mediaRef": {
      "type": "object",
      "required": [
        "uri"
      ],
      "properties": {
        "alt": {
          "type": "string",
          "maxGraphemes": 1000
        },
        "uri": {
          "type": "string",
          "format": "uri"
        },
        "mime": {
          "type": "string",
          "maxGraphemes": 100
        },
        "aspectRatio": {
          "ref": "#aspectRatio",
          "type": "ref"
        }
      },
      "description": "Tier 0/1 media reference. Replaced by an imageRef at promotion time; alt text and aspectRatio carry across unchanged."
    },
    "placeRef": {
      "type": "object",
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "Venue DID if it has an ATProto account"
        },
        "geo": {
          "ref": "#geo",
          "type": "ref"
        },
        "name": {
          "type": "string",
          "maxGraphemes": 300
        }
      },
      "description": "A venue with an ATProto identity, or an ad-hoc named place."
    },
    "creditRef": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "name": {
          "type": "string",
          "maxGraphemes": 300
        },
        "role": {
          "type": "string",
          "maxGraphemes": 100
        }
      },
      "description": "A named contributor. `role` is deliberately freeform: role vocabularies differ per industry and belong in referencing layers, not in this schema."
    },
    "strongRef": {
      "type": "object",
      "required": [
        "uri"
      ],
      "properties": {
        "cid": {
          "type": "string"
        },
        "uri": {
          "type": "string",
          "format": "uri"
        }
      },
      "description": "Local stand-in for com.atproto.repo.strongRef"
    },
    "externalId": {
      "type": "object",
      "required": [
        "scheme",
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxGraphemes": 200
        },
        "uri": {
          "type": "string",
          "format": "uri",
          "description": "Resolvable URL for this identifier, where one exists."
        },
        "scheme": {
          "type": "string",
          "knownValues": [
            "isni",
            "ipi",
            "ipn",
            "orcid",
            "wikidata",
            "musicbrainz",
            "auracle",
            "isrc",
            "iswc",
            "isan",
            "doi",
            "viaf",
            "discogs",
            "rsl"
          ],
          "maxGraphemes": 64
        }
      },
      "description": "An identifier for this subject in another system. Registries are peers: no scheme is privileged, and knownValues is advisory so new schemes need no schema change."
    },
    "provenance": {
      "type": "object",
      "required": [
        "app",
        "mintedAt"
      ],
      "properties": {
        "app": {
          "type": "string",
          "description": "Producing app id, e.g. 'culturebloc', 'ar-gallery'",
          "maxGraphemes": 100
        },
        "device": {
          "type": "string",
          "description": "Device identifier, e.g. StickS3 id",
          "maxGraphemes": 100
        },
        "mintId": {
          "type": "string",
          "description": "Device-generated mint identifier (hex). Shared between both parties' beads on a mutual mint — the encounter join key.",
          "maxGraphemes": 64
        },
        "mintedAt": {
          "type": "string",
          "format": "datetime"
        },
        "mutualMint": {
          "type": "boolean",
          "description": "True if created by a mutual-press ceremony"
        },
        "timeAnchored": {
          "type": "boolean",
          "description": "False when the device knew only the time-of-day or nothing; createdAt is then a best guess"
        }
      }
    },
    "aspectRatio": {
      "type": "object",
      "required": [
        "width",
        "height"
      ],
      "properties": {
        "width": {
          "type": "integer",
          "minimum": 1
        },
        "height": {
          "type": "integer",
          "minimum": 1
        }
      },
      "description": "Pixel dimensions, so a reader can reserve layout space before the image bytes arrive. Shape matches app.bsky.embed.images#aspectRatio."
    },
    "accessionRef": {
      "type": "object",
      "required": [
        "institution",
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Accession/inventory number",
          "maxGraphemes": 200
        },
        "institution": {
          "type": "string",
          "format": "did",
          "description": "DID of the holding institution"
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
