APIは、あらゆるソフトウェアサービスプロバイダの標準コンポーネントになりつつあります。オープンなAPIを利用することにより、開発者は自分の好きなプログラミング言語を使用してサービスプロバイダと対話することができます。特定のタスクを実行するためにWebコンソールにログインする代わりに、自動化されたマシンが、ユーザーの代わりに定期的なアクションを実行することができます。

このような背景から、MobingiAPIリファレンスを公開しています。このAPIはすでにMobingiをご利用頂いている方々に先行して公開し、実際に試していただき、貴重なフィードバックをたくさんいただいております。私たちはそのフィードバックをもとに、品質を絶えず向上させることに努めています。

この記事では、この公開APIを使用してMobingi ALMの機能を操作する方法について説明します。実はMobingi Webコンソール自体もこのAPIをコールするHTML+CSS+Javascriptで構築されたフロントエンドアプリケーションに過ぎません。

それでは、Mobingi APIの利用方法を見ていきましょう。

ステップ1 –  client_id と client_secretを取得する

Mobingi ALMにログインし、一般設定のページに進んでください。 Open OAuth Applicationsタブをクリックすると、次の画面のようなページが表示されます。

ここから取得できるclient_idclient_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 /のみです)。

  1. grant_type
  2. client_id
  3. 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コンソールを構築することができます。

次のステップ

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

ご応募おまちしております!

Mobingiにジョイン!