app.chavatar.settings

chavatar.app

Documentation

Rotation configuration for a user.

main record

Rotation configuration for a user.

Record Key literal:self Fixed literal value

Properties

avatars array of ref #avatarItem Required

Backward-compatible flat list of avatar items. Used as an always-active default when schedules is absent.

enabled boolean Required

Whether avatar rotation feature is enabled.

fallbackAvatarId string Optional

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
geoContext ref #geoContext Optional

Geographic and timezone context for schedule evaluation. Required when any schedule uses time-based or solar schedules.

interval string Required

The interval at which avatar rotation should occur.

maxLength: 6 bytes
Known values: 1h, 3h, 6h, 12h, 1d, 1w, 1mo
mode string Required

The default rotation mode used when a schedule does not specify its own mode.

maxLength: 20 bytes
Known values: sequential, random
View raw schema
{
  "key": "literal:self",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "enabled",
      "interval",
      "mode",
      "avatars"
    ],
    "properties": {
      "mode": {
        "type": "string",
        "maxLength": 20,
        "description": "The default rotation mode used when a schedule does not specify its own mode.",
        "knownValues": [
          "sequential",
          "random"
        ]
      },
      "avatars": {
        "type": "array",
        "items": {
          "ref": "#avatarItem",
          "type": "ref"
        },
        "description": "Backward-compatible flat list of avatar items. Used as an always-active default when schedules is absent."
      },
      "enabled": {
        "type": "boolean",
        "description": "Whether avatar rotation feature is enabled."
      },
      "interval": {
        "type": "string",
        "maxLength": 6,
        "description": "The interval at which avatar rotation should occur.",
        "knownValues": [
          "1h",
          "3h",
          "6h",
          "12h",
          "1d",
          "1w",
          "1mo"
        ]
      },
      "geoContext": {
        "ref": "#geoContext",
        "type": "ref",
        "description": "Geographic and timezone context for schedule evaluation. Required when any schedule uses time-based or solar schedules."
      },
      "fallbackAvatarId": {
        "type": "string",
        "maxLength": 13,
        "description": "TID of the avatar to display when no schedule matches the current time. Omit to skip rotation when no schedule is active."
      }
    }
  },
  "description": "Rotation configuration for a user."
}
avatarItem object

No description available.

Properties

id string Required

No description available.

maxLength: 13 bytes
View raw schema
{
  "type": "object",
  "required": [
    "id",
    "image"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 13
    },
    "image": {
      "ref": "com.atproto.repo.strongRef",
      "type": "ref"
    }
  }
}
dateRange object

A date range condition. The 'type' field is the discriminator.

Properties

endAt string datetime Optional

Absolute end datetime (ISO 8601). Omit for open-ended. Applies when type='absolute'.

endDay integer Optional

End day of month (1-31). Required when type='annual'.

endMonth integer Optional

End month (1=Jan, 12=Dec). Required when type='annual'.

startAt string datetime Optional

Absolute start datetime (ISO 8601). Required when type='absolute'.

startDay integer Optional

Start day of month (1-31). Required when type='annual'.

startMonth integer Optional

Start month (1=Jan, 12=Dec). Required when type='annual'.

type string Required

Kind of date range. 'annual' recurs every year; 'absolute' is a one-time range.

Known values: annual, absolute
View raw schema
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "Kind of date range. 'annual' recurs every year; 'absolute' is a one-time range.",
      "knownValues": [
        "annual",
        "absolute"
      ]
    },
    "endAt": {
      "type": "string",
      "format": "datetime",
      "description": "Absolute end datetime (ISO 8601). Omit for open-ended. Applies when type='absolute'."
    },
    "endDay": {
      "type": "integer",
      "description": "End day of month (1-31). Required when type='annual'."
    },
    "startAt": {
      "type": "string",
      "format": "datetime",
      "description": "Absolute start datetime (ISO 8601). Required when type='absolute'."
    },
    "endMonth": {
      "type": "integer",
      "description": "End month (1=Jan, 12=Dec). Required when type='annual'."
    },
    "startDay": {
      "type": "integer",
      "description": "Start day of month (1-31). Required when type='annual'."
    },
    "startMonth": {
      "type": "integer",
      "description": "Start month (1=Jan, 12=Dec). Required when type='annual'."
    }
  },
  "description": "A date range condition. The 'type' field is the discriminator."
}
geoContext object

Geographic and timezone context used for schedule evaluation and solar event calculation.

Properties

timezone string Optional

IANA timezone identifier (e.g. 'Asia/Tokyo'). Required for timeWindow and daysOfWeek schedule evaluation.

View raw schema
{
  "type": "object",
  "properties": {
    "location": {
      "ref": "community.lexicon.location.geo#main",
      "type": "ref",
      "description": "WGS84 geographic location. Required for sunrise/sunset/solar-noon time references."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone identifier (e.g. 'Asia/Tokyo'). Required for timeWindow and daysOfWeek schedule evaluation."
    }
  },
  "description": "Geographic and timezone context used for schedule evaluation and solar event calculation."
}
rotationList object

An ordered list of avatar items with optional rotation mode and interval overrides.

Properties

avatars array of ref#avatarItem Required

Ordered list of avatar items.

interval string Optional

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
mode string Optional

Rotation mode override. Falls back to the top-level settings.mode when absent.

