# social.wips.defs

> Published by [wips.social](https://lexicon.garden/identity/did:plc:sodoi37wr44i3ypdwwlqqeup)

✓ This is the authoritative definition for this NSID.

## Description

Shared definitions for wips.social records, including project status tokens, weak URI refs, links, aspect ratio, and ordered image/video media objects reused by updates and comments.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:sodoi37wr44i3ypdwwlqqeup/social.wips.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:sodoi37wr44i3ypdwwlqqeup/social.wips.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:sodoi37wr44i3ypdwwlqqeup/social.wips.defs/examples)

## Definitions

### `social.wips.defs#wip`

**Type**: `token`

Project is actively in progress.

Project is actively in progress.

### `social.wips.defs#done`

**Type**: `token`

Project is marked done. It may still receive updates and can return to wip.

Project is marked done. It may still receive updates and can return to wip.

### `social.wips.defs#link`

**Type**: `object`

Ordered generic destination link with a required URI and optional label. Application validators initially require http:// or https:// schemes.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uri` | `string` (uri) | Yes | Destination URI. Clients should initially accept http:// and https:// only (enforced outside Lexicon shape). |
| `label` | `string` | No |  |

### `social.wips.defs#image`

**Type**: `object`

Image media item referenced as a PDS blob. Shared by social.wips.update and social.wips.comment. accept remains broad for forward compatibility; concrete safe MIME enforcement is application policy.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `string` | No | Alt text for accessibility. |
| `blob` | `blob` | Yes | Original image blob stored on the author's PDS. |
| `aspectRatio` | `ref` → `#aspectRatio` | No |  |

### `social.wips.defs#video`

**Type**: `object`

Video media item referenced as a PDS blob. Shared by social.wips.update and social.wips.comment. accept remains broad for forward compatibility; concrete safe MIME enforcement is application policy.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `string` | No | Alt text for accessibility. |
| `blob` | `blob` | Yes | Original video blob stored on the author's PDS. |
| `durationMs` | `integer` | No | Optional media duration in milliseconds. |
| `aspectRatio` | `ref` → `#aspectRatio` | No |  |

### `social.wips.defs#uriRef`

**Type**: `object`

Weak reference to a record by AT URI only (not pinned to a CID), so relationships survive edits. Application validators require a full record AT URI (repo + collection + rkey) with DID authority. maxLength is a justified ceiling (~2600) for max DID (2048) + fixed short social.wips.* collection NSID + max rkey (512) + separators, not the general 8 KiB AT URI syntax limit.

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

### `social.wips.defs#titledLink`

**Type**: `object`

Ordered user-authored link with optional title (used on updates). Application validators initially require http:// or https:// schemes.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uri` | `string` (uri) | Yes | Destination URI. Clients should initially accept http:// and https:// only (enforced outside Lexicon shape). |
| `title` | `string` | No |  |

### `social.wips.defs#aspectRatio`

**Type**: `object`

width:height represents an aspect ratio. It may be approximate.

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

### `social.wips.defs#projectStatus`

**Type**: `string`

Product status for a project. Extensible known values rather than a closed enum.

**Known Values**:
- `social.wips.defs#wip`
- `social.wips.defs#done`

## Raw Schema

```json
{
  "id": "social.wips.defs",
  "defs": {
    "wip": {
      "type": "token",
      "description": "Project is actively in progress."
    },
    "done": {
      "type": "token",
      "description": "Project is marked done. It may still receive updates and can return to wip."
    },
    "link": {
      "type": "object",
      "required": [
        "uri"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "uri",
          "maxLength": 4096,
          "description": "Destination URI. Clients should initially accept http:// and https:// only (enforced outside Lexicon shape)."
        },
        "label": {
          "type": "string",
          "maxLength": 2000,
          "maxGraphemes": 200
        }
      },
      "description": "Ordered generic destination link with a required URI and optional label. Application validators initially require http:// or https:// schemes."
    },
    "image": {
      "type": "object",
      "required": [
        "blob"
      ],
      "properties": {
        "alt": {
          "type": "string",
          "maxLength": 3000,
          "description": "Alt text for accessibility.",
          "maxGraphemes": 1000
        },
        "blob": {
          "type": "blob",
          "accept": [
            "image/*"
          ],
          "maxSize": 10000000,
          "description": "Original image blob stored on the author's PDS."
        },
        "aspectRatio": {
          "ref": "#aspectRatio",
          "type": "ref"
        }
      },
      "description": "Image media item referenced as a PDS blob. Shared by social.wips.update and social.wips.comment. accept remains broad for forward compatibility; concrete safe MIME enforcement is application policy."
    },
    "video": {
      "type": "object",
      "required": [
        "blob"
      ],
      "properties": {
        "alt": {
          "type": "string",
          "maxLength": 3000,
          "description": "Alt text for accessibility.",
          "maxGraphemes": 1000
        },
        "blob": {
          "type": "blob",
          "accept": [
            "video/*"
          ],
          "maxSize": 100000000,
          "description": "Original video blob stored on the author's PDS."
        },
        "durationMs": {
          "type": "integer",
          "maximum": 86400000,
          "minimum": 0,
          "description": "Optional media duration in milliseconds."
        },
        "aspectRatio": {
          "ref": "#aspectRatio",
          "type": "ref"
        }
      },
      "description": "Video media item referenced as a PDS blob. Shared by social.wips.update and social.wips.comment. accept remains broad for forward compatibility; concrete safe MIME enforcement is application policy."
    },
    "uriRef": {
      "type": "object",
      "required": [
        "uri"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri",
          "maxLength": 2600
        }
      },
      "description": "Weak reference to a record by AT URI only (not pinned to a CID), so relationships survive edits. Application validators require a full record AT URI (repo + collection + rkey) with DID authority. maxLength is a justified ceiling (~2600) for max DID (2048) + fixed short social.wips.* collection NSID + max rkey (512) + separators, not the general 8 KiB AT URI syntax limit."
    },
    "titledLink": {
      "type": "object",
      "required": [
        "uri"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "uri",
          "maxLength": 4096,
          "description": "Destination URI. Clients should initially accept http:// and https:// only (enforced outside Lexicon shape)."
        },
        "title": {
          "type": "string",
          "maxLength": 1000,
          "maxGraphemes": 200
        }
      },
      "description": "Ordered user-authored link with optional title (used on updates). Application validators initially require http:// or https:// schemes."
    },
    "aspectRatio": {
      "type": "object",
      "required": [
        "width",
        "height"
      ],
      "properties": {
        "width": {
          "type": "integer",
          "minimum": 1
        },
        "height": {
          "type": "integer",
          "minimum": 1
        }
      },
      "description": "width:height represents an aspect ratio. It may be approximate."
    },
    "projectStatus": {
      "type": "string",
      "description": "Product status for a project. Extensible known values rather than a closed enum.",
      "knownValues": [
        "social.wips.defs#wip",
        "social.wips.defs#done"
      ]
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "Shared definitions for wips.social records, including project status tokens, weak URI refs, links, aspect ratio, and ordered image/video media objects reused by updates and comments."
}
```
