REST API

エンドポイント ドキュメンテーション

Crittercism の REST API は、段階的に検出できるように作られています。 allYourBase エンドポイントから始めると、クライアントは 使用する API のバージョンを判断し、エンドポイントの発見へと進み、最後にトークンを取得してデータの取得を開始できます。

REST API について

Crittercism REST API では、顧客やパートナーのソフトウェアが Crittercism と対話して Crittercism のデータをプログラムで取得できます。 以下に当社の API を使用するアプリに関して回答できる質問を数例挙げます。

  • 使っているユーザーが一番多いのはアプリのどのバージョンですか?
  • 一番よくクラッシュするのはどのバージョンの OS ですか?
  • 一番スピードが遅いのはどのサービスですか?
  • データ使用に関して自分が使用しているアプリはどの程度重いですか?
  • ユーザーが好むデバイスは何ですか?
  • 毎日最新バージョンのアプリを使っているユーザーは何人いますか?
  • 自分が使っているすべてのアプリでのクラッシュの割合はどのくらいですか?
  • 自分が使っているすべてのアプリでの全クラウド サービスのレイテンシはどのくらいですか?
  • 一番エラーが多いのはどの API エンドポイントですか?

はじめに

OAuth2 クライアント ID のリクエスト

OAuth2 クライアント ID が必要になりますので、 Access Request Form (アクセス リクエスト フォーム) に記入して ID をリクエストしてください。

OAuth2 クライアント ID 例:3XAAtXd3WbozO3M6zV0hVlrdk3FWWNXP

OAuth2 アクセス トークンの取得

クライアント ID を取得したら、次のステップはアクセス トークンの取得です。Resource Owner Password Credentials Grant (リソース オーナー パスワード認証情報付与) 機能を使用して、ユーザーのユーザー名、パスワードの他、クライアント ID を提供してアクセス トークンを取得してください。リクエストの全詳細やパラメーター定義、エラー コードは RFC 6749 のセクション 4.3 に記載されています。

Note

Crittercism の API は OAuth 2 (RFC 6749) を使用しており、標準 OAuth2 クライアント ライブラリと互換性があります。

アクセス トークンは長寿命です。現在、唯一対応している付与タイプは password です。クライアントはユーザーから直接ユーザーの Crittercism パスワードを取得し、引き換えにトークンを発行します。

OAuth2 トークン リクエスト

本セクションのエンドポイントは、適切な認証情報が提供されると長寿命のアクセス トークンを発行します。一般には、RFC 6749 のセクション 4.3.2「OAuth 2.0」で規定されている慣例に従います。現在、唯一対応している付与タイプは「password」です。

URI

POST  https://developers.crittercism.com/v2/token

パラメーター

  • grant_type: OAuth2 の付与タイプです。現在は「password」のみ対応しています。
  • username: 顧客のユーザー名 (電子メール アドレス)
  • password: 顧客のパスワード

Requesting a token with client id WV3v7ZTaYmqtUOMNvO7oPhLi8RN9zFoo, for david@crittercism.com:
$ curl -X POST https://developers.crittercism.com/v2/token -u WV3v7ZTbYmqtUOMNvO7oPhLi8RN9zFoo -d 'grant_type=password&username=david@crittercism.com&password=riTiBw28%3DpmFu'

* Server auth using Basic with user 'WV3v7ZTaYmqtUOMNvO7oPhLi8RN9zFoo'
> POST /v2/token HTTP/1.1
> Authorization: Basic V1YzdjdaVGFZbXF0VU9NTnZPN29QaExpOFJOOXpGb286
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8y zlib/1.2.5
> Host: developers.crittercism.com
> Accept: */*
> Content-Length: 86
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 200 OK
< Server: gunicorn/0.14.3
< Date: Thu, 06 Feb 2014 18:39:48 GMT
< Connection: close
< Cache-Control: no-cache
< Pragma: no-cache
< Rate-Limit-Limit: 20
< Rate-Limit-Remaining: 18
< Rate-Limit-Reset: 46
< Content-Type: application/json;charset=UTF-8
< Content-Length: 99
<
{"access_token": "7oHh1moGJKysza691pa5Ucl4vgr59hGq", "token_type": "bearer", "expires_in": 2592000}

レート制限

API では、クエリ リクエストの数を制限しています。

制限は、「タイム バケット」と呼ばれる時間内に 1 つの OAuth2 クライアントによって何件リクエストが出されているかを制御して指定します。エンドポイントは、HTTP ヘッダーでレート制限情報を返します。

設定 説明
Rate-Limit-Limit クライアントの制限 (呼び出し数/分)
Rate-Limit-Remaining 現在のバケットの終了までにレート制限に達することなくクライアントが出すことのできる平均リクエスト速度 (呼び出し数/分)
Rate-Limit-Reset 現在のバケットの残り秒数

以下に例を示します。

$ curl -X GET -H 'Authorization: Bearer 7oHh1moGJKysza691pa5Ucl4vgr59hGq' https://developers.crittercism.com/v2/apps?attributes=appName,latestVersionString,mau,rating -v -v


[...]

< HTTP/1.1 200 OK

< Rate-Limit-Limit: 20

< Rate-Limit-Remaining: 18

< Rate-Limit-Reset: 46

これは、クライアントによる呼び出しレートがタイム バケット長全体で平均して毎分 20 回に制限されていることを示します。タイム バケットの残り時間では、平均して毎分 18 回の呼び出しを継続でき、タイム バケットは 46 秒でリセットされます。

クライアントが制限を超えると、制限を説明するエラー パケットが送信されます。

$ curl -X GET -H 'Authorization: Bearer 7oHh1moGJKysza691pa5Ucl4vgr59hGq' https://developers.crittercism.com/v2/apps?attributes=appName,latestVersionString,mau,rating -v -v

[...]

< HTTP/1.1 429 Too Many Requests [...]

{"actual": 25, "message": "API rate limit exceeded", "limit": 20, "reset": 42, "success": 0}

この場合、 limitRate-Limit-Limit ヘッダー、 resetRate-Limit-Reset ヘッダー 、そして actual はクライアントが呼び出した毎分の呼び出し数に相当します。

API へのアクセスのリクエスト

Note

API へのアクセスを受信されたい場合は、この request form に記入してください。