NEM Twitter tip bot websocket API reference
この tipbot のもう一つの特徴としてAPI経由で全ての操作を行えることが挙げられます。 このAPIを使用したサイトの例として NEMbookが挙げられます。 tipbot により承認を受けたサイトにはアクセスキーが登録され、上位のアクセス権限が付与されます。
コマンド形式
- コマンドには
request
、streaming
の2タイプ存在します。 request
コマンドはには大まかに bot , user , account , nem , ex(change) に分かれ、ユーザーがコマンドを送信してデータを受け取ります。request
はユーザーがコマンドを送信してデータを受け取る流れになっています。streaming
はユーザーの操作に関わらず、tipbot やユーザーに関わるデータを送信します。- コマンドの形式によらず送信データ・受信データの形式は一貫しています。
- Mosaic・XEMの数量表記は 全て整数値 です。
コマンド一覧
ユーザー権限
websocket にアクセスするユーザーには権限が与えられます。
level 0 : guest
level 1 : login user
level 2 : login user (Enhanced)
level 3 : contents provider
level 4 : contents provider (Enhanced)
level 255 : admin
- 初期アクセス時は level 0 が与えられます。
- Twitterによるログインを行うと level 1 が与えられ、接続が切れるまで維持されます。
- さらに認証を行うとEnhanced(権限強化状態)になります。NEMの引き出し、投げ銭などを行えるようになります。
- tipbot 製作者に申請する事によりコンテンツプロバイダー権限(CPP)が与えられます。
request
request データ形式
送信データ
{
"command": COMMAND NAME,
"data": DATA,
"uuid": UNIQUE_ID
}
- COMMAND NAME によりDATAを問わないものが存在します。その場合はrequestについて明示しません。
- 明示されないDATAにはダミーデータ
{"dummy":"data"}
入力してください。 uuid
はユーザーが指定できる0以外の数字です。受信データの識別を目的に導入します。
受信データ
{
"command": COMMAND NAME,
"type": "request",
"time": UNIX TIMESTAMP,
"spent_msec": X (msec),
"data": DATA,
"uuid": UNIQUE_ID,
"result": True or False
}
- アクセス権限が足りない・DATAの形式が間違っている場合、
result
がFalse
になり、DATAに詳細なエラーが示されます。 - TYPE は
request
またはstreaming
の二種類のみです。 - spent_msec はコマンド処理にかかった時間を示します。
- spent_msec はサーバー内で記録され、API制限の目安として利用されます。
uuid
は送信データにて指定されたuuidです。送信時に指定されなければ0が返ってきます。
コネクション時データ
{
"level": 0,
"user_code": "ddf8b984fdba0d878b64afbbd1bc26d38f32096767825889e0b94481f5f0ef8b",
"screen": null,
"tag": null,
"time": 1504172328
}
- コネクションが成立すると5つのデータが渡されます。
- code はユーザーに渡される識別用コードです。
request コマンド bot
COMMAND NAME | need level |
---|---|
bot/info | 0 |
bot/stop | 255 |
bot/debug | 0 |
bot/info
- tipbot の状態を返します。
- uptimeはサーバーが起動を開始してからの秒数を返します。
- ws_userは現在コネクトされているユーザーの数です。
- threadはサーバー内の起動しているスレッド群を示します。
response
{
"net": "testnet",
"height": 1090647,
"address": "TA7CKYFLAKGE26BWROOI3TCCR27MSFWSVUA66D5J",
"uptime": 2212,
"ws_user": 2,
"thread": [
"MainThread", "streaming", "incomimg", "ws_ticker", "ws_server",
"analyze", "price", "lottery"
],
"version": "1.2.dev"
}
bot/stop
response
{
"status": true
}
bot/debug
- デバッグ情報が流れてきます。
- WS API 開発者向けです、一般に公開されていません。
- WS API開発者は声をかけて下さい、アクセスキーを配布します。
request
{ "pass": "password" }
respnse
true
request コマンド user
COMMAND NAME | need level |
---|---|
user/info | 0 |
user/offer | 0 |
user/check | 0 |
user/upgrade | 1 |
user/pubkey/setup | 2 |
user/pubkey/login | 0 |
user/oauth/setup | 2 |
user/oauth/verify | 0 |
user/shortcut | 1 |
user/shortcut/push | 1 |
user/shortcut/delete | 1 |
user/info
- ユーザーの公開情報を返します。
- user_code はログインユーザーに与えられるユニークなHEXコードです。
request は空文字です。
response
{
"screen_name": "@example_user",
"level": 1,
"user_code": "08ccaee2e4a917b781d9b48ee8a927ff197ead224f65f43c3dd445a9785aac7a",
"tag": "1234567abc",
"debug": false,
"login_time": 1509022077,
"importance": 0.123563
}
user/offer
- ユーザーアカウントにログインします。
- tipbot よりDM経由でPINコードが送られてきますので
user/check
より入力して下さい。 - 何者かが不正にアクセスしてPINコードが発行された可能性がある場合は、
user/check
へ絶対に入力しないで下さい。 - エラーコード(Twitterのエラーコードと同一です。こちらをご覧下さい)
- 144, No status found with that ID.
- 150, You cannot send messages to users who are not following you.
request
{
"screen_name": "@request_user"
}
response
{
"screen_name": "@request_user",
"send_pin": true
}
user/check
- PINコードの入力に失敗した場合、DM経由でユーザーにレポートされます。
- PINコードはワンタイムトークンです。入力に失敗した場合、PINコードの再発行が必要になります。
5回 連続で失敗した場合、アカウントがロックされます。
request
{
"screen_name": "@request_user",
"pincode": 48327
}
response
{
"screen_name": "@request_user",
"level": 1
}
user/upgrade
- level を2以上に昇格します。既に level=1 である事が必要です。
- 出金・投げ銭する場合に必要になります。
- DM経由でPINコードが発行されます。
- またlevel1以上のユーザーはレベルを下げることもできます。PIN認証は必要ありません。
request
{
"require_level": 2
}
response
{
"send_pin": true
}
※コンテンツプロバイダーが認証する場合
unixtime を16進数(0x599800b9)+pubkey のバイナリを prikey で署名します。
ですので、0x599800b90cda844db921f4bdf58eb8e9c2741e56194b9890e956bb39a68bbbd100cc4cd0 の署名になります。
検証が行われると即 require_level に変更されPIN認証は不要です。署名アルゴリズムはNEMのものと同じです。
time はサーバー受信時の時間と5分以上差があってはいけません
request
{
"require_level": 5,
"time": 1503133881,
"pubkey" : "0cda844db921f4bdf58eb8e9c2741e56194b9890e956bb39a68bbbd100cc4cd0",
"sign": "a9c9c938efe78c244261a920f032a803f361561a862722ccdc2d07b98e542e3c823883169391a842dcef80bf24eeca5e4c1ed2122a59d7e3f486bf3d70d75903"
}
response
{
"send_pin": false
}
user/pubkey/setup
- 公開鍵を登録します。
level
にて公開鍵ログイン時の権限を指定します。安全の為に1にして下さい。
request
{
"pubkey": "7f59e2388d5c472b4fc60d78a0bcb59c60180f2d7cd3ba4c8cfa365d542adb7d",
"level": 1
}
response
{"level": 1}
user/pubkey/login
- 公開鍵でログインします。
- ログイン時に渡される
user_code
を公開鍵の署名によりsetupで指定されたLevelに昇格します。
request
{
"screen_name": "@example_name",
"sign": "73de51fdc0e4280a86800efb465........fe3ae0cb6354405022689a5b1d4"
}
response
{"level": 1}
user/oauth/setup
- Twitterのoauth認証キーを登録します。
- 権限は
アクセス権 読み、書き、及びダイレクトメッセージ
です、権限が大きいので気を付けて下さい。
response
{"redirect_url": "https://api.twitter.com/oauth/authorize?oauth_token=4LUDBODNDI4453oOINOIN"}
user/oauth/verify
user/oauth/setup
のURLにアクセスすると2つのパラメータが得られます。- 例:
http://namuyan.dip.jp/?oauth_token=4LUDBODNDI4453oOINOIN&oauth_verifier=KFEJS35iOJWODMO
request
{
"oauth_token": "4LUDBODNDI4453oOINOIN",
"oauth_verifier": "KFEJS35iOJWODMO"
}
response
{
"result": true
}
user/shortcut
- ユーザーが登録したショートカットを表示します。
- 最大30件まで登録が可能です。
- この他にグローバルショートカットが存在します。適用優先度はuuidが小さい順です。
- フラグにより取得するショートカットを分けられます。
request
{
"user": true,
"global": true
}
response
[
{
"uuid": 32,
"user": "@user_id",
"original_name": "namuyan:nemurin",
"short_name": "nemrin",
"time": 1501665000
},
{
"uuid": 21,
"user": "@user_id",
"original_name": "gox:gox",
"short_name": "GOX",
"time": 1501325000
},
{
"uuid": 2,
"user": "global",
"original_name": "nem:xem",
"short_name": "XEM",
"time": 1501000000
}
]
user/shortcut/push
- ショートカットを登録します。Mosaic名は長いのが多いです、それを一々打ち込むのはきついです。
- 以下の登録例を使用すると、
@tipnem tip @recipient 34 nemrin ありがとう|д゚)
のように投げられます。 - type=user ショートカットの適用範囲は 登録ユーザーのみ です。
- type=global ショートカットの適用範囲は 全ユーザー です。level3 以上の権限が必要です。
request
{
"original_name": "namuyan:nemurin",
"short_name": "nemrin",
"type": "user"
}
response
{
"uuid": 32
}
user/shortcut/delete
- ショートカットには uuid が割り振られています。
- 以下の例ですと、
namuyan:nemurin
が削除されます。 - グローバルショートカットはlevel3 以上の権限が必要です。
request
{
"uuid": 32
}
respose
{
"result": true
}
request コマンド account
COMMAND NAME | need level |
---|---|
account/balance | 1 |
account/balance/unconfirmed | 1 |
account/history | 1 |
account/history/check | 1 |
account/history/delete | 1 |
account/throw | 2 |
account/lottery/setup | 2 |
account/balance
- アカウントの残高を示します。
- all, network, tip の三つに分かれ、それぞれ合算、NEMネットワークからの入出金、投げ銭による残高を示します。
nem:xem
はゼロであっても必ず存在します。
response
{
"all": {
"nem:xem": 10000000
},
"network": {
"nem:xem": 10000000
},
"tip": {
"nem:xem": 0
}
}
account/balance/unconfirmed
- 確認されていないコインの残高を示します。
- 6認証経過していない、受け取ったもののCheckしていない が挙げられます。
- 以下の例では10XEMと謎のMosaicが入金中です。
response
{
"network": {
"cxaxa:xaxzdddsssssssssssssssssssssssss": 12,
"nem:xem": 10000000
},
"tip": {
"nem:xem": 0
}
}
account/history
- 投げ銭の履歴を取得します。1リクエスト当たり最大25件取得します。
- 取得範囲指定にuuidを使用します。uuidより小さな履歴を取得します。
- キーにuuidが存在しない場合、最新の履歴を取得します。
- 受け取ったユーザーはcheckedを真にしなければ受け取ったことになりません。
- 送り主や受け取り主のIDを指定することも可能です。(片方のみ)
request (@your_id => @recipient_id)
{
"uuid": 34567,
"sender": "@sender_id",
"recipient": "@recipient_id"
}
response
[
{
"uuid": 12345,
"sender": "@sender_id",
"recipient": "@your_id",
"mosaic_name": "nem:xem",
"amount": 1000000,
"time": 1503124526300,
"twitter": {
"original": {
"id": 797778180102754325,
"id_str": "797778180102754325",
"text": "投げ銭下さい、何でもしますから"
},
"tip": {
"id": 797778180102754330,
"id_str": "797778180102754330",
"text": "@tipnem tip @recipient 1 nem 今なんでもって"
},
"reply": {
"id": 797778180102754351,
"id_str": "797778180102754351",
"text": "@tipnem @recipient ナンデモスルトハイッテイナイ"
}
},
"checked": true
},
{
"uuid": 12342,
"sender": "@sender_id",
"recipient": "@your_id",
"mosaic_name": "namuyan:nemrin",
"amount": 36,
"time": 1503124526220,
"twitter": {
"original": {
"id": 797778180102754300,
"id_str": "797778180102754300",
"text": "投げられた"
},
"tip": {
"id": 797778180102754312,
"id_str": "797778180102754312",
"text": "@tipnem tip @recipient 36 nemurin 投げたがリプが無い時"
},
"reply": {}
},
"checked": true
},
{
"uuid": 12340,
"sender": "@your_id",
"recipient": "@recipient_id",
"mosaic_name": "nem:xem",
"amount": 100000,
"time": 1503124526110,
"twitter": {
"original": {},
"tip": {
"id": 797778180102754289,
"id_str": "797778180102754289",
"text": "@tipnem tip @recipient 0.1 nem 唐突に投げた、リプも無い、チェックもされていない"
},
"reply": {}
},
"checked": false
},
{
"uuid": 12339,
"sender": "@your_id",
"recipient": "@recipient_id",
"mosaic_name": "nem:xem",
"amount": 100000,
"time": 1503124526001,
"twitter": {
"original": {},
"tip": {
"id": null,
"id_str": null,
"text": "account/throwコマンドを使用して送ります、アナウンスしていません"
},
"reply": {}
},
"checked": false
}
]
account/history/check
- 受け取った投げ銭は Check しなければ受け取ったことになりません。
- account/history より取得したuuidを指定します。
request
{
"uuid": 12342
}
response
{
"uuid": 12342
}
account/history/delete
- 投げ銭を取り消したい時に使用します。ただし、相手がCheckedした投げ銭は取り消せません。
- account/history より取得したuuidを指定します。
request
{
"uuid": 12340
}
response
{
"uuid": 12340
}
account/throw
- コマンド経由で投げ銭を行います。
- アカウントが level2 以上でないと権限不足により失敗します。
このコマンドを実行する事により level=1 に戻ります。継続されます。- 一般ユーザーはsenderをログイン名以外に変更できません。
- announceを真にすると tipbot がつぶやいてくれます。
request
{
"sender": "@sender",
"recipient": "@recipient",
"mosaic": "nem:xem",
"amount": 1000000,
"text": "1XEMを送ります",
"announce": true
}
response
{
"uuid": 23456
}
account/lottery/setup
- 『ねむ抽選』を作成します。
- 利用手数料
- Lotteryが2つ以下のみ稼働中の場合、
0 namuyan:nemrin
(ただし所有している事) - Lotteryが3つ以上稼働している場合、
5 namuyan:nemrin
- Lotteryが2つ以下のみ稼働中の場合、
- 作成すると配布されるMosaic類は拘束され、例外が発生しない限り中止できません。
- 配布するMosaicはXEMに限らず複数種類を一度に指定できます。
- 当選者は最小1名、最大30名指定できます。
- 抽選期間は3時間~14日を指定できます。抽選終了時に時間を指定しますが±30分ずれます。
- 抽選が正しく作成されましたら必ずDMが送られてきます、これを確認した上で抽選が作成されたと判断して下さい。
- 副垢対策に応募者集団を選別することが可能です。3つの方法が用意されています。
simple_fake_check
簡易的、TipnemとFF関係に無いユーザーも使用できます。鍵垢は応募できません。deep_fake_check
TipnemとFF関係にあるユーザーの解析データを元に副垢を識別します。my_follower
ねむ抽選作成者のフォロワーに限定します。
simple_fake_check_min
は閾値を指定します。13程度をお勧めします。- deep_fake_checkの値は0に近いほどバランスが良いユーザーである事を示します。(恐らく、要改良)
deep_fake_check_score_*
は-5,10をお勧めします。prize
は配布するMosaicを記述します。5XEM, 1.2sample:mosaicが各1名, 1XEMが2名に当たります。original_id
は応募用のツイートを指定します。 Twitterにて 左クリックでツイートへのリンクをコピー
します。
このリンクでは、https://twitter.com/namuyan_mine/status/913763726913761281
913763726913761281
が original_idとなります。- 注意点:original_idのツイートを抽選が終わる前に削除した場合、賞金は全て没収されてしまいます。 キャンセルはできませんのでご注意ください。
request
{
"distribute_order": {
"simple_fake_check": true,
"simple_fake_check_min": 15,
"deep_fake_check": true,
"deep_fake_check_score_min": -2,
"deep_fake_check_score_max": 2,
"my_follower": true,
"prize": [
["nem:xem", 5000000, 6],
["nem:xem", 1000000, 6],
["nem:xem", 1000000, 6],
["sample:mosaic", 120, 2]
]
},
"original_id": 913763726913761281,
"finish_time": 1234567890
}
response
{"uuid": 1234}
account/lottery/status
- 現在行われているねむ抽選の一覧を取得します。
- requestにuuidが含まれる場合uuidより小さいものを最大8つ返します。
distribute_order
: account/lottery/setupで指定したdistribute_orderと同一です。retweet
: 対象のツイートをリツイートしたユーザーのID一覧です。distribution
: ねむ抽選による結果を示します。未分配Nullとなります。finished
: ねむ抽選が終了したか示します。0 未終了, 1 正常終了, 2 異常終了
request
{"uuid": 1234}
response
[
{
"uuid": 7,
"screen": "@user_name",
"url": "https://twitter.com/user_name/status/1234567890123",
"distribute_order": {
"simple_fake_check": false,
"simple_fake_check_min": 15,
"deep_fake_check": false,
"deep_fake_check_score_min": -2,
"deep_fake_check_score_max": 2,
"my_follower": false,
"prize": [
["nem:xem",5000000,6],
["nem:xem",1000000,6],
["nem:xem",1000000,6],
["namutest:c0ban",2,0]
]
},
"retweet": [
"123456789012345567",
"345678901234567890",
"7654321098",
"6543123456"
],
"distribution": null,
"start": 1507964344,
"finish": 1507971600,
"finished": 2
}
]
request コマンド nem
COMMAND NAME | need level |
---|---|
nem/history | 1 |
nem/gettag | 1 |
nem/send | 2 |
nem/send/estimate | 1 |
nem/lost | 1 |
nem/mosaic/status | 0 |
nem/mosaic/img | 0 |
nem/mosaic/update | 1 |
nem/history
- 送受金の履歴を取得します。1リクエスト当たり最大25件取得します。
- 取得範囲指定にuuidを使用します。uuidより小さな履歴を取得します。
- キーにuuidが存在しない場合、最新の履歴を取得します。
- 受け取り確定まで6認証必要です。
- outgoing=0, incoming=1 に変更することで受金履歴・送金履歴の取得を変更します。
request
{
"uuid": 4532,
"type": 0
}
type=0 outgoing response
[
{
"uuid": 26,
"type": "outgoing",
"txhash": "ea105b4bda572a9bd4f916985c69f65011e3cbfab2bcf38b7398bd33c05a5d40",
"sender": "@sender_id",
"recipient": "TDEK3DOKN54XWEVUNXJOLWDJMYEF2G7HPK2LRU5W",
"message": "check15",
"mosaics": {
"nem:xem": 1050000
},
"height": 1088468,
"utime": 1503593300
},
{
"uuid": 14,
"type": "outgoing",
"txhash": "907d373a4af9265d0fc36ef7bc2f8d42a25bff6b72cd2a091a0ae7ee8341dcb7",
"sender": "@sender_id",
"recipient": "TDEK3DOKN54XWEVUNXJOLWDJMYEF2G7HPK2LRU5W",
"message": "check10",
"mosaics": {
"nem:xem": 1050000
},
"height": 1088428,
"utime": 1503591181
}
]
type=1 incoming response
[
{
"uuid": 17,
"type": "incoming",
"txhash": "cd5585eda8351fa43ae44cc54a2cf7321597de48505d5d912c88c3a76582924e",
"sender": "TDEK3DOKN54XWEVUNXJOLWDJMYEF2G7HPK2LRU5W",
"recipient": "@recipient_id",
"message": "3b49dfaf51 入金",
"mosaics": {
"nem:xem": 10000000
},
"height": 1087678,
"utime": 1503545925
},
{
"uuid": 23,
"type": "incoming",
"txhash": "d7277c02176b2739ab8327ea14ad65b44e40742b28875c3698964f632bd82e56",
"sender": "TDEK3DOKN54XWEVUNXJOLWDJMYEF2G7HPK2LRU5W",
"recipient": "@recipient_id",
"message": "3b49dfaf51 送ります☺",
"mosaics": {
"cxaxa:xaxzdddsssssssssssssssssssssssss": 12,
"nem:xem": 10000000
},
"height": 1093298,
"utime": 1503885857
}
]
nem/get_tag
- NEMの受金用のタグを取得します。タグは10文字の16進数です。
- NEM送金時に
168ab36f4a ネムネムネムリンコ
のように先頭に10文字を付加して送金して下さい。 - 上記のように10文字にさらにメッセージを加える事も可能です。
- 送金時は必ずnanowalletを使用し、少額で試してからにして下さい。
- 一度生成したタグは変更できません。
request は空文字
response
{
"tag": "168ab36f4a"
}
nem/send
- アカウントよりNEMを送金します。
- アカウントが level=2 でないと権限不足により失敗します。
このコマンドを実行する事により level=1 に戻ります。戻りません。
request
{
"sender": "@sender_id",
"recipient": "TALICE6KJ2SRSIJFVVFFH6ICUIYZ2ZZGNFUDJGRT",
"mosaics": {
"nem:xem": 1000000,
"valu:youtuber": 37564
},
"message": "send mosaics"
}
response
{
"txhash": "83e594edad2579de5ac338c5cef5aa5ea3ca46c4c78518a49e04c6528358d836"
}
nem/send/estimate
- アカウントよりNEMを送金する前に送金が可能か結果を返します。可能であれば
result=true
- 実際にアカウントから差し引かれる総計は all です。
request
{
"sender": "@sender_id",
"recipient": "TALICE6KJ2SRSIJFVVFFH6ICUIYZ2ZZGNFUDJGRT",
"mosaics": {
"nem:xem": 1000000,
"valu:youtuber": 37564
},
"message": "send mosaics"
}
response
{
"all": {
"nem:xem": 300000,
"valu:youtuber": 37564,
"levy:mosaic": 10
},
"fee": {
"send": {
"nem:xem": 50000
},
"levy": {
"nem:xem": 0,
"levy:mosaic": 10
},
"msg": {
"nem:xem": 50000
}
},
"result": true
}
nem/lost
- Messageを間違えたなど Tipbot に誤送金してしまった場合に使用します。
- 署名する事で送金者であると証明し、アカウントの残高に加えます。
- 署名が完了するとトランザクションの受け手が振り替えられます。
- この方法以外の誤送金対応は受け付けません。
- Multisigは秘密鍵が公開されていますのでこのコマンドは使用できません。
- 取引所からの送金は大抵Multisigですので 必ずnanowalletから送金 して下さい。
- 送金時に用いたアドレスの秘密鍵で
user_code + tx hash
を署名したものを渡してください。
request
{
"txhash": "dfa875cad4888b0a3aed7b12674a8b195363a2bef51faf3358ea3da1133c249c",
"sign": "38054c1f7d03f36ae6a1b737eb9300421c.......d2280f4cb234daf6dfecf5025e18399d7",
"pubkey": "a8016c58439a21ad1f164c223297a2c4e97c1d64c3d8d3a19bef042d5a35c531"
}
response
{"uuid": 1234}
nem/mosaic/status
- Mosaicの詳細を取得します。
request
[
"namuyan:nemurin", "valu:youtuber", "error:error"
]
response
{
"namuyan:nemurin": {
"creator": "TB235JLAOGALDATDJC7LXDMZSDMFBUMDVIBFVQPF",
"description": "NEMRIN",
"image": {
"register": "@namuyan_mine",
"type": 0,
"url": "http://imgur.com/aPrj123.png"
},
"properties": {
"divisibility": 0,
"initialSupply": 0,
"supplyMutable": true,
"transferable": true
},
"levy": {
"fee": 100000000,
"recipient": "TB235JLAOGALDATDJC7LXDMZSDMFBUMDVIBFVQPF",
"type": 2,
"mosaic": "nem:xem"
}
},
"valu:youtuber": {
"creator": "TB235JLAOGALDATDJC7LXDMZSDMFBUMDVIBFVQPF",
"description": "test",
"image": {
"register": null,
"type": 0,
"url": "http://imgur.com/aPrj123.png"
},
"properties": {
"divisibility": 0,
"initialSupply": 0,
"supplyMutable": true,
"transferable": true
},
"levy": {}
},
"error:error": null
}
nem/mosaic/img
- Mosaicのサムネイルを取得します。
- Mosaicにエラーがある、またはサムネイルが設定されていない場合は http://i.imgur.com/9ZuJwTs.png が用いられます。
request
[
"namuyan:nemurin", "valu:youtuber", "error:error"
]
response
{
"namuyan:nemurin": "http://i.imgur.com/h9SmLUb.png",
"valu:youtuber": "http://i.imgur.com/9ZuJwTs.png",
"error:error": "http://i.imgur.com/9ZuJwTs.png"
}
nem/mosaic/update
- Mosaicにサムネイルを設定します。Mosaic名はショートカットでもOKです。
- 登録方法は2つ存在します。
- ユーザー登録:所有するMosaicにおいて、Mosaicの作成者でなくても設定できます。
- 署名登録:Mosaic作成者の署名により登録されます。ユーザー登録を上書きします。
- こんなエラーが出た場合
"Cannot find creator address from your deposit addresses."
署名登録には一度だけMosaicを作成したアドレスからTipnemに送金する必要があります。 - type 1=ユーザー登録, 2=署名登録 で指定してください。
- イメージは最大100kbです。
request
{
"mosaic_name": "namuyan:nemurin",
"mosaic_url": "http://example.com/iamge.png",
"type": 1
}
response
{
"mosaic_name": "namuyan:nemurin"
}
price コマンド price
COMMAND NAME | need level |
---|---|
price/all | 0 |
price/all
- 通貨ペアの交換比率を取得します。全て円換算です。
xem_jpy, mona_jpy, btc_jpy, eth_jpy
- 各通貨ペアのリストは
[円換算価格、安定性]
を示します。 - 円換算価格とは、Zaifより取得した最終価格の10分間の平均値です。
- 安定性とは、統計的にみて価格が安定しているかを示します。また起動直後もfalseになります。
- 下記の場合、MONA/JPYの相場が不安定である為falseになっています。
response
{
"xem_jpy": [23, true],
"mona_jpy": [385.6, false],
"btc_jpy": [632372.5, true],
"eth_jpy": [34100, true]
}
shop コマンド shop
COMMAND NAME | need level |
---|---|
shop/item | 0 |
shop/item/search | 0 |
shop/seller/setup | 2 |
shop/seller/edit | 2 |
shop/buyer/good | 1 |
shop/buyer/buy | 2 |
NEMERとNEMERを繋げる簡易ショップ
shop/item
- idを指定してshopの詳細情報を取得します。
html
articleにHTMLタグを出力します。<A><SPAM><IMG><BR>のみが対象です。他のタグはクオートでエスケープされています。sell_now
: 販売中個数、sold_out
: 販売済み個数- request
{ "uuid": 1, "html": true }
response
{ "seller": "@example_user", "image": "https://i.imgur.com/uOQw7hR.jpg", "title": "お寿司の詰め合わせ", "article": "こちらお寿司の詰め合わせになります。<BR>\nテスト用です。<IMG src=\"https://i.imgur.com/uOQw7hR.jpg\" alt=\"https://i.imgur.com/uOQw7hR.jpg\" class=\"tipnem-shop-img\">", "article_index": "詰め合わせ,お寿司,テスト用", "mosaic": "XEM", "amount": 1000000, "divisibility": 6, "sell_now": 1, "sold_out": 2, "deleted": 0, "creation_time": 1509696523, "finish_time": 1510041600 }
shop/item/search
- 一度に25件出力します。
index
にてページ数を指定できます。 like
によりarticleの検索を行う事ができます。AND,ORなどはないです。index, like
はオプションです。なくてもかまいません。
request
{
"like": "寿司",
"index": 0
}
response
[
{
"uuid": 1,
"image": "https://i.imgur.com/uOQw7hR.jpg",
"good": 0,
"seller": "@namuyan_mine",
"mosaic": "XEM",
"amount": 1000000,
"divisibility": 6,
"title": "お寿司の詰め合わせ",
"article_index": "詰め合わせ,お寿司,テスト用",
"creation_time": 1509696523,
"finish_time": 1510041600
},
{
"次の": "ショップ"
}
]
shop/seller/setup
- shopを新規に作成します。1アカウントにつき20まで作成できます。
- 作成するにはユーザーの重要度が1より大きくなければなりません。
作成すると1namuyan:nemrin取られます。image
サムネイルをのリンクを指定します。title
5~30文字以内です。article
10~2000文字以内で商品の説明をして下さい。以下のタグを用いる事ができます。- [url]http://example.com[/url] ハイパーリンク
- [img][/img] 画像リンク
- [color=#8080FF]色シテイ[/color] 文字の色を指定
- [size=85]大きさ指定[/size] 文字の大きさを指定
- [s]横線消し[/s] 文字を横線で消します
mosaic x, amount y, number z
下記の例だと、1商品を1XEMで3個売るという事になります。 ここでMosaicはXEMの他に一般的なMosaicから通貨単位まで自由に設定できます。finish_time
shopの終了時間を指定できます。最大14日まで可能です。
request
{
"image": "https://i.imgur.com/uOQw7hR.jpg",
"title": "お寿司の詰め合わせ",
"article": "こちらお寿司の詰め合わせになります。\nテスト用です。[img]https://i.imgur.com/uOQw7hR.jpg[/img]",
"mosaic": "nem:xem",
"amount": 1000000,
"number": 3,
"finish_time": "1510041600"
}
response
{"uuid": 123}
shop/seller/edit
- 販売者がshopを編集する事ができます。
- 編集対象は
number, image, article, deleted, finish_time
number
販売個数を相対的に変化させます。+1なら販売数を1個増やし、-1なら1個減らします。image
サムネイルを変更します。画像リンクを指定。article
説明文を変えます。オリジナル文章への横線追加とオリジナルの末尾に文章の追加する事だけ許されています。deleted
ショップを削除します。finish_time
ショップ終了時間を変更します。変更時から±14日の変更が可能です。ショップの延長が可能です。
- 以下の例では、在庫を一個減らす。
request
{
"uuid": 1,
"target": "number",
"content": -1
}
response
{ "uuid": 1 }
shop/buyer/good
- 購入者は販売者を評価する事ができます。
- イイネの反対の評価を下すことはできません。
request
{ "uuid": 1 }
response
{ "uuid": 1 }
shop/buyer/buy
streaming コマンド一覧
streaming
コマンド一覧
COMMAND NAME | need level |
---|---|
nis/block | 0 |
nis/incoming | 1 |
tip/receive | 1 |
streamingデータ形式
受信データ
{
"command": COMMAND NAME,
"type": "streaming",
"time": UNIX TIMESTAMP,
"data": DATA,
"result": True or False
}
- tipbot に関するユーザーデータが流れてきます。
- request と変わるのが type が streaming になるだけです。
nis/block
- 新規に取得したBlock情報を流します。
- 注意点:10s毎にポーリングしておりBlock高を更新した時に通知されます。
ですので10sの内に2つ以上Blockが進んだ場合heightが飛んで通知されます。
{
"height": 1082147,
"time": 1575623518,
"type": 1,
"signer": "TA7CKYFLAKGE26BWROOI3TCCR27MSFWSVUA66D5J"
}
nis/incoming
- アカウントに入金されたトランザクションを流します。
{
"height": 1095535,
"txhash": "19d9f21e3d3e2d0dd84d1c080cbdf5b613af3b936ed6923a77f1326bb29f0e23",
"screen_name": "@namuyan_mine",
"sender": "TDTM7NAX3EZ2KD3O22SBRMLFREYWHPTW2GXTSL5W",
"mosaics": {
"nem:xem": 98000000
},
"fee": 2000000,
"message": "3b49dfaf51 テスト",
"message_type": 1,
"time": 1504020708
}
tip/receive
- ユーザーに投げ銭された履歴を流します。
{
"uuid": 123,
"sender": "@sender_id",
"recipient": "@recipient_id",
"mosaic": "nem:xem",
"amount": 7974000,
"original_txt": "暴落ニャニャニャ(痙攣",
"tip_txt": "餌だぞホラ",
"time": 1504021227
}