{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "getServerInfo",
  "type": "object",
  "properties": {
    "buildVersion": {
      "type": "string",
      "description": "The version number of the running rippled version."
    },
    "completeLedgers": {
      "type": "string",
      "pattern": "[0-9,-]+",
      "description": "Range expression indicating the sequence numbers of the ledger versions the local rippled has in its database. It is possible to be a disjoint sequence, e.g. “2500-5000,32570-7695432”."
    },
    "hostID": {
      "type": "string",
      "description": "On an admin request, returns the hostname of the server running the rippled instance; otherwise, returns a unique four letter word."
    },
    "ioLatencyMs": {
      "type": "number",
      "description": "Amount of time spent waiting for I/O operations, in milliseconds. If this number is not very, very low, then the rippled server is probably having serious load issues."
    },
    "load": {
      "type": "object",
      "description": "*(Admin only)* Detailed information about the current load state of the server.",
      "properties": {
        "jobTypes": {
          "type": "array",
          "description": "*(Admin only)* Information about the rate of different types of jobs the server is doing and how much time it spends on each.",
          "items": {"type": "object"}
        },
        "threads": {
          "type": "number",
          "description": "*(Admin only)* The number of threads in the server’s main job pool, performing various operations."
        }
      },
      "required": ["jobTypes", "threads"]
    },
    "lastClose": {
      "type": "object",
      "description": "Information about the last time the server closed a ledger.",
      "properties": {
        "convergeTimeS": {
          "type": "number",
          "description": "The time it took to reach a consensus for the last ledger closing, in seconds."
        },
        "proposers": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of trusted validators participating in the ledger closing."}
      },
      "required": ["convergeTimeS", "proposers"]
    },
    "loadFactor": {
      "type": "number",
      "description": "The load factor the server is currently enforcing, as a multiplier on the base transaction fee. The load factor is determined by the highest of the individual server’s load factor, cluster’s load factor, and the overall network’s load factor."
    },
    "peers": {
      "type": "integer",
      "minimum": 0,
      "description": "How many other rippled servers the node is currently connected to."
    },
    "pubkeyNode": {
      "type": "string",
      "description": "Public key used to verify this node for internal communications; this key is automatically generated by the server the first time it starts up."
    },
    "pubkeyValidator": {
      "type": "string",
      "description": "*(Admin only)* Public key used by this node to sign ledger validations."
    },
    "serverState": {
      "type": "string",
      "description": "A string indicating to what extent the server is participating in the network. See [Possible Server States](https://xrpl.org/rippled-server-states.html) for more details.",
      "enum": ["disconnected", "connected", "syncing", "tracking", "full", "validating", "proposing"]
    },
    "validatedLedger": {
      "type": "object",
      "description": "Information about the fully-validated ledger with the highest sequence number (the most recent).",
      "properties": {
        "age": {
          "type": "integer",
          "minimum": 0,
          "description": "The time since the ledger was closed, in seconds."
        },
        "baseFeeXRP": {
          "$ref": "value",
          "description": "Base fee, in XRP. This may be represented in scientific notation such as 1e-05 for 0.00005."
        },
        "hash": {
          "$ref": "hash256",
          "description": "Unique hash for the ledger, as an uppercase hexadecimal string."
        },
        "reserveBaseXRP": {
          "$ref": "value",
          "description": "Minimum amount of XRP necessary for every account to keep in reserve."
        },
        "reserveIncrementXRP": {
          "$ref": "value",
          "description": "Amount of XRP added to the account reserve for each object an account owns in the ledger."
        },
        "ledgerVersion": {
          "type": "integer",
          "minimum": 0,
          "description": "Identifying ledger index of this ledger version."
        }
      },
      "additionalProperties": false,
      "required": ["age", "baseFeeXRP", "hash", "reserveBaseXRP", "reserveIncrementXRP", "ledgerVersion"]
    },
    "validationQuorum": {
      "type": "number",
      "description": "Minimum number of trusted validations required to validate a ledger version. Some circumstances may cause the server to require more validations."
    }
  },
  "required": ["buildVersion", "completeLedgers", "hostID", "ioLatencyMs", "lastClose", "loadFactor", "peers", "pubkeyNode", "serverState", "validatedLedger", "validationQuorum"],
  "additionalProperties": false
}
