{ "openapi": "3.0.0", "info": { "title": "Aptos Node Checker", "version": "0.1.1" }, "servers": [ { "url": "http://0.0.0.0:20121/" } ], "tags": [], "paths": { "/check_node": { "get": { "summary": "Check the health of a given target node. You may specify a baseline node configuration to use for the evaluation. If you don't specify a baseline node configuration, we will attempt to determine the appropriate baseline based on your target node.", "parameters": [ { "name": "node_url", "schema": { "type": "string", "format": "url" }, "in": "query", "description": "The URL of the node to check. e.g. http://44.238.19.217 or http://fullnode.mysite.com", "required": true, "deprecated": false }, { "name": "baseline_configuration_name", "schema": { "type": "string" }, "in": "query", "description": "The name of the baseline node configuration to use for the evaluation, e.g. devnet_fullnode", "required": false, "deprecated": false }, { "name": "metrics_port", "schema": { "type": "integer", "format": "uint16", "default": 9101 }, "in": "query", "required": false, "deprecated": false }, { "name": "api_port", "schema": { "type": "integer", "format": "uint16", "default": 8080 }, "in": "query", "required": false, "deprecated": false }, { "name": "noise_port", "schema": { "type": "integer", "format": "uint16", "default": 6180 }, "in": "query", "required": false, "deprecated": false } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EvaluationSummary" } } } } } } }, "/check_preconfigured_node": { "get": { "summary": "Check the health of the preconfigured node. If none was specified when this instance of the node checker was started, this will return an error. You may specify a baseline node configuration to use for the evaluation. If you don't specify a baseline node configuration, we will attempt to determine the appropriate baseline based on your target node.", "parameters": [ { "name": "baseline_configuration_name", "schema": { "type": "string" }, "in": "query", "required": false, "deprecated": false } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EvaluationSummary" } } } } } } }, "/get_configurations": { "get": { "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NodeConfiguration" } } } } } } } }, "/get_configuration_keys": { "get": { "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } } }, "components": { "schemas": { "BlockingRunnerArgs": { "type": "object", "required": [ "metrics_fetch_delay_secs" ], "properties": { "metrics_fetch_delay_secs": { "type": "integer", "format": "uint64" } } }, "ConsensusProposalsEvaluatorArgs": { "type": "object" }, "EvaluationResult": { "type": "object", "required": [ "headline", "score", "explanation", "evaluator_name", "category", "links" ], "properties": { "headline": { "type": "string", "description": "Headline of the evaluation, e.g. \"Healthy!\" or \"Metrics missing!\"." }, "score": { "type": "integer", "format": "uint8", "description": "Score out of 100." }, "explanation": { "type": "string", "description": "Explanation of the evaluation." }, "evaluator_name": { "type": "string", "description": "Name of the evaluator where the evaluation came from, e.g. state_sync_version." }, "category": { "type": "string", "description": "Category of the evaluator where the evaluation came from, e.g. state_sync." }, "links": { "type": "array", "description": "Links that might help the user fix a potential problem.", "items": { "type": "string" } } } }, "EvaluationSummary": { "type": "object", "required": [ "evaluation_results", "summary_score", "summary_explanation" ], "properties": { "evaluation_results": { "type": "array", "description": "Results from all the evaluations NHC ran.", "items": { "$ref": "#/components/schemas/EvaluationResult" } }, "summary_score": { "type": "integer", "format": "uint8", "description": "An aggeregated summary (method TBA)." }, "summary_explanation": { "type": "string", "description": "An overall explanation of the results." } } }, "EvaluatorArgs": { "type": "object", "required": [ "state_sync_version_args", "consensus_proposals_args", "system_information_build_version_args" ], "properties": { "state_sync_version_args": { "$ref": "#/components/schemas/StateSyncVersionEvaluatorArgs" }, "consensus_proposals_args": { "$ref": "#/components/schemas/ConsensusProposalsEvaluatorArgs" }, "system_information_build_version_args": { "$ref": "#/components/schemas/SystemInformationBuildVersionEvaluatorArgs" } } }, "NodeAddress": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "url", "description": "Target URL. This should include a scheme (e.g. http://). If there is\nno scheme, we will prepend http://." }, "metrics_port": { "type": "integer", "format": "uint16", "description": "Metrics port.", "default": 9101 }, "api_port": { "type": "integer", "format": "uint16", "description": "API port.", "default": 8080 }, "noise_port": { "type": "integer", "format": "uint16", "description": "Validator communication port.", "default": 6180 } }, "example": { "url": "http://mynode.mysite.com/", "metrics_port": 9101, "api_port": 8080, "noise_port": 6180 } }, "NodeConfiguration": { "type": "object", "required": [ "node_address", "configuration_name", "configuration_name_pretty", "evaluators", "evaluator_args", "runner_args" ], "properties": { "node_address": { "$ref": "#/components/schemas/NodeAddress" }, "configuration_name": { "type": "string", "description": "This is the name we expect clients to send over the wire to select\nwhich configuration they want to use. e.g. devnet_fullnode" }, "configuration_name_pretty": { "type": "string", "description": "This is the name we will show for this configuration to users.\nFor example, if someone opens the NHC frontend, they will see this name\nin a dropdown list of configurations they can test their node against.\ne.g. \"Devnet FullNode\", \"Testnet Validator Node\", etc." }, "chain_id": { "type": "integer", "format": "uint16", "description": "The chain ID we expect to find when we speak to the node.\nIf not given, we will just assume the value we find is correct.\nIf given, we will check that the value is correct, exiting if not." }, "role_type": { "type": "string", "description": "The role type we expect to find when we speak to the node.\nIf not given, we will just assume the value we find is correct.\nIf given, we will check that the value is correct, exiting if not.\ne.g. \"full_node\", \"validator_node\", etc." }, "evaluators": { "type": "array", "description": "The (metric) evaluators to use, e.g. state_sync, api, etc.", "items": { "type": "string" } }, "evaluator_args": { "$ref": "#/components/schemas/EvaluatorArgs" }, "runner_args": { "$ref": "#/components/schemas/RunnerArgs" } } }, "RunnerArgs": { "type": "object", "required": [ "blocking_runner_args" ], "properties": { "blocking_runner_args": { "$ref": "#/components/schemas/BlockingRunnerArgs" } } }, "StateSyncVersionEvaluatorArgs": { "type": "object", "required": [ "version_delta_tolerance" ], "properties": { "version_delta_tolerance": { "type": "integer", "format": "uint64" } } }, "SystemInformationBuildVersionEvaluatorArgs": { "type": "object" } } } }