{
  "openapi": "3.1.0",
  "info": {
    "title": "AZNet runtime",
    "version": "0.1.0",
    "description": "Silent verification side-net (AZN-WP-0.1). Hashes only. AZNet + AZBrowser required. FragGate slug aznet. Author Aziel Eliab."
  },
  "servers": [
    {
      "url": "https://aznet-download-tracker.vibelock.workers.dev"
    }
  ],
  "paths": {
    "/count": {
      "get": {
        "operationId": "count",
        "summary": "Live {views, downloads, total}. Does not increment.",
        "responses": {
          "200": {
            "description": "count"
          }
        }
      }
    },
    "/stats": {
      "get": {
        "operationId": "stats",
        "summary": "views, downloads, by_repo / by_branch / by_fork. Does not increment.",
        "responses": {
          "200": {
            "description": "stats"
          }
        }
      }
    },
    "/download": {
      "get": {
        "operationId": "download",
        "summary": "Counted tarball. HTTP 200, live counter, no 302.",
        "responses": {
          "200": {
            "description": "gzip"
          }
        }
      }
    },
    "/v1/skill": {
      "get": {
        "operationId": "aznet_skill",
        "summary": "Return skill markdown. Does not increment download KV.",
        "responses": {
          "200": {
            "description": "markdown"
          }
        }
      }
    },
    "/v1/health": {
      "get": {
        "operationId": "health",
        "summary": "Liveness",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    },
    "/v1/doctor": {
      "get": {
        "operationId": "doctor",
        "summary": "Hosted self-check. No writes.",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    },
    "/v1/garden": {
      "get": {
        "operationId": "garden",
        "summary": "Demo Gold Pages. Hashes only.",
        "responses": {
          "200": {
            "description": "garden"
          }
        }
      }
    },
    "/v1/time": {
      "get": {
        "operationId": "time",
        "summary": "StaticClock advisory display.",
        "responses": {
          "200": {
            "description": "time"
          }
        }
      }
    },
    "/v1/witness": {
      "get": {
        "operationId": "witness_get",
        "summary": "Mandatory UI witness hash.",
        "responses": {
          "200": {
            "description": "witness"
          }
        }
      }
    },
    "/v1/pair": {
      "post": {
        "operationId": "pair",
        "summary": "Pair AZNet + AZBrowser.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "azbrowser": {
                    "type": "string"
                  },
                  "ledger": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "paired"
          }
        }
      }
    },
    "/v1/unlock": {
      "post": {
        "operationId": "unlock",
        "summary": "FragGate unlock after pair.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "unlocked"
          }
        }
      }
    },
    "/v1/stamp": {
      "post": {
        "operationId": "stamp",
        "summary": "Stamp a hash. Pair + unlock required.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "hash_hex"
                ],
                "properties": {
                  "hash_hex": {
                    "type": "string"
                  },
                  "ledger": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "stamped"
          }
        }
      }
    },
    "/v1/memorial": {
      "post": {
        "operationId": "memorial",
        "summary": "Terminal compromise memorial. No exploit details.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "reason": {
                    "type": "string"
                  },
                  "ledger": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "memorial"
          }
        }
      }
    },
    "/v1/withdraw": {
      "post": {
        "operationId": "withdraw",
        "summary": "Withdrawal over coercion.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "withdrawn"
          }
        }
      }
    },
    "/v1/verify": {
      "post": {
        "operationId": "verify",
        "summary": "Walk hashes and links.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ledger": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "verify"
          }
        }
      }
    },
    "/v1/lattice": {
      "post": {
        "operationId": "lattice",
        "summary": "Verify receipt links + counts.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "lattice"
          }
        }
      }
    },
    "/v1/receipts": {
      "post": {
        "operationId": "receipts",
        "summary": "Return the client-held ledger.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "receipts"
          }
        }
      }
    },
    "/v1/example": {
      "get": {
        "operationId": "example",
        "summary": "Sample pair payload.",
        "responses": {
          "200": {
            "description": "example"
          }
        }
      }
    }
  }
}