# com.dryan.timeline.entry

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

✓ This is the authoritative definition for this NSID.

## Description

The dryan.com timeline's per-entry data, carried in the `content` open union of a site.standard.document record. The document holds what every entry shares (title, path, publishedAt, description, textContent, tags, coverImage); this holds the entry type, the day it belongs to, and the type-specific detail. atproto records cannot carry floats, so measurements that are not whole numbers (speeds, heart rates, coordinates) are decimal strings.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:zieub5temeseyvmogjy2qv7w/com.dryan.timeline.entry)
- [Documentation](https://lexicon.garden/lexicon/did:plc:zieub5temeseyvmogjy2qv7w/com.dryan.timeline.entry/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:zieub5temeseyvmogjy2qv7w/com.dryan.timeline.entry/examples)

## Definitions

### `com.dryan.timeline.entry#achievement`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `achievementId` | `string` | No |  |
| `description` | `string` | No |  |
| `game` | `string` | Yes |  |
| `iconUrl` | `string` (uri) | No |  |
| `platform` | `string` | Yes |  |
| `xboxTitleId` | `integer` | No |  |

### `com.dryan.timeline.entry#activity`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `averageHeartrate` | `string` | No | Beats per minute, decimal string. |
| `averageSpeed` | `string` | No | Metres per second, decimal string. |
| `bounds` | `ref` → `#bounds` | No |  |
| `distanceMeters` | `integer` | No |  |
| `elapsedTimeSeconds` | `integer` | No |  |
| `elevationGainMeters` | `integer` | No |  |
| `elevationLossMeters` | `integer` | No |  |
| `end` | `ref` → `#point` | No |  |
| `maxElevationMeters` | `integer` | No |  |
| `maxHeartrate` | `string` | No | Beats per minute, decimal string. |
| `maxSpeed` | `string` | No | Metres per second, decimal string. |
| `minElevationMeters` | `integer` | No |  |
| `movingTimeSeconds` | `integer` | No |  |
| `polyline` | `string` | No | Google encoded polyline of the track. |
| `source` | `string` | No | Where the track came from (Strava, AllTrails, onX...). |
| `sourceId` | `string` | No | The activity's id at the source, e.g. the Strava activity id. |
| `sourceUrl` | `string` (uri) | No |  |
| `sportType` | `string` | No |  |
| `start` | `ref` → `#point` | No |  |

### `com.dryan.timeline.entry#article`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `crosspostedFrom` | `ref` → `#crosspost` | No |  |
| `description` | `string` | No |  |
| `shareImage` | `string` | No | Filename of the article's share graphic on the site. |

### `com.dryan.timeline.entry#book`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `amazonUrl` | `string` (uri) | No |  |
| `asin` | `string` | No |  |
| `author` | `string` | No |  |
| `bookshopOrgUrl` | `string` (uri) | No |  |
| `coverUrl` | `string` (uri) | No |  |
| `dateFinished` | `string` | No |  |
| `dateStarted` | `string` | No |  |
| `goodreadsId` | `string` | No |  |
| `goodreadsUrl` | `string` (uri) | No |  |
| `isbn` | `string` | No |  |
| `openLibraryUrl` | `string` (uri) | No |  |
| `reviewUrl` | `string` (uri) | No |  |
| `subtitle` | `string` | No |  |

### `com.dryan.timeline.entry#bounds`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `maxLatitude` | `string` | Yes |  |
| `maxLongitude` | `string` | Yes |  |
| `minLatitude` | `string` | Yes |  |
| `minLongitude` | `string` | Yes |  |

### `com.dryan.timeline.entry#code`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `action` | `string` | No |  |
| `commitCount` | `integer` | No |  |
| `commits` | `array` | No |  |
| `event` | `string` | Yes | GitHub event type (push, pull_request, issue_comment...). |
| `githubEventId` | `string` | No |  |
| `repo` | `string` | Yes | owner/name on GitHub. |
| `url` | `string` (uri) | No |  |

### `com.dryan.timeline.entry#commit`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `message` | `string` | No |  |
| `sha` | `string` | Yes |  |

### `com.dryan.timeline.entry#crosspost`

**Type**: `object`

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

### `com.dryan.timeline.entry#game`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `date` | `string` | No | YYYY-MM-DD of the session. |
| `leagueId` | `integer` | No | Hearthstone ranked league. |
| `legendRank` | `integer` | No |  |
| `platform` | `string` | Yes |  |
| `starLevel` | `integer` | No |  |
| `stars` | `integer` | No |  |
| `titles` | `array` | No |  |

### `com.dryan.timeline.entry#gameTitle`

**Type**: `object`

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

### `com.dryan.timeline.entry#link`

**Type**: `object`

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

### `com.dryan.timeline.entry`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `detail` | `union` | No |  |
| `entryType` | `string` | Yes |  |
| `localDate` | `string` | No | YYYY-MM-DD: the day the entry is filed under on the site. |
| `timezone` | `string` | No | IANA zone the entry happened in; localDate is derived from publishedAt in this zone. |

### `com.dryan.timeline.entry#movie`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `letterboxdUrl` | `string` (uri) | No |  |
| `liked` | `boolean` | No |  |
| `posterUrl` | `string` (uri) | No |  |
| `rating` | `string` | No | Star rating as a decimal string, absent when unrated. |
| `rewatch` | `boolean` | No |  |
| `tmdbId` | `string` | No | The Movie Database id. |
| `year` | `integer` | No |  |

### `com.dryan.timeline.entry#photo`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `altText` | `string` | No |  |
| `contentHash` | `string` | No | sha256 fingerprint used for duplicate detection. |
| `exif` | `unknown` | No | Camera and capture metadata as extracted at upload; non-integer numbers are decimal strings. |
| `imageUrl` | `string` (uri) | No | Full-size delivery URL; coverImage on the document is the copy under atproto's blob cap. |

### `com.dryan.timeline.entry#point`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `latitude` | `string` | Yes | Decimal degrees as a string. |
| `longitude` | `string` | Yes | Decimal degrees as a string. |

### `com.dryan.timeline.entry#video`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `authorName` | `string` | No |  |
| `authorUrl` | `string` (uri) | No |  |
| `durationSeconds` | `integer` | No |  |
| `note` | `string` | No |  |
| `provider` | `string` | No |  |
| `thumbnailUrl` | `string` (uri) | No |  |
| `url` | `string` (uri) | Yes |  |
| `videoId` | `string` | No |  |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "achievement": {
      "properties": {
        "achievementId": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "game": {
          "type": "string"
        },
        "iconUrl": {
          "format": "uri",
          "type": "string"
        },
        "platform": {
          "knownValues": [
            "xbox"
          ],
          "type": "string"
        },
        "xboxTitleId": {
          "type": "integer"
        }
      },
      "required": [
        "game",
        "platform"
      ],
      "type": "object"
    },
    "activity": {
      "properties": {
        "averageHeartrate": {
          "description": "Beats per minute, decimal string.",
          "type": "string"
        },
        "averageSpeed": {
          "description": "Metres per second, decimal string.",
          "type": "string"
        },
        "bounds": {
          "ref": "#bounds",
          "type": "ref"
        },
        "distanceMeters": {
          "type": "integer"
        },
        "elapsedTimeSeconds": {
          "type": "integer"
        },
        "elevationGainMeters": {
          "type": "integer"
        },
        "elevationLossMeters": {
          "type": "integer"
        },
        "end": {
          "ref": "#point",
          "type": "ref"
        },
        "maxElevationMeters": {
          "type": "integer"
        },
        "maxHeartrate": {
          "description": "Beats per minute, decimal string.",
          "type": "string"
        },
        "maxSpeed": {
          "description": "Metres per second, decimal string.",
          "type": "string"
        },
        "minElevationMeters": {
          "type": "integer"
        },
        "movingTimeSeconds": {
          "type": "integer"
        },
        "polyline": {
          "description": "Google encoded polyline of the track.",
          "type": "string"
        },
        "source": {
          "description": "Where the track came from (Strava, AllTrails, onX...).",
          "type": "string"
        },
        "sourceId": {
          "description": "The activity's id at the source, e.g. the Strava activity id.",
          "type": "string"
        },
        "sourceUrl": {
          "format": "uri",
          "type": "string"
        },
        "sportType": {
          "type": "string"
        },
        "start": {
          "ref": "#point",
          "type": "ref"
        }
      },
      "type": "object"
    },
    "article": {
      "properties": {
        "crosspostedFrom": {
          "ref": "#crosspost",
          "type": "ref"
        },
        "description": {
          "type": "string"
        },
        "shareImage": {
          "description": "Filename of the article's share graphic on the site.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "book": {
      "properties": {
        "amazonUrl": {
          "format": "uri",
          "type": "string"
        },
        "asin": {
          "type": "string"
        },
        "author": {
          "type": "string"
        },
        "bookshopOrgUrl": {
          "format": "uri",
          "type": "string"
        },
        "coverUrl": {
          "format": "uri",
          "type": "string"
        },
        "dateFinished": {
          "type": "string"
        },
        "dateStarted": {
          "type": "string"
        },
        "goodreadsId": {
          "type": "string"
        },
        "goodreadsUrl": {
          "format": "uri",
          "type": "string"
        },
        "isbn": {
          "type": "string"
        },
        "openLibraryUrl": {
          "format": "uri",
          "type": "string"
        },
        "reviewUrl": {
          "format": "uri",
          "type": "string"
        },
        "subtitle": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "bounds": {
      "properties": {
        "maxLatitude": {
          "type": "string"
        },
        "maxLongitude": {
          "type": "string"
        },
        "minLatitude": {
          "type": "string"
        },
        "minLongitude": {
          "type": "string"
        }
      },
      "required": [
        "minLatitude",
        "maxLatitude",
        "minLongitude",
        "maxLongitude"
      ],
      "type": "object"
    },
    "code": {
      "properties": {
        "action": {
          "type": "string"
        },
        "commitCount": {
          "type": "integer"
        },
        "commits": {
          "items": {
            "ref": "#commit",
            "type": "ref"
          },
          "type": "array"
        },
        "event": {
          "description": "GitHub event type (push, pull_request, issue_comment...).",
          "type": "string"
        },
        "githubEventId": {
          "type": "string"
        },
        "repo": {
          "description": "owner/name on GitHub.",
          "type": "string"
        },
        "url": {
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "repo",
        "event"
      ],
      "type": "object"
    },
    "commit": {
      "properties": {
        "message": {
          "type": "string"
        },
        "sha": {
          "type": "string"
        }
      },
      "required": [
        "sha"
      ],
      "type": "object"
    },
    "crosspost": {
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    },
    "game": {
      "properties": {
        "date": {
          "description": "YYYY-MM-DD of the session.",
          "type": "string"
        },
        "leagueId": {
          "description": "Hearthstone ranked league.",
          "type": "integer"
        },
        "legendRank": {
          "type": "integer"
        },
        "platform": {
          "knownValues": [
            "xbox",
            "hearthstone"
          ],
          "type": "string"
        },
        "starLevel": {
          "type": "integer"
        },
        "stars": {
          "type": "integer"
        },
        "titles": {
          "items": {
            "ref": "#gameTitle",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "required": [
        "platform"
      ],
      "type": "object"
    },
    "gameTitle": {
      "properties": {
        "logoUrl": {
          "format": "uri",
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "link": {
      "properties": {
        "note": {
          "type": "string"
        },
        "url": {
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    },
    "main": {
      "properties": {
        "detail": {
          "refs": [
            "#article",
            "#photo",
            "#book",
            "#video",
            "#link",
            "#movie",
            "#activity",
            "#code",
            "#game",
            "#achievement"
          ],
          "type": "union"
        },
        "entryType": {
          "knownValues": [
            "article",
            "photo",
            "book",
            "video",
            "link",
            "movie",
            "activity.walk",
            "activity.hike",
            "activity.cycle",
            "activity.kayak",
            "activity.other",
            "code",
            "game",
            "game.achievement"
          ],
          "type": "string"
        },
        "localDate": {
          "description": "YYYY-MM-DD: the day the entry is filed under on the site.",
          "type": "string"
        },
        "timezone": {
          "description": "IANA zone the entry happened in; localDate is derived from publishedAt in this zone.",
          "type": "string"
        }
      },
      "required": [
        "entryType"
      ],
      "type": "object"
    },
    "movie": {
      "properties": {
        "letterboxdUrl": {
          "format": "uri",
          "type": "string"
        },
        "liked": {
          "type": "boolean"
        },
        "posterUrl": {
          "format": "uri",
          "type": "string"
        },
        "rating": {
          "description": "Star rating as a decimal string, absent when unrated.",
          "type": "string"
        },
        "rewatch": {
          "type": "boolean"
        },
        "tmdbId": {
          "description": "The Movie Database id.",
          "type": "string"
        },
        "year": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "photo": {
      "properties": {
        "altText": {
          "type": "string"
        },
        "contentHash": {
          "description": "sha256 fingerprint used for duplicate detection.",
          "type": "string"
        },
        "exif": {
          "description": "Camera and capture metadata as extracted at upload; non-integer numbers are decimal strings.",
          "type": "unknown"
        },
        "imageUrl": {
          "description": "Full-size delivery URL; coverImage on the document is the copy under atproto's blob cap.",
          "format": "uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "point": {
      "properties": {
        "latitude": {
          "description": "Decimal degrees as a string.",
          "type": "string"
        },
        "longitude": {
          "description": "Decimal degrees as a string.",
          "type": "string"
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "type": "object"
    },
    "video": {
      "properties": {
        "authorName": {
          "type": "string"
        },
        "authorUrl": {
          "format": "uri",
          "type": "string"
        },
        "durationSeconds": {
          "type": "integer"
        },
        "note": {
          "type": "string"
        },
        "provider": {
          "knownValues": [
            "youtube",
            "vimeo"
          ],
          "type": "string"
        },
        "thumbnailUrl": {
          "format": "uri",
          "type": "string"
        },
        "url": {
          "format": "uri",
          "type": "string"
        },
        "videoId": {
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    }
  },
  "description": "The dryan.com timeline's per-entry data, carried in the `content` open union of a site.standard.document record. The document holds what every entry shares (title, path, publishedAt, description, textContent, tags, coverImage); this holds the entry type, the day it belongs to, and the type-specific detail. atproto records cannot carry floats, so measurements that are not whole numbers (speeds, heart rates, coordinates) are decimal strings.",
  "id": "com.dryan.timeline.entry",
  "lexicon": 1
}
```
