{
  "openapi": "3.1.0",
  "info": {
    "title": "ePIC UMC API",
    "description": "",
    "contact": {
      "email": "support@epicblockchain.io"
    },
    "license": {
      "name": ""
    },
    "version": "1.30.0"
  },
  "servers": [
    {
      "url": "http://192.168.0.0:4028"
    }
  ],
  "paths": {
    "/authenticate": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Authenticate the controls towards the miner",
        "description": "Validates control authentication credentials for privileged miner operations.",
        "operationId": "authenticate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequestOptional_String"
              },
              "examples": {
                "authenticate_with_password": {
                  "value": {
                    "param": null,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Authenticate successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/boardenable": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Enable board, true to enable, false to disable",
        "description": "Applies per-board enable or disable state using hashboard index inputs.",
        "operationId": "board_enable_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_Vec_GenHbData_bool"
              },
              "examples": {
                "board_enable_request": {
                  "value": {
                    "param": [
                      {
                        "Data": true,
                        "Index": 0
                      }
                    ],
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/capabilities": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Provides miner model and all available coins and performance presets.",
        "description": "Returns platform capabilities including model metadata, supported coins, and tuning presets.",
        "operationId": "capabilities_handler",
        "responses": {
          "200": {
            "description": "Capabilities of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilitiesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/clearhashrate": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Clears the hashrate data collected by the miner",
        "description": "Resets accumulated hashrate metrics and associated historical counters.",
        "operationId": "clear_hashrate_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequestOptional_String"
              },
              "examples": {
                "clear_hashrate_no_param": {
                  "value": {
                    "param": null,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/clocks": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the clock per chip",
        "description": "Returns the clock per chip for each hashboard",
        "operationId": "clocks_handler",
        "responses": {
          "200": {
            "description": "Individual chip clock for all boards",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GenHbData_f32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/clocks/config": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the clock signal generators and core clock selects config per chip for all boards and board clock average",
        "description": "Returns per-chip PLL/core clock selector settings and board-level clock configuration context.",
        "operationId": "clocks_config_handler",
        "responses": {
          "200": {
            "description": "Individual chip's clock signal generators and core clock selects config for all boards and board clock average",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HbData_TupleCoreConfigSchemaOnly"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/coin": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Supports up to 3 stratum_configs",
        "description": "Updates active coin selection and associated stratum connection credentials.",
        "operationId": "coin_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_CoinInfo_Coin"
              },
              "examples": {
                "coin_pool_config": {
                  "value": {
                    "param": {
                      "coin": "BTC",
                      "stratum_configs": [
                        {
                          "login": "epicblockchain.default",
                          "password": "password",
                          "pool": "stratum+tcp://btc.ss.poolin.one:443"
                        }
                      ],
                      "unique_id": true
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/criticaltemp": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the critical temperature threshold of the miner",
        "description": "The default is set to 100c",
        "operationId": "critical_temp_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_usize"
              },
              "examples": {
                "critical_temperature_celsius": {
                  "value": {
                    "param": 100,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/defaultconfig": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Reset miner to default configs",
        "description": "Restores miner settings to default configuration values.",
        "operationId": "default_config_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequestOptional_String"
              },
              "examples": {
                "reset_to_defaults": {
                  "value": {
                    "param": null,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/disableboardonfailure": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Set if hashboards should be disabled if they fail.",
        "description": "Sets whether failed hashboards are automatically disabled.",
        "operationId": "disable_board_on_failure_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "disable_board_on_failure_toggle": {
                  "value": {
                    "param": false,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/enableboardsonidle": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Configures enabling boards on idle",
        "description": "Setting to true will automatically re-enable any disabled boards if the miner remains idle for more than 10 minutes. This does not restart the miner.\nSetting to false will disable this feature",
        "operationId": "enable_boards_on_idle_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "enable_boards_on_idle_toggle": {
                  "value": {
                    "param": true,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/ethernet": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the ethernet configuration",
        "description": "Returns Ethernet interface settings including DHCP/static addressing details.",
        "operationId": "ethernet_handler",
        "responses": {
          "200": {
            "description": "Current ethernet type of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkInfo"
                }
              }
            }
          }
        }
      }
    },
    "/fans/minimum": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Set the minimum number of fans working required.",
        "description": "Sets the minimum number of functioning fans required for operation.",
        "operationId": "fans_minimum_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_u32"
              },
              "examples": {
                "minimum_working_fans": {
                  "value": {
                    "param": 0,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/fanspeed": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Manually set the fan speed or run Autofan with target operating temperature of the miner",
        "description": "Provide a number from 1-100. Note: if the target sent exceeds limit, it will automatically be set to a number within range",
        "operationId": "fan_speed_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_FanMode"
              },
              "examples": {
                "Auto": {
                  "value": {
                    "param": {
                      "Auto": {
                        "Idle Speed": 100,
                        "Target Temperature": 60
                      }
                    },
                    "password": "letmein"
                  }
                },
                "Manual": {
                  "value": {
                    "param": {
                      "Manual": 100
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/hashrate": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the hashrate per chip",
        "description": "Returns the hashrate per chip for each hashboard and hashrate difference compared to theoretical hashrate",
        "operationId": "hashrate_handler",
        "responses": {
          "200": {
            "description": "Hashrate for all boards in MH/s",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HbData_TupleF32SchemaOnly"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/hashrate/history/continuous": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the realtime hashrate",
        "description": "Returns realtime hashrate for the rig every 10 seconds for up to 1 hour",
        "operationId": "hashrate_history_continuous_handler",
        "responses": {
          "200": {
            "description": "Hashrate for all boards in MH/s",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TotalHashrate"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/hashrate/history/discrete": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the discrete hashrate of the miner",
        "description": "Returns sampled hashrate points representing discrete measurement intervals.",
        "operationId": "hashrate_history_discrete_handler",
        "responses": {
          "200": {
            "description": "Returns discrete hashrate in MH/s",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TotalHashrate"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/hashratesplit": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Split the hashrate of the miner",
        "description": "Supports up to 3 configurations",
        "operationId": "hashrate_split_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_Vec_HashrateSplit_Coin"
              },
              "examples": {
                "hashrate_split_config": {
                  "value": {
                    "param": [
                      {
                        "coin": "BTC",
                        "ratio": 100,
                        "sc_index": 0,
                        "stratum_configs": [
                          {
                            "login": "epicblockchain.default",
                            "password": "password",
                            "pool": "stratum+tcp://btc.ss.poolin.one:443"
                          }
                        ],
                        "unique_id": true,
                        "unique_worker_id_variant": "IpAddress"
                      }
                    ],
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/hashratesplit/config": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Hashrate split pool config",
        "description": "Returns saved hashrate split configuration, including pool ratios and targets.",
        "operationId": "hashrate_split_config_handler",
        "responses": {
          "200": {
            "description": "Returns hashrate split config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HashrateSplitInfo_Coin"
                }
              }
            }
          }
        }
      }
    },
    "/hashratesplit/enable": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Enable hashrate split",
        "description": "Enables or disables hashrate split mode using existing split settings.",
        "operationId": "hashrate_split_enable_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "hashrate_split_toggle": {
                  "value": {
                    "param": false,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/hashratesplit/status": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Hashrate split pool status",
        "description": "Returns current pool assignment and runtime status for hashrate split mode.",
        "operationId": "hashrate_split_status_handler",
        "responses": {
          "200": {
            "description": "Returns hashrate split information",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PoolInfo"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/history": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns pool hashrate history",
        "description": "Returns hashrate data polled every one hour for up to the past 48 hrs.",
        "operationId": "history_handler",
        "responses": {
          "200": {
            "description": "Pool hashrate history in the past 48 hours",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoryResponse"
                }
              }
            }
          }
        }
      }
    },
    "/id": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Set status of the unique id",
        "description": "True for unique, false for non unique",
        "operationId": "id_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "unique_id_toggle": {
                  "value": {
                    "param": true,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/id/variant": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Set the unique id of the miner as either the IP address, MAC address, or the CPU ID",
        "description": "IpAddress to select unique ID as IP address\n\nMacAddress for MAC address\n\nCpuId for CPU ID",
        "operationId": "id_variant_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_UniqueIdVariant"
              },
              "examples": {
                "unique_id_variant": {
                  "value": {
                    "param": "IpAddress",
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/identify": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Identify the miner",
        "description": "Turn the LED on",
        "operationId": "identify_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "identify_led_toggle": {
                  "value": {
                    "param": true,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/idleonconnectionlost": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "On connection lost, the miner will go to idle. When disabled, the miner will continue to draw power.",
        "description": "Controls miner idle behavior when pool or upstream connection is lost.",
        "operationId": "idle_on_connection_lost_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "idle_on_connection_lost_toggle": {
                  "value": {
                    "param": true,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/log": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the log of the miner.",
        "description": "Returns the primary miner runtime log as plain text.",
        "operationId": "log_handler",
        "responses": {
          "200": {
            "description": "Log of the miner",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/log/error": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the error log of the miner.",
        "description": "Returns the miner error log stream for troubleshooting failures.",
        "operationId": "log_error_handler",
        "responses": {
          "200": {
            "description": "Error log of the miner",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/metrics": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "description": "OpenMetrics text output",
        "operationId": "metrics_handler",
        "responses": {
          "200": {
            "description": "OpenMetrics text output",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/miner": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Autostart or stop the mining program",
        "description": "Changes miner runtime state, including start, stop, or autostart control.",
        "operationId": "miner_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_OpState"
              },
              "examples": {
                "set_autostart_state": {
                  "value": {
                    "param": "Autostart",
                    "password": "letmein"
                  }
                },
                "set_stop_state": {
                  "value": {
                    "param": "Stop",
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/network": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the network type",
        "description": "Provides the active network mode and current addressing configuration.",
        "operationId": "network_handler",
        "responses": {
          "200": {
            "description": "Current network type of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the ethernet configuration of the miner",
        "description": "Applies network interface changes for DHCP or static addressing.",
        "operationId": "network_post_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_NetworkInfo"
              },
              "examples": {
                "dhcp": {
                  "value": {
                    "param": {
                      "dhcp": {
                        "address": "192.168.0.0",
                        "dns": "192.168.0.0",
                        "dns2": null,
                        "dnsv6": null,
                        "gateway": "192.168.0.0",
                        "mac_address": "E2:FA:20:0A:43:1D",
                        "netmask": "255.255.255.0"
                      }
                    },
                    "password": "letmein"
                  }
                },
                "static": {
                  "value": {
                    "param": {
                      "static": {
                        "address": "192.168.0.0",
                        "dns": "192.168.0.0",
                        "dns2": "192.168.0.0",
                        "dnsv6": null,
                        "gateway": "192.168.0.0",
                        "mac_address": "E2:FA:20:0A:43:1D",
                        "netmask": "255.255.255.0"
                      }
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "description": "OpenAPI spec",
        "operationId": "openapi_handler",
        "responses": {
          "200": {
            "description": "OpenAPI spec",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/otelsettings": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the gRPC Opentelemetry collector settings",
        "description": "Returns current OpenTelemetry exporter settings, including endpoint and span filters.",
        "operationId": "opentelemetry_handler",
        "responses": {
          "200": {
            "description": "Opentelemetry collector settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OtelSettings"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Pass on Opentelemetry gRPC settings. The miner will reboot to apply the changes.",
        "description": "To disable opentelemetry, set the endpoint to null\n\nTargeted spans can be set to [] to enable all spans, or to [\"span1\", \"span2\"] to enable only those specific spans.",
        "operationId": "otelsettings_post_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_OtelSettings"
              },
              "examples": {
                "otel_settings": {
                  "value": {
                    "param": {
                      "endpoint": "http://192.168.1.100:4317/",
                      "external_crates_enabled": false,
                      "log_level": "INFO",
                      "targeted_spans": []
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/overdrive": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Configures overdrive mode",
        "description": "May provide better efficiency when overclocking (Bitmain bm1366 only). Set to true to enable overdrive mode, false to disable.",
        "operationId": "overdrive_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "overdrive_toggle": {
                  "value": {
                    "param": true,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/password": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Set a new password for the miner. param contains the new password",
        "description": "Updates the control password required for protected API calls.",
        "operationId": "password_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_String"
              },
              "examples": {
                "new_password": {
                  "value": {
                    "param": "",
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/perpetualtune": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns perpetual tune algorithms setting of the miner.",
        "description": "Returns perpetual tuning mode, selected algorithm, and active target settings.",
        "operationId": "autotune_get_handler",
        "responses": {
          "200": {
            "description": "Perpetual tune information of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PerpetualTuneInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Enable or disable perpetual tune",
        "description": "Enables or disables the perpetual tuning subsystem.",
        "operationId": "autotune_set_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_bool"
              },
              "examples": {
                "perpetual_tune_toggle": {
                  "value": {
                    "param": true,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The current perpetual tune status in boolean of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/perpetualtune/algo": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Enable perpetual tune with specific target and algorithm",
        "description": "Optional: minimum throttle target before idling (Bitmain only)",
        "operationId": "autotune_algo_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_AlgoInfo"
              },
              "examples": {
                "perpetual_tune_algorithm": {
                  "value": {
                    "param": {
                      "algo": "VoltageOptimizer",
                      "min_throttle": 10,
                      "target": 70,
                      "throttle_step": 5
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/perpetualtune/reset": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Restarts perpetual tune algorithm on target hashrate",
        "description": "Resets perpetual tuning state and restarts tuning progression.",
        "operationId": "autotune_reset_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_PerpetualTuneAlgorithm"
              },
              "examples": {
                "perpetual_tune_reset_algorithm": {
                  "value": {
                    "param": "VoltageOptimizer",
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/preinitcooldownmaxduration": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Configures PreInitCooldown maximum duration",
        "description": "Sets the PreInitCooldown maximum duration in seconds. This is the maximum time the miner can spend in PreInitCooldown.\nIf the max duration is reached, the miner will skip the initialization temperature checks and start mining.\nDefault is 300 seconds. Setting to 0 means the PreInitCooldown state will last for at most 0 seconds.",
        "operationId": "preinit_cooldown_max_duration_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_u32"
              },
              "examples": {
                "preinit_cooldown_seconds": {
                  "value": {
                    "param": 0,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/reboot": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Provide unsigned integer in param to specify a delay in seconds before the reboot",
        "description": "Provide 0 to reboot instantly",
        "operationId": "reboot_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_u64"
              },
              "examples": {
                "reboot_delay_seconds": {
                  "value": {
                    "param": 0,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/shutdowntemp": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the shutdown temperature threshold of the miner",
        "description": "The default is set to 95c",
        "operationId": "shutdown_temp_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_usize"
              },
              "examples": {
                "shutdown_temperature_celsius": {
                  "value": {
                    "param": 95,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/softreboot": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Softreboot the miner",
        "description": "Performs a software reboot sequence without a full hardware power cycle.",
        "operationId": "softreboot_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequestOptional_String"
              },
              "examples": {
                "soft_reboot_no_param": {
                  "value": {
                    "param": null,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/summary": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns generic readable data for the miner.",
        "description": "Returns general data includes software, status, hostname, etc.",
        "operationId": "summary_handler",
        "responses": {
          "200": {
            "description": "General information of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummaryResponse"
                }
              }
            }
          }
        }
      }
    },
    "/systemupdate": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Update the system",
        "description": "Uploads and applies a firmware package update to the miner.",
        "operationId": "system_update_handler",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/MultipartSchemaOnly"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/temps": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the temperature sensor data collected by the miner",
        "description": "Returns board and chip temperature telemetry sampled from miner sensors.",
        "operationId": "temps_handler",
        "responses": {
          "200": {
            "description": "Temperature sensor data of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GenHbData_f32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/temps/board": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the board temperatures",
        "description": "Returns board-level temperature readings for each hashboard.",
        "operationId": "temps_board_handler",
        "responses": {
          "200": {
            "description": "Board temperature sensor data of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GenHbData_f32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/temps/chip": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the chip temperatures",
        "description": "Returns per-chip temperature readings across all active boards.",
        "operationId": "temps_chip_handler",
        "responses": {
          "200": {
            "description": "Chip temperatures data of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GenHbData_f32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/timezone": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the timezone of the miner",
        "description": "Returns the configured system timezone used by the miner.",
        "operationId": "timezone_handler",
        "responses": {
          "200": {
            "description": "Timezone of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the timezone for the miner and override DHCP timezone",
        "description": "Sets the system timezone and overrides DHCP-provided timezone values.",
        "operationId": "timezone_post_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_String"
              },
              "examples": {
                "timezone_identifier": {
                  "value": {
                    "param": "America/Toronto",
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully changed the timezone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tune": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the clock and voltage of the miner",
        "description": "if the clock and voltage is too high, it will automatically be set to a maximum of 1000MHz and 15v respectively",
        "operationId": "tune_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_ClksAndVoltage"
              },
              "examples": {
                "clock_and_voltage_settings": {
                  "value": {
                    "param": {
                      "clks": "",
                      "voltage": ""
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tune/clock/all": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change only the clocks of the chips in the miner",
        "description": "Applies a uniform target clock setting across all miner chips.",
        "operationId": "tune_clock_all_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_f32"
              },
              "examples": {
                "all_chip_clock_mhz": {
                  "value": {
                    "param": 550,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tune/clock/board": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the clocks for specified hashboards",
        "description": "Applies board-specific clock targets keyed by hashboard index.",
        "operationId": "tune_clock_board_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_BoardTuneClock_GenHbData_f32"
              },
              "examples": {
                "board_clock_settings": {
                  "value": {
                    "param": {
                      "v": [
                        {
                          "Data": 525.0,
                          "Index": 0
                        },
                        {
                          "Data": 525.0,
                          "Index": 1
                        }
                      ]
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tune/clock/chip": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change only the clocks for each chip for each hashboard in the miner",
        "description": "Pass the hashboard id as the Index and chip id and the target value as the Data",
        "operationId": "tune_clock_chip_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_ChipTuneClks_HbClocks"
              },
              "examples": {
                "chip_clock_settings": {
                  "value": {
                    "param": {
                      "v": [
                        {
                          "Data": [
                            [
                              0,
                              [
                                400.0
                              ]
                            ],
                            [
                              5,
                              [
                                425.0
                              ]
                            ]
                          ],
                          "Index": 0
                        },
                        {
                          "Data": [
                            [
                              45,
                              [
                                415.0
                              ]
                            ],
                            [
                              72,
                              [
                                400.0
                              ]
                            ],
                            [
                              89,
                              [
                                420.0
                              ]
                            ]
                          ],
                          "Index": 1
                        },
                        {
                          "Data": [
                            [
                              4,
                              [
                                430.0
                              ]
                            ]
                          ],
                          "Index": 2
                        }
                      ]
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tune/config/chip": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the core pll select config of plls on a chip",
        "description": "Pass the hashboard id as the Index, and chip id and the core pll select configs as the Data",
        "operationId": "tune_config_chip_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_ChipTuneConfig_SingleHbConfig"
              },
              "examples": {
                "chip_pll_config": {
                  "value": {
                    "param": {
                      "v": [
                        {
                          "Data": [
                            [
                              0,
                              [
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ]
                              ]
                            ]
                          ],
                          "Index": 0
                        },
                        {
                          "Data": [
                            [
                              0,
                              [
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ]
                              ]
                            ]
                          ],
                          "Index": 1
                        },
                        {
                          "Data": [
                            [
                              0,
                              [
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ],
                                [
                                  1,
                                  1
                                ]
                              ]
                            ]
                          ],
                          "Index": 2
                        }
                      ]
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tune/voltage": {
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change only the voltage of the miner (in Millivolts)",
        "description": "Sets the global miner voltage target in millivolts.",
        "operationId": "tune_voltage_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_usize"
              },
              "examples": {
                "voltage_millivolts": {
                  "value": {
                    "param": 13000,
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    },
    "/voltages": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the voltage data collected by the miner",
        "description": "Returns voltage telemetry values sampled from miner power rails.",
        "operationId": "voltages_handler",
        "responses": {
          "200": {
            "description": "Voltage data of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GenHbData_f32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/wifi": {
      "get": {
        "tags": [
          "v1-GET"
        ],
        "summary": "Returns the wifi configuration",
        "description": "Returns Wi-Fi interface configuration and current addressing state.",
        "operationId": "wifi_handler",
        "responses": {
          "200": {
            "description": "Current wifi type of the miner",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkInfo"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "v1-POST"
        ],
        "summary": "Change the wifi configuration of the miner",
        "description": "Applies Wi-Fi interface configuration and credentials.",
        "operationId": "wifi_post_handler",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRequest_NetworkInfo"
              },
              "examples": {
                "dhcp": {
                  "value": {
                    "param": {
                      "dhcp": {
                        "address": "192.168.0.0",
                        "dns": "192.168.0.0",
                        "dns2": null,
                        "dnsv6": null,
                        "gateway": "192.168.0.0",
                        "mac_address": "E2:FA:20:0A:43:1D",
                        "netmask": "255.255.255.0"
                      }
                    },
                    "password": "letmein"
                  }
                },
                "static": {
                  "value": {
                    "param": {
                      "static": {
                        "address": "192.168.0.0",
                        "dns": "192.168.0.0",
                        "dns2": "192.168.0.0",
                        "dnsv6": null,
                        "gateway": "192.168.0.0",
                        "mac_address": "E2:FA:20:0A:43:1D",
                        "netmask": "255.255.255.0"
                      }
                    },
                    "password": "letmein"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AlgoInfo": {
        "type": "object",
        "required": [
          "algo",
          "target"
        ],
        "properties": {
          "algo": {
            "$ref": "#/components/schemas/PerpetualTuneAlgorithm"
          },
          "min_throttle": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "target": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "throttle_step": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "AlgorithmStats": {
        "type": "object",
        "required": [
          "Optimized",
          "Target",
          "Unit"
        ],
        "properties": {
          "Error Throttle Target": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Min Throttle Target": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Optimized": {
            "type": "boolean"
          },
          "Target": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Throttle Step": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Throttle Target": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Unit": {
            "type": "string"
          }
        }
      },
      "ApiError": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "MissingParam"
            ]
          },
          {
            "type": "string",
            "enum": [
              "BadPassword"
            ]
          },
          {
            "type": "string",
            "enum": [
              "RebootFailed"
            ]
          },
          {
            "type": "object",
            "required": [
              "PasswdChangeFailed"
            ],
            "properties": {
              "PasswdChangeFailed": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "TimezoneChangeFailed"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidMultipart"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidChecksum"
            ]
          },
          {
            "type": "string",
            "enum": [
              "FileTransferFailed"
            ]
          },
          {
            "type": "string",
            "enum": [
              "FileProcessingFailed"
            ]
          },
          {
            "type": "string",
            "enum": [
              "MountFailed"
            ]
          },
          {
            "type": "object",
            "required": [
              "LastCmdStillPending"
            ],
            "properties": {
              "LastCmdStillPending": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "BadPartBootFlag"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoBootDeviceDetected"
            ]
          },
          {
            "type": "string",
            "enum": [
              "SystemUpdateInProgress"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidNumberOfFiles"
            ]
          },
          {
            "type": "string",
            "enum": [
              "BadUpdateFile"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InsufficientMemory"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InsufficientStorage"
            ]
          },
          {
            "type": "string",
            "enum": [
              "RootFsNotFound"
            ]
          },
          {
            "type": "object",
            "required": [
              "FileCreateExtractionFailed"
            ],
            "properties": {
              "FileCreateExtractionFailed": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "FileCopyExtractionFailed"
            ],
            "properties": {
              "FileCopyExtractionFailed": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "MissingSwuFile"
            ]
          },
          {
            "type": "object",
            "required": [
              "FailedToCopyImage"
            ],
            "properties": {
              "FailedToCopyImage": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "PSUInfoNotDetected"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidBoardId"
            ]
          },
          {
            "type": "object",
            "required": [
              "InvalidNumberHashrateSplitConfig"
            ],
            "properties": {
              "InvalidNumberHashrateSplitConfig": {
                "type": "integer",
                "minimum": 0
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "InvalidSumPortion"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidSplitPortion"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidHashrateSplitConfig"
            ]
          },
          {
            "type": "string",
            "enum": [
              "InvalidPoolConfig"
            ]
          },
          {
            "type": "string",
            "enum": [
              "UniqueIdParseError"
            ]
          },
          {
            "type": "object",
            "required": [
              "InvalidPoolAddr"
            ],
            "properties": {
              "InvalidPoolAddr": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "InvalidMethod"
            ],
            "properties": {
              "InvalidMethod": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "InvalidUrl"
            ],
            "properties": {
              "InvalidUrl": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "UnknownError"
            ],
            "properties": {
              "UnknownError": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "MergeApiDecodeError"
            ],
            "properties": {
              "MergeApiDecodeError": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "MergeApiEncodeError"
            ],
            "properties": {
              "MergeApiEncodeError": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "MergeApiEmptyParts"
            ]
          }
        ]
      },
      "AutofanInfo": {
        "type": "object",
        "required": [
          "Target Temperature",
          "Idle Speed"
        ],
        "properties": {
          "Idle Speed": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Target Temperature": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "CapabilitiesResponse": {
        "type": "object",
        "required": [
          "Model",
          "Board Serial Numbers",
          "Default Voltage",
          "Default Hashrate",
          "Chips Per Bank",
          "Max HBs",
          "Max Clock Configs",
          "Coins",
          "Display",
          "Tune Presets",
          "PerpetualTune",
          "Temp Sensor Info"
        ],
        "properties": {
          "Board Serial Numbers": {
            "type": "array",
            "items": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "Chip Type": {
            "type": [
              "string",
              "null"
            ]
          },
          "Chips Per Bank": {
            "type": "integer",
            "minimum": 0
          },
          "Coins": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "Control Board Version": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ControlBoardVersion"
              }
            ]
          },
          "Default Clock": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Default Hashrate": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Default Voltage": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Display": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "Max Clock Configs": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Max HBs": {
            "type": "integer",
            "minimum": 0
          },
          "Miner Serial Number": {
            "type": [
              "string",
              "null"
            ]
          },
          "Model": {
            "type": "string"
          },
          "Model Subtype": {
            "type": [
              "string",
              "null"
            ]
          },
          "Performance Estimator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PerformanceEstimator"
              }
            ]
          },
          "PerpetualTune": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PerpetualTuneOption"
            }
          },
          "Psu Info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PsuInfo"
              }
            ]
          },
          "Temp Sensor Info": {
            "$ref": "#/components/schemas/TempSensorInfo"
          },
          "Tune Presets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TuneOption"
            }
          },
          "Voltage Estimator": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/VoltageEstimator"
              }
            ]
          }
        }
      },
      "ClksAndVoltage": {
        "type": "object",
        "required": [
          "clks",
          "voltage"
        ],
        "properties": {
          "clks": {
            "type": "string"
          },
          "voltage": {
            "type": "string"
          }
        }
      },
      "Coin": {
        "type": "string",
        "enum": [
          "BTC",
          "LTC"
        ]
      },
      "CoinInfo_Coin": {
        "type": "object",
        "required": [
          "coin",
          "stratum_configs"
        ],
        "properties": {
          "coin": {
            "type": "string",
            "enum": [
              "BTC",
              "LTC"
            ]
          },
          "stratum_configs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StratumConfig"
            }
          },
          "unique_id": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ControlBoardVersion": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CpuInfo"
          },
          {
            "type": "object",
            "properties": {
              "carrierBoardVersion": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "1.2.3"
              },
              "somBoardVersion": {
                "type": [
                  "string",
                  "null"
                ],
                "example": "1.2.3"
              }
            }
          }
        ]
      },
      "CpuInfo": {
        "type": "object",
        "required": [
          "cpuSerial"
        ],
        "properties": {
          "cpuHardware": {
            "type": [
              "string",
              "null"
            ]
          },
          "cpuSerial": {
            "type": "string"
          }
        }
      },
      "DhcpNetworkInfo": {
        "type": "object",
        "required": [
          "address",
          "netmask",
          "gateway",
          "dns",
          "dns2"
        ],
        "properties": {
          "address": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "dns": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "dns2": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "dnsv6": {
            "type": [
              "string",
              "null"
            ],
            "example": "fd77:e128:6a50::1"
          },
          "gateway": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "netmask": {
            "type": "string",
            "example": "255.255.255.0"
          }
        }
      },
      "FanMode": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "Auto"
            ],
            "properties": {
              "Auto": {
                "$ref": "#/components/schemas/AutofanInfo"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "Manual"
            ],
            "properties": {
              "Manual": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              }
            }
          }
        ]
      },
      "FansInfo": {
        "type": "object",
        "required": [
          "Fans Speed",
          "Fan Mode",
          "Minimum Working Fans",
          "Working Fan Indices"
        ],
        "properties": {
          "Fan Mode": {
            "$ref": "#/components/schemas/FanMode"
          },
          "Fans Speed": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Minimum Working Fans": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Working Fan Indices": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            }
          }
        }
      },
      "FansRpmInfo": {
        "type": "object",
        "properties": {
          "Fans Speed 1": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 10": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 11": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 12": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 2": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 3": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 4": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 5": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 6": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 7": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 8": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          },
          "Fans Speed 9": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "GenHbData_bool": {
        "type": "object",
        "required": [
          "Index",
          "Data"
        ],
        "properties": {
          "Data": {
            "type": "boolean"
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "GenHbData_f32": {
        "type": "object",
        "required": [
          "Index",
          "Data"
        ],
        "properties": {
          "Data": {
            "type": "number",
            "format": "float"
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "HashboardCondition": {
        "type": "object",
        "required": [
          "Index",
          "Enabled",
          "Detected"
        ],
        "properties": {
          "Detected": {
            "type": "boolean"
          },
          "Enabled": {
            "type": "boolean"
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "HashboardInfo": {
        "type": "object",
        "required": [
          "Index",
          "Input Voltage",
          "Output Voltage",
          "Input Current",
          "Output Current",
          "Input Power",
          "Output Power",
          "Core Clock",
          "Hashrate",
          "Core Clock Avg"
        ],
        "properties": {
          "Core Clock": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "float"
            }
          },
          "Core Clock Avg": {
            "type": "number",
            "format": "float"
          },
          "Hashrate": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "float"
            }
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          },
          "Input Current": {
            "type": "number",
            "format": "float"
          },
          "Input Power": {
            "type": "number",
            "format": "float"
          },
          "Input Voltage": {
            "type": "number",
            "format": "float"
          },
          "Output Current": {
            "type": "number",
            "format": "float"
          },
          "Output Power": {
            "type": "number",
            "format": "float"
          },
          "Output Voltage": {
            "type": "number",
            "format": "float"
          },
          "Temperature": {
            "type": [
              "number",
              "null"
            ],
            "format": "float"
          }
        }
      },
      "HashrateHisData": {
        "type": "object",
        "required": [
          "Hashrate",
          "Timestamp"
        ],
        "properties": {
          "Hashrate": {
            "type": "number",
            "format": "float"
          },
          "Timestamp": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "HashrateSplitInfo_Coin": {
        "type": "object",
        "required": [
          "enabled",
          "hashrate_splits"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "hashrate_splits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HashrateSplit_Coin"
            }
          }
        }
      },
      "HashrateSplit_Coin": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CoinInfo_Coin"
          },
          {
            "type": "object",
            "required": [
              "ratio",
              "unique_worker_id_variant"
            ],
            "properties": {
              "ratio": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "unique_worker_id_variant": {
                "$ref": "#/components/schemas/UniqueIdVariant"
              }
            }
          }
        ]
      },
      "HbClocks": {
        "type": "object",
        "required": [
          "Index",
          "Data"
        ],
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "type": "array",
              "items": false,
              "prefixItems": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "array",
                  "items": {
                    "type": "number",
                    "format": "float"
                  }
                }
              ]
            },
            "description": "For schema display only, SHOULD NOT be used for coding purposes."
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "HbData_TupleCoreConfigSchemaOnly": {
        "type": "object",
        "required": [
          "Index",
          "Data",
          "Total"
        ],
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "type": "array",
              "items": false,
              "prefixItems": [
                {
                  "type": "array",
                  "items": {
                    "type": "number",
                    "format": "float"
                  }
                },
                {
                  "type": [
                    "array",
                    "null"
                  ],
                  "items": {
                    "type": "integer",
                    "format": "int32",
                    "minimum": 0
                  }
                }
              ],
              "description": "For schema display only - tuple representation for core config"
            }
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          },
          "Total": {
            "type": "array",
            "items": false,
            "prefixItems": [
              {
                "type": "array",
                "items": {
                  "type": "number",
                  "format": "float"
                }
              },
              {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": "integer",
                  "format": "int32",
                  "minimum": 0
                }
              }
            ],
            "description": "For schema display only - tuple representation for core config"
          }
        }
      },
      "HbData_TupleF32SchemaOnly": {
        "type": "object",
        "required": [
          "Index",
          "Data",
          "Total"
        ],
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "type": "array",
              "items": false,
              "prefixItems": [
                {
                  "type": "number",
                  "format": "float"
                },
                {
                  "type": "number",
                  "format": "float"
                },
                {
                  "type": "number",
                  "format": "float"
                }
              ],
              "description": "For schema display only - tuple representation for (f32, f32, f32)"
            }
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          },
          "Total": {
            "type": "array",
            "items": false,
            "prefixItems": [
              {
                "type": "number",
                "format": "float"
              },
              {
                "type": "number",
                "format": "float"
              },
              {
                "type": "number",
                "format": "float"
              }
            ],
            "description": "For schema display only - tuple representation for (f32, f32, f32)"
          }
        }
      },
      "HbParams": {
        "type": "object",
        "required": [
          "HBs"
        ],
        "properties": {
          "HBs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HashboardInfo"
            }
          }
        }
      },
      "HistoryResponse": {
        "type": "object",
        "required": [
          "History"
        ],
        "properties": {
          "History": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HashrateHisData"
            }
          }
        }
      },
      "HwConfigInfo": {
        "type": "object",
        "required": [
          "Boards Target Clock"
        ],
        "properties": {
          "Boards Target Clock": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GenHbData_f32"
            }
          }
        }
      },
      "JsonRequestOptional_String": {
        "type": "object",
        "required": [
          "password"
        ],
        "properties": {
          "param": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_AlgoInfo": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "algo",
              "target"
            ],
            "properties": {
              "algo": {
                "$ref": "#/components/schemas/PerpetualTuneAlgorithm"
              },
              "min_throttle": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "int32",
                "minimum": 0
              },
              "target": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "throttle_step": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "int32",
                "minimum": 0
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_BoardTuneClock_GenHbData_f32": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "v"
            ],
            "properties": {
              "v": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "Index",
                    "Data"
                  ],
                  "properties": {
                    "Data": {
                      "type": "number",
                      "format": "float"
                    },
                    "Index": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_ChipTuneClks_HbClocks": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "v"
            ],
            "properties": {
              "v": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "Index",
                    "Data"
                  ],
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "array",
                        "items": false,
                        "prefixItems": [
                          {
                            "type": "integer",
                            "minimum": 0
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "number",
                              "format": "float"
                            }
                          }
                        ]
                      },
                      "description": "For schema display only, SHOULD NOT be used for coding purposes."
                    },
                    "Index": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_ChipTuneConfig_SingleHbConfig": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "v"
            ],
            "properties": {
              "v": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "Index",
                    "Data"
                  ],
                  "properties": {
                    "Data": {
                      "type": "array",
                      "items": {
                        "type": "array",
                        "items": false,
                        "prefixItems": [
                          {
                            "type": "integer",
                            "minimum": 0
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "array",
                              "items": false,
                              "prefixItems": [
                                {
                                  "type": "integer",
                                  "format": "int32",
                                  "minimum": 0
                                },
                                {
                                  "type": "integer",
                                  "format": "int32",
                                  "minimum": 0
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    "Index": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_ClksAndVoltage": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "clks",
              "voltage"
            ],
            "properties": {
              "clks": {
                "type": "string"
              },
              "voltage": {
                "type": "string"
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_CoinInfo_Coin": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "coin",
              "stratum_configs"
            ],
            "properties": {
              "coin": {
                "type": "string",
                "enum": [
                  "BTC",
                  "LTC"
                ]
              },
              "stratum_configs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StratumConfig"
                }
              },
              "unique_id": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_FanMode": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "Auto"
                ],
                "properties": {
                  "Auto": {
                    "$ref": "#/components/schemas/AutofanInfo"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "Manual"
                ],
                "properties": {
                  "Manual": {
                    "type": "integer",
                    "format": "int32",
                    "minimum": 0
                  }
                }
              }
            ]
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_NetworkInfo": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "dhcp"
                ],
                "properties": {
                  "dhcp": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/DhcpNetworkInfo"
                      }
                    ]
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "static"
                ],
                "properties": {
                  "static": {
                    "$ref": "#/components/schemas/StaticNetworkInfo"
                  }
                }
              }
            ]
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_OpState": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "string",
            "enum": [
              "Stop",
              "Autostart"
            ]
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_OtelSettings": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "object",
            "required": [
              "targeted_spans"
            ],
            "properties": {
              "endpoint": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri"
              },
              "external_crates_enabled": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "log_level": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "targeted_spans": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_PerpetualTuneAlgorithm": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "string",
            "enum": [
              "ChipTune",
              "VoltageOptimizer",
              "Power",
              "BoardTune"
            ]
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_String": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_UniqueIdVariant": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "string",
            "enum": [
              "IpAddress",
              "MacAddress",
              "CpuId"
            ]
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_Vec_GenHbData_bool": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "Index",
                "Data"
              ],
              "properties": {
                "Data": {
                  "type": "boolean"
                },
                "Index": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_Vec_HashrateSplit_Coin": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/CoinInfo_Coin"
                },
                {
                  "type": "object",
                  "required": [
                    "ratio",
                    "unique_worker_id_variant"
                  ],
                  "properties": {
                    "ratio": {
                      "type": "integer",
                      "format": "int32",
                      "minimum": 0
                    },
                    "unique_worker_id_variant": {
                      "$ref": "#/components/schemas/UniqueIdVariant"
                    }
                  }
                }
              ]
            }
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_bool": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "boolean"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_f32": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "number",
            "format": "float"
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_u32": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_u64": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonRequest_usize": {
        "type": "object",
        "required": [
          "param",
          "password"
        ],
        "properties": {
          "param": {
            "type": "integer",
            "minimum": 0
          },
          "password": {
            "type": "string"
          }
        }
      },
      "JsonResponse": {
        "type": "object",
        "required": [
          "result"
        ],
        "properties": {
          "error": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ApiError"
              }
            ]
          },
          "result": {
            "type": "boolean"
          }
        }
      },
      "MinerError": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "UserCoreConfigMismatch"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoCorePllConfig"
            ]
          },
          {
            "type": "string",
            "enum": [
              "CoreClockIndexError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "UserConfigPktError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "UserClkPktError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "RxMissing"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoHashboardsConnected"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoHashboardsEnabled"
            ]
          },
          {
            "type": "object",
            "required": [
              "MismatchingBoardTypes"
            ],
            "properties": {
              "MismatchingBoardTypes": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": false,
                  "prefixItems": [
                    {
                      "type": "integer",
                      "minimum": 0
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "UartReadError"
            ],
            "properties": {
              "UartReadError": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              }
            }
          },
          {
            "type": "object",
            "required": [
              "GReadEmptyData"
            ],
            "properties": {
              "GReadEmptyData": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              }
            }
          },
          {
            "type": "object",
            "required": [
              "GReadPanic"
            ],
            "properties": {
              "GReadPanic": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "maxItems": 2,
                "minItems": 2
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "ChipTypeParseError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "TestParseError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "CoinParseError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NetworkInfoParseError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoConfigFile"
            ]
          },
          {
            "type": "string",
            "enum": [
              "SyncHbError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoNewWorkError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "ChipDetectError"
            ]
          },
          {
            "type": "object",
            "required": [
              "HbChipDetectError"
            ],
            "properties": {
              "HbChipDetectError": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "ChipDetectTimeout"
            ]
          },
          {
            "type": "object",
            "required": [
              "ChipIdInitError"
            ],
            "properties": {
              "ChipIdInitError": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": false,
                  "prefixItems": [
                    {
                      "type": "integer",
                      "minimum": 0
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "BoardTypeUndefined"
            ]
          },
          {
            "type": "string",
            "enum": [
              "BadOTPError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "BadSolutionError"
            ]
          },
          {
            "type": "object",
            "required": [
              "MinimumFansError"
            ],
            "properties": {
              "MinimumFansError": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              }
            }
          },
          {
            "type": "object",
            "required": [
              "CriticalTempReached"
            ],
            "properties": {
              "CriticalTempReached": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "maxItems": 2,
                "minItems": 2
              }
            }
          },
          {
            "type": "object",
            "required": [
              "ShutdownTempReached"
            ],
            "properties": {
              "ShutdownTempReached": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "maxItems": 2,
                "minItems": 2
              }
            }
          },
          {
            "type": "object",
            "required": [
              "ChipShutdownTempReached"
            ],
            "properties": {
              "ChipShutdownTempReached": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "maxItems": 2,
                "minItems": 2
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "InitializationShutdown"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NotEnoughMemory"
            ]
          },
          {
            "type": "string",
            "enum": [
              "LegacyChipDetectError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "OutdatedChipDetectError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "NoSolutions"
            ]
          },
          {
            "type": "object",
            "required": [
              "NoSolutionForHbs"
            ],
            "properties": {
              "NoSolutionForHbs": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "Chainbreak"
            ],
            "properties": {
              "Chainbreak": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "EepromDeviceNotFound"
            ]
          },
          {
            "type": "string",
            "enum": [
              "EepromFieldError"
            ]
          },
          {
            "type": "object",
            "required": [
              "EepromError"
            ],
            "properties": {
              "EepromError": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "GetPerfEstimatorError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "UnableToReachTemp"
            ]
          },
          {
            "type": "string",
            "enum": [
              "SystemUpdateError"
            ]
          },
          {
            "type": "string",
            "enum": [
              "SystemUpdateNetworkError"
            ]
          },
          {
            "type": "object",
            "required": [
              "ReachedCutoffVoltage"
            ],
            "properties": {
              "ReachedCutoffVoltage": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "maxItems": 3,
                "minItems": 3
              }
            }
          },
          {
            "type": "object",
            "required": [
              "UnsupportedChipType"
            ],
            "properties": {
              "UnsupportedChipType": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "MissingCliParam"
            ],
            "properties": {
              "MissingCliParam": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "ClkDivError"
            ],
            "properties": {
              "ClkDivError": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "PsuStatusError"
            ],
            "properties": {
              "PsuStatusError": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "NoTempSensors"
            ]
          },
          {
            "type": "object",
            "required": [
              "NoTempSensorsForChamber"
            ],
            "properties": {
              "NoTempSensorsForChamber": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GenHbData_bool"
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "InsufficientTempSensors"
            ]
          },
          {
            "type": "object",
            "required": [
              "UnknownError"
            ],
            "properties": {
              "UnknownError": {
                "type": "string"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "MismatchingChipTypes"
            ]
          },
          {
            "type": "object",
            "required": [
              "PsuError"
            ],
            "properties": {
              "PsuError": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "LicenseError"
            ],
            "properties": {
              "LicenseError": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "PsuInitError"
            ],
            "properties": {
              "PsuInitError": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "StaticIpError"
            ]
          },
          {
            "type": "object",
            "required": [
              "HashboardError"
            ],
            "properties": {
              "HashboardError": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "HashboardInitError"
            ],
            "properties": {
              "HashboardInitError": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": false,
                  "prefixItems": [
                    {
                      "type": "integer",
                      "minimum": 0
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              }
            }
          }
        ]
      },
      "MinerState": {
        "type": "string",
        "enum": [
          "AdjustingClockVoltage",
          "Idling",
          "Initializing",
          "Loading",
          "Mining",
          "PreInitCooldown",
          "Rebooting",
          "SoftRebooting",
          "Stopping",
          "Testing",
          "UpdatingFirmware"
        ]
      },
      "MinerStatus": {
        "type": "object",
        "required": [
          "Operating State"
        ],
        "properties": {
          "Last Command": {
            "type": [
              "string",
              "null"
            ]
          },
          "Last Command Result": {
            "type": [
              "string",
              "null"
            ]
          },
          "Last Error": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MinerError"
              }
            ]
          },
          "Operating State": {
            "$ref": "#/components/schemas/MinerState"
          }
        }
      },
      "MiningParams": {
        "type": "object",
        "required": [
          "Coin",
          "Algorithm"
        ],
        "properties": {
          "Algorithm": {
            "type": "string"
          },
          "Coin": {
            "type": "string"
          }
        }
      },
      "MiscInfo": {
        "type": "object",
        "required": [
          "Locate Miner State",
          "Shutdown Temp",
          "Critical Temp"
        ],
        "properties": {
          "Critical Temp": {
            "type": "number",
            "format": "float"
          },
          "Locate Miner State": {
            "type": "boolean"
          },
          "Shutdown Temp": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "MultipartSchemaOnly": {
        "type": "object",
        "description": "For schema display only, SHOULD NOT be used for coding purposes",
        "required": [
          "password",
          "checksum",
          "keepsettings",
          "update.zip"
        ],
        "properties": {
          "checksum": {
            "type": "string",
            "description": "ALGORITHM: SHA256"
          },
          "keepsettings": {
            "type": "boolean",
            "description": "whether to keep existing settings"
          },
          "password": {
            "type": "string"
          },
          "update.zip": {
            "type": "string",
            "format": "binary",
            "description": "Update file in zip format"
          }
        }
      },
      "NetworkInfo": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "dhcp"
            ],
            "properties": {
              "dhcp": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/DhcpNetworkInfo"
                  }
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "static"
            ],
            "properties": {
              "static": {
                "$ref": "#/components/schemas/StaticNetworkInfo"
              }
            }
          }
        ]
      },
      "OpState": {
        "type": "string",
        "enum": [
          "Stop",
          "Autostart"
        ]
      },
      "OtelSettings": {
        "type": "object",
        "required": [
          "targeted_spans"
        ],
        "properties": {
          "endpoint": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "external_crates_enabled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "log_level": {
            "type": [
              "string",
              "null"
            ]
          },
          "targeted_spans": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "uniqueItems": true
          }
        }
      },
      "PerformanceEstimator": {
        "type": "object",
        "required": [
          "Chip Count",
          "Hashes Per Second Per Chip"
        ],
        "properties": {
          "Chip Count": {
            "type": "integer",
            "minimum": 0
          },
          "Hashes Per Second Per Chip": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "PerpetualTuneAlgorithm": {
        "type": "string",
        "enum": [
          "ChipTune",
          "VoltageOptimizer",
          "Power",
          "BoardTune"
        ]
      },
      "PerpetualTuneInfo": {
        "type": "object",
        "required": [
          "Enable",
          "Running",
          "Current Algorithm",
          "Algorithms"
        ],
        "properties": {
          "Algorithms": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AlgorithmStats"
            },
            "propertyNames": {
              "type": "string",
              "enum": [
                "ChipTune",
                "VoltageOptimizer",
                "Power",
                "BoardTune"
              ]
            }
          },
          "Current Algorithm": {
            "$ref": "#/components/schemas/PerpetualTuneAlgorithm"
          },
          "Enable": {
            "type": "boolean"
          },
          "Running": {
            "type": "boolean"
          }
        }
      },
      "PerpetualTuneOption": {
        "type": "object",
        "required": [
          "algorithm",
          "name",
          "description",
          "min",
          "max"
        ],
        "properties": {
          "algorithm": {
            "$ref": "#/components/schemas/PerpetualTuneAlgorithm"
          },
          "description": {
            "type": "string"
          },
          "max": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "min": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PerpetualTuneSummary": {
        "type": "object",
        "required": [
          "Running",
          "Algorithm"
        ],
        "properties": {
          "Algorithm": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AlgorithmStats"
            },
            "propertyNames": {
              "type": "string",
              "enum": [
                "ChipTune",
                "VoltageOptimizer",
                "Power",
                "BoardTune"
              ]
            }
          },
          "Running": {
            "type": "boolean"
          }
        }
      },
      "PoolInfo": {
        "type": "object",
        "required": [
          "pool",
          "login",
          "shares_accepted",
          "shares_rejected",
          "work_received",
          "difficulty",
          "is_stratum_connected"
        ],
        "properties": {
          "difficulty": {
            "type": "number",
            "format": "float"
          },
          "hr_15_min": {
            "type": [
              "number",
              "null"
            ],
            "format": "float"
          },
          "hr_1_hour": {
            "type": [
              "number",
              "null"
            ],
            "format": "float"
          },
          "hr_24_hour": {
            "type": [
              "number",
              "null"
            ],
            "format": "float"
          },
          "is_stratum_connected": {
            "type": "boolean"
          },
          "last_accepted_share_time": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "last_accepted_share_timer": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "last_work_date": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "last_work_timer": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "login": {
            "type": "string"
          },
          "pool": {
            "type": "string",
            "format": "uri"
          },
          "shares_accepted": {
            "type": "integer",
            "minimum": 0
          },
          "shares_rejected": {
            "type": "integer",
            "minimum": 0
          },
          "work_received": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "PresetParams": {
        "type": "object",
        "required": [
          "Target Power"
        ],
        "properties": {
          "Target Power": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "PsuInfo": {
        "type": "object",
        "required": [
          "PSU Type",
          "FW",
          "Min Vout",
          "Max Vout",
          "True Power"
        ],
        "properties": {
          "FW": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "Max Vout": {
            "type": "integer",
            "minimum": 0
          },
          "Min Vout": {
            "type": "integer",
            "minimum": 0
          },
          "PSU Type": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "True Power": {
            "type": "boolean"
          }
        }
      },
      "PsuStats": {
        "type": "object",
        "required": [
          "Input Voltage",
          "Output Voltage",
          "Input Current",
          "Output Current",
          "Input Power",
          "Output Power",
          "Target Voltage"
        ],
        "properties": {
          "Input Current": {
            "type": "number",
            "format": "float"
          },
          "Input Power": {
            "type": "number",
            "format": "float"
          },
          "Input Voltage": {
            "type": "number",
            "format": "float"
          },
          "Output Current": {
            "type": "number",
            "format": "float"
          },
          "Output Power": {
            "type": "number",
            "format": "float"
          },
          "Output Voltage": {
            "type": "number",
            "format": "float"
          },
          "Target Voltage": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "SessionParams": {
        "type": "object",
        "required": [
          "Startup Timestamp",
          "Startup String",
          "Uptime",
          "WorkReceived",
          "Active HBs",
          "Accepted",
          "Rejected",
          "Submitted",
          "Difficulty"
        ],
        "properties": {
          "Accepted": {
            "type": "integer",
            "minimum": 0
          },
          "Active HBs": {
            "type": "integer",
            "minimum": 0
          },
          "Average MHs": {
            "type": [
              "number",
              "null"
            ],
            "format": "float"
          },
          "Difficulty": {
            "type": "number",
            "format": "float"
          },
          "Last Accepted Share Timer": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "Last Accepted Share Timestamp": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "Last Work Timer": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "Last Work Timestamp": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "LastAverageMHs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/HashrateHisData"
              }
            ]
          },
          "Rejected": {
            "type": "integer",
            "minimum": 0
          },
          "Startup String": {
            "type": "string"
          },
          "Startup Timestamp": {
            "type": "integer",
            "format": "int64"
          },
          "Submitted": {
            "type": "integer",
            "minimum": 0
          },
          "Uptime": {
            "type": "integer",
            "format": "int64"
          },
          "WorkReceived": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "SingleHbConfig": {
        "type": "object",
        "required": [
          "Index",
          "Data"
        ],
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "type": "array",
              "items": false,
              "prefixItems": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "items": false,
                    "prefixItems": [
                      {
                        "type": "integer",
                        "format": "int32",
                        "minimum": 0
                      },
                      {
                        "type": "integer",
                        "format": "int32",
                        "minimum": 0
                      }
                    ]
                  }
                }
              ]
            }
          },
          "Index": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "StaticNetworkInfo": {
        "type": "object",
        "required": [
          "address",
          "netmask",
          "gateway",
          "dns"
        ],
        "properties": {
          "address": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "dns": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "dns2": {
            "type": [
              "string",
              "null"
            ],
            "example": "192.168.0.0"
          },
          "dnsv6": {
            "type": [
              "string",
              "null"
            ],
            "example": "fd77:e128:6a50::1"
          },
          "gateway": {
            "type": "string",
            "example": "192.168.0.0"
          },
          "netmask": {
            "type": "string",
            "example": "255.255.255.0"
          }
        }
      },
      "StratumConfig": {
        "type": "object",
        "required": [
          "pool",
          "login"
        ],
        "properties": {
          "login": {
            "type": "string"
          },
          "password": {
            "type": [
              "string",
              "null"
            ]
          },
          "pool": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "StratumParams": {
        "type": "object",
        "required": [
          "Config Id",
          "Current Pool",
          "Current User",
          "IsPoolConnected",
          "Average Latency",
          "Worker Unique Id",
          "Worker Unique Id Variant"
        ],
        "properties": {
          "Average Latency": {
            "type": "number",
            "format": "float"
          },
          "Config Id": {
            "type": "integer",
            "minimum": 0
          },
          "Current Pool": {
            "type": "string"
          },
          "Current User": {
            "type": "string"
          },
          "IsPoolConnected": {
            "type": "boolean"
          },
          "Worker Unique Id": {
            "type": "boolean"
          },
          "Worker Unique Id Variant": {
            "$ref": "#/components/schemas/UniqueIdVariant"
          }
        }
      },
      "SummaryResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HbParams"
          },
          {
            "type": "object",
            "required": [
              "Status",
              "Hostname",
              "PresetInfo",
              "Software",
              "OS Type",
              "Mining",
              "Stratum",
              "Session",
              "HBStatus",
              "Fans",
              "Fans Rpm",
              "Misc",
              "StratumConfigs",
              "PerpetualTune",
              "Power Supply Stats",
              "HwConfig",
              "IdleOnConnectionLost",
              "Overdrive",
              "Disable Board On Failure",
              "Enable Boards On Idle",
              "PreInitCooldown Max Duration"
            ],
            "properties": {
              "Disable Board On Failure": {
                "type": "boolean"
              },
              "Enable Boards On Idle": {
                "type": "boolean"
              },
              "Fans": {
                "$ref": "#/components/schemas/FansInfo"
              },
              "Fans Rpm": {
                "$ref": "#/components/schemas/FansRpmInfo"
              },
              "HBStatus": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/HashboardCondition"
                }
              },
              "Hostname": {
                "type": "string"
              },
              "HwConfig": {
                "$ref": "#/components/schemas/HwConfigInfo"
              },
              "IdleOnConnectionLost": {
                "type": "boolean"
              },
              "Last License Error": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/MinerError"
                  }
                ]
              },
              "Mining": {
                "$ref": "#/components/schemas/MiningParams"
              },
              "Misc": {
                "$ref": "#/components/schemas/MiscInfo"
              },
              "OS Type": {
                "type": "string"
              },
              "Overdrive": {
                "type": "boolean"
              },
              "PerpetualTune": {
                "$ref": "#/components/schemas/PerpetualTuneSummary"
              },
              "Power Supply Stats": {
                "$ref": "#/components/schemas/PsuStats"
              },
              "PreInitCooldown Max Duration": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "PresetInfo": {
                "$ref": "#/components/schemas/PresetParams"
              },
              "Session": {
                "$ref": "#/components/schemas/SessionParams"
              },
              "Software": {
                "type": "string"
              },
              "Status": {
                "$ref": "#/components/schemas/MinerStatus"
              },
              "Stratum": {
                "$ref": "#/components/schemas/StratumParams"
              },
              "StratumConfigs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StratumConfig"
                }
              }
            }
          }
        ]
      },
      "TempSensorInfo": {
        "type": "object",
        "required": [
          "Type",
          "Count"
        ],
        "properties": {
          "Count": {
            "type": "integer",
            "minimum": 0
          },
          "Type": {
            "$ref": "#/components/schemas/TempSensorType"
          }
        }
      },
      "TempSensorType": {
        "type": "string",
        "enum": [
          "Board",
          "Chip",
          "NotDetected"
        ]
      },
      "TotalHashrate": {
        "type": "object",
        "required": [
          "hashrate",
          "timestamp"
        ],
        "properties": {
          "hashrate": {
            "type": "number",
            "format": "float"
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "TuneOption": {
        "type": "object",
        "required": [
          "voltage",
          "clk",
          "hashrate"
        ],
        "properties": {
          "clk": {
            "type": "integer",
            "minimum": 0
          },
          "hashrate": {
            "type": "number",
            "format": "float"
          },
          "power": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "voltage": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "TupleCoreConfigSchemaOnly": {
        "type": "array",
        "items": false,
        "prefixItems": [
          {
            "type": "array",
            "items": {
              "type": "number",
              "format": "float"
            }
          },
          {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "int32",
              "minimum": 0
            }
          }
        ],
        "description": "For schema display only - tuple representation for core config"
      },
      "TupleF32SchemaOnly": {
        "type": "array",
        "items": false,
        "prefixItems": [
          {
            "type": "number",
            "format": "float"
          },
          {
            "type": "number",
            "format": "float"
          },
          {
            "type": "number",
            "format": "float"
          }
        ],
        "description": "For schema display only - tuple representation for (f32, f32, f32)"
      },
      "UniqueIdVariant": {
        "type": "string",
        "enum": [
          "IpAddress",
          "MacAddress",
          "CpuId"
        ]
      },
      "VoltageEstimator": {
        "type": "object",
        "required": [
          "Slope",
          "Y Intercept"
        ],
        "properties": {
          "Slope": {
            "type": "number",
            "format": "float"
          },
          "Y Intercept": {
            "type": "number",
            "format": "float"
          }
        }
      }
    }
  }
}