SmartDBのREST API

REST APIによる情報取得

外部システムからSmartDBの情報を取得・操作する場合は、REST APIをご利用ください。

SmartDBのREST APIの仕様

通信

通信仕様

プロトコル JSON-RPC 、XML-RPC (HTTP)
リクエストURL http(s)://[SmartDBドメイン]/hibiki/rest/2/

SmartDBのREST APIを使用するための前提条件

SmartDBのREST APIを使用するために以下の条件を満たす必要があります。

・SmartDB APサーバとクライアントとの間は、HTTP(S)通信が可能であることが必要です。
・RESTの規約に則り GET,POST,PUT,DELETE のメソッド を使用します。
・以下の表 Acceptヘッダの指定にある仕様のとおりHTTPリクエストヘッダのAcceptヘッダに指定することで、レスポンスデータの形式(JSON形式かXML形式)を選択することができます。

Acceptヘッダの指定

データ形式 HTTPのAcceptヘッダ
XML形式(既定値) application/xml
JSON形式 application/json

リクエストとレスポンス

REST API におけるレスポンスデータはXML形式もしくはJSON形式となります。このデータ形式はREST API使用時にHTMLのAcceptヘッダを指定することで選択することができます。「リクエストの例」および「レスポンスの例」はそれぞれREST APIを使用した際のリクエストおよびレスポンス(XML形式)の例となります。

リクエストの例

  • リクエストURL

(HTTP Method:GET)

https://xxx.dreamarts.co.jp/hibiki/rest/2/binders/13979/views/10001/documents
  • リクエストヘッダ
Accept: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8

Accept-Encoding: gzip, deflate

Accept-Language: ja,en-us;q=0.7,en;q=0.3

Connection: keep-alive

Cookie: HIBIKI=930509-vJ7ZMdRW; lastSearchType=MY_APP;
JSESSIONID=5732A932B5C87807309EA704AEF0EA14;
__utma=25956072.421028494.1369362508.1369362508.1372147544.2;
__utmz=25956072.1372147544.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); WMONID=5ySdyGn5DQY; INSUITE-Enterprise_user_lang=ja;
INSUITE-Enterprise=1000484.BuzJbYRfVx5Os
Host: xxx.dreamarts.co.jp
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0)

レスポンスの例

  • レスポンスヘッダ
Connection: Keep-Alive
Content-Type: application/xml
Date: Wed, 31 Jul 2013 00:18:41 GMT
Keep-Alive: timeout=10, max=100
Set-Cookie: HIBIKI=930509-vJ7ZMdRW; Path=/hibiki/
Transfer-Encoding: chunked
Vary: User-Agent
  • レスポンスデータ
<documents>
<document>
<id>2</id>
<created>
<id>1000039</id>
<key>taro</key>
<name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</created>
<created_at>2013-05-03T09:12:54+09:00</created_at>
<updated>
<id>1000039</id>
<key>taro</key>
<name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</updated>
<updated_at>2013-05-08T19:19:40+09:00</updated_at>
<item>
<id>10008</id>
<key>PRIVILEGE_KEY</key>
<type>Text</type>
<value>CDS_IPAD_USER</value>
</item>
<item>
<id>10004</id>
<key>PRIVILEGE_NAME</key>
<type>Text</type>
<value>iPad利用可能ユーザ</value>
</item>
<item>
<id>10005</id>
<key>PRIVILEGE_ACCOUNT</key>
<type>AccountList</type>
<value>[2000018]</value>
</item>
</document>
<document>
<id>1</id>
<created>
<id>1000039</id>
<key>taro</key><name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</created>
<created_at>2013-05-03T09:12:54+09:00</created_at>
<updated>
<id>1000039</id>
<key>taro</key>
<name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</updated>
<updated_at>2013-05-08T19:19:40+09:00</updated_at>
<item>
<id>10008</id>
<key>PRIVILEGE_KEY</key>
<type>Text</type>
<value>CDS_ADMIN</value>
</item>
<item>
<id>10004</id>
<key>PRIVILEGE_NAME</key>
<type>Text</type>
<value>iPad向けコンテンツ配信システム管理者</value>
</item>
<item>
<id>10005</id>
<key>PRIVILEGE_ACCOUNT</key>
<type>AccountList</type>
<value>[2000000]</value>
</item>
</document>
<totalCount>537</totalCount>
</documents>

SmartDBのREST APIの利用例

SmartDBのREST API を用いてSmartDB 内の各種データにアクセスするためには、バインダトークンを利用して実行するか、 Basic認証もしくはCookie認証を用いてSmartDB へログインする必要があります(Proxy経由でProxy側のBasic認証を使う場合はCookie認証のみ利用可)。 認証後、必要なデータ取得処理・更新処理を行うのがREST APIの典型的な利用方法です。
バインダトークンを利用して実行する方法は、『RestDoc』および『システム管理ガイド』を参照してください。
SmartDB の文書一覧・詳細情報を取得する場合のAPI呼び出し例はSmartDBのREST API利用フローのようになります。(認証処理については、後述の「セッション処理フロー図」も合わせて参照してください)。

SmartDBのREST API利用フロー(SmartDBの文書一覧を取得し、文書を更新する場合)

application

● 説明
・この例(SmartDBのREST API利用フロー)におけるクライアントアプリケーションの動作の概要は以下となります。

  1. セッション情報を取得し、文書一覧を画面表示します。(①~④)
  2. ユーザが表示された文書一覧から更新する文書を選択すると、その文書の詳細画面を表示します。(⑤)
  3. ユーザが文書の更新情報を入力し、送信することで文書の更新を行います。(⑥~⑦)

● 備考
①' で返却されるデータには、次回以降のAPI呼び出しで必要となるCSRFトークンが含まれます。図上での記載はありませんが、②以降のリクエストのパラメーターとして、①'で取得したCSRFトークンをセットしています。

セッション処理フロー

エラーコード一覧

SmartDBのREST APIでエラーが発生した場合、下記のHTTPレスポンスコードが返却されます。

エラーコード一覧

エラーコード エラー内容
400 Bad request 不正なリクエスト、CSRFトークンチェックに失敗している
401 Unauthorized 認証処理に失敗している(ログインに失敗 しているor ログインしていない)
403 RESTful service is disabled RESTサービスが無効になっている
404 Not Found 該当するリソース(session,binder,view,document) が見つからない
406 NotAcceptable 全文検索でALL、ONE以外の不正なマッチモードを指定されている
500 Internal Server Error その他サーバー側のエラーが発生している
  • エラーの例(XML形式)
<error>
<code>401</code>
<message>Unauthorized</message>
</error>
  • エラーの例(json形式)
{"code":401,"message":"Unauthorized"}