Auctioneer/Data file format
From Norganna's AddOns
What's this page for
One of the most asked questions ever: "What's the Auctioneer data file format?"
People ask this for the most different reason, one wants to write a tool to convert it to XLS, one wants to build a website on that data, one wants to write a Windows APP to search it.
This page attempts to document the data file format.
Comments
You can put questions or comments here so that they can be addressed in a future revision.
A sample data file
The data file has been moved to a sub-page due to its size.
Auctioneer Data File Sample 1 -- Stale
Historical Description
Original Description of Auctioneer Data -- Not Maintained
Online conversion tool
Online CSV converter.
Basic terminology
Though Lua uses a table for all data structure needs, its often easier to think of the layout using other layout paradigms. This document uses the integer, dictionary, array, structure, string, and formatted string definitions to organize the data.
integer
If you don't know what an integer is, we can't help you. An integer is stated as "x" or "integer", where x is the name of a specific type of integer (such as auctionID). Specific types will be defined in the Variable Types section.
array
An array is a table definition where the key is a sequential integer and the data is the item of interest.
{
item1, -- 0
item2, -- 1
item3, -- 2
...
}
stated as "array of x", where x is the format of the items in the array.
structure
Structures will be defined by listing the fields in field=definition format.
{
[key1] = data1,
[key2] = data2,
...
}
stated as "structure x" or just "x", where x is a unique key for each different structure definition. keys are always strings.
structure x
key1 = y key2 = z
where y and z are data formats, and x is a unique identifier for the structure.
dictionary
A dictionary is the basic lua table scheme. All our tables use keys of uniform type. stated as "dictionary of x, y", where x is the type of the key, and y is the type of the data.
{
[key1] = data1,
[key2] = data2,
...
}
string
A string is identified as "x" or "string", where x is the name of a specific type of string. Specific types will be defined in the Variable Types section.
formatted string
Formatted strings are a string which has some defined structure to how it is layed out.
"data1;data2;data3"
stated as "formatted x" or just "x", where x is a unique key for each different formatted string definition. Formatted strings use a baucus naur style definition.
formatted x
(auctionID";")*auctionID
Variables
AuctionConfig = ConfigDataStruct
AuctioneerItemDB = ItemDataStruct
AuctioneerSnapshotDB = dictionary of AuctionHouseID, SnapDataStruct
AuctioneerHistoryDB = dictionary of AuctionHouseID, HistoryDataStuct
AuctioneerFixedPriceDB = dictionary of ItemId, ?
AuctioneerTransactionDB = dictionary of AuctionHouseID, TransDataStruct
Structure Definitions
formatted AuctionData
| To Do: formatted AuctionData |
formatted AuctionUpdate
| To Do: formatted AuctionUpdate |
formatted AuctionHouseID
string "-" ("neutral" | "alliance" | "horde")
where string is the server name
formatted AuctionIds
integer (";" integer)*
where each integer is the ID of an auction
structure ConfigDataStruct
version = integer filters = FilterSettingsData
structure FilterSettingsData
pct-maxless = integer finish-sound = onOffString show-verbose = onOffString pct-nocomp = integer protect-window = integer show-stats = onOffString askprice = onOffString show-link = onOffString autofill = onOffString show-embed-blankline = onOffString askprice-whispers = onOffString show-median = onOffString pct-bidmarkdown = integer warn-color = onOffString printframe = integer show-suggest = onOffString askprice-vendor = onOffString askprice-smart = onOffString constants-warning = integer askprice-trigger = string askprice-word2 = string pct-markup = integer askprice-party = onOffString auction-duration = integer askprice-ad = onOffString askprice-word1 = onOffString askprice-guild = onOffString pct-undermkt = integer show-warning = onOffString show-average = onOffString pct-underlow = integer also = onOffString all = onOffString embed = onOffString finish = integer
structure HistoryData
buyoutPrices = HistoryPrices -- buyout prices that have been listed for item totals = HistoryPrices -- bid prices listed on item version = integer -- currently the value 1 ahKey = AuctionHouseId
formatted HistoryPrices
integer ("x" integer)? (";" integer ("x" integer)?)*
where the first integer is the price in copper. and the second integer is the number of items in the stack being sold
formatted ItemData
a ";" b ";" c ";" d ";" e ";" f ";" g ";" h
a string -- Item Display Name b integer -- ? c integer -- ? d integer -- ? e integer -- ? f integer -- ? g integer -- ? h integer -- Icon Texture Index number
structure ItemDataStruct
items = dictionary of ItemKey, ItemData version = integer -- current value is 1 auctionItemSubClasses = array of string -- names the item subclasses -- index into array is value used for defining subclasses of items. textures = array of string -- paths to item pictures -- index into array is value used for defining textures of items. auctionItemClasses = array of string -- names the item classes available. -- index into array is value used for defining classes of items. inventoryTypes = array of string --names the different inventory types -- index into array is value used for defining inventory type of items.
formatted ItemKey
a ";" b ";" c
a integer -- Item ID b integer -- Random ID c integer -- Enchant ID
formatted onOffString
("on"|"off")
structure SnapDataStruct
nextAuctionId = integer -- stores next available auction ID version = integer - currently the value 3 auctionIdsByItemKey = dictionary of ItemKey, AuctionIds auctions = dictionary of integer, AuctionData -- stored as array for some reason ahKey = AuctionHouseId updates = array of AuctionUpdate
formatted TranTime
"e" integer "." integer
where the first integer is a 10 digit number and the second integer is a 1 digit number integer.integer is a Unix time stamp and e stands for epoch
formatted TranData
a ";" b ";" c ";" d ";" e ";" f ";" g ";" h
a string -- name of item b integer -- Item ID c integer -- Random ID d integer -- Enchant ID e integer -- ? f integer -- ? g string -- "BidAccepted" or "BidSent" h integer -- ? i integer -- ? j integer -- ? k integer -- ? l string -- name of seller
structure TransData
version = integer -- currently the value 1 ahKey = AuctionHouseId dictionary of string, dictionary of TranTime, TranData
Section definitions
AuctionConfig
players
This straightforward section contains the names of the playing characters of the account that this Auctioneer.lua file belongs to.
["players"] = {
"Toon1", -- [1]
...
}
filters
The section hosts Auctioneer user settings. Refer to Commands for a description of their meaning. The scan classes are probably the different item classes you can set to scan or not in the auction house window.
["filters"] = {
["scan-class4"] = "on",
["last-auction-duration"] = 480,
["scan-class3"] = "on",
["scan-class7"] = "on",
["scan-class6"] = "on",
["scan-class8"] = "on",
["scan-class9"] = "on",
["scan-class10"] = "on",
["scan-class1"] = "on",
["scan-class5"] = "on",
["scan-class2"] = "on",
["embed"] = "on",
["constants-warning"] = 0,
},
version
This means the file has been produced by Auctioneer version X
["version"] = 40001,
Saved searches
This section contains the search parameters to be used in the Search Auctions tab, saved by the user. See Interface Usage for more details.
["SavedSearches"] = {
["Default Buyouts"] = "2 50000 50 1 1 ",
["Great Bids"] = "1 200000 50 2 1 1 ",
["Pure Income Bids"] = "1 400000 0 2 1 1 ",
["Competitors"] = "3 500",
["Pure Income Buyouts"] = "2 400000 0 1 1 ",
["Great Buyouts"] = "2 200000 50 1 1 ",
[""] = "1 5000 30 2 1 1 ",
["Default Bids"] = "1 50000 50 2 1 1 ",
},
AuctioneerFixedPriceDB
These are the user's custom prices, that is the prices set by hand by the user in the Post Auctions tab, setting fixed price in the Price Based On listbox and checking the Remember price checkbox. Refer to Interface Usage for details. These are sorted by realm/faction.
["ysera-alliance"] = {
["version"] = 1,
["ahKey"] = "ysera-alliance",
["fixedPrices"] = {
["940:0:0"] = "1200000;1500000;1;1440",
["14344:0:0"] = "30000;31500;1;1440",
}
}
- ["940:0:0"] is the Item ID:Random ID:Enchant ID
- 1200000 is the bid price
- 1500000 is the buyout price
- 1 is the stack size
- 1440 is the length of the auction, in minutes (1440=24 hours*60 minutes)
AuctioneerTransactionDB
This section lists the transactions done by your toon. It lists the realm-faction, a version number, your toons name and the trade details.
["ysera-alliance"] = {
["version"] = 1,
["Toon1"] = {
["e1168288717.0"] = "Schattenseide;10285:0:0:792708306;1;BidAccepted;813;650;0;813;11214693;Mcsteven",
["e1170278278.0"] = "Taijistecken des Tigers;25176:-14:0:1931870254;1;BidSent;74460;69568;0;74460;21993336;Dragonheart",
},
["ahKey"] = "ysera-alliance",
Trade details are build up out of :
- e: The character "e" means Epoch
- 1168288717 - A unix timestamp
The value portion is a list of various pieces of data:
- Schattenseide - Item name
- 10285:0:0:792708306 - Item ID:Random ID:Enchant ID:?
- 1 or 0 - Buyout auction(1) or Bid(0)
- BidAccepted - Can be BidAccepted/BidSent, BidAccepted comes on Buyout, BidSent probably when you're bidding
- 813 - Transaction Amount
- 650 - Current Asking bid
- 0 - Current bid (someone else)
- 813 - Buyout Price
- 11214693 - Toon's money
- Mcsteven - Seller
AuctioneerSnapshotDB
[119930] = "15215;681;0;1711270522;1;25116;0;Talingoa;0;0;4;1170311763;1170372399"
[auctioneer internal id] = itemId;suffixId;enchantId;uniqueId;count;minBid;buyoutPrice;Owner;bidAmount;highBidder;timeLeft;lastSeen;expiration
| itemId | number |
| suffixId | number |
| enchantId | number |
| uniqueId | number |
| count | number |
| minBid | number |
| buyoutPrice | number |
| Owner | string |
| bidAmount | number |
| highBidder | boolean |
| timeLeft | number |
| lastSeen | number |
| expiration | number |
AuctioneerItemDB
["15215:681:0"] = Wutschäumendes Krummschwert des Tigers;2;40;1;30;1;1;663",
[itemId:suffixId:enchantId] = itemName;itemQuality;itemMinLevel;auctionItemClasses;auctionItemSubClasses;1;inventoryType;textures
itemQuality
- 0 "Poor" (Gray)
- 1 "Common" (White)
- 2 "Uncommon" (Green)
- 3 "Rare" (Blue)
- 4 "Epic" (Purple)
- 5 "Legendary" (Orange)
- 6 "Artifact" (Gold)
- auctionItemClasses: see AuctioneerItemDB:auctionItemClasses
- auctionItemSubClasses: see AuctioneerItemDB:auctionItemSubClasses
- inventoryTypes: see AuctioneerItemDB:inventoryTypes
- textures: see AuctioneerItemDB:textures
Time
Short = 1; --TIME_LEFT_SHORT Medium = 2; --TIME_LEFT_MEDIUM Long = 3; --TIME_LEFT_LONG VeryLong = 4; --TIME_LEFT_VERY_LONG
[0] = 0, -- Could expire any second... the current bid is relatively accurate. [1] = 1800, -- If it disappears within 30 mins of last seing it, it was BO'd [2] = 7200, -- Ditto but for 2 hours. [3] = 28800, -- 8 hours. [4] = 86400, -- 24 hours.