net.anisota.chronicle.log.daily

anisota.net

Documentation

Daily activity snapshot. Updated throughout the day via putRecord. rkey is YYYY-MM-DD in user's local timezone.

main record

Daily activity snapshot. Updated throughout the day via putRecord. rkey is YYYY-MM-DD in user's local timezone.

Record Key any Any valid record key

Properties

createdAt string datetime Required

When the daily record was first created

date string Required

Date string in YYYY-MM-DD format (user's local timezone)

expeditionRefs array of string Optional

AT URIs of expedition records that occurred on this day

updatedAt string datetime Optional

When the daily record was last updated

upperLogRefs array of string Optional

AT URIs of containing logs (weekly, monthly, yearly) this day belongs to

View raw schema
{
  "key": "any",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "date",
      "player",
      "activity",
      "signature",
      "createdAt"
    ],
    "properties": {
      "date": {
        "type": "string",
        "description": "Date string in YYYY-MM-DD format (user's local timezone)"
      },
      "player": {
        "ref": "#playerSnapshot",
        "type": "ref"
      },
      "activity": {
        "ref": "#activityCounts",
        "type": "ref"
      },
      "patterns": {
        "ref": "#patternsData",
        "type": "ref"
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the daily record was first created"
      },
      "signature": {
        "ref": "#chronicleSignature",
        "type": "ref"
      },
      "updatedAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the daily record was last updated"
      },
      "engagement": {
        "ref": "#engagementCounts",
        "type": "ref"
      },
      "expeditions": {
        "ref": "#expeditionSummary",
        "type": "ref"
      },
      "upperLogRefs": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "AT URIs of containing logs (weekly, monthly, yearly) this day belongs to"
      },
      "expeditionRefs": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "AT URIs of expedition records that occurred on this day"
      }
    }
  },
  "description": "Daily activity snapshot. Updated throughout the day via putRecord. rkey is YYYY-MM-DD in user's local timezone."
}
activityCounts object

Aggregate activity counts for the day (no timestamps or URIs)

Properties

likesSent integer Optional

Likes sent today

minimum: 0
postsCreated integer Optional

Posts created today

minimum: 0
postsRead integer Optional

Posts read today

minimum: 0
repliesSent integer Optional

Replies sent today

minimum: 0
repostsSent integer Optional

Reposts sent today

minimum: 0
View raw schema
{
  "type": "object",
  "properties": {
    "likesSent": {
      "type": "integer",
      "minimum": 0,
      "description": "Likes sent today"
    },
    "postsRead": {
      "type": "integer",
      "minimum": 0,
      "description": "Posts read today"
    },
    "repliesSent": {
      "type": "integer",
      "minimum": 0,
      "description": "Replies sent today"
    },
    "repostsSent": {
      "type": "integer",
      "minimum": 0,
      "description": "Reposts sent today"
    },
    "postsCreated": {
      "type": "integer",
      "minimum": 0,
      "description": "Posts created today"
    }
  },
  "description": "Aggregate activity counts for the day (no timestamps or URIs)"
}
chronicleSignature object

ES256 cryptographic signature proving record authenticity

Properties

alg string Required

Signing algorithm (ES256)

kid string Required

Key identifier for the signing key

nonce string Required

Unique random nonce to prevent replay

sig string Required

Base64-encoded ES256 signature

signedAt string datetime Required

When the record was signed

version integer Required

Signature schema version

View raw schema
{
  "type": "object",
  "required": [
    "sig",
    "alg",
    "kid",
    "signedAt",
    "nonce",
    "version"
  ],
  "properties": {
    "alg": {
      "type": "string",
      "description": "Signing algorithm (ES256)"
    },
    "kid": {
      "type": "string",
      "description": "Key identifier for the signing key"
    },
    "sig": {
      "type": "string",
      "description": "Base64-encoded ES256 signature"
    },
    "nonce": {
      "type": "string",
      "description": "Unique random nonce to prevent replay"
    },
    "version": {
      "type": "integer",
      "description": "Signature schema version"
    },
    "signedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the record was signed"
    }
  },
  "description": "ES256 cryptographic signature proving record authenticity"
}
engagementCounts object

Engagement received on user's posts (aggregate counts only)

Properties

likesReceived integer Optional

Likes received on posts today

minimum: 0
quotesReceived integer Optional

Quotes received today

minimum: 0
repliesReceived integer Optional

Replies received on posts today

minimum: 0
repostsReceived integer Optional

Reposts received today

minimum: 0
View raw schema
{
  "type": "object",
  "properties": {
    "likesReceived": {
      "type": "integer",
      "minimum": 0,
      "description": "Likes received on posts today"
    },
    "quotesReceived": {
      "type": "integer",
      "minimum": 0,
      "description": "Quotes received today"
    },
    "repliesReceived": {
      "type": "integer",
      "minimum": 0,
      "description": "Replies received on posts today"
    },
    "repostsReceived": {
      "type": "integer",
      "minimum": 0,
      "description": "Reposts received today"
    }
  },
  "description": "Engagement received on user's posts (aggregate counts only)"
}
expeditionSummary object

Summary of expeditions for the day (details in chronicle.expedition)

Properties

count integer Optional

Number of expeditions completed today

minimum: 0
currentCampNumber integer Optional

Current camp number within the active expedition (0 = exploring, not camped; unset if no active expedition)

minimum: 0
currentExpeditionNumber integer Optional

Number of the currently active expedition (unset if no active expedition)

minimum: 1
totalDuration integer Optional

Total expedition duration in milliseconds

minimum: 0
View raw schema
{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer",
      "minimum": 0,
      "description": "Number of expeditions completed today"
    },
    "totalDuration": {
      "type": "integer",
      "minimum": 0,
      "description": "Total expedition duration in milliseconds"
    },
    "currentCampNumber": {
      "type": "integer",
      "minimum": 0,
      "description": "Current camp number within the active expedition (0 = exploring, not camped; unset if no active expedition)"
    },
    "currentExpeditionNumber": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of the currently active expedition (unset if no active expedition)"
    }
  },
  "description": "Summary of expeditions for the day (details in chronicle.expedition)"
}
patternsData object

Activity pattern data for the day based on half-hour blocks

Properties

activeBlockCount integer Optional

Number of half-hour blocks with activity today

minimum: 0maximum: 48
activeBlocks array of string Optional

Half-hour slots with activity, as HH:MM strings (e.g. '09:00', '09:30'). Max 48 per day.

maxLength: 48 items
offlineXPAwarded integer Optional

XP awarded for offline time

minimum: 0
View raw schema
{
  "type": "object",
  "properties": {
    "activeBlocks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxLength": 48,
      "description": "Half-hour slots with activity, as HH:MM strings (e.g. '09:00', '09:30'). Max 48 per day."
    },
    "activeBlockCount": {
      "type": "integer",
      "maximum": 48,
      "minimum": 0,
      "description": "Number of half-hour blocks with activity today"
    },
    "offlineXPAwarded": {
      "type": "integer",
      "minimum": 0,
      "description": "XP awarded for offline time"
    }
  },
  "description": "Activity pattern data for the day based on half-hour blocks"
}
playerSnapshot object

Player state snapshot for this day

Properties

itemsAcquiredToday integer Optional

Number of items acquired today

minimum: 0
itemsConsumedToday integer Optional

Number of items consumed/used today

minimum: 0
itemsTotal integer Optional

Total items in inventory

minimum: 0
level integer Required

Player level at end of day

minimum: 1
specimensDocumented integer Optional

Total specimens in collection

minimum: 0
totalXP integer Required

Total accumulated XP

minimum: 0
xpGainedToday integer Optional

XP gained during this day

minimum: 0
View raw schema
{
  "type": "object",
  "required": [
    "level",
    "totalXP"
  ],
  "properties": {
    "level": {
      "type": "integer",
      "minimum": 1,
      "description": "Player level at end of day"
    },
    "totalXP": {
      "type": "integer",
      "minimum": 0,
      "description": "Total accumulated XP"
    },
    "itemsTotal": {
      "type": "integer",
      "minimum": 0,
      "description": "Total items in inventory"
    },
    "xpGainedToday": {
      "type": "integer",
      "minimum": 0,
      "description": "XP gained during this day"
    },
    "itemsAcquiredToday": {
      "type": "integer",
      "minimum": 0,
      "description": "Number of items acquired today"
    },
    "itemsConsumedToday": {
      "type": "integer",
      "minimum": 0,
      "description": "Number of items consumed/used today"
    },
    "specimensDocumented": {
      "type": "integer",
      "minimum": 0,
      "description": "Total specimens in collection"
    }
  },
  "description": "Player state snapshot for this day"
}

Lexicon Garden

@