{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "rosetta-network-options-response",
  "type": "object",
  "title": "RosettaNetworkOptionsResponse",
  "description": "NetworkOptionsResponse contains information about the versioning of the node and the allowed operation statuses, operation types, and errors.",
  "required": ["version", "allow"],
  "properties": {
    "version": {
      "type": "object",
      "description": "The Version object is utilized to inform the client of the versions of different components of the Rosetta implementation.",
      "required": ["rosetta_version", "node_version"],
      "properties": {
        "rosetta_version": {
          "type": "string",
          "description": "The rosetta_version is the version of the Rosetta interface the implementation adheres to. This can be useful for clients looking to reliably parse responses."
        },
        "node_version": {
          "type": "string",
          "description": "The node_version is the canonical version of the node runtime. This can help clients manage deployments."
        },
        "middleware_version": {
          "type": "string",
          "description": "When a middleware server is used to adhere to the Rosetta interface, it should return its version here. This can help clients manage deployments."
        },
        "metadata": {
          "type": "object",
          "description": "Any other information that may be useful about versioning of dependent services should be returned here."
        }
      }
    },
    "allow": {
      "type": "object",
      "description": "Allow specifies supported Operation status, Operation types, and all possible error statuses. This Allow object is used by clients to validate the correctness of a Rosetta Server implementation. It is expected that these clients will error if they receive some response that contains any of the above information that is not specified here.",
      "required": ["operation_statuses", "operation_types", "errors", "historical_balance_lookup"],
      "properties": {
        "operation_statuses": {
          "type": "array",
          "description": "All Operation.Status this implementation supports. Any status that is returned during parsing that is not listed here will cause client validation to error.",
          "items": {
            "$ref": "./../../entities/rosetta/rosetta-operation-statuses.schema.json"
          }
        },
        "operation_types": {
          "type": "array",
          "description": "All Operation.Type this implementation supports. Any type that is returned during parsing that is not listed here will cause client validation to error.",
          "items": {
            "anyOf": [
              {
                "type": "string"
              }
            ]
          }
        },
        "errors": {
          "type": "array",
          "description": "All Errors that this implementation could return. Any error that is returned during parsing that is not listed here will cause client validation to error.",
          "items": {
            "$ref": "./../../entities/rosetta/rosetta-error-no-details.schema.json"
          }
        },
        "historical_balance_lookup": {
          "type": "boolean",
          "description": "Any Rosetta implementation that supports querying the balance of an account at any height in the past should set this to true."
        }
      }
    }
  }
}
