Addon export and examples
Follow the pixel-strip export path and download Lua and Rust examples.
Export and downloads
Install the existing addon and desktop app for the complete capture-to-upload path. If you are writing a client, use the versioned strip and Rust decoder as the integration boundary.
- 01 · OBSERVERead auctionsWoW: Forever addon
- 02 · TRANSFERExport a bookPixel strip → desktop
- 03 · INGESTUpload oncePOST /ah/books
- 04 · BUILDRead the marketPrices, depth & history
Lua: serialize observed auctions
This function uses the existing addon’s Core/Strip.lua. It is an integration helper, not a standalone addon or a supported public callback. Pass non-secret market facts from an actual auction read; the helper makes no WoW API calls.
-- Integration helper, not a standalone addon or a public AuctionHouseFYI hook.
-- Use the existing Core/Strip.lua encoder and bulk transport; see docs/api-integration.md.
-- Inputs must already be non-secret market facts. No WoW API calls are made here.
-- rows: { { id = itemID, suffix = suffixID, pet = speciesID, count = stackSize,
-- buyout = TOTAL_STACK_BUYOUT_IN_COPPER, band = gameTimeLeft } }
-- band: nil = unknown, 0..3 = the game's time-left bands. buyout = 0 is bid-only.
-- atSeconds: ORIGINAL observation time in Unix seconds; the HTTP API uses milliseconds.
-- faction: 1 Alliance, 2 Horde. complete: true only after an unfiltered full-market read.
return function(Strip, rows, atSeconds, faction, complete)
-- Returns kind-3 bytes, grouped entry count and auction count, or nil when empty.
return Strip.bookBytes(atSeconds, faction, complete, rows)
end
The return value is binary kind-3 transfer bytes, not JSON or a file. The existing scanner calls ns.bulk:start(transferId, bytes) to schedule painting; see SendBulk and Send. Reuse that scheduler rather than starting competing transfers.
Rust: upload your exported book
Clone the repository, use its pinned Rust toolchain and set AHF_BASE and AHF_KEY. From companion/:
cargo run --example upload -- /path/to/book.jsonThe example uses the companion’s HTTP client, gzips the file and prints the result. It sends once; on a retryable failure it explains when to retry, preserving the file. Quarantine or an HTTP failure produces an unsuccessful exit status. Screen capture is provided by the full companion, not this file uploader.
Verify in game
The Forever API ledger distinguishes observations from unverified behavior. Replicate reads and this addon’s exact pixel output still need an in-game check; passing encoder tests does not establish that they work in the client. SavedVariables cold-start loading is recorded as broken on the beta and is not the live export path.
After changing existing Lua files, use /reload. Adding folders or changing a TOC/file list needs a full game restart. Open the auction house, run /ahf status, then /ahf scan if needed. Check the app’s book upload status and contribution history. If replication cannot run, expect a waiting message and no browse upload. Inspect BugSack for errors. With Wowzers loaded, this addon stands down.
Versioned contracts and runnable examples live with the source specification →.