{
  "openapi": "3.1.0",
  "info": {
    "title": "MinerAPI.com Static Demo API",
    "version": "1.0.0",
    "description": "Three public GET resources containing fictional demonstration data. There is no authentication, hardware control, account service, or model execution."
  },
  "servers": [
    {
      "url": "https://minerapi.com",
      "description": "Deployment origin for the static website"
    }
  ],
  "paths": {
    "/api/demo/asic.json": {
      "get": {
        "summary": "ASIC reference worker",
        "description": "Read a bundled, fictional sample record. No authorization or request body is used. This file does not execute a mining operation or model request.",
        "operationId": "readAsicSample",
        "responses": {
          "200": {
            "description": "Bundled sample response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemoResponse"
                },
                "example": {
                  "demo": true,
                  "schema_version": "1.0",
                  "kind": "asic",
                  "label": "ASIC reference worker",
                  "source": "bundled-sample",
                  "observed_at": "2026-09-20T12:00:00Z",
                  "worker": {
                    "id": "sample-asic-01",
                    "algorithm": "sha256d",
                    "hashrate_th_s": 124.8,
                    "power_w": 3120,
                    "chip_temp_c": 68,
                    "fan_rpm": 4200,
                    "status": "sample-online"
                  },
                  "display_metrics": [
                    {
                      "label": "Worker hashrate",
                      "value": "124.8",
                      "unit": "TH/s",
                      "note": "Sample \u00b7 one reference worker"
                    },
                    {
                      "label": "Chip temperature",
                      "value": "68",
                      "unit": "\u00b0C",
                      "note": "Sample sensor reading"
                    },
                    {
                      "label": "Power draw",
                      "value": "3,120",
                      "unit": "W",
                      "note": "Fictional device observation"
                    },
                    {
                      "label": "Efficiency ratio",
                      "value": "25.0",
                      "unit": "J/TH",
                      "note": "3,120 W \u00f7 124.8 TH/s"
                    }
                  ],
                  "rows_title": "Sample worker states",
                  "display_rows": [
                    {
                      "label": "sample-asic-01",
                      "value": "\u2713 Current sample",
                      "style": ""
                    },
                    {
                      "label": "sample-asic-02",
                      "value": "\u25b3 Stale sample",
                      "style": "warn"
                    },
                    {
                      "label": "sample-asic-03",
                      "value": "\u2014 No observation",
                      "style": "off"
                    }
                  ],
                  "chart_title": "Illustrative hashrate pattern",
                  "chart_values": [
                    37,
                    42,
                    39,
                    51,
                    48,
                    62,
                    58,
                    69,
                    64,
                    78,
                    71,
                    75,
                    69,
                    82,
                    78,
                    87
                  ]
                }
              }
            }
          },
          "404": {
            "description": "File not found. Error format depends on the static host."
          }
        }
      }
    },
    "/api/demo/gpu.json": {
      "get": {
        "summary": "GPU reference device",
        "description": "Read a bundled, fictional sample record. No authorization or request body is used. This file does not execute a mining operation or model request.",
        "operationId": "readGpuSample",
        "responses": {
          "200": {
            "description": "Bundled sample response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemoResponse"
                },
                "example": {
                  "demo": true,
                  "schema_version": "1.0",
                  "kind": "gpu",
                  "label": "GPU reference device",
                  "source": "bundled-sample",
                  "observed_at": "2026-09-20T12:00:00Z",
                  "worker": {
                    "id": "sample-gpu-01",
                    "algorithm": "sample-workload",
                    "hashrate_mh_s": 62.4,
                    "power_w": 145,
                    "temperature_c": 61,
                    "utilization_percent": 96,
                    "status": "sample-online"
                  },
                  "display_metrics": [
                    {
                      "label": "Workload hashrate",
                      "value": "62.4",
                      "unit": "MH/s",
                      "note": "Illustrative sample workload"
                    },
                    {
                      "label": "GPU temperature",
                      "value": "61",
                      "unit": "\u00b0C",
                      "note": "Sample sensor reading"
                    },
                    {
                      "label": "Device power",
                      "value": "145",
                      "unit": "W",
                      "note": "Not a wall-meter reading"
                    },
                    {
                      "label": "Device utilization",
                      "value": "96",
                      "unit": "%",
                      "note": "Not proof of accepted work"
                    }
                  ],
                  "rows_title": "Sample GPU observations",
                  "display_rows": [
                    {
                      "label": "sample-gpu-01",
                      "value": "\u2713 Current sample",
                      "style": ""
                    },
                    {
                      "label": "sample-gpu-02",
                      "value": "\u25b3 Sensor unavailable",
                      "style": "warn"
                    },
                    {
                      "label": "sample-gpu-03",
                      "value": "\u2014 No observation",
                      "style": "off"
                    }
                  ],
                  "chart_title": "Illustrative workload pattern",
                  "chart_values": [
                    57,
                    48,
                    63,
                    51,
                    75,
                    66,
                    82,
                    67,
                    64,
                    71,
                    80,
                    72,
                    83,
                    78,
                    88,
                    81
                  ]
                }
              }
            }
          },
          "404": {
            "description": "File not found. Error format depends on the static host."
          }
        }
      }
    },
    "/api/demo/prompts.json": {
      "get": {
        "summary": "AI prompt evaluation sample",
        "description": "Read a bundled, fictional sample record. No authorization or request body is used. This file does not execute a mining operation or model request.",
        "operationId": "readPromptsSample",
        "responses": {
          "200": {
            "description": "Bundled sample response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DemoResponse"
                },
                "example": {
                  "demo": true,
                  "schema_version": "1.0",
                  "kind": "prompts",
                  "label": "AI prompt evaluation sample",
                  "source": "bundled-sample",
                  "observed_at": "2026-09-20T12:00:00Z",
                  "prompt": {
                    "id": "sample-ticket-triage",
                    "version": "1.2.0",
                    "task": "Assign a sample support category",
                    "variables": [
                      "ticket_text"
                    ],
                    "dataset_version": "sample-v1",
                    "evaluator_version": "rubric-v1",
                    "test_cases": 50,
                    "passed": 48,
                    "failed": 2
                  },
                  "display_metrics": [
                    {
                      "label": "Sample test cases",
                      "value": "50",
                      "unit": "cases",
                      "note": "Fictional evaluation dataset"
                    },
                    {
                      "label": "Passing samples",
                      "value": "48",
                      "unit": "cases",
                      "note": "Illustrative result only"
                    },
                    {
                      "label": "Sample pass rate",
                      "value": "96",
                      "unit": "%",
                      "note": "48 \u00f7 50 \u00b7 not a benchmark"
                    },
                    {
                      "label": "Prompt revision",
                      "value": "1.2.0",
                      "unit": "",
                      "note": "Example versioned record"
                    }
                  ],
                  "rows_title": "Sample workflow states",
                  "display_rows": [
                    {
                      "label": "Dataset / sample-v1",
                      "value": "\u2713 Versioned example",
                      "style": ""
                    },
                    {
                      "label": "Rubric / rubric-v1",
                      "value": "\u2713 Defined example",
                      "style": ""
                    },
                    {
                      "label": "Failure cases / 2",
                      "value": "\u25b3 Review examples",
                      "style": "warn"
                    }
                  ],
                  "chart_title": "Illustrative evaluation pattern",
                  "chart_values": [
                    34,
                    46,
                    41,
                    54,
                    59,
                    56,
                    62,
                    71,
                    66,
                    73,
                    78,
                    75,
                    84,
                    82,
                    87,
                    90
                  ]
                }
              }
            }
          },
          "404": {
            "description": "File not found. Error format depends on the static host."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "DemoResponse": {
        "title": "MinerAPI.com public demonstration response",
        "description": "Version 1.0 of the three bundled, fictional, read-only JSON fixture responses. This is not a live mining service.",
        "type": "object",
        "required": [
          "demo",
          "schema_version",
          "kind",
          "label",
          "source",
          "observed_at",
          "display_metrics",
          "rows_title",
          "display_rows",
          "chart_title",
          "chart_values"
        ],
        "properties": {
          "demo": {
            "const": true
          },
          "schema_version": {
            "const": "1.0"
          },
          "kind": {
            "enum": [
              "asic",
              "gpu",
              "prompts"
            ]
          },
          "label": {
            "type": "string"
          },
          "source": {
            "const": "bundled-sample"
          },
          "observed_at": {
            "type": "string",
            "format": "date-time"
          },
          "worker": {
            "type": "object",
            "required": [
              "id",
              "algorithm",
              "power_w",
              "status"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "algorithm": {
                "type": "string"
              },
              "hashrate_th_s": {
                "type": "number",
                "minimum": 0
              },
              "hashrate_mh_s": {
                "type": "number",
                "minimum": 0
              },
              "power_w": {
                "type": "number",
                "minimum": 0
              },
              "chip_temp_c": {
                "type": "number"
              },
              "temperature_c": {
                "type": "number"
              },
              "fan_rpm": {
                "type": "number",
                "minimum": 0
              },
              "utilization_percent": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "status": {
                "type": "string"
              }
            }
          },
          "prompt": {
            "type": "object",
            "required": [
              "id",
              "version",
              "task",
              "variables",
              "dataset_version",
              "evaluator_version",
              "test_cases",
              "passed",
              "failed"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "version": {
                "type": "string"
              },
              "task": {
                "type": "string"
              },
              "variables": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "dataset_version": {
                "type": "string"
              },
              "evaluator_version": {
                "type": "string"
              },
              "test_cases": {
                "type": "integer",
                "minimum": 0
              },
              "passed": {
                "type": "integer",
                "minimum": 0
              },
              "failed": {
                "type": "integer",
                "minimum": 0
              }
            }
          },
          "display_metrics": {
            "type": "array",
            "minItems": 4,
            "maxItems": 4,
            "items": {
              "type": "object",
              "required": [
                "label",
                "value",
                "unit",
                "note"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                },
                "unit": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "rows_title": {
            "type": "string"
          },
          "display_rows": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "label",
                "value",
                "style"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                },
                "style": {
                  "enum": [
                    "",
                    "warn",
                    "off"
                  ]
                }
              }
            }
          },
          "chart_title": {
            "type": "string"
          },
          "chart_values": {
            "type": "array",
            "minItems": 2,
            "items": {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            "description": "Illustrative unitless chart coordinates, not a time series of operational observations."
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "kind": {
                  "const": "prompts"
                }
              }
            },
            "then": {
              "required": [
                "prompt"
              ]
            },
            "else": {
              "required": [
                "worker"
              ]
            }
          }
        ]
      }
    }
  }
}
