WRECK

API

Public reads are JSON with open CORS. Writes need a wallet session (Sign-In-With-Solana style: a message, never a transaction). The index itself is a static file: /data/wrecks.v2.bin, described by /data/index.json.

MethodPathWhatAccess
POST/api/wrecksDive at an address: { address, save? } → the mapping (SHA-256 → index row), the wreck (Wikidata, NOAA depth) and its extras (Wikipedia summary, Commons photo, sea name, seabed patch). Saving needs a session for that wallet.30/min per IP
GET/api/index/{row}One row of the pinned index (0-based) with its extras.public, CORS, 60/min
GET/api/wrecks?limit=&before=Saved wrecks, newest first.public, CORS
GET/api/wrecks/{n}One saved wreck.public, CORS
GET/api/wallet/{address}The wreck a wallet saved, if any.public, CORS
GET/api/fleetEvery saved wreck on the chart, and how much of the index holders have found.public, CORS
PUT/api/wrecks/{n}/cardSave the log: { style: log|plaque|chart, label }. Owner only.session
POST/api/auth/nonceStart sign-in: { address } → a message to sign.20/min per IP
POST/api/auth/verifyFinish sign-in: { address, message, signature } → session cookie.20/min per IP
GET/api/meYour session, phase and saved wreck.session
POST/api/auth/logoutEnd the session.session
POST/api/admin/cronRun the background job now (idempotent).admin token

Try /api/fleet or /api/index/1.