{
  "lexicon": 1,
  "id": "tools.ozone.hosting.getAccountHistory",
  "defs": {
    "main": {
      "type": "query",
      "description": "Get account history, e.g. log of updated email addresses or other identity information.",
      "parameters": {
        "type": "params",
        "required": ["did"],
        "properties": {
          "did": { "type": "string", "format": "did" },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "knownValues": [
                "accountCreated",
                "emailUpdated",
                "emailConfirmed",
                "passwordUpdated",
                "handleUpdated"
              ]
            }
          },
          "cursor": { "type": "string" },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 50
          }
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "type": "object",
          "required": ["events"],
          "properties": {
            "cursor": { "type": "string" },
            "events": {
              "type": "array",
              "items": {
                "type": "ref",
                "ref": "#event"
              }
            }
          }
        }
      }
    },
    "event": {
      "type": "object",
      "required": ["details", "createdBy", "createdAt"],
      "properties": {
        "details": {
          "type": "union",
          "refs": [
            "#accountCreated",
            "#emailUpdated",
            "#emailConfirmed",
            "#passwordUpdated",
            "#handleUpdated"
          ]
        },
        "createdBy": { "type": "string" },
        "createdAt": { "type": "string", "format": "datetime" }
      }
    },
    "accountCreated": {
      "type": "object",
      "required": [],
      "properties": {
        "email": { "type": "string" },
        "handle": { "type": "string", "format": "handle" }
      }
    },
    "emailUpdated": {
      "type": "object",
      "required": ["email"],
      "properties": {
        "email": { "type": "string" }
      }
    },
    "emailConfirmed": {
      "type": "object",
      "required": ["email"],
      "properties": {
        "email": { "type": "string" }
      }
    },
    "passwordUpdated": {
      "type": "object",
      "required": [],
      "properties": {}
    },
    "handleUpdated": {
      "type": "object",
      "required": ["handle"],
      "properties": {
        "handle": { "type": "string", "format": "handle" }
      }
    }
  }
}