maxLength: 20 bytes
Known values: sequential, random
View raw schema
{
  "type": "object",
  "required": [
    "avatars"
  ],
  "properties": {
    "mode": {
      "type": "string",
      "maxLength": 20,
      "description": "Rotation mode override. Falls back to the top-level settings.mode when absent.",
      "knownValues": [
        "sequential",
        "random"
      ]
    },
    "avatars": {
      "type": "array",
      "items": {
        "ref": "#avatarItem",
        "type": "ref"
      },
      "description": "Ordered list of avatar items."
    },
    "interval": {
      "type": "string",
      "maxLength": 6,
      "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"
      ]
    }
  },
  "description": "An ordered list of avatar items with optional rotation mode and interval overrides."
}
rotationSchedule object

A named rotation schedule with an optional activation condition.

Properties

id string Required

TID-format unique identifier for this schedule.

maxLength: 13 bytes
kind string Required

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
list ref #rotationList Optional

Avatar list for 'default' and 'period' kinds.

name string Optional

Display name for this schedule.

maxLength: 64 bytes
timing ref #timing Optional

Activation timing for 'period' kind. Omit to make always active within the period kind.

windows array of ref#timeWindow Optional

Time-of-day windows for 'timed' kind. The schedule is active when the current time falls within any window.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "kind"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 13,
      "description": "TID-format unique identifier for this schedule."
    },
    "kind": {
      "type": "string",
      "maxLength": 16,
      "description": "Schedule kind. 'default' is always active. 'period' uses date/day-of-week timing. 'timed' uses time-of-day windows.",
      "knownValues": [
        "default",
        "period",
        "timed"
      ]
    },
    "list": {
      "ref": "#rotationList",
      "type": "ref",
      "description": "Avatar list for 'default' and 'period' kinds."
    },
    "name": {
      "type": "string",
      "maxLength": 64,
      "description": "Display name for this schedule."
    },
    "timing": {
      "ref": "#timing",
      "type": "ref",
      "description": "Activation timing for 'period' kind. Omit to make always active within the period kind."
    },
    "windows": {
      "type": "array",
      "items": {
        "ref": "#timeWindow",
        "type": "ref"
      },
      "description": "Time-of-day windows for 'timed' kind. The schedule is active when the current time falls within any window."
    }
  },
  "description": "A named rotation schedule with an optional activation condition."
}
timeReference object

A time reference for schedule boundaries. The 'type' field is the discriminator.

Properties

offsetMin integer Optional

Offset in minutes from the solar event. Negative values are before the event. Applies to sunrise/sunset/solar-noon.

time string Optional

Wall-clock time in 'HH:MM' format interpreted in geoContext.timezone. Required when type='fixed'.

type string Required

Kind of time reference. 'fixed' requires the 'time' field; solar types use geoContext.location.

Known values: fixed, sunrise, sunset, solar-noon
View raw schema
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "time": {
      "type": "string",
      "description": "Wall-clock time in 'HH:MM' format interpreted in geoContext.timezone. Required when type='fixed'."
    },
    "type": {
      "type": "string",
      "description": "Kind of time reference. 'fixed' requires the 'time' field; solar types use geoContext.location.",
      "knownValues": [
        "fixed",
        "sunrise",
        "sunset",
        "solar-noon"
      ]
    },
    "offsetMin": {
      "type": "integer",
      "description": "Offset in minutes from the solar event. Negative values are before the event. Applies to sunrise/sunset/solar-noon."
    }
  },
  "description": "A time reference for schedule boundaries. The 'type' field is the discriminator."
}
timeWindow object

A time window defined by start and end time references, with its own avatar list.

Properties

end ref #timeReference Optional

Window end time reference. Omit for open-ended windows.

View raw schema
{
  "type": "object",
  "required": [
    "start",
    "list"
  ],
  "properties": {
    "end": {
      "ref": "#timeReference",
      "type": "ref",
      "description": "Window end time reference. Omit for open-ended windows."
    },
    "list": {
      "ref": "#rotationList",
      "type": "ref",
      "description": "Avatar list for this window."
    },
    "start": {
      "ref": "#timeReference",
      "type": "ref",
      "description": "Window start time reference."
    }
  },
  "description": "A time window defined by start and end time references, with its own avatar list."
}
timing object

Activation timing for a period schedule. All fields are optional; specified conditions are evaluated with AND semantics.

Properties

dateRange ref #dateRange Optional

Date range condition.

daysOfWeek array of integer Optional

Active days of week. Omit to match all days.

ttlSec integer Optional

Seconds after dateRange.endAt before automatically reverting to the next active schedule.

View raw schema
{
  "type": "object",
  "properties": {
    "ttlSec": {
      "type": "integer",
      "description": "Seconds after dateRange.endAt before automatically reverting to the next active schedule."
    },
    "dateRange": {
      "ref": "#dateRange",
      "type": "ref",
      "description": "Date range condition."
    },
    "daysOfWeek": {
      "type": "array",
      "items": {
        "type": "integer",
        "description": "Day of week (0=Sunday, 6=Saturday)."
      },
      "description": "Active days of week. Omit to match all days."
    }
  },
  "description": "Activation timing for a period schedule. All fields are optional; specified conditions are evaluated with AND semantics."
}

Lexicon Garden

@