{
  "openapi": "3.1.0",
  "info": {
    "title": "AzielTether runtime",
    "version": "0.1.0",
    "summary": "Prefer central. Peer when down. Reconcile on restore.",
    "description": "THIS IS: a central×decentral node-mesh software tether. Prefer the Worker when up. Peer-sync hash-chained work when down. Reconcile on restore. Dual-chain on same-hash conflict. Lattice tips survive across GodLock, Aziel Digital Library, and product Workers. THIS IS NOT: a VPN, MirageGrid, a kernel, a truth score, a backdoor, or a mesh on godlock.uk. Public HTTPS boards stay mesh-free. The tether lives in the downloaded software. Author Aziel Eliab.",
    "license": {
      "name": "Apache-2.0",
      "identifier": "Apache-2.0"
    },
    "contact": {
      "name": "Aziel Eliab",
      "url": "https://github.com/AzielEliab/azieltether"
    }
  },
  "servers": [
    {
      "url": "https://azieltether-download-tracker.vibelock.workers.dev"
    }
  ],
  "paths": {
    "/v1/health": {
      "get": {
        "operationId": "azieltether_health",
        "summary": "Liveness. Does not increment download KV.",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    },
    "/v1/skill": {
      "get": {
        "operationId": "azieltether_skill",
        "summary": "Return AzielTether skill markdown. Does not increment download KV.",
        "responses": {
          "200": {
            "description": "markdown"
          }
        }
      }
    },
    "/v1/example": {
      "get": {
        "operationId": "azieltether_example",
        "summary": "Sample tether item. Does not increment downloads.",
        "responses": {
          "200": {
            "description": "example"
          }
        }
      }
    },
    "/v1/ingest": {
      "post": {
        "operationId": "azieltether_ingest",
        "summary": "Accept one hash-chained item. Zero retention.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ack"
          }
        }
      }
    },
    "/v1/pulse": {
      "post": {
        "operationId": "azieltether_pulse",
        "summary": "Prefer-central probe + unpublished-item preview.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "pulse"
          }
        }
      }
    },
    "/v1/reconcile": {
      "post": {
        "operationId": "azieltether_reconcile",
        "summary": "Merge preview. Dual-chain on same prev_hash. No winner.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "reconcile"
          }
        }
      }
    },
    "/v1/dual-chain": {
      "post": {
        "operationId": "azieltether_dual-chain",
        "summary": "Detect same-prev_hash forks. Does not pick a winner.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "forks"
          }
        }
      }
    },
    "/v1/tip": {
      "post": {
        "operationId": "azieltether_tip",
        "summary": "Mint or verify a lattice tip for a survival surface.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "tip"
          }
        }
      }
    },
    "/v1/verify": {
      "post": {
        "operationId": "azieltether_verify",
        "summary": "Walk hashes and prev links. Dual-chain is allowed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "verify"
          }
        }
      }
    },
    "/v1/peer-preview": {
      "post": {
        "operationId": "azieltether_peer-preview",
        "summary": "Peer-sync handshake preview. Stateless.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "peer"
          }
        }
      }
    }
  }
}