{"service":"heyadhi share","base_url":"https://share.heyadhi.com","page_url":"https://{site_id}.share.heyadhi.com/","limits":{"html_bytes":10000000,"asset_bytes":50000000},"authentication":["Every write needs a one-use token for that exact request. share.mjs does all of this for you.","GET /v1/auth/challenge?method=<METHOD>&target=<path and query> → {challenge_id, message, expires_at}","Sign the UTF-8 bytes of `message` with the machine's registered Ed25519 private key.","POST /v1/auth/session {challenge_id, public_key: \"ed25519:<base64>\", signature: <base64url>} → {token}","Send the request within 60 seconds with Authorization: Bearer <token>."],"routes":{"POST /v1/sites":"Create. JSON {site_id, html_content, password?} — site_id is the page name and address, 3–60 lowercase letters, digits and single hyphens; header Idempotency-Key (128 random bits, base64url). 201 created, 200 same request replayed, 409 name taken.","GET /v1/sites/{site_id}":"Inspect: status, html_sha256, referenced assets present/missing. Protected pages need authentication.","PUT /v1/sites/{site_id}":"Replace HTML. password omitted = unchanged, nonempty = set/rotate, \"\" = remove.","POST /v1/sites/{site_id}/assets?relative_path=<path>":"Upload one asset as multipart field \"file\".","DELETE /v1/sites/{site_id}":"Unpublish. The name is free for a new page afterwards.","GET /v1/help":"This document."},"errors":{"401":"Missing or invalid machine authentication.","403":"Unsafe asset path.","404":"Unknown page, or a protected page without authentication.","409":"The name is already in use, or a concurrent update landed first.","413":"HTML over 10 MB or asset over 50 MB.","422":"Invalid input.","429":"Rate limited.","503":"Storage temporarily unavailable; retry. Error budget_exhausted: the monthly storage budget is used up; retrying will not help."}}