Database schema
The table name is NEXT_DYNAMODB_TABLE_NAME (default vibemon). Terraform configures on-demand billing, a string partition key PK, a string sort key SK, and TTL on the numeric Unix-seconds attribute ttl. No GSI is used.
Rows used by monitoring and tokens contain { PK, SK, revision, data, ttl? }. revision is incremented in each conditional transaction. Missing rows begin at revision 0; persisted rows begin at 1. Rate counters and legacy memory use their own flat attributes.
| Partition key | Sort key | Purpose |
|---|---|---|
KEY#{sha256} |
TOKEN |
Credential lookup |
USER#{owner} |
TOKEN#{uuid} |
Owner's token metadata |
USER#{owner} |
SOURCE#{sourceId} |
Latest source state |
USER#{owner}#SOURCE#{sourceId} |
MINUTE#{YYYY-MM-DDTHH:mm} |
One-minute summary |
RATE#{owner} |
{category}#{epochMinute} |
Shared request budget |
MEMORY#{owner}#PROJECT#{projectKey} |
{key} |
Legacy key-value memory |
owner is a non-secret ID derived from Google's subject. Credentials are never part of storage keys. sourceId is independent of its display name. Legacy projectKey trims, lowercases, and replaces whitespace with hyphens.
Minute rows set ttl and data.expiresAt to the minute start plus 86,400 seconds. Request-budget rows expire after two minutes. DynamoDB TTL deletion is asynchronous; API filtering enforces the visible retention boundary.
Provisioning and retirement steps are in Terraform setup (maintainer repository access required). Entity fields are described in entities and the API contract.