GET/api/v1/score
和了形から役・翻・符(内訳つき)・点数を返す。ルールは雀天の標準(喰いタンあり・切り上げ満貫あり・数え役満なし・単独のダブル役満なし。複合役満は倍数で数える)で、応答の rules に書く。
本番の API をそのまま呼びます。
GET /api/v1/score?tiles=234m567p23678s55s4s&win=4s&by=tsumo&riichi=true&seat=2z知らないパラメータや、同じパラメータの 2 回目は誤りとして返します(書き間違いを黙って無視しないため)。
| 名前 | 型 | 説明 | 例 |
|---|---|---|---|
tiles必須 | 牌 | 和了牌を含む手牌(副露を除く)。牌の書き方: 数字のあとに m(萬子)・p(筒子)・s(索子)・z(字牌。1 東 2 南 3 西 4 北 5 白 6 發 7 中)。0 は赤五(0m・0p・0s)。123m456p のようにまとめても、1m2m3m と 1 枚ずつでもよい | 234m567p23678s55s4s |
win必須 | 牌 1 枚 | 和了牌(tiles に含まれている 1 枚) | 4s |
by必須 | 選択 | 和了の仕方。tsumo(ツモ)か ron(ロン)tsumoron | tsumo |
melds | 副露 | 副露(鳴いた面子)。種類:牌 をカンマで区切る。種類は pon(ポン)・chi(チー)・kan(大明槓)・kakan(加槓)・ankan(暗槓)。例: pon:555z,chi:345s | pon:777z |
riichi | true / false | 立直しているか省略時 false | true |
double_riichi | true / false | ダブル立直か(立直を含む)省略時 false | |
ippatsu | true / false | 一発か(立直が要る)省略時 false | |
haitei | true / false | 最後の牌での和了か(ツモなら海底摸月、ロンなら河底撈魚)省略時 false | |
rinshan | true / false | 嶺上開花か(槓のあとのツモ)省略時 false | |
chankan | true / false | 槍槓か(加槓した牌でのロン)省略時 false | |
seat | 選択 | 自風(1z 東〜4z 北)。1z が親1z2z3z4z省略時 1z | 2z |
round | 選択 | 場風(1z 東〜4z 北)1z2z3z4z省略時 1z | |
dora | 牌 | ドラ表示牌(ドラそのものではなく、表示されている牌) | 3p |
ura | 牌 | 裏ドラ表示牌(立直が要る) | |
honba | 整数0〜99 | 本場。1 本につき 300 点(ツモは 1 人 100 点ずつ)を足す省略時 0 | |
kyotaku | 整数0〜99 | 供託の立直棒の本数。1 本 1,000 点を和了者が受け取る省略時 0 |
上の例のリクエストの、実際の応答です。
GET https://janten.net/api/v1/score?tiles=234m567p23678s55s4s&win=4s&by=tsumo&riichi=true&seat=2zyakumanCount)。使ったルールを rules に書いて返しますfuParts は符の内訳です。合計を 10 符単位に切り上げたものが fu(最低 30 符)。平和ツモは 20 符、七対子は 25 符の 1 項目。役満は符を数えないので fu・fuParts とも null ですpoints.base は本場・供託を除いた点、points.total は和了者が受け取る点です。本場は 1 本 300 点(ツモは 1 人 100 点ずつ)、供託は 1 本 1,000 点を足しますron、子のツモは tsumo.dealer・tsumo.nonDealer、親のツモは tsumo.each です{
"han": 4,
"fu": 20,
"yaku": [
{ "id": "riichi", "name": "立直", "han": 1 },
{ "id": "menzen_tsumo", "name": "門前清自摸和", "han": 1 },
{ "id": "pinfu", "name": "平和", "han": 1 },
{ "id": "tanyao", "name": "断么九", "han": 1 }
],
"fuParts": [{ "id": "pinfu_tsumo", "name": "平和ツモ", "fu": 20 }],
"limit": null,
"points": {
"base": 5200,
"total": 5200,
"tsumo": { "dealer": 2600, "nonDealer": 1300 },
"label": "1300-2600"
},
"rules": {
"kuitan": true,
"kiriageMangan": true,
"kazoeYakuman": false,
"doubleYakuman": false,
"compositeYakuman": true
}
}役は名前(ドラ2・自風(東) のように計算で変わる)とは別に、変わらない id で返します。一度公開した id は変えません。
| id | 役 | 翻 |
|---|---|---|
riichi | 立直 | 1 |
double_riichi | ダブル立直 | 2 |
ippatsu | 一発 | 1 |
menzen_tsumo | 門前清自摸和 | 1 |
tanyao | 断么九 | 1 |
pinfu | 平和 | 1 |
iipeikou | 一盃口 | 1 |
ryanpeikou | 二盃口 | 3 |
round_wind | 場風(東・南・西・北) | 1 |
seat_wind | 自風(東・南・西・北) | 1 |
haku | 白 | 1 |
hatsu | 發 | 1 |
chun | 中 | 1 |
ittsu | 一気通貫 | 2(鳴き 1) |
sanshoku_doujun | 三色同順 | 2(鳴き 1) |
sanshoku_doukou | 三色同刻 | 2 |
toitoi | 対々和 | 2 |
sankantsu | 三槓子 | 2 |
sanankou | 三暗刻 | 2 |
shousangen | 小三元 | 2 |
honitsu | 混一色 | 3(鳴き 2) |
chinitsu | 清一色 | 6(鳴き 5) |
honroutou | 混老頭 | 2 |
chanta | 混全帯么九 | 2(鳴き 1) |
junchan | 純全帯么九 | 3(鳴き 2) |
chiitoitsu | 七対子 | 2 |
haitei | 海底摸月 | 1 |
houtei | 河底撈魚 | 1 |
rinshan | 嶺上開花 | 1 |
chankan | 槍槓 | 1 |
dora | ドラ(枚数を名前に付ける) | 枚数 |
aka_dora | 赤ドラ | 枚数 |
ura_dora | 裏ドラ | 枚数 |
tenhou | 天和 | 役満 |
chiihou | 地和 | 役満 |
suukantsu | 四槓子 | 役満 |
kokushi | 国士無双 | 役満 |
kokushi_13 | 国士無双十三面 | 役満 |
suuankou | 四暗刻 | 役満 |
suuankou_tanki | 四暗刻単騎 | 役満 |
daisangen | 大三元 | 役満 |
tsuuiisou | 字一色 | 役満 |
chinroutou | 清老頭 | 役満 |
ryuuiisou | 緑一色 | 役満 |
daisuushii | 大四喜 | 役満 |
shousuushii | 小四喜 | 役満 |
chuuren | 九蓮宝燈 | 役満 |
junsei_chuuren | 純正九蓮宝燈 | 役満 |
RFC 9457 の application/problem+json で返します。param と position(何文字目か)で場所を示します。
| type | 状態 | いつ |
|---|---|---|
https://janten.net/api#error-invalid-parameter | 400 | 牌の書き方の誤り・和了牌が手牌に無い・手牌+副露 × 3 が 14 枚でない・副露の形の誤り・同じ牌 5 枚以上 |
https://janten.net/api#error-not-winning-hand | 422 | 和了の形になっていない(応答の shanten に向聴数) |
https://janten.net/api#error-no-yaku | 422 | 和了の形だが役が無い(ドラだけ) |
https://janten.net/api#error-inconsistent-situation | 422 | 鳴いた手で立直・立直なしの一発や裏ドラ・ロンの嶺上開花・ツモの槍槓・河底と槍槓・一発と嶺上開花など |
https://janten.net/api#error-rate-limited | 429 | IP ごとに 1 分 60 回を超えた |