公式ドキュメントはこちら
IIJmioクーポンスイッチAPI仕様
https://www.iijmio.jp/guide/outline/hdd/mioponapi.jsp
今回はとりあえず自分のデータをAPIで取得するまでの手順を書いた。
1. デベロッパIDの取得
まずはデベロッパIDを発行してもらう必要がある。
デベロッパコンソール画面からmioIDとmioパスワードでログインする。
https://api.iijmio.jp/
ログインすると
の許可を求められるので「許可する」をクリックする。
これで自分のデベロッパID
が発行された。
また、この画面でアプリ名
とコールバック先のリダイレクトURI
を入力し「適用」をクリックして登録しておく。
ちなみにヘルプ画面から「デベロッパIDの再発行」ができる。
ここまでが OAuth2.0 認証を行うための事前作業になる。
2. アクセストークンの取得
続いてAPIを使用するために必要なアクセストークンを取得するまでの手順。
認可エンドポイントURLにアクセスする。
URL
https://api.iijmio.jp/mobile/d/v1/authorization/
必須のクエリパラメータ
response_type
プロトコルフローはインプリシットグラントなのでtoken
を指定。client_id
上記で取得したデベロッパIDを指定。state
CSRF対策用の任意の文字列を指定。
サンプル
https://api.iijmio.jp/mobile/d/v1/authorization/?response_type=token&client_id=xxxxxx&state=ABC123456&redirect_uri=http%3A%2F%2Fmy-site-domain.com
認可エンドポイントURLに上記パラメータを付与してアクセスするとログイン画面が表示されるので、 自分のmioIDとmioパスワードを入力してログインする。
ログインするとAPIで取得する
- クーポン残量の取得
- クーポンのON/OFF状態の取得
- クーポンのON/OFFの切り替え
- データ利用量の取得
の許可を求められるので「許可する」をクリックする。
すると認証サーバで認可処理が行われ、設定したリダイレクトURIにリダイレクトされる。
リダイレクト後のブラウザのURLを見るとハッシュフラグメントにアクセストークンなどのパラメータが付与されていることが確認できる。
サンプル
http://my-site-domain.com/#access_token=xxxxxx&state=ABC123456&token_type=Bearer&expiresIn=7776000
これでアクセストークンが取得できたので各種APIにアクセスできるようになった。
ちなみに expiresIn が7776000秒となっているのでこのアクセストークンの有効期間は90日間。
3. APIの実行
いよいよIIJmioクーポンスイッチAPIを実行する。
curlコマンドを使って試す。HTTPヘッダにデベロッパIDとアクセストークンを設定する。
クーポン残量照会・クーポンのON/OFF状態照会
curl -X GET https://api.iijmio.jp/mobile/d/v1/coupon/ \ -H 'X-IIJmio-Developer: xxxxxx' \ -H 'X-IIJmio-Authorization: xxxxxx'
レスポンス
{ "returnCode":"OK", "couponInfo":[ { "hddServiceCode":"hddxxxxxxxx", "coupon":[ { "volume":10, "expire":"201401", "type":"bundle" }, { "volume":500, "expire":"201402", "type":"bundle" }, { "volume":0, "expire":"201401", "type":"topup" }, { "volume":0, "expire":"201402", "type":"topup" }, { "volume":0, "expire":"201403", "type":"topup" }, { "volume":0, "expire":"201404", "type":"topup" } ], "hdoInfo":[ { "couponUse":false, "coupon":[ { "volume":null, "expire":null, "type":"sim" } ], "hdoServiceCode":"hdoxxxxxxxx", "sms":false, "number":"08012345678", "regulation":false, "iccid":"xxxxxxxxxxxxxxx" } ] } ] }
SIM内クーポンの返却機能は現在開発中です。開発完了までの期間は、volume が null として返ります。
とのこと。
クーポンのON/OFF
クーポンのON/OFFを切り替える。
- ON -> OFF
curl -X PUT https://api.iijmio.jp/mobile/d/v1/coupon/ \ -H 'X-IIJmio-Developer: xxxxxx' \ -H 'X-IIJmio-Authorization: xxxxxx' \ -H 'Content-Type: application/json' \ -d '{"couponInfo":[{"hdoInfo":[{"hdoServiceCode":"hdoxxxxxxxx","couponUse":true}]}]}'
レスポンス
{"returnCode": "OK"}
- OFF -> ON
curl -X PUT https://api.iijmio.jp/mobile/d/v1/coupon/ \ -H 'X-IIJmio-Developer: xxxxxx' \ -H 'X-IIJmio-Authorization: xxxxxx' \ -H 'Content-Type: application/json' \ -d '{"couponInfo":[{"hdoInfo":[{"hdoServiceCode":"hdoxxxxxxxx","couponUse":false}]}]}'
レスポンス
{"returnCode": "OK"}
データ利用量照会
過去30日分と当日のデータ利用量(MB単位)を日付順に返す。
curl -X GET https://api.iijmio.jp/mobile/d/v1/log/packet/ \ -H 'X-IIJmio-Developer: xxxxxx' \ -H 'X-IIJmio-Authorization: xxxxxx'
レスポンス
{ "packetLogInfo":[ { "hddServiceCode":"hddxxxxxxxx", "hdoInfo":[ { "hdoServiceCode":"hdoxxxxxxxx", "packetLog":[ { "date":"20140101", "withCoupon":0, "withoutCoupon":12 }, { "date":"20140102", "withCoupon":30, "withoutCoupon":1 }, { "date":"20140103", "withCoupon":2, "withoutCoupon":21 }, ...省略... ] } ] } ], "returnCode":"OK" }
ちなみにレスポンスヘッダは以下のようになっていた。
curl -I https://api.iijmio.jp/mobile/d/v1/coupon/ \ -H 'X-IIJmio-Developer: xxxxxx' \ -H 'X-IIJmio-Authorization: xxxxxx' HTTP/1.1 200 OK Date: Wed, 15 Jan 2014 02:37:57 GMT Server: Apache Content-Length: 641 Access-Control-Allow-Origin: * Access-Control-Allow-Headers: X-IIJmio-Developer,X-IIJmio-Authorization,X-IIJmio-Application,Content-Type Access-Control-Allow-Methods: GET,PUT Vary: Accept-Encoding Connection: close Content-Type: application/json