content: {
    "$defs": {
      "cardanoString": {
        "maxLength": 64,
        "type": "string"
      },
      "stringOrArray": {
        "oneOf": [
          {
            "$ref": "#/$defs/cardanoString"
          },
          {
            "items": {
              "$ref": "#/$defs/cardanoString"
            },
            "type": "array"
          }
        ]
      }
    },
    "$id": "https://raw.githubusercontent.com/DripDropz/onchain-voting/main/docs/schema/Vote.json",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "description": "Describe an individual user vote cast for a given ballot",
    "properties": {
      "ballot_id": {
        "$ref": "#/$defs/stringOrArray",
        "description": "This should be a unique data hash that is presented to the voter so they can validate that their vote was cast without modification",
        "title": "Ballot ID"
      },
      "choices": {
        "description": "Here we should detail the voter's choices as cross-referencable to the on-chain ballot",
        "items": {
          "description": "All voter choices, even single choice, should be passed as an array of values",
          "items": {
            "default": 0,
            "description": "The 1-indexed choices for the indexed question from the ballot. 0 should be treated as abstention",
            "type": "integer"
          },
          "type": "array"
        },
        "title": "Voter Ballot Choices",
        "type": "array"
      },
      "signature": {
        "$ref": "#/$defs/stringOrArray",
        "description": "For utilizing CIP-8/CIP-30 wallet signing. The user's cryptographic signature of the ballot should be passed for verification purposes",
        "title": "Voter Signature"
      },
      "voter_id": {
        "$ref": "#/$defs/stringOrArray",
        "description": "This should be a unique identifier for a given voter who can also be found in the snapshot or voter rolls",
        "title": "Voter Identification"
      },
      "voter_power": {
        "description": "For votes utilizing voter power, this should be provided by the voting authority and match the snapshot or voter rolls value",
        "title": "Voter Power",
        "type": "integer"
      }
    },
    "title": "Vote",
    "type": "object"
  }