{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "pattern": "^[a-zA-Z0-9_-]+$"
        },
        "member": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "pattern": "^[a-zA-Z0-9_-]+$"
        },
        "reason": {
          "type": "string"
        },
        "bannedAt": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "bannedBy": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "rollback": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string"
            },
            "finishedAt": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            },
            "outcome": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "attemptsRejected": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "completionsRevoked": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "completionsRestored": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "completionsKept": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "completion": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100,
                            "pattern": "^[a-zA-Z0-9_-]+$"
                          },
                          "code": {
                            "type": "string"
                          }
                        },
                        "required": ["completion", "code"]
                      }
                    },
                    "entriesReversed": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "referralAccounts": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "points": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ledger": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100,
                            "pattern": "^[a-zA-Z0-9_-]+$"
                          },
                          "reversed": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "unreversed": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": ["ledger", "reversed", "unreversed"]
                      }
                    },
                    "referralDebt": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "ledger": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100,
                            "pattern": "^[a-zA-Z0-9_-]+$"
                          },
                          "amount": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": ["ledger", "amount"]
                      }
                    }
                  },
                  "required": [
                    "attemptsRejected",
                    "completionsRevoked",
                    "completionsRestored",
                    "completionsKept",
                    "entriesReversed",
                    "referralAccounts",
                    "points",
                    "referralDebt"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "completions": {
              "type": "boolean"
            },
            "referralPayouts": {
              "type": "boolean"
            },
            "pointAwards": {
              "type": "boolean"
            }
          },
          "required": [
            "status",
            "finishedAt",
            "outcome",
            "completions",
            "referralPayouts",
            "pointAwards"
          ]
        },
        "unban": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "reason": {
                  "type": "string"
                },
                "unbannedAt": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "by": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "restoreCompletions": {
                  "type": "boolean"
                },
                "restore": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string"
                        },
                        "finishedAt": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "outcome": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "attemptsRejected": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "completionsRevoked": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "completionsRestored": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "completionsKept": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "completion": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "pattern": "^[a-zA-Z0-9_-]+$"
                                      },
                                      "code": {
                                        "type": "string"
                                      }
                                    },
                                    "required": ["completion", "code"]
                                  }
                                },
                                "entriesReversed": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "referralAccounts": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "points": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "ledger": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "pattern": "^[a-zA-Z0-9_-]+$"
                                      },
                                      "reversed": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "unreversed": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      }
                                    },
                                    "required": [
                                      "ledger",
                                      "reversed",
                                      "unreversed"
                                    ]
                                  }
                                },
                                "referralDebt": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "ledger": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 100,
                                        "pattern": "^[a-zA-Z0-9_-]+$"
                                      },
                                      "amount": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      }
                                    },
                                    "required": ["ledger", "amount"]
                                  }
                                }
                              },
                              "required": [
                                "attemptsRejected",
                                "completionsRevoked",
                                "completionsRestored",
                                "completionsKept",
                                "entriesReversed",
                                "referralAccounts",
                                "points",
                                "referralDebt"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": ["status", "finishedAt", "outcome"]
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "reason",
                "unbannedAt",
                "by",
                "restoreCompletions",
                "restore"
              ]
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "member",
        "reason",
        "bannedAt",
        "bannedBy",
        "rollback",
        "unban"
      ]
    },
    {
      "type": "object",
      "properties": {
        "member": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "pattern": "^[a-zA-Z0-9_-]+$"
        },
        "banned": {
          "type": "boolean"
        },
        "attempts": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "completions": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "entries": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "referralAccounts": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "points": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "ledger": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "pattern": "^[a-zA-Z0-9_-]+$"
              },
              "completions": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "pointAwards": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "referralPayouts": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "available": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "reversed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "unreversed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "referralDebt": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "ledger",
              "completions",
              "pointAwards",
              "referralPayouts",
              "available",
              "reversed",
              "unreversed",
              "referralDebt"
            ]
          }
        },
        "inviters": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "member": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "pattern": "^[a-zA-Z0-9_-]+$"
              },
              "ledgers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "ledger": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100,
                      "pattern": "^[a-zA-Z0-9_-]+$"
                    },
                    "bonus": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "reversed": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "referralDebt": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": ["ledger", "bonus", "reversed", "referralDebt"]
                }
              }
            },
            "required": ["member", "ledgers"]
          }
        }
      },
      "required": [
        "member",
        "banned",
        "attempts",
        "completions",
        "entries",
        "referralAccounts",
        "points",
        "inviters"
      ]
    }
  ]
}
