The authority record defining the rules for a Starrysky verified streak.
tid
Timestamp-based ID
Properties
allowedGranters
array
of
string
did
Optional
An array of DIDs authorized to grant extra streak freezes to the user.
allowedWitnesses
array
of
string
did
Optional
An array of DIDs authorized to sign attestations for this policy. Required if witnessed.
cadence
object
Required
No description available.
createdAt
string
datetime
Required
Timestamp when this policy record was created.
freezesGrantedAtMilestone
integer
Optional
Number of freezes to grant when reaching a milestone (explicit or recurring).
0gracePeriodIntervals
integer
Optional
The number of intervals a user can skip before needing to use a freeze or breaking their streak.
0includeFreezesInStreak
boolean
Optional
If true, frozen intervals are included in the streak sequence count.
falseintervalsToEarnFreeze
integer
Required
Number of successful intervals required to earn 1 freeze.
maxFreezes
integer
Optional
The maximum number of freezes a user can bank at one time.
3milestones
array
of
integer
Optional
Explicit streak counts that trigger a celebration or reward.
name
string
Required
Human-readable name for this streak (e.g., 'Daily Coding').
maxLength: 100 bytesoriginService
string
Optional
Optional: The NSID of the service being tracked for automated check-ins (e.g., app.bsky.feed.post).
recurringMilestoneInterval
integer
Optional
Interval for repeating milestones (e.g., every 100 days) after explicit milestones are passed.
startingFreezes
integer
Optional
Number of freezes granted to the user when they first start the streak.
0verificationType
string
Required
Whether this streak requires a third-party cryptographic signature.
self-reported, witnessedView raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"verificationType",
"cadence",
"intervalsToEarnFreeze",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"description": "Human-readable name for this streak (e.g., 'Daily Coding')."
},
"cadence": {
"type": "object",
"required": [
"type",
"requiredCheckinsPerInterval"
],
"properties": {
"type": {
"type": "string",
"description": "The time window during which the required check-ins must occur.",
"knownValues": [
"daily",
"weekly",
"monthly",
"quarterly",
"yearly"
]
},
"intervalResetDay": {
"type": "integer",
"description": "For weekly: 0-6 (Sun-Sat). For monthly: 1-31. Defines when the window rolls over."
},
"requiredCheckinsPerInterval": {
"type": "integer",
"default": 1,
"description": "Number of check-ins required within the interval to maintain the streak."
}
}
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp when this policy record was created."
},
"maxFreezes": {
"type": "integer",
"default": 3,
"description": "The maximum number of freezes a user can bank at one time."
},
"milestones": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Explicit streak counts that trigger a celebration or reward."
},
"originService": {
"type": "string",
"description": "Optional: The NSID of the service being tracked for automated check-ins (e.g., app.bsky.feed.post)."
},
"allowedGranters": {
"type": "array",
"items": {
"type": "string",
"format": "did"
},
"description": "An array of DIDs authorized to grant extra streak freezes to the user."
},
"startingFreezes": {
"type": "integer",
"default": 0,
"description": "Number of freezes granted to the user when they first start the streak."
},
"allowedWitnesses": {
"type": "array",
"items": {
"type": "string",
"format": "did"
},
"description": "An array of DIDs authorized to sign attestations for this policy. Required if witnessed."
},
"verificationType": {
"type": "string",
"description": "Whether this streak requires a third-party cryptographic signature.",
"knownValues": [
"self-reported",
"witnessed"
]
},
"gracePeriodIntervals": {
"type": "integer",
"default": 0,
"description": "The number of intervals a user can skip before needing to use a freeze or breaking their streak."
},
"intervalsToEarnFreeze": {
"type": "integer",
"description": "Number of successful intervals required to earn 1 freeze."
},
"includeFreezesInStreak": {
"type": "boolean",
"default": false,
"description": "If true, frozen intervals are included in the streak sequence count."
},
"freezesGrantedAtMilestone": {
"type": "integer",
"default": 0,
"description": "Number of freezes to grant when reaching a milestone (explicit or recurring)."
},
"recurringMilestoneInterval": {
"type": "integer",
"description": "Interval for repeating milestones (e.g., every 100 days) after explicit milestones are passed."
}
}
},
"description": "The authority record defining the rules for a Starrysky verified streak."
}