ver.1サポートサイト

スパイラルAPIの使い方

最終更新日:2021年08月19日

概要

スパイラルAPIとは

スパイラルは登録データから一覧表・単票や集計表、グラフを作成、表示するWebパーツ機能を備えています。スパイラルAPIでは、各Webパーツ機能で設定したロジックを適用してデータを取得でき、データの利用側で制御せずにCMSやSNS、スマートフォンで表示することが可能です。また、認証に関しても、SPIRALの認証機構「マイエリア」の設定を利用することが出来ます。

スパイラルAPIを利用することで、SPIRALに設定済みのWebコンポーネントやDBにアクセスして情報の出し入れや、メール配信操作、マイエリアによる認証処理などを利用することが出来ます。
例えば、SPIRALへ外部システムからアクセスすることが可能になり、会員や顧客の大切な個人情報を安全なSPIRALのDBに預け、管理しやすくなります。また、APIを通して、SPIRALで設定したWebコンテンツを外部システムに出力したり、外部システムからメール配信操作を実行したりといった機能を活用し、柔軟なアプリケーション構築が可能になります。

1.スパイラルAPI共通仕様

通信方式

HTTPS(メソッド:POST)

データフォーマット

リクエスト、レスポンスともにJSON形式

文字コード

UTF-8

認証

すべてのAPI(locator/apiserverメソッドは除く)のリクエストについて、APIトークンおよびAPIトークンシークレットを用いた認証

内部呼出しの場合、スパイラル内部で認証処理を行うため、APIトークンとAPIトークンシークレットをプログラム上に記述する必要はありません)

URL

ご利用のアカウントによってAPIをリクエストするURLが異なります。リクエスト先URLはAPIトークン画面でご確認いただけます。

内部呼出しの場合、スパイラル内部でリクエスト先を指定するため、URLをプログラム上に記述する必要はありません)

locator(ロケータ)について

スパイラルのアカウントによって、APIリクエスト先のURLは異なる場合があります。
URLは、操作画面で確認できるほか、locator(ロケータ)APIを利用して取得することも可能です。アプリセンター経由で他アカウントへアプリを渡すことを想定しているなどの場合は、APIリクエスト先URLを直接プログラムに記述する代わりに、ロケータAPIでURLを取得することをおすすめします。

locator(ロケータ)について詳しくは、下記をご参照ください。

関連するページ

2.APIリクエスト数制限

APIリクエスト数は標準設定で1分間あたり10リクエストまで可能です。(初回リクエストから1分間あたりのリクエスト数でカウントします)
リクエスト上限の変更(オプション)は、操作画面から変更いただけます。変更方法は、スパイラルAPIを参照ください。 また、オプション価格についてはオプションページをご参照ください。

なお、APIでロケーター取得のためのリクエストは、600回/分のリクエストにふくまれません。

3.APIの外部呼出しとは

外部呼出しとは、スパイラル内からPHPプログラムを使ってAPIを実行する内部呼出しに対して、スパイラル外のシステムからAPIを呼び出す場合に利用することを指します。
以下の特徴があります。

APIトークンとAPIトークンシークレット

外部環境や他のスパイラルアカウントなどから外部呼出しでAPIリクエストを実行する場合は、あらかじめSPIRALの管理画面上でトークンを発行する必要があります。トークンとトークンシークレットの組み合わせは複数発行することが出来ます。トークン発行方法については、APIトークンをご参照ください。
また、APIタイプ別に利用制限をかけることも可能ですので、必要に応じて使い分けるようにして下さい。

APIトークン

APIトークンは、APIを利用する際に必要なユーザを特定するための文字列で、 通信のパラメータとして必ず送信する必要があります。

APIトークンシークレット

APIトークンのシークレットは、リクエスト時、通信データのメッセージ認証コード(HMAC)を生成するために使用し、暗号で例えると公開鍵の役割を果たします。

※パラメータは、利用するAPI機能により異なります。 詳細はAPIリファレンスを参照してください。

4.APIのリクエスト方法(外部呼出しの場合)

リクエスト時のHTTPヘッダに、Content-Typeと、利用したいAPIメソッドをX-SPIRAL-APIへ指定します。

Content-Type: application/json;charset=UTF-8
X-SPIRAL-API: area/login/request

リクエストのボディには各メソッドに応じたパラメータをJSONデータとしてPOSTするようにします。なお、JSONデータにはAPIトークン・パスキー・APIトークンシークレットを用いた署名の3つのパラメータを必ず含める必要があります。上記の例では、 area/login 部分がAPIメソッドに相当しており、マイエリア機能(area)のログインメソッド(login)をリクエストしています。

{
'spiral_api_token': '0123456......abcdef',
'passkey': '1256342400',
'signature': '987abc......def012',
(略)
}
パラメータ 説明 文字種長
spiral_api_token SPIRALの管理画面で発行したAPIトークン 半角英数字
passkey APIリクエスト時刻のエポック秒 int
signature spiral_api_tokenとpasskeyを&でつなげた文字列をAPIトークンシークレットを用いて
hmac-sha1によりハッシュ化して生成された署名。署名の有効期間は、passkeyに指定されたエポック秒から15分間となります。
半角英数字

APIメソッドに合わせてJSONフォーマットでAPIをリクエストすることで、レスポンスがJSONデータで返ってきます。以下に実際のリクエスト・レスポンスの例を示します。

リクエスト
POST /api/service/ HTTP/1.1 X-SPIRAL-API: area/login/request Content-Type: application/json; charset=UTF-8   {'spiral_api_token':'00000000aaaaaaaaaabbbbbbbbbbccccccccccdddddddddddeee','passkey':'1366375090','signature':'0000ffc6e281f9e128538e1d05b947405421b99c','my_area_title':'my_area01','id':'suzuki.taro','password':'hogehoge'}
レスポンス
200 OK Date:  Fri, 19 Apr 2013 12:38:26 GMT Server:  Apache X-SPIRAL-API:  area/login/response Keep-Alive:  timeout=15, max=100 Connection:  Keep-Alive Transfer-Encoding:  chunked Content-Type:  application/json;charset=UTF-8   {"message":"OK","jsessionid":"000000009B838604C8A49DE200000000","code":"0","url":"https://beta.smp.ne.jp/area/servlet/area.MyPageBundle;jsessionid=000000009B838604C8A49DE200000000?MyPageID=999efb02_qh7milh7m2l0000"}

具体的なリクエスト方法については、サンプルプログラムをご参照ください。

ファイル型などバイナリデータを含む場合

通常のAPIのリクエストでは、上記のようなシングルパートのリクエスト方法で問題なく動作します。ただし、data/insertやcustom_module/uploadなどのメソッドで、リクエストにファイル型などのバイナリデータを含むAPIメソッドを実行する際には、以下のようにマルチパート形式のフォーマットを使ってAPIをリクエストする必要があります。

HTTPヘッダ

Content-Type: multipart/form-data; boundary="xxxxxxxxxx_MULTIPART_BOUNDARY"
X-SPIRAL-API: 機能名/メソッド名/request


HTTPボディ
マルチパートのそれぞれのデータの境界を示すために必要となる任意のboundary文字列(この例では xxxxxxxxxx_MULTIPART_BOUNDARY)を決めて、上記のようにヘッダに指定します。

--xxxxxxxxxx_MULTIPART_BOUNDARY
Content-Type: application/json; charset="UTF-8"
Content-Disposition: form-data; name="json"
{
'spiral_api_token': '0123456......abcdef',
・・・
}
--xxxxxxxxxx_MULTIPART_BOUNDARY
Content-Type: application/octet-stream;
Content-Disposition: form-data; name="file01"; filename="ファイル01.png"
(ファイルのバイナリデータ)
--xxxxxxxxxx_MULTIPART_BOUNDARY--


APIエラー時の対応
1行目や10行目のように各パートの先頭行に–に続けてboundary文字列を指定します。2行目〜9行目がJSONパート(そのうちの5〜8行目がJSONデータ)で、11行目〜15行目がファイルパートになります。12行目では、nameにフィールドタイトルを、filenameにファイル名をそれぞれ指定しています。

関連するページ

5.APIの内部呼出しとは

内部呼出しとは、スパイラル外のシステムからAPIを呼び出す外部呼出しに対して、スパイラル内からPHPプログラムを使ってAPIを実行することを指します。
以下の特徴があります。

スパイラル内部からであっても、外部呼出しと同じ方法でAPIリクエストを送信することも可能ですが、アカウント内APIを利用することにより、APIトークンおよびAPIシークレットを記述することなく簡易にAPIを実行できます。
なお、スパイラル内部でPHPを利用する際には、マニュアルを参照ください。

6.APIのリクエスト方法(内部呼出しの場合)

アカウント内API

スパイラルの同じアカウント内にて内部呼出しでAPIを利用するには、スパイラル操作画面からアカウント内APIの設定を「ON」にしてください。
アカウント内APIを「ON」にすると、アカウント内のPHPに対応したページであればAPIトークンやAPIトークンシークレットを使用せずにAPIを使用できます。
アカウント内APIを使用せず、APIトークンやAPIトークンシークレットを指定してスパイラルアカウント内からAPIをリクエストすることもできますが、通常はアカウント内APIを利用することを推奨します。

ただし、アカウント内APIはマルチパート形式での送信に対応しておりません。ファイル型フィールドにファイルを登録する場合など、マルチパート形式での送信が必要な、リクエストにバイナリデータを含むAPIメソッドを実行する際には、外部呼出しと同じ方法でAPIリクエストを送信してください。

具体的なリクエスト方法については、サンプルプログラムスパイラルPHPをご参照ください。

関連するページ

7.APIタイプ

スパイラルAPIでは複数のタイプのAPIメソッドが提供されています。
認証が必要なハイレベルAPIとより自由度の高いローレベルAPIに大きく分けることが出来ます。
オープンAPIも含めて、それぞれのタイプごとにAPIの特徴があります。

ハイレベルAPI

マイエリア認証後のセッションIDを使用してデータにアクセスします。
マイエリア設定が必須です。
検索できるフィールドや取得するフィールドなど、データのアクセス範囲を管理画面側で制限することができます。

ローレベルAPI

APIトークンおよびシークレットだけで、アカウント内のデータにアクセスします。
クライアントプログラムだけで、データベース操作および配信操作ができるため、柔軟性および開発生産性に優れています。
その分、APIトークンとシークレットの厳格な管理が望まれます。

オープンAPI

スパイラルAPIとは別に、スパイラル内に設置したカスタムプログラムを、APIトークンのみで外部から実行できるよう設定できます。
JavaScriptなどで比較的簡単に実行できますが、パラメータに個人情報など重要な情報を付与しないようにします。
オープンAPIの設定方法はカスタムプログラムでのPHP利用の「オープンAPIとして利用する」と、オープンAPIのリファレンスをご覧ください。

 

ハイレベル ローレベル オープン
仕組み プロキシー型 直接型 カスタムプログラム経由
セッション マイエリア認証のセッションIDが必要 無し。ステートレス 無し。ステートレス
認証 APIトークン + シークレット
+ マイエリアログインID
+ マイエリアパスワード
APIトークン + シークレット APIトークン (カスタムプログラム次第)
データ
アクセス範囲
マイエリア認証により許可された範囲 データベース操作、データベース内の全データ
配信操作、配信ログ
カスタムプログラムで制御
処理設定・
制御方法
マイエリア(必須)+ 一覧表・単票や集計表 + クライアントプログラム クライアントプログラム カスタムプログラム
利用用途 第三者に配布されるフロントエンド(スマホ等)との連携 サーバーサイド等の自社プログラムとの連携 JavaScript等から
GETパラメータによる簡易な連携(特に一般公開できる情報)

8.APIメソッド

スパイラルAPIには様々なメソッドが用意されています。
それぞれのAPIの詳細に関しては、APIリファレンスを参照して下さい。

9.エラーコード・演算子など

APIのエラーコード、演算子やパラメータ指定の仕様については、下記をご参照ください。

レスポンスのcodeプロパティについて

APIレスポンスのcodeプロパティが0の場合は正常終了ですが、0以外の場合は何らかのエラーが発生しています。各々のエラー詳細については、エラーコード表を参照してください。

正常終了時の応答サンプル(JSON)
{
"message": "OK",
"count": "2",
"data": [
["suzuki@example.com", "テキストエリア"],
["yamada@example.com", "テキストエリア2"]
],
"code": "0",
"header": ["メールアドレス", "テキストエリア"]
}
エラー終了時の応答サンプル(JSON)
{
"message": "Requested data not found",
"code": "203"
}
エラー判定を行うサンプルコード(PHP)
<?php
/ / ・・・中略・・・
$response = curl_multi_getcontent($curl);
curl_close($curl);
$result = json_decode($response, true);
($result["code"] == 0) or die("API呼び出しでエラー発生\n");
/ / ・・・中略・・・
?>

10.APIの利用例

CMSとスパイラルを連携して会員サイト構築

スパイラルとCMSをAPIで連携して会員サイトを構築。
スパイラルを利用して、会員登録、登録情報の変更、会員ページへのログインなど、会員管理の仕組みを自由に設計・構築できます。会員情報はスパイラルで安全に管理し、コンテンツ管理はCMSを利用することで、会員認証やメール配信を組み込んだ会員サイトを構築することができます。


CMSとスパイラルを連携して複雑な業務アプリケーションを構築

スパイラルとCMSをAPIで連携して、CMSだけでは構築が難しかった複雑な業務アプリケーションを自由に構築。
例えば、顧客管理システムの場合、スパイラルAPIによるDB操作、配信操作を組み込むことで、システムへのログイン、顧客情報や対応履歴の登録・更新・削除、顧客へのメール配信などを実装した独自のシステムを構築できます。さらに、顧客管理システムからスパイラルの安全なDBから顧客情報を取得し、メーラーのインターフェースのような操作感覚でメールを送れるようにするなど、クライアントの運用に合わせたUIを開発することも可能です。


成約につなげる行動ターゲティングメール

自動車販売店では、試乗目的で来店したお客様にメールマガジンの会員登録を促し、新型車の情報やキャンペーン情報を配信していることがあります。メールマガジンの目的は見込客を成約客に育てることですが、メールから誘導したページの閲覧状況など、アクセス解析データを取得していても、データの分析や充分なフォローにはなかなか手が回りません。
スパイラルのオープンAPI、カスタムプログラムを使えば、一般的なアクセス解析データを取得するだけでなく、メールマガジン会員が閲覧したWebページに合わせてターゲティングメールを送ったり、購入確度の高いお客様が良く閲覧するページを閲覧した場合、営業へ電話アプローチを促す通知メールを送ったりすることができます。簡単なルールを定め、カスタムプログラムで実装するだけで、成約につなげる施策を実施できます。