net.anisota.lab.nightsky.session

anisota.net

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "chronicleSignature": {
      "description": "ES256 cryptographic signature proving record authenticity",
      "properties": {
        "alg": {
          "description": "Signing algorithm (ES256)",
          "type": "string"
        },
        "kid": {
          "description": "Key identifier for the signing key",
          "type": "string"
        },
        "nonce": {
          "description": "Unique random nonce to prevent replay",
          "type": "string"
        },
        "sig": {
          "description": "Base64-encoded ES256 signature",
          "type": "string"
        },
        "signedAt": {
          "description": "When the record was signed",
          "format": "datetime",
          "type": "string"
        },
        "version": {
          "description": "Signature schema version",
          "type": "integer"
        }
      },
      "required": [
        "sig",
        "alg",
        "kid",
        "signedAt",
        "nonce",
        "version"
      ],
      "type": "object"
    },
    "main": {
      "description": "A record of one sky-gazing session in the Anisota Lab's Nightsky experiment, saved to the gazer's PDS. Captures how long they watched, how they were watching, and a tally of everything their viewfinder witnessed. Like Chronicle records, each session carries an ES256 signature minted by the Anisota backend, so the data can be verified to have come from the app rather than being hand-written.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "description": "When the session record was created",
            "format": "datetime",
            "type": "string"
          },
          "durationMs": {
            "description": "How long the session lasted, in milliseconds",
            "minimum": 0,
            "type": "integer"
          },
          "endedAt": {
            "description": "When the gazing session ended",
            "format": "datetime",
            "type": "string"
          },
          "lookAround": {
            "description": "Whether the 360° look-around dome was used during the session",
            "type": "boolean"
          },
          "signature": {
            "description": "ES256 signature proving the record came from the Anisota app",
            "ref": "#chronicleSignature",
            "type": "ref"
          },
          "startedAt": {
            "description": "When the gazing session began",
            "format": "datetime",
            "type": "string"
          },
          "timeModes": {
            "description": "Which time-of-day modes were viewed during the session",
            "items": {
              "enum": [
                "night",
                "day",
                "24h"
              ],
              "type": "string"
            },
            "maxLength": 8,
            "type": "array"
          },
          "totalWitnessed": {
            "description": "Total number of things witnessed in the viewfinder this session (sum of the witnessed tally)",
            "minimum": 0,
            "type": "integer"
          },
          "witnessed": {
            "description": "Per-kind counts of what was witnessed",
            "ref": "#witnessedTally",
            "type": "ref"
          }
        },
        "required": [
          "startedAt",
          "endedAt",
          "durationMs",
          "totalWitnessed",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "witnessedTally": {
      "description": "Per-kind counts of celestial and daytime sights witnessed in the viewfinder",
      "properties": {
        "anomalies": {
          "minimum": 0,
          "type": "integer"
        },
        "auroras": {
          "minimum": 0,
          "type": "integer"
        },
        "bats": {
          "minimum": 0,
          "type": "integer"
        },
        "birds": {
          "minimum": 0,
          "type": "integer"
        },
        "bugs": {
          "minimum": 0,
          "type": "integer"
        },
        "comets": {
          "minimum": 0,
          "type": "integer"
        },
        "critters": {
          "minimum": 0,
          "type": "integer"
        },
        "glints": {
          "minimum": 0,
          "type": "integer"
        },
        "jetTrails": {
          "minimum": 0,
          "type": "integer"
        },
        "meteorShowers": {
          "minimum": 0,
          "type": "integer"
        },
        "meteorStorms": {
          "minimum": 0,
          "type": "integer"
        },
        "moonrises": {
          "minimum": 0,
          "type": "integer"
        },
        "owls": {
          "minimum": 0,
          "type": "integer"
        },
        "planes": {
          "minimum": 0,
          "type": "integer"
        },
        "rains": {
          "minimum": 0,
          "type": "integer"
        },
        "satellites": {
          "minimum": 0,
          "type": "integer"
        },
        "shootingStars": {
          "minimum": 0,
          "type": "integer"
        },
        "ufos": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "type": "object"
    }
  },
  "id": "net.anisota.lab.nightsky.session",
  "lexicon": 1
}

Validate Record

Validate a record against net.anisota.lab.nightsky.session

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:lcieujcfkv4jx7gehsvok3pr
CID
bafyreigy2axhjfdj6uf4a4jjofau2sihpvydz7nuci574tfmgzswczcqim
Indexed At
2026-06-22 18:49 UTC
AT-URI
at://did:plc:lcieujcfkv4jx7gehsvok3pr/com.atproto.lexicon.schema/net.anisota.lab.nightsky.session

Lexicon Garden

@