auciel is a wrapper for the black desert central market api. its purpose is to enable developers to get data from the market more easily, without having to figure out the strict (and odd) request structures required for the raw central market api.
built with the tsurezure framework.
usage
installing from rubygems
# gemfile
source 'https://rubygems.org'
gem 'auciel'# script.rb
require 'auciel'
server = Auciel.new 8888
server.listenor
gem install auciel
executable
coming soon
using source code
download this repo. then, in your ruby script:
require_relative 'path/to/lib/auciel'
# default port is 8888
server = Auciel.new 8888
# server will be ready for requests at localhost:8888
server.listenyou can also just run ruby main.rb in the root directory and a server will start at localhost:8888.
specifying a region
by default, this application will contact the na version of the central market. to change this, you can run auciel with an environment variable BDO_AP_REGION set to your desired region. if you're using the source code, you can go to lib/constants.rb and change REGION directly.
here are the available values for REGION in constants.rb / the BDO_AP_REGION environment variable:
BDO_AP_REGION setting |
region market domain |
|---|---|
na |
na-trade.naeu.playblackdesert.com |
eu |
eu-trade.naeu.playblackdesert.com |
eu_console |
eu-trade.console.playblackdesert.com |
na_console |
na-trade.console.playblackdesert.com |
asia_console |
asia-trade.console.playblackdesert.com |
sea |
trade.sea.playblackdesert.com |
mena |
trade.tr.playblackdesert.com |
kr |
trade.kr.playblackdesert.com |
ru |
trade.ru.playblackdesert.com |
jp |
trade.jp.playblackdesert.com |
th |
trade.th.playblackdesert.com |
tw |
trade.tw.playblackdesert.com |
sa |
blackdesert-tradeweb.playredfox.com |
endpoints
- get item by id
- get item by category
- search for an item
- get prices by item id
- get list of popular items
- get market waitlist
/item/:id
retrieves information about an item based on its id. equivalent to GetWorldMarketSubList in the raw api. example:
GET https://localhost:8888/item/702
{
"data": [
{
"pricePerOne": 10700,
"totalTradeCount": 14269193,
"keyType": 0,
"mainKey": 702,
"subKey": 0,
"count": 0,
"name": "Elixir of Will",
"grade": 1,
"mainCategory": 35,
"subCategory": 2,
"chooseKey": 0,
"isGodrAyed": false
}
]
}/item/:cat/:sub
retrieves a list of items in a category and subcategory. equivalent to GetWorldMarketList in the raw api. example:
GET https://localhost:8888/item/35/1
{
"data": [
{
"mainKey": 504,
"sumCount": 0,
"name": "Melee AP Enhancer",
"grade": 0,
"isGodrAyed": false,
"minPrice": 93500,
"id": 504
},
{
"mainKey": 505,
"sumCount": 0,
"name": "Ranged AP Enhancer",
"grade": 0,
"isGodrAyed": false,
"minPrice": 93500,
"id": 505
},
.../search?q=<search text>
retrieves a list of items whose names match the provided url encoded search string. equivalent to GetWorldMarketSearchList in the raw api. example:
GET http://localhost:8888/search?q=blood
{
"data": [
{
"mainKey": 3040,
"sumCount": 1,
"totalSumCount": 77500000,
"name": "Muskan's Bloody Steel Helmet",
"grade": 2,
"isGodrAyed": false,
"id": 3040
},
{
"mainKey": 4453,
"sumCount": 2674,
"totalSumCount": 236000,
"name": "Blood Ruby",
"grade": 0,
"isGodrAyed": false,
"id": 4453
},
{
"mainKey": 5005,
"sumCount": 30309,
"totalSumCount": 19000,
"name": "Bloody Tree Knot",
"grade": 0,
"isGodrAyed": false,
"id": 5005
},
.../prices/:id
retrieves a detailed price list for a specified item id. equivalent to GetItemSellBuyInfo in the raw api, and similar to GetBiddingInfoList. example:
GET http://localhost:8888/prices/702
{
"data": {
"pricePoints": [
13500,
13600,
13700,
13800,
13900,
14000,
14100,
14200,
14300,
14400,
14500,
14600
],
"buySellCounts": [
{
"sellCount": 0,
"buyCount": 0,
"pricePerOne": 12500
},
{
"sellCount": 0,
"buyCount": 0,
"pricePerOne": 12600
},
{
"sellCount": 0,
"buyCount": 0,
"pricePerOne": 12700
},
.../hot
retrieves a list of currently popular items. equivalent to GetWorldMarketHotList in the raw api. example:
GET http://localhost:8888/hot
{
"data": [
{
"subtype": 0,
"pricePerOne": 66000,
"totalTradeCount": 340891,
"fluctuationType": 2,
"fluctuationPrice": 12500,
"keyType": 0,
"mainKey": 641,
"subKey": 0,
"count": 0,
"name": "[Party] Elixir of Fury",
"grade": 1,
"mainCategory": 35,
"subCategory": 0,
"chooseKey": 0,
"isGodrAyed": false,
"id": 641,
"fluctuationDirection": "up"
},
{
"subtype": 0,
"pricePerOne": 47800,
"totalTradeCount": 1780501,
"fluctuationType": 1,
"fluctuationPrice": 12200,
"keyType": 0,
"mainKey": 683,
"subKey": 0,
"count": 8446,
"name": "Surging Energy Elixir",
"grade": 2,
"mainCategory": 35,
"subCategory": 0,
"chooseKey": 0,
"isGodrAyed": false,
"id": 683,
"fluctuationDirection": "down"
},
.../waitlist
retrieves a list of currently waitlisted items. equivalent to GetWorldMarketWaitList in the raw api. example:
GET http://localhost:8888/waitlist
{
"data": [
{
"keyType": 0,
"mainKey": 11103,
"subKey": 0,
"count": 0,
"name": "Urugon's Shoes",
"grade": 3,
"mainCategory": 15,
"subCategory": 0,
"chooseKey": 20,
"isGodrAyed": false,
"id": 11103,
"waitEndTime": "2023-03-04T20:03:55+00:00",
"waitEndTimestampMs": 1677960235417,
"pricePerOne": 12400000000
},
{
"keyType": 0,
"mainKey": 12230,
"subKey": 0,
"count": 0,
"name": "Basilisk's Belt",
"grade": 3,
"mainCategory": 20,
"subCategory": 0,
"chooseKey": 5,
"isGodrAyed": false,
"id": 12230,
"waitEndTime": "2023-03-04T20:11:04+00:00",
"waitEndTimestampMs": 1677960664373,
"pricePerOne": 53000000000
},
...item categories
here's a list of item types with their categories / subcategories for the item/:cat/:sub endpoint. for example, you could retrieve a list of foods at item/35/4.
| item type | category | subcategories |
|---|---|---|
| main weapon | 1 | 1-20 |
| sub-weapon | 5 | 1-18 |
| awakening | 10 | 1-24 |
| armor | 15 | 1-6 |
| accessories | 20 | 1-4 |
| lightstone | 85 | 1-5 |
| material | 25 | 1-8 |
| enhancement / upgrade | 30 | 1-2 |
| consumables | 35 | 1-8 |
| life tools | 40 | 1-10 |
| alchemy stone | 45 | 1-4 |
| magic crystal | 50 | 1-4 |
| pearl item | 55 | 1-8 |
| dye | 60 | 1-8 |
| mount | 65 | 1-13 |
| ship | 70 | 1-9 |
| wagon | 75 | 1-6 |
| furniture | 80 | 1-9 |
item grades
here's a list of item grades with their corresponding grade numbers as returned from the api.
| grade (border color) | number (grade) |
|---|---|
| white | 0 |
| green | 1 |
| blue | 2 |
| yellow | 3 |
| orange | 4 |
other info
auciel is the name of the central market director at old wisdom tree.
stuff I don't know yet
- what is
chooseKeyon certain items? - does
keyTypedo anything? - why does every item have an
isGodrAyedproperty, even non-godr-ayeable items? - can you get a list of every single item?