Every API here is available over the APIs.io API and to AI agents over MCP.
{"openapi":"3.1.0","info":{"title":"Braiins OS Public REST API","description":"","contact":{"name":"Braiins","url":"https://help.braiins.com","email":"help@braiins.com"},"license":{"name":""},"version":"1.7.0"},"servers":[{"url":"http://miner/"}],"paths":{"/api/v1/actions/factory-reset":{"put":{"tags":["Actions"],"summary":"Factory Reset","description":"Performs Factory Reset.","operationId":"factory_reset","parameters":[{"name":"wipe_network","in":"query","description":"If true, the factory reset also clears the network configuration so the miner returns to DHCP with the stock hostname on the next boot. If omitted or false, the network configuration is preserved (previous behaviour).","required":false,"schema":{"type":"boolean"}}],"responses":{"204":{"description":"Successful response."}}}},"/api/v1/actions/locate":{"get":{"tags":["Actions"],"summary":"Get locate device status","description":"Gets locate device status.","operationId":"getLocateDeviceStatus","responses":{"200":{"description":"Successful response containing bool if enabled.","content":{"application/json":{"schema":{"type":"boolean"}}}}}},"put":{"tags":["Actions"],"summary":"Set locate device status","description":"Sets locate device status (turn LED blinking on or off).","operationId":"setLocateDeviceStatus","requestBody":{"description":"Enable or disable.","content":{"application/json":{"schema":{"type":"boolean"}}},"required":true},"responses":{"200":{"description":"Successful response containing bool if enabled.","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/v1/actions/pause":{"put":{"tags":["Actions"],"summary":"Pause mining","description":"Pauses mining.","operationId":"pauseMining","responses":{"200":{"description":"Successful response containing bool if was already paused.","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/v1/actions/reboot":{"put":{"tags":["Actions"],"summary":"Reboot","description":"Reboots mining.","operationId":"reboot","responses":{"204":{"description":"Successful response."}}}},"/api/v1/actions/restart":{"put":{"tags":["Actions"],"summary":"Restart","description":"Restarts mining.","operationId":"restart","responses":{"200":{"description":"Successful response containing bool if was already running.","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/v1/actions/resume":{"put":{"tags":["Actions"],"summary":"Resume mining","description":"Resumes mining.","operationId":"resumeMining","responses":{"200":{"description":"Successful response containing bool if was already mining.","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/v1/actions/start":{"put":{"tags":["Actions"],"summary":"Start","description":"Starts mining.","operationId":"start","responses":{"200":{"description":"Successful response containing bool if was already running.","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/v1/actions/stop":{"put":{"tags":["Actions"],"summary":"Stop","description":"Stops mining.","operationId":"stop","responses":{"200":{"description":"Successful response containing bool if was already stopped.","content":{"application/json":{"schema":{"type":"boolean"}}}}}}},"/api/v1/advanced-settings/":{"get":{"tags":["Advanced Settings"],"summary":"Get current advanced settings values","description":"Returns settings as key-value pairs. When include_default is false (default), only user-configured settings are returned. When true, all settings are returned with their effective values.","operationId":"getAdvancedSettings","parameters":[{"name":"include_default","in":"query","description":"If true, all supported settings are returned including those that still hold their default value. If false (default), only user-configured settings are returned.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Current settings values","content":{"application/json":{"schema":{}}}}}},"delete":{"tags":["Advanced Settings"],"summary":"Reset all advanced settings to defaults","description":"Resets all advanced settings to their default values. Returns the effective values of all supported settings after the reset (equivalent to calling GetSettings with include_default=true).","operationId":"resetAllAdvancedSettings","responses":{"200":{"description":"Effective values of all settings after reset to defaults","content":{"application/json":{"schema":{}}}}}},"patch":{"tags":["Advanced Settings"],"summary":"Set advanced settings values","description":"Sets one or more setting values. Only settings present in the request are modified; keys not included are left untouched. Use null to clear a setting and revert it to its default value. The update is atomic: either all requested settings are applied, or none are. If any setting fails validation, the whole request is rejected.","operationId":"setAdvancedSettings","requestBody":{"description":"Key-value pairs of settings to update. Use null to clear a setting and revert to default.","content":{"application/json":{"schema":{}}},"required":true},"responses":{"200":{"description":"All settings from the request with their new values. Settings that were cleared are returned with a null value.","content":{"application/json":{"schema":{}}}}}}},"/api/v1/advanced-settings/schema":{"get":{"tags":["Advanced Settings"],"summary":"Get settings schema","description":"Returns a JSON Schema defining all available settings with their types, constraints, and metadata.","operationId":"getAdvancedSettingsSchema","responses":{"200":{"description":"JSON Schema for all available settings","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/login":{"post":{"tags":["Authentication"],"summary":"User login","description":"Authenticates a user using their username and password. If the credentials are valid, a token is returned, which should be included in the `Authorization` header of subsequent requests.","operationId":"login","requestBody":{"description":"User login credentials, including username and password.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"},"example":{"password":"1234","username":"root"}}},"required":true},"responses":{"200":{"description":"Successful login. Returns an authentication token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}}}}},"/api/v1/auth/password":{"put":{"tags":["Authentication"],"summary":"Set or remove user password","description":"Allows a user to set or update their password. To remove the password, set the `password` field to `null`. This operation requires authentication.","operationId":"setPassword","requestBody":{"description":"Payload containing the new password. If the password field is null, the password will be removed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPasswordRequest"},"example":{"password":"1234"}}},"required":true},"responses":{"204":{"description":"Password successfully set or removed."},"400":{"description":"Invalid request payload."},"401":{"description":"Unauthorized. User must be authenticated."},"500":{"description":"Internal server error."}}}},"/api/v1/configuration/constraints":{"get":{"tags":["Configuration"],"summary":"Get constraints","description":"","operationId":"getConstraints","responses":{"200":{"description":"Successful response containing miner configuration constraints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetConstraintsResponse"}}}}}}},"/api/v1/configuration/miner":{"get":{"tags":["Configuration"],"summary":"Get miner configuration","description":"","operationId":"getMinerConfiguration","responses":{"200":{"description":"Successful response containing miner configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMinerConfigurationResponse"}}}}}}},"/api/v1/cooling/mode":{"put":{"tags":["Cooling"],"summary":"Set cooling mode","description":"Sets the active cooling mode for the miner. The mode can be set to auto, manual, immersion, or hydro.","operationId":"setCoolingMode","requestBody":{"description":"Cooling mode to activate. Can be one of: auto, manual, immersion, or hydro.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetCoolingModeRequestMode"}}},"required":true},"responses":{"200":{"description":"Successful response containing active cooling mode","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetCoolingModeResponseMode"}}}}}}},"/api/v1/cooling/state":{"get":{"tags":["Cooling"],"summary":"Get cooling state","description":"Retrieves the current cooling state of the miner, including temperature measurements and the state of all fans.","operationId":"getCoolingState","responses":{"200":{"description":"Successful response containing information about temperature measurements and fans states","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCoolingStateResponse"}}}}}}},"/api/v1/docs/openapi.json":{"get":{"tags":["Documentation"],"summary":"Retrieve OpenAPI JSON schema","description":"Returns the OpenAPI specification in JSON format, which can be used by Redoc or Swagger UI for documentation.","operationId":"getOpenApiSchema","responses":{"200":{"description":"Openapi schema in a JSON format","content":{"application/json":{}}}}}},"/api/v1/license/apply-contract-key":{"put":{"tags":["License"],"summary":"Apply custom contract key","description":"Apply custom contract key. An already installed license is replaced by the new one unless `keep_existing` is set to `true`. Bosminer is not restarted automatically; when `successful` is `true`, restart bosminer for the new license to take effect.","operationId":"applyContractKey","requestBody":{"description":"Custom contract key to be set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyContractKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful response with successful flag to indicate success.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyContractKeyResponse"}}}}}}},"/api/v1/license/license":{"get":{"tags":["License"],"summary":"Get license state","description":"Retrieves the current license state of the miner. The license may be in one of several states: none, limited, valid, or expired.","operationId":"getLicenseState","responses":{"200":{"description":"Successful response containing information about license","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLicenseStateResponse"}}}}}}},"/api/v1/miner/details":{"get":{"tags":["Miner"],"summary":"Get miner details","description":"Retrieves detailed information about the miner, such as hardware model, firmware version, serial number, and other identifying data.","operationId":"getMinerDetails","responses":{"200":{"description":"Successful response containing detailed miner information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMinerDetailsResponse"}}}}}}},"/api/v1/miner/errors":{"get":{"tags":["Miner"],"summary":"Get miner errors","description":"Retrieves a list of errors reported by the miner, including timestamps, messages, error codes, and affected components.","operationId":"getMinerErrors","responses":{"200":{"description":"Successful response containing an array of miner errors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetErrorsResponse"}}}}}}},"/api/v1/miner/hw/hashboards":{"get":{"tags":["Miner"],"summary":"Get hashboard details","description":"Retrieves detailed information about all hashboards in the miner, including their status, temperature, voltage, frequency, and statistics.","operationId":"getHashboards","responses":{"200":{"description":"Successful response containing a list of hashboards.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHashboardsResponse"}}}}}},"patch":{"tags":["Miner"],"summary":"Enable or disable hashboards","description":"Enables or disables one or more hashboards based on the provided IDs. Useful for toggling hardware components during runtime or diagnostics.","operationId":"updateHashboards","requestBody":{"description":"List of hashboard IDs to update and the desired enabled state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHashboards"},"example":{"enable":false,"hashboard_ids":["1","3"]}}},"required":true},"responses":{"200":{"description":"Successful response with the updated enable state of hashboards.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnableHashboardsResponse"}}}}}}},"/api/v1/miner/log/{log_type}":{"get":{"tags":["Miner"],"summary":"Stream log file","description":"Streams the merged log file for a given log type. Supported log types: errors, bosminer, boser, monitor, syslog, dmesg.","operationId":"getLog","parameters":[{"name":"log_type","in":"path","description":"Log type to download","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Stream of log data.","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}}}}},"/api/v1/miner/stats":{"get":{"tags":["Miner"],"summary":"Get miner statistics","description":"Retrieves runtime statistics about the miner, including pool performance, hashrate metrics, and power consumption.","operationId":"getMinerStats","responses":{"200":{"description":"Successful response containing miner statistics.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMinerStatsResponse"}}}}}}},"/api/v1/miner/status":{"get":{"tags":["Miner"],"summary":"Stream miner status updates","description":"Streams the current status of the miner in real-time. The status can be one of: `unspecified`, `not_started`, `normal`, `paused`, `suspended`, or `restricted`. The response is a continuous JSON stream.","operationId":"getMinerStatus","responses":{"200":{"description":"Stream of miner status updates.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMinerStatusResponse"}}}}},"deprecated":true}},"/api/v1/miner/status/detailed":{"get":{"tags":["Miner"],"summary":"Stream detailed miner status updates","description":"Streams the detailed status of the miner in real-time. The status is one of: `stopped`, `starting`, `running`, or `stopping`. The response is a continuous newline-delimited JSON stream.","operationId":"getMinerDetailedStatus","responses":{"200":{"description":"Stream of detailed miner status updates.","content":{"application/x-ndjson":{"schema":{"$ref":"#/components/schemas/GetMinerDetailedStatusResponse"},"examples":{"Preheating":{"summary":"Mining at reduced performance while hashboards preheat","value":{"status":{"status":{"running":{"reason":{"preheating":{}}}},"status_since":{"nanos":0,"seconds":1741260900},"status_until":{"precision":{"max":{"nanos":0,"seconds":1741261500}}}}}},"Running":{"summary":"Mining normally at full performance","value":{"status":{"status":{"running":{"reason":{"normal":{}}}},"status_since":{"nanos":0,"seconds":1741260910},"status_until":null}}},"Starting":{"summary":"Waiting for a startup delay","value":{"status":{"status":{"starting":{"reason":{"delayed_start":{}}}},"status_since":{"nanos":0,"seconds":1741260800},"status_until":{"precision":{"exact":{"nanos":0,"seconds":1741260860}}}}}},"ThermalPause":{"summary":"Stopped by thermal protection (broken fans)","value":{"status":{"status":{"stopped":{"reason":{"thermal_pause":{"reason":"THERMAL_PAUSE_REASON_BROKEN_FANS"}}}},"status_since":{"nanos":0,"seconds":1741260700},"status_until":null}}},"UnsupportedHardware":{"summary":"Stopped, hardware detection failed","value":{"status":{"status":{"stopped":{"reason":{"unsupported_hardware":{"errors":["Hashboard 1 not detected","Hashboard 3 communication error"]}}}},"status_since":{"nanos":0,"seconds":1741260600},"status_until":null}}}}}}}}}},"/api/v1/miner/support-archive":{"get":{"tags":["Miner"],"summary":"Stream support archive","description":"Streams support archive.","operationId":"getSupportArchive","requestBody":{"description":"Support archive format. Format can be one of: 'zip' (compressed zip format), 'bos' (BOS custom format) or 'zipencrypted' (compressed encrypted zip format).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSupportArchive"},"example":{"format":"zipencrypted"}}},"required":true},"responses":{"200":{"description":"Stream of support archive.","content":{"application/octet-stream":{"schema":{"type":"array","items":{"type":"integer","format":"int32","minimum":0}}}}}}}},"/api/v1/network/":{"get":{"tags":["Network"],"summary":"Retrieve miner network information","description":"Fetches detailed information about the miner's network, including interfaces, MAC addresses, DNS settings, and default gateway.","operationId":"getNetwork","responses":{"200":{"description":"Successful response containing miner network information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetNetworkInfoResponse"},"example":{"default_gateway":"192.168.1.1","dns_servers":["8.8.8.8","8.8.4.4"],"hostname":"miner-01.local","mac_address":"00:1A:2B:3C:4D:5E","name":"eth0","networks":[{"address":"192.168.1.100","netmask":"255.255.255.0"}],"protocol":1}}}}}}},"/api/v1/network/configuration":{"get":{"tags":["Network"],"summary":"Get network configuration","description":"Fetches the miner's network configuration, including interface settings, IP configurations, and routing details.","operationId":"getNetworkConfiguration","responses":{"200":{"description":"Successful response containing network configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkConfiguration"},"example":{"hostname":"miner-01.local","protocol":{"dhcp":{}}}}}}}},"patch":{"tags":["Network"],"summary":"Update network configuration","description":"Updates the miner's network configuration. Users can modify one or more fields, such as the hostname, network protocol, or DNS settings.","operationId":"updateNetworkConfiguration","requestBody":{"description":"Partial or full network configuration update request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetNetworkConfigurationRequest"},"example":{"hostname":"miner-01.local","protocol":{"dhcp":{}}}}},"required":true},"responses":{"200":{"description":"Successfully updated network configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkConfiguration"},"example":{"hostname":"miner-01.local","protocol":{"dhcp":{}}}}}}}}},"/api/v1/performance/dps":{"put":{"tags":["Performance"],"summary":"Set DPS (Dynamic Performance Scaling)","description":"Sets DPS for the miner, including DPS enable flag, DPS shutdown enable flag, DPS shutdown duration, DPS target, DPS mode and initial target for DPS.","operationId":"setDps","requestBody":{"description":"Save action (deprecated), DPS enable flag, DPS shutdown enable flag, DPS shutdown duration, DPS target, DPS mode and initial target for DPS.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDpsRequestRest"},"example":{"enable":true,"enable_shutdown":true,"mode":1,"on_start_target_percent":100,"save_action":null,"shutdown_duration":{"hours":4},"target":{"target":{"powertarget":{"min_power_target":{"watt":3210},"power_step":{"watt":20}}}}}}},"required":true},"responses":{"200":{"description":"Successful response containing DPS settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDpsResponse"},"example":{"enabled":true,"hashrate_target":null,"mode":1,"on_start_target_percent":100,"power_target":{"min_power_target":{"watt":3210},"power_step":{"watt":20}},"shutdown_duration":{"hours":4},"shutdown_enabled":true}}}}}}},"/api/v1/performance/efficiency-profile":{"get":{"tags":["Performance"],"summary":"Get miner efficiency profile","description":"Fetches miner's efficiency profile, a list of performance curve points sorted by ascending power target.","operationId":"getEfficiencyProfile","responses":{"200":{"description":"Successful response containing miner efficiency profile points.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMinerEfficiencyProfileResponse"},"example":{"points":[{"ambient_temp":{"degree_c":6.166664123535156},"consumption":{"watt":944},"fan_speed":25,"frequency":{"hertz":210401396.0},"hashrate":{"terahash_per_second":38.579544502568424},"outlet_temp":{"degree_c":40.45505142211914},"power_target":{"watt":900},"quality":1,"voltage":{"volt":11.966}}]}}}},"412":{"description":"BOSminer is not running."},"500":{"description":"Internal server error."}}}},"/api/v1/performance/hashrate-target":{"put":{"tags":["Performance"],"summary":"Set hashrate target","description":"Sets hashrate target for the miner.","operationId":"setHashrateTarget","requestBody":{"description":"Hashrate target to be set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":190.0}}},"required":true},"responses":{"200":{"description":"Successful response containing hashrate target (Th/s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":190.0}}}}}}},"/api/v1/performance/hashrate-target/decrement":{"patch":{"tags":["Performance"],"summary":"Decrement hashrate target","description":"Decrements hashrate target for the miner by a set value.","operationId":"decrementHashrateTarget","requestBody":{"description":"Hashrate target decrement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":10.0}}},"required":true},"responses":{"200":{"description":"Successful response containing hashrate target (Th/s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":190.0}}}}}}},"/api/v1/performance/hashrate-target/default":{"put":{"tags":["Performance"],"summary":"Set default hashrate target","description":"Sets default hashrate target for the miner.","operationId":"setDefaultHashrateTarget","responses":{"200":{"description":"Successful response containing hashrate target (Th/s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":190.0}}}}}}},"/api/v1/performance/hashrate-target/increment":{"patch":{"tags":["Performance"],"summary":"Increment hashrate target","description":"Increments hashrate target for the miner by a set value.","operationId":"incrementHashrateTarget","requestBody":{"description":"Hashrate target increment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":10.0}}},"required":true},"responses":{"200":{"description":"Successful response containing hashrate target (Th/s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":190.0}}}}}}},"/api/v1/performance/hashrate-target/relative":{"patch":{"tags":["Performance"],"summary":"Set hashrate target to a relative reference","description":"Sets hashrate target to a relative reference by a set percentage.","operationId":"relativeHashrateTarget","requestBody":{"description":"Set relative target","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetRelativeTargetRequestRest"},"example":{"percentage":85.5,"reference":1}}},"required":true},"responses":{"200":{"description":"Successful response containing hashrate target (Th/s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeraHashrate"},"example":{"terahash_per_second":190.0}}}}}}},"/api/v1/performance/mode":{"get":{"tags":["Performance"],"summary":"Get performance mode","description":"Fetches miner's performance mode, including manual or tuner mode.","operationId":"getPerformanceMode","responses":{"200":{"description":"Successful response containing performance mode.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceModeMode"},"example":{"tunermode":{"target":{"powertarget":{"power_target":{"watt":2000}}}}}}}}}},"put":{"tags":["Performance"],"summary":"Set performance mode","description":"Sets performance mode for the miner.","operationId":"setPerformanceMode","requestBody":{"description":"Performance mode.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceModeMode"},"example":{"tunermode":{"target":{"powertarget":{"power_target":{"watt":2000}}}}}}},"required":true},"responses":{"200":{"description":"Successful response containing performance mode.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceModeMode"},"example":{"tunermode":{"target":{"powertarget":{"power_target":{"watt":2000}}}}}}}}}}},"/api/v1/performance/power-target":{"put":{"tags":["Performance"],"summary":"Set power target","description":"Sets power target for the miner.","operationId":"setPowerTarget","requestBody":{"description":"Power target to be set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":3730}}},"required":true},"responses":{"200":{"description":"Successful response containing power target (watt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":3730}}}}}}},"/api/v1/performance/power-target/decrement":{"patch":{"tags":["Performance"],"summary":"Decrement power target","description":"Decrements power target for the miner by a set value.","operationId":"decrementPowerTarget","requestBody":{"description":"Power target decrement.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":100}}},"required":true},"responses":{"200":{"description":"Successful response containing power target (watt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":3730}}}}}}},"/api/v1/performance/power-target/default":{"put":{"tags":["Performance"],"summary":"Set default power target","description":"Sets default power target for the miner.","operationId":"setDefaultPowerTarget","responses":{"200":{"description":"Successful response containing power target (watt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":3730}}}}}}},"/api/v1/performance/power-target/increment":{"patch":{"tags":["Performance"],"summary":"Increment power target","description":"Increments power target for the miner by a set value.","operationId":"incrementPowerTarget","requestBody":{"description":"Save action and power target increment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":100}}},"required":true},"responses":{"200":{"description":"Successful response containing power target (watt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":3730}}}}}}},"/api/v1/performance/power-target/relative":{"patch":{"tags":["Performance"],"summary":"Set power target to a relative reference","description":"Sets power target to a relative reference by a set percentage.","operationId":"relativePowerTarget","requestBody":{"description":"Set relative target","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetRelativeTargetRequestRest"},"example":{"percentage":85.5,"reference":1}}},"required":true},"responses":{"200":{"description":"Successful response containing power target (watt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Power"},"example":{"watt":3730}}}}}}},"/api/v1/performance/quick-ramping":{"put":{"tags":["Performance"],"summary":"Set quick ramping","description":"Sets quick ramping up and down times for the miner (used in curtailments).","operationId":"setQuickRamping","requestBody":{"description":"Quick ramping up and down times to be set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetQuickRampingRequestRest"},"example":{"down_s":2,"up_s":5}}},"required":true},"responses":{"200":{"description":"Successful response containing quick ramping up and down times (s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickRampingResponse"},"example":{"down_s":2,"up_s":5}}}}}}},"/api/v1/performance/quick-ramping/default":{"put":{"tags":["Performance"],"summary":"Set default quick ramping","description":"Sets default quick ramping up and down times for the miner (used in curtailments).","operationId":"setDefaultQuickRamping","responses":{"200":{"description":"Successful response containing quick ramping up and down times (s).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickRampingResponse"},"example":{"down_s":2,"up_s":5}}}}}}},"/api/v1/performance/target-profiles":{"get":{"tags":["Performance"],"summary":"Get target profiles","description":"Fetches miner's target profiles, including power and hashrate target profiles.","operationId":"getTargetProfiles","responses":{"200":{"description":"Successful response containing target profiles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTargetProfilesRequest"},"example":{"hashrate_target_profiles":[],"power_target_profiles":[{"created":{"nanos":0,"seconds":1744000000},"estimated_power_consumption":{"watt":2000},"measured_hashrate":{"gigahash_per_second":12345.0},"target":{"watt":2000}}]}}}}}}},"/api/v1/performance/tuned-profiles":{"delete":{"tags":["Performance"],"summary":"Remove tuner profiles","description":"Removes tuner profiles. If it was mining before stops and then starts mining.","operationId":"removeTunedProfiles","responses":{"204":{"description":"Tuned profiles successfully removed."}}}},"/api/v1/performance/tuner-state":{"get":{"tags":["Performance"],"summary":"Get tuner state","description":"Fetches miner's tuner state, including overall tuner state and power or hashrate mode both including profile and current target.","operationId":"getTunerState","responses":{"200":{"description":"Successful response containing tuner state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTunerStateResponse"},"example":{"mode_state":{"powertargetmodestate":{"current_target":{"watt":3000},"profile":{"created":{"nanos":0,"seconds":1744000000},"estimated_power_consumption":{"watt":3000},"measured_hashrate":{"gigahash_per_second":12345.0},"target":{"watt":3000}}}},"overall_tuner_state":1}}}}}}},"/api/v1/pools/":{"get":{"tags":["Pools"],"summary":"Get Pool Groups","description":"Fetches the list of all configured pool groups, including their pools, load balancing strategy, and status.","operationId":"getPools","responses":{"200":{"description":"A list of pool groups with their respective pools and configurations.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PoolGroup"}},"example":[{"name":"High Performance","pools":[{"active":true,"alive":true,"enabled":true,"stats":{"accepted_shares":1000,"best_share":1200000,"best_share_str":"1200000","generated_work":5000000,"last_difficulty":800000,"last_share_time":{"nanos":255441271,"seconds":1741260910},"rejected_shares":10,"stale_shares":5},"uid":"pool1","url":"stratum+tcp://pool.example.com:3333","user":"miner1"}],"strategy":{"quota":{"value":70}},"uid":"group1"}]}}}}},"post":{"tags":["Pools"],"summary":"Create a new pool group","description":"Creates a new pool group with a specified name, list of pools, and load balancing strategy.","operationId":"createPoolGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoolGroupConfiguration"},"example":{"load_balance_strategy":{"fixedshareratio":{"value":50.0}},"name":"Pools","pools":[{"enabled":true,"password":"xxxx","uid":"1","url":"stratum+tcp://pool.example.com:3333","user":"miner1"}],"uid":"group1"}}},"required":true},"responses":{"201":{"description":"Pool group successfully created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoolGroupConfiguration"},"example":{"load_balance_strategy":{"fixedshareratio":{"value":50.0}},"name":"Pools","pools":[{"enabled":true,"password":"xxxx","uid":"1","url":"stratum+tcp://pool.example.com:3333","user":"miner1"}],"uid":"group1"}}}}}}},"/api/v1/pools/batch":{"put":{"tags":["Pools"],"summary":"Set multiple pool groups","description":"Sets the pool groups with new configurations, replacing the existing ones.","operationId":"setBatchPools","requestBody":{"description":"A list of pool group configurations to set.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PoolGr
# --- truncated at 32 KB (102 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/braiins-academy/refs/heads/main/openapi/braiins-academy-braiins-os-public-rest-api-openapi.json