APIは、あらゆるソフトウェアサービスプロバイダの標準コンポーネントになりつつあります。オープンなAPIを利用することにより、開発者は自分の好きなプログラミング言語を使用してサービスプロバイダと対話することができます。特定のタスクを実行するためにWebコンソールにログインする代わりに、自動化されたマシンが、ユーザーの代わりに定期的なアクションを実行することができます。
このような背景から、MobingiもAPIリファレンスを公開しています。このAPIはすでにMobingiをご利用頂いている方々に先行して公開し、実際に試していただき、貴重なフィードバックをたくさんいただいております。私たちはそのフィードバックをもとに、品質を絶えず向上させることに努めています。
この記事では、この公開APIを使用してMobingi ALMの機能を操作する方法について説明します。実はMobingi Webコンソール自体もこのAPIをコールするHTML+CSS+Javascriptで構築されたフロントエンドアプリケーションに過ぎません。
それでは、Mobingi APIの利用方法を見ていきましょう。
ステップ1 – client_id
と client_secret
を取得する
Mobingi ALMにログインし、一般設定のページに進んでください。 Open OAuth Applicationsタブをクリックすると、次の画面のようなページが表示されます。
ここから取得できるclient_idとclient_secretは、次のステップで使用します。
もし何も表示されない場合は、こちらの申し込みフォームからclient_idとclient_secretの発行をお申込みいただけます。
ステップ2 – access_token
を取得する
MobingiのAPIはRESTを中心に構成されており、認証にはOAuth2を使用します。そのため、アプリケーションはまず、OAuth2認証を行う必要があります。OAuthについての詳細はこちらを御覧ください。
認証は、エンドポイントhttps://api.mobingi.com/v2/access_token
に次のパラメータを使用してHTTP POST要求を行うことによって行われます(現在有効なAPIバージョンはv2 /
のみです)。
- grant_type
- client_id
- client_secret
grant_typeの値は常に “client_credentials
“で、client_idとclient_secretの値はステップ1で取得した値です。
リクエストの例:
curl -X POST https://api.mobingi.com/v2/access_token \ -H "Content-Type: application/json" \ -d '{"grant_type":"client_credentials","client_id":"lg-5447826c870e7-xBENZSJEN-tm","client_secret":"xBENZSJEN7zl!xjfp7HPp4&zk8Y"}'
リクエストが成功すると次のようなレスポンスが返ってきます。:
{"token_type":"Bearer","expires_in":43200,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjI1NjMyZTIxZDU3MTQ4MGQ2MTA3MGUxNGFlMzg1YTVkZDdjMDQ1YjViYjk2ZjkzMzU0MmQ0ZTM5MzkxNTQyOWQ4ZDZiNDIzNmYzOTYxZjFhIn0.eyJhdWQiOiJsZy01NDdiZDBiOGJlMTIwLUxycjRvR1ZJQy10bSIsImp0aSI6IjI3NjMyZTIxZDU3MTQ4MGQ2MTA3MGUxNGFlMzg1YTVkZDdjMDQ1YjViYjk2ZjkzMzU0MmQ0ZTM5MzkxNTQyOWQ4ZDZiNDIzNmYzOTYxZjFhIiwiaWF0IjoxNDkxMjE4MzA3LCJuYmYiOjE0OTEyMTgzMDcsImV4cCI6MTQ5MTI2MTUwNywic3ViIjoiIiwic2NvcGVzIjpbXX0.nhgv4uyT6itQ7PeLXoO1CaR--x4OzyYSSazByeF97Fn-q-EgduY-zYa5Us8TG73NV1teSQK4d0o3KZ-1xA7j8Za7GEb5lM3hBJAvAo23tt_1YP-VQA5z4MACdpOufywQmTNW0dolPkM8lkVfAMb_kLgN7X1ZxEeGxu6c2xyTRNQ"}
ご覧のようにレスポンス本文からaccess_token
の値を取得できます。これ以降のAPIコールでは、この値をAuthorization
ヘッダーに設定する必要があります。このトークンは、API認証のユーザー名とパスワードのペアのように動作します。デフォルトのトークン有効期限は12時間です。
ステップ3 – APIリクエストを行う
Mobingi ALMで管理しているスタックの一覧を取得するAPIリクエストの例は次のとおりです。:
curl -X GET "https://api.mobingi.com/v2/alm/stack" \ -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjYyYTg5ZWIwMTgwY2Q4MDNiYWMxOTBhMjdkMjYyMjA0MTNiYjA5NjlhYzM3NDk4NjJkMGI3NmQ5MjE0MDEyNTEzOTI0M2U2OWQzMjg5MjE3In0.eyJhdWQiOiJhcGktdjIiLCJqdGkiOiI2MmE4OWViMDE4MGNkODAzYmFjMTkwYTI3ZDI2MjIwNDEzYmIwOTY5YWMzNzQ5ODYyZDBiNzZkOTIxNDAxMjUxMzkyNDNlNjlkMzI4OTIxNyIsImlhdCI6MTQ5MDY3ODI2MCwibmJmIjoxNDkwNjc4MjYwLCJleHAiOjE0OTA3MjE0NTksInN1YiI6IjU0NDc4MjZjODcwZTcud2F5bGFuZCIsInNjb3BlcyI6W119.qZuB9D_7axQv-xSLCdlG-pBTyBNZex92Pfj712mk48d33BE7rWqAjRnRTYW5PBa8ZwwctIrnaNFREwc1BCloQzLd8SSp0hyzCJZX_34Dd_1knV-7e8gsvL-mbPxqAQCZgxcBWBIK1D1Bmo9z-HOSjK21qHx8dFJFi95xZFbtgw8" \
スタックをまだ一つも作成していない場合は、HTTPステータス200
と共に空のボディが返ってきます。
すでにスタックを作成している場合は(Webコンソールから最初にスタックを作成できます)、次のようなJSON形式のレスポンスが返されます。:
HTTP/1.1 200 OK [ { "auth_token": "AzPoBVghiCGAHz3cyPMRImBaQUJoF", "user_id": "5447826c880e8", "nickname": "Test Stack", "configuration": { "image": "mobingi\/ubuntu-apache2-php5", "code": "git:\/\/github.com\/mobingilabs\/default-site-php", "max": "3", "type": "m3.medium", "min": "2", "region": "ap-northeast-1", "architecture": "art_elb", ... }, "create_time": "2016-12-03T11:51:34+09:00", "stack_outputs": [ { "OutputValue": "mo-5447826c880e8-ELB-B45HZIW6UW08-749188260.ap-northeast-1.elb.amazonaws.com", "OutputKey": "Address" }, ... ], "stack_id": "mo-5447826c880e8-v56QbKqA-tk", "stack_status": "CREATE_COMPLETE" }, .. ]
いかがでしょうか? ご覧のようにMobingi APIは簡単に使い始めることができます。すべてのAPIコールでベアラートークンをAuthorization
ヘッダーに渡すだけです。 APIは、予測可能なリソース指向のURLを持つように設計されています。また、CORS(Cross-Origin Resource Sharing)もサポートしていますので、安全かつ柔軟に自身のサイト上にWebコンソールを構築することができます。
次のステップ
- 使用可能なAPIエンドポイントの一覧については、完全なドキュメントを参照してください。
- お気に入りのプログラミング言語でSDKを作って、是非お知らせください!
- facebook上の Mobingi User Group への参加もお待ちしております!
MobingiのAPIサーバーについて
MobingiのAPIサーバーのスタックはMobingi ALMを使って運用しています。(そう、自分のドックフードを食べています!) 運用をはじめて半年ですが、非常に安定しています。APIサーバーのステータスを監視するためのスタンドアロンのページも用意しています。:http://status.mobingi.com
このページでは稼働時間、RPM、応答時間などの情報を提供しています。また、すべてのインシデントもこのページに公開されます。
サーバーはNewRelicで監視しています。こちらが前週のパフォーマンスのスクリーンショットです。幸運にも、100%の稼働時間を達成しました!
先週のAPIリクエストの総数は約967,000と、その数はそれほど多くはありませんでしたが、日を追う毎にこの数字が大きくなっています。このままの勢いで成長していけば、今後数ヶ月間に10倍の成長が見込まれています。
直近のAPIサーバーのパフォーマンスの詳細はこのようになっています。
We’re Hiring!
モビンギはエンジニアを採用しています!急成長する技術指向のスタートアップを探しているエンジニアで、私達が造っているサービスに興味があり、一緒に作りたいと思っていただける方は是非こちらのフォームからエントリください!:https://mobingi.co.jp/career
ご応募おまちしております!
