net.anisota.lab.nightsky.session

anisota.net

Documentation

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.

main record

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.

Record Key tid Timestamp-based ID

Properties

createdAt string datetime Required

When the session record was created

durationMs integer Required

How long the session lasted, in milliseconds

minimum: 0
endedAt string datetime Required

When the gazing session ended

lookAround boolean Optional

Whether the 360° look-around dome was used during the session

signature ref #chronicleSignature Optional

ES256 signature proving the record came from the Anisota app

startedAt string datetime Required

When the gazing session began

timeModes array of string Optional

Which time-of-day modes were viewed during the session

maxLength: 8 items
totalWitnessed integer Required

Total number of things witnessed in the viewfinder this session (sum of the witnessed tally)

minimum: 0
witnessed ref #witnessedTally Optional

Per-kind counts of what was witnessed

View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "startedAt",
      "endedAt",
      "durationMs",
      "totalWitnessed",
      "createdAt"
    ],
    "properties": {
      "endedAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the gazing session ended"
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the session record was created"
      },
      "signature": {
        "ref": "#chronicleSignature",
        "type": "ref",
        "description": "ES256 signature proving the record came from the Anisota app"
      },
      "startedAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the gazing session began"
      },
      "timeModes": {
        "type": "array",
        "items": {
          "enum": [
            "night",
            "day",
            "24h"
          ],
          "type": "string"
        },
        "maxLength": 8,
        "description": "Which time-of-day modes were viewed during the session"
      },
      "witnessed": {
        "ref": "#witnessedTally",
        "type": "ref",
        "description": "Per-kind counts of what was witnessed"
      },
      "durationMs": {
        "type": "integer",
        "minimum": 0,
        "description": "How long the session lasted, in milliseconds"
      },
      "lookAround": {
        "type": "boolean",
        "description": "Whether the 360° look-around dome was used during the session"
      },
      "totalWitnessed": {
        "type": "integer",
        "minimum": 0,
        "description": "Total number of things witnessed in the viewfinder this session (sum of the witnessed tally)"
      }
    }
  },
  "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."
}
chronicleSignature object

ES256 cryptographic signature proving record authenticity

Properties

alg string Required

Signing algorithm (ES256)

kid string Required

Key identifier for the signing key

nonce string Required

Unique random nonce to prevent replay

sig string Required

Base64-encoded ES256 signature

signedAt string datetime Required

When the record was signed

version integer Required

Signature schema version

View raw schema
{
  "type": "object",
  "required": [
    "sig",
    "alg",
    "kid",
    "signedAt",
    "nonce",
    "version"
  ],
  "properties": {
    "alg": {
      "type": "string",
      "description": "Signing algorithm (ES256)"
    },
    "kid": {
      "type": "string",
      "description": "Key identifier for the signing key"
    },
    "sig": {
      "type": "string",
      "description": "Base64-encoded ES256 signature"
    },
    "nonce": {
      "type": "string",
      "description": "Unique random nonce to prevent replay"
    },
    "version": {
      "type": "integer",
      "description": "Signature schema version"
    },
    "signedAt": {
      "type": "string",
      "format": "datetime",
      "description": "When the record was signed"
    }
  },
  "description": "ES256 cryptographic signature proving record authenticity"
}
witnessedTally object

Per-kind counts of celestial and daytime sights witnessed in the viewfinder

Properties

anomalies integer Optional

No description available.

minimum: 0
auroras integer Optional

No description available.

minimum: 0
bats integer Optional

No description available.

minimum: 0
birds integer Optional

No description available.

minimum: 0
bugs integer Optional

No description available.

minimum: 0
comets integer Optional

No description available.

minimum: 0
critters integer Optional

No description available.

minimum: 0
glints integer Optional

No description available.

minimum: 0
jetTrails integer Optional

No description available.

minimum: 0
meteorShowers integer Optional

No description available.

minimum: 0
meteorStorms integer Optional

No description available.

minimum: 0
moonrises integer Optional

No description available.

minimum: 0
owls integer Optional

No description available.

minimum: 0
planes integer Optional

No description available.

minimum: 0
rains integer Optional

No description available.

minimum: 0
satellites integer Optional

No description available.

minimum: 0
shootingStars integer Optional

No description available.

minimum: 0
ufos integer Optional

No description available.

minimum: 0
View raw schema
{
  "type": "object",
  "properties": {
    "bats": {
      "type": "integer",
      "minimum": 0
    },
    "bugs": {
      "type": "integer",
      "minimum": 0
    },
    "owls": {
      "type": "integer",
      "minimum": 0
    },
    "ufos": {
      "type": "integer",
      "minimum": 0
    },
    "birds": {
      "type": "integer",
      "minimum": 0
    },
    "rains": {
      "type": "integer",
      "minimum": 0
    },
    "comets": {
      "type": "integer",
      "minimum": 0
    },
    "glints": {
      "type": "integer",
      "minimum": 0
    },
    "planes": {
      "type": "integer",
      "minimum": 0
    },
    "auroras": {
      "type": "integer",
      "minimum": 0
    },
    "critters": {
      "type": "integer",
      "minimum": 0
    },
    "anomalies": {
      "type": "integer",
      "minimum": 0
    },
    "jetTrails": {
      "type": "integer",
      "minimum": 0
    },
    "moonrises": {
      "type": "integer",
      "minimum": 0
    },
    "satellites": {
      "type": "integer",
      "minimum": 0
    },
    "meteorStorms": {
      "type": "integer",
      "minimum": 0
    },
    "meteorShowers": {
      "type": "integer",
      "minimum": 0
    },
    "shootingStars": {
      "type": "integer",
      "minimum": 0
    }
  },
  "description": "Per-kind counts of celestial and daytime sights witnessed in the viewfinder"
}

Lexicon Garden

@