Rotation configuration for a user.
Record Key
literal:self
Fixed literal value
Properties
Backward-compatible flat list of avatar items. Used as an always-active default when schedules is absent.
Whether avatar rotation feature is enabled.
TID of the avatar to display when no schedule matches the current time. Omit to skip rotation when no schedule is active.
maxLength: 13 bytes
Geographic and timezone context for schedule evaluation. Required when any schedule uses time-based or solar schedules.
The interval at which avatar rotation should occur.
maxLength: 6 bytes
Known values: 1h, 3h, 6h, 12h, 1d, 1w, 1mo
The default rotation mode used when a schedule does not specify its own mode.
maxLength: 20 bytes
Known values: sequential, random
View raw schema
{
"description": "Rotation configuration for a user.",
"key": "literal:self",
"record": {
"properties": {
"avatars": {
"description": "Backward-compatible flat list of avatar items. Used as an always-active default when schedules is absent.",
"items": {
"ref": "#avatarItem",
"type": "ref"
},
"type": "array"
},
"enabled": {
"description": "Whether avatar rotation feature is enabled.",
"type": "boolean"
},
"fallbackAvatarId": {
"description": "TID of the avatar to display when no schedule matches the current time. Omit to skip rotation when no schedule is active.",
"maxLength": 13,
"type": "string"
},
"geoContext": {
"description": "Geographic and timezone context for schedule evaluation. Required when any schedule uses time-based or solar schedules.",
"ref": "#geoContext",
"type": "ref"
},
"interval": {
"description": "The interval at which avatar rotation should occur.",
"knownValues": [
"1h",
"3h",
"6h",
"12h",
"1d",
"1w",
"1mo"
],
"maxLength": 6,
"type": "string"
},
"mode": {
"description": "The default rotation mode used when a schedule does not specify its own mode.",
"knownValues": [
"sequential",
"random"
],
"maxLength": 20,
"type": "string"
}
},
"required": [
"enabled",
"interval",
"mode",
"avatars"
],
"type": "object"
},
"type": "record"
}
No description available.
Properties
No description available.
maxLength: 13 bytes
No description available.
View raw schema
{
"properties": {
"id": {
"maxLength": 13,
"type": "string"
},
"image": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
}
},
"required": [
"id",
"image"
],
"type": "object"
}
A date range condition. The 'type' field is the discriminator.
Properties
Absolute end datetime (ISO 8601). Omit for open-ended. Applies when type='absolute'.
End day of month (1-31). Required when type='annual'.
End month (1=Jan, 12=Dec). Required when type='annual'.
Absolute start datetime (ISO 8601). Required when type='absolute'.
Start day of month (1-31). Required when type='annual'.
Start month (1=Jan, 12=Dec). Required when type='annual'.
Kind of date range. 'annual' recurs every year; 'absolute' is a one-time range.
Known values: annual, absolute
View raw schema
{
"description": "A date range condition. The 'type' field is the discriminator.",
"properties": {
"endAt": {
"description": "Absolute end datetime (ISO 8601). Omit for open-ended. Applies when type='absolute'.",
"format": "datetime",
"type": "string"
},
"endDay": {
"description": "End day of month (1-31). Required when type='annual'.",
"type": "integer"
},
"endMonth": {
"description": "End month (1=Jan, 12=Dec). Required when type='annual'.",
"type": "integer"
},
"startAt": {
"description": "Absolute start datetime (ISO 8601). Required when type='absolute'.",
"format": "datetime",
"type": "string"
},
"startDay": {
"description": "Start day of month (1-31). Required when type='annual'.",
"type": "integer"
},
"startMonth": {
"description": "Start month (1=Jan, 12=Dec). Required when type='annual'.",
"type": "integer"
},
"type": {
"description": "Kind of date range. 'annual' recurs every year; 'absolute' is a one-time range.",
"knownValues": [
"annual",
"absolute"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
Geographic and timezone context used for schedule evaluation and solar event calculation.
Properties
WGS84 geographic location. Required for sunrise/sunset/solar-noon time references.
IANA timezone identifier (e.g. 'Asia/Tokyo'). Required for timeWindow and daysOfWeek schedule evaluation.
View raw schema
{
"description": "Geographic and timezone context used for schedule evaluation and solar event calculation.",
"properties": {
"location": {
"description": "WGS84 geographic location. Required for sunrise/sunset/solar-noon time references.",
"ref": "community.lexicon.location.geo#main",
"type": "ref"
},
"timezone": {
"description": "IANA timezone identifier (e.g. 'Asia/Tokyo'). Required for timeWindow and daysOfWeek schedule evaluation.",
"type": "string"
}
},
"type": "object"
}
An ordered list of avatar items with optional rotation mode and interval overrides.
Properties
Ordered list of avatar items.
Rotation interval override for this list. Falls back to the top-level settings.interval when absent. Not applicable to TimeWindow lists (which use one-shot execution at window boundaries).
maxLength: 6 bytes
Known values: 1h, 3h, 6h, 12h, 1d, 1w, 1mo
Rotation mode override. Falls back to the top-level settings.mode when absent.
maxLength: 20 bytes
Known values: sequential, random
View raw schema
{
"description": "An ordered list of avatar items with optional rotation mode and interval overrides.",
"properties": {
"avatars": {
"description": "Ordered list of avatar items.",
"items": {
"ref": "#avatarItem",
"type": "ref"
},
"type": "array"
},
"interval": {
"description": "Rotation interval override for this list. Falls back to the top-level settings.interval when absent. Not applicable to TimeWindow lists (which use one-shot execution at window boundaries).",
"knownValues": [
"1h",
"3h",
"6h",
"12h",
"1d",
"1w",
"1mo"
],
"maxLength": 6,
"type": "string"
},
"mode": {
"description": "Rotation mode override. Falls back to the top-level settings.mode when absent.",
"knownValues": [
"sequential",
"random"
],
"maxLength": 20,
"type": "string"
}
},
"required": [
"avatars"
],
"type": "object"
}
A named rotation schedule with an optional activation condition.
Properties
TID-format unique identifier for this schedule.
maxLength: 13 bytes
Schedule kind. 'default' is always active. 'period' uses date/day-of-week timing. 'timed' uses time-of-day windows.
maxLength: 16 bytes
Known values: default, period, timed
Avatar list for 'default' and 'period' kinds.
Display name for this schedule.
maxLength: 64 bytes
Activation timing for 'period' kind. Omit to make always active within the period kind.
Time-of-day windows for 'timed' kind. The schedule is active when the current time falls within any window.
View raw schema
{
"description": "A named rotation schedule with an optional activation condition.",
"properties": {
"id": {
"description": "TID-format unique identifier for this schedule.",
"maxLength": 13,
"type": "string"
},
"kind": {
"description": "Schedule kind. 'default' is always active. 'period' uses date/day-of-week timing. 'timed' uses time-of-day windows.",
"knownValues": [
"default",
"period",
"timed"
],
"maxLength": 16,
"type": "string"
},
"list": {
"description": "Avatar list for 'default' and 'period' kinds.",
"ref": "#rotationList",
"type": "ref"
},
"name": {
"description": "Display name for this schedule.",
"maxLength": 64,
"type": "string"
},
"timing": {
"description": "Activation timing for 'period' kind. Omit to make always active within the period kind.",
"ref": "#timing",
"type": "ref"
},
"windows": {
"description": "Time-of-day windows for 'timed' kind. The schedule is active when the current time falls within any window.",
"items": {
"ref": "#timeWindow",
"type": "ref"
},
"type": "array"
}
},
"required": [
"id",
"kind"
],
"type": "object"
}
A time reference for schedule boundaries. The 'type' field is the discriminator.
Properties
Offset in minutes from the solar event. Negative values are before the event. Applies to sunrise/sunset/solar-noon.
Wall-clock time in 'HH:MM' format interpreted in geoContext.timezone. Required when type='fixed'.
Kind of time reference. 'fixed' requires the 'time' field; solar types use geoContext.location.
Known values: fixed, sunrise, sunset, solar-noon
View raw schema
{
"description": "A time reference for schedule boundaries. The 'type' field is the discriminator.",
"properties": {
"offsetMin": {
"description": "Offset in minutes from the solar event. Negative values are before the event. Applies to sunrise/sunset/solar-noon.",
"type": "integer"
},
"time": {
"description": "Wall-clock time in 'HH:MM' format interpreted in geoContext.timezone. Required when type='fixed'.",
"type": "string"
},
"type": {
"description": "Kind of time reference. 'fixed' requires the 'time' field; solar types use geoContext.location.",
"knownValues": [
"fixed",
"sunrise",
"sunset",
"solar-noon"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
A time window defined by start and end time references, with its own avatar list.
Properties
Window end time reference. Omit for open-ended windows.
Avatar list for this window.
Window start time reference.
View raw schema
{
"description": "A time window defined by start and end time references, with its own avatar list.",
"properties": {
"end": {
"description": "Window end time reference. Omit for open-ended windows.",
"ref": "#timeReference",
"type": "ref"
},
"list": {
"description": "Avatar list for this window.",
"ref": "#rotationList",
"type": "ref"
},
"start": {
"description": "Window start time reference.",
"ref": "#timeReference",
"type": "ref"
}
},
"required": [
"start",
"list"
],
"type": "object"
}
Activation timing for a period schedule. All fields are optional; specified conditions are evaluated with AND semantics.
Properties
Active days of week. Omit to match all days.
Seconds after dateRange.endAt before automatically reverting to the next active schedule.
View raw schema
{
"description": "Activation timing for a period schedule. All fields are optional; specified conditions are evaluated with AND semantics.",
"properties": {
"dateRange": {
"description": "Date range condition.",
"ref": "#dateRange",
"type": "ref"
},
"daysOfWeek": {
"description": "Active days of week. Omit to match all days.",
"items": {
"description": "Day of week (0=Sunday, 6=Saturday).",
"type": "integer"
},
"type": "array"
},
"ttlSec": {
"description": "Seconds after dateRange.endAt before automatically reverting to the next active schedule.",
"type": "integer"
}
},
"type": "object"
}