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
{
  "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"
}
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
{
  "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"
}
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
{
  "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"
}

Lexicon Garden

@