{"__v":1,"_id":"5544d76bd8833c0d00582815","category":{"__v":1,"_id":"5544d76ad8833c0d00582803","pages":["5544d76bd8833c0d00582815","5544d76bd8833c0d00582816","5544d76bd8833c0d00582817","5544d76bd8833c0d00582818","5544d76bd8833c0d00582819","5544d76bd8833c0d0058281a","5544d76bd8833c0d0058281b","5544d76bd8833c0d0058281c","5544d76bd8833c0d0058281d","5544d76bd8833c0d0058281e","5544d76bd8833c0d0058281f","5544d76bd8833c0d00582820","5544d76bd8833c0d00582821","5544d76bd8833c0d00582822","5544d76bd8833c0d00582823"],"project":"55227389b4a0de0d00de7e28","version":"5544d76ad8833c0d00582801","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-04-07T08:14:54.351Z","from_sync":false,"order":1,"slug":"api","title":"API"},"project":"55227389b4a0de0d00de7e28","user":"552342f6e20da719000e7925","version":{"__v":1,"_id":"5544d76ad8833c0d00582801","forked_from":"55227389b4a0de0d00de7e2b","project":"55227389b4a0de0d00de7e28","createdAt":"2015-05-02T13:55:54.059Z","releaseDate":"2015-05-02T13:55:54.059Z","categories":["5544d76ad8833c0d00582802","5544d76ad8833c0d00582803","5544d76ad8833c0d00582804","5544d76ad8833c0d00582805","5544d76ad8833c0d00582806"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"4.0.0","version":"4.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-04-07T08:16:16.134Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"CS-Cart API概要\"\n}\n[/block]\n- [RESTful](http://ja.wikipedia.org/wiki/REST)である\n- 管理者のメールアドレスと自動生成されるAPIキーを利用した **HTTP Basic認証** を利用します。\n- APIはユーザーグループで定義された権限に依存しています。ユーザーグループの割り当てはオブジェクトに直接定義されています。\n- RESTを使用するために **HTTP1.1** を使用しています。\n\n以下の4つのメソッドによってデータの表示やオブジェクトの修正が可能です。\n-  `GET` —オブジェクトデータの取得\n-  `PUT` オブジェクトデータの更新\n- `POST `—オブジェクトの新規作成\n- `DELETE` —オブジェクト削除\n\n**データの受け渡しは、JSONフォーマットで行います。**\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"お役立ちツール\"\n}\n[/block]\n[cURL](http://ja.wikipedia.org/wiki/CURL)は簡単にHTTPリクエストを送信することができるクラスプラットフォームのコマンドラインアプリケーションです。UNIXベースのシステムでは、`curl`コマンドはデフォルトで利用可能です。\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"このガイドの全ての例はcURLコマンドとして書かれています。\"\n}\n[/block]\n##REST Console\n[**REST Console**](//chrome.google.com/webstore/detail/rest-console/cokgbflfommojglbmbpenpphppikmonn)は人気のあるGoogle Chromeブラウザ用の拡張機能です。\n(同様の拡張機能は他の一般的なWebブラウザにも存在します)\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/XIPa4Kt2TMC4fuod5Pvv_RESTConsole.png\",\n        \"RESTConsole.png\",\n        \"726\",\n        \"131\",\n        \"#4b80d6\",\n        \"\"\n      ],\n      \"caption\": \"REST Console\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"APIアクセスのアクティベーション\"\n}\n[/block]\nAPIアクセスはユーザーごとに有効/無効の切り替えが可能です。\n\nAPIアクセスを有効にするには:\n\n1. CS-Cartの管理画面にログイン\n2. **お客様→管理者** へ進む\n3 .APIアクセスを有効にするアカウントの詳細を開く\n4. **APIアクセス**のタブに切り替え、**APIの利用を許可**にチェックを入れる\n5. **保存** をクリック\n\nAPIキーが自動的に生成され、このユーザーのEメールとAPIキーを使ってCS-CartのAPIにアクセスが可能となります。\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"URLs\"\n}\n[/block]\nAPIのリクエストは特定のURLに通常のHTTPリクエストとして送信します。\n\nCS-CartのAPIのURLは次のようになります:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \" http://example.com/api/:object —全てのオブジェクトを参照\\n http://example.com/api/:object/:id —個々のオブジェクトを参照\\nhttp://example.com/api/:object/:id/:nested_object:—オブジェクトの入れ子になった全てのオブジェクトを参照\\n*http://example.com/api/:object/:id/:nested_object/:id*—オブジェクトの入れ子になった個々のオブジェクトを参照\\n\\n例えば、http://example.com/api/product/1/features でID 1の商品のデータを参照できます。\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"CS-Cartがインストールされたサーバーで`mod_rewrit`が無効になっている場合は、これらの例と異なるURLを使用しなければなりません:\\n\\n- **http://example.com/api.php?_d=:object&ajax_custom=1**—refer to all objects of a certain type  \\n特定のタイプの全オブジェクトを参照\\n- http://example.com/api.php?_d=:object/:id&ajax_custom=1**—refer to a single object  \\n 個々のオブジェクトを参照\\n- http://example.com/api.php?_d=:object/:id/:nested_object&ajax_custom=1**—refer to all nested objects of a certain object  \\n特定のオブジェクトの入れ子になった全オブジェクトを参照 \\n- http://example.com/api.php?_d=:object/:id/:nested_object/:id&ajax_custom=1**—refer to a single nested object of a certain object  \\n特定のオブヘクトの入れ子になった個々のオブジェクトを参照\",\n  \"title\": \"注意\"\n}\n[/block]\n*****\n\n##認証\n\nそれぞれのリクエストは、ユーザーのメールアドレスとAPIキーを使って認証されなければなりません。\n\nAPIリクエストに認証データを送信するには以下の3つの方法があります:\n\n- ** `--user`パラメーター経由 **(全ての例はこの例で書かれています)\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin:::at:::example.com:APIkey -X GET 'http://example.com/api/users/'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n- ** URL内でインラインで渡す **:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --basic -X GET 'http://admin%40example.com:APIkey@example.com/api/users/'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"メールアドレスの**@**は ` %40 ` に変換して下さい。\",\n  \"title\": \"ヒント\"\n}\n[/block]\n- ** リクエストヘッダー **\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --header 'Authorization: Basic <base64-encoded email:APIkey pair>=' -X GET 'http://example.com/api/users/'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"メールアドレスとAPIキーはbase64にエンコードする必要があります。\",\n  \"title\": \"ヒント\"\n}\n[/block]\nメールアドレスとAPIキーをbase64にエンコードするPHPのサンプルコード\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"$token = base64_encode(\\\"email:APIkey\\\");\\n$authHeaderString = 'Authorization: Basic ' . $token;\",\n      \"language\": \"php\"\n    }\n  ]\n}\n[/block]\n---\n[block:api-header]\n{\n  \"type\": \"get\",\n  \"title\": \"GET : データの参照\"\n}\n[/block]\nオブジェクトデータを取得するには、GET`HTTPリクエストをオブジェクトを参照するURLに送信します。\n\n###リクエストの例  \nID1の商品についてのデータを取得する:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin@example.com:APIkey -X GET 'http://example.com/api/products/1'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n###フィルタリング\n\nフィルタリングを行うために追加のURLパラメーターを送信することができます。  \n例えば、**送料無料でない商品をすべて取得する**:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin@example.com:APIkey -X GET 'http://example.com/api/products?free_shipping=N'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\nフィルタリングの条件を組み合わせることが可能です。  \n`company_id`が1の出品者の商品かつ、ダウンロード可能な商品をすべて取得します:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin@example.com:APIkey -X GET 'http://example.com/api/products?is_edp=Y&company_id=1'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n###戻り値\n\n条件に一致したオブジェクト(例:**商品のキー **)のJSON配列と検索クエリ(**検索**キー )または[エラー](doc:api-response-errors) が返ってきます。\n\n\n一致するオブジェクトの値はオブジェクトIDをキーとした配列として返ってきます。\n\nサポートされているオブジェクト用のフィールドの完全なリストは、** APIのオブジェクト **を参照してください。\n[block:api-header]\n{\n  \"type\": \"put\",\n  \"title\": \"PUT : データの更新\"\n}\n[/block]\nオブジェクトデータを更新するには、オブジェクトに対応するURLに`PUT` HTTPを送信します。\n\nPUTは、特定のオブジェクトIDを参照したURLに対してのみ使用できます(全ての商品を一度に更新することはできません)。\n\n送信されるデータはオブジェクトフィールド用のキーや値のJSON配列である必要があります。  ( ` {'fieldName1: value1, fieldName2: value2} `  )\n\nサポートされているオブジェクト用のフィールドの完全なリストは、** APIのオブジェクト **を参照してください。\n[block:callout]\n{\n  \"type\": \"success\",\n  \"body\": \"`Content-Type` のヘッダーは必ず `application/json` をセットして下さい。宣言が無い場合はデフォルトの `text/plain` が宣言され、リクエストは失敗します。\",\n  \"title\": \"重要\"\n}\n[/block]\n###リクエスト例\nID1の商品の名前を更新する:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin@example.com:APIkey --header 'Content-Type: application/json' -d '{\\\"product\\\": \\\"New Product Name\\\"}' -X PUT 'http://example.com/api/products/1'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n###戻り値\n更新されたオブジェクトのID(例: ` {\"product_id\":\"1\"} ` )または[エラー](doc:api-response-errors) が返ってきます。\n[block:api-header]\n{\n  \"type\": \"put\",\n  \"title\": \"POST : オブジェクトの作成\"\n}\n[/block]\nオブジェクトを作成するには、オブジェクトの種類に対応したURLに`POST` HTTPリクエストを送信します。\n\nすべてのオブジェクトタイプを参照するURLのみ使用されます(IDは使用できません)。\n\n送信されるデータはオブジェクトフィールド用のキーと値が指定されたJSON配列である必要があります。( ` { fieldName1: value1, fieldName2: value2} `  )\n\n一部のフィールドはオブジェクトの作成に必須となるものがあります。詳細はAPIのオブジェクトの各ページを参照してください。\n[block:callout]\n{\n  \"type\": \"success\",\n  \"body\": \"`Content-Type` のヘッダーは必ず `application/json` をセットして下さい。宣言が無い場合はデフォルトの `text/plain` が宣言され、リクエストは失敗します。\",\n  \"title\": \"重要\"\n}\n[/block]\n###リクエスト例\n「My Awesome Product」という名前の新しい商品を作成します:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin@example.com:APIkey --header 'Content-Type: application/json' -d '{\\\"product\\\": \\\"My Awesome Product\\\"}' -X POST 'http://example.com/api/products'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n###戻り値\n作成されたオブジェクトのID。例: ` {\"product_id\":\"1\"} ` または\n[エラー](doc:api-response-errors) \n[block:api-header]\n{\n  \"type\": \"delete\",\n  \"title\": \"DELETE : オブジェクトの削除\"\n}\n[/block]\nオブジェクトを削除するには、オブジェクトに対応するURLに`DELETE` HTTP リクエストを送信します。\n\n特定のオブジェクトIDを参照するURLのみ使用が可能です。(一度に全ての商品を削除することは出来ません)\n\n###リクエスト例\nid 12の持つ商品を削除する:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl --user admin@example.com:APIkey -X DELETE 'http://example.com/api/products/12'\",\n      \"language\": \"shell\"\n    }\n  ]\n}\n[/block]\n### 戻り値\n操作が成功してもレスポンスはありません。","excerpt":"CS-CartのAPI機能はバージョン4以降から利用できるようになりました。","slug":"what-is-a-api","type":"basic","title":"APIの概要"}

APIの概要

CS-CartのAPI機能はバージョン4以降から利用できるようになりました。

[block:api-header] { "type": "basic", "title": "CS-Cart API概要" } [/block] - [RESTful](http://ja.wikipedia.org/wiki/REST)である - 管理者のメールアドレスと自動生成されるAPIキーを利用した **HTTP Basic認証** を利用します。 - APIはユーザーグループで定義された権限に依存しています。ユーザーグループの割り当てはオブジェクトに直接定義されています。 - RESTを使用するために **HTTP1.1** を使用しています。 以下の4つのメソッドによってデータの表示やオブジェクトの修正が可能です。 - `GET` —オブジェクトデータの取得 - `PUT` オブジェクトデータの更新 - `POST `—オブジェクトの新規作成 - `DELETE` —オブジェクト削除 **データの受け渡しは、JSONフォーマットで行います。** [block:api-header] { "type": "basic", "title": "お役立ちツール" } [/block] [cURL](http://ja.wikipedia.org/wiki/CURL)は簡単にHTTPリクエストを送信することができるクラスプラットフォームのコマンドラインアプリケーションです。UNIXベースのシステムでは、`curl`コマンドはデフォルトで利用可能です。 [block:callout] { "type": "info", "body": "このガイドの全ての例はcURLコマンドとして書かれています。" } [/block] ##REST Console [**REST Console**](//chrome.google.com/webstore/detail/rest-console/cokgbflfommojglbmbpenpphppikmonn)は人気のあるGoogle Chromeブラウザ用の拡張機能です。 (同様の拡張機能は他の一般的なWebブラウザにも存在します) [block:image] { "images": [ { "image": [ "https://files.readme.io/XIPa4Kt2TMC4fuod5Pvv_RESTConsole.png", "RESTConsole.png", "726", "131", "#4b80d6", "" ], "caption": "REST Console" } ] } [/block] [block:api-header] { "type": "basic", "title": "APIアクセスのアクティベーション" } [/block] APIアクセスはユーザーごとに有効/無効の切り替えが可能です。 APIアクセスを有効にするには: 1. CS-Cartの管理画面にログイン 2. **お客様→管理者** へ進む 3 .APIアクセスを有効にするアカウントの詳細を開く 4. **APIアクセス**のタブに切り替え、**APIの利用を許可**にチェックを入れる 5. **保存** をクリック APIキーが自動的に生成され、このユーザーのEメールとAPIキーを使ってCS-CartのAPIにアクセスが可能となります。 [block:api-header] { "type": "basic", "title": "URLs" } [/block] APIのリクエストは特定のURLに通常のHTTPリクエストとして送信します。 CS-CartのAPIのURLは次のようになります: [block:code] { "codes": [ { "code": " http://example.com/api/:object —全てのオブジェクトを参照\n http://example.com/api/:object/:id —個々のオブジェクトを参照\nhttp://example.com/api/:object/:id/:nested_object:—オブジェクトの入れ子になった全てのオブジェクトを参照\n*http://example.com/api/:object/:id/:nested_object/:id*—オブジェクトの入れ子になった個々のオブジェクトを参照\n\n例えば、http://example.com/api/product/1/features でID 1の商品のデータを参照できます。", "language": "text" } ] } [/block] [block:callout] { "type": "warning", "body": "CS-Cartがインストールされたサーバーで`mod_rewrit`が無効になっている場合は、これらの例と異なるURLを使用しなければなりません:\n\n- **http://example.com/api.php?_d=:object&ajax_custom=1**—refer to all objects of a certain type \n特定のタイプの全オブジェクトを参照\n- http://example.com/api.php?_d=:object/:id&ajax_custom=1**—refer to a single object \n 個々のオブジェクトを参照\n- http://example.com/api.php?_d=:object/:id/:nested_object&ajax_custom=1**—refer to all nested objects of a certain object \n特定のオブジェクトの入れ子になった全オブジェクトを参照 \n- http://example.com/api.php?_d=:object/:id/:nested_object/:id&ajax_custom=1**—refer to a single nested object of a certain object \n特定のオブヘクトの入れ子になった個々のオブジェクトを参照", "title": "注意" } [/block] ***** ##認証 それぞれのリクエストは、ユーザーのメールアドレスとAPIキーを使って認証されなければなりません。 APIリクエストに認証データを送信するには以下の3つの方法があります: - ** `--user`パラメーター経由 **(全ての例はこの例で書かれています) [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey -X GET 'http://example.com/api/users/'", "language": "shell" } ] } [/block] - ** URL内でインラインで渡す **: [block:code] { "codes": [ { "code": "curl --basic -X GET 'http://admin%40example.com:APIkey@example.com/api/users/'", "language": "shell" } ] } [/block] [block:callout] { "type": "info", "body": "メールアドレスの**@**は ` %40 ` に変換して下さい。", "title": "ヒント" } [/block] - ** リクエストヘッダー ** [block:code] { "codes": [ { "code": "curl --header 'Authorization: Basic <base64-encoded email:APIkey pair>=' -X GET 'http://example.com/api/users/'", "language": "shell" } ] } [/block] [block:callout] { "type": "info", "body": "メールアドレスとAPIキーはbase64にエンコードする必要があります。", "title": "ヒント" } [/block] メールアドレスとAPIキーをbase64にエンコードするPHPのサンプルコード [block:code] { "codes": [ { "code": "$token = base64_encode(\"email:APIkey\");\n$authHeaderString = 'Authorization: Basic ' . $token;", "language": "php" } ] } [/block] --- [block:api-header] { "type": "get", "title": "GET : データの参照" } [/block] オブジェクトデータを取得するには、GET`HTTPリクエストをオブジェクトを参照するURLに送信します。 ###リクエストの例 ID1の商品についてのデータを取得する: [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey -X GET 'http://example.com/api/products/1'", "language": "shell" } ] } [/block] ###フィルタリング フィルタリングを行うために追加のURLパラメーターを送信することができます。 例えば、**送料無料でない商品をすべて取得する**: [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey -X GET 'http://example.com/api/products?free_shipping=N'", "language": "shell" } ] } [/block] フィルタリングの条件を組み合わせることが可能です。 `company_id`が1の出品者の商品かつ、ダウンロード可能な商品をすべて取得します: [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey -X GET 'http://example.com/api/products?is_edp=Y&company_id=1'", "language": "shell" } ] } [/block] ###戻り値 条件に一致したオブジェクト(例:**商品のキー **)のJSON配列と検索クエリ(**検索**キー )または[エラー](doc:api-response-errors) が返ってきます。 一致するオブジェクトの値はオブジェクトIDをキーとした配列として返ってきます。 サポートされているオブジェクト用のフィールドの完全なリストは、** APIのオブジェクト **を参照してください。 [block:api-header] { "type": "put", "title": "PUT : データの更新" } [/block] オブジェクトデータを更新するには、オブジェクトに対応するURLに`PUT` HTTPを送信します。 PUTは、特定のオブジェクトIDを参照したURLに対してのみ使用できます(全ての商品を一度に更新することはできません)。 送信されるデータはオブジェクトフィールド用のキーや値のJSON配列である必要があります。 ( ` {'fieldName1: value1, fieldName2: value2} ` ) サポートされているオブジェクト用のフィールドの完全なリストは、** APIのオブジェクト **を参照してください。 [block:callout] { "type": "success", "body": "`Content-Type` のヘッダーは必ず `application/json` をセットして下さい。宣言が無い場合はデフォルトの `text/plain` が宣言され、リクエストは失敗します。", "title": "重要" } [/block] ###リクエスト例 ID1の商品の名前を更新する: [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey --header 'Content-Type: application/json' -d '{\"product\": \"New Product Name\"}' -X PUT 'http://example.com/api/products/1'", "language": "shell" } ] } [/block] ###戻り値 更新されたオブジェクトのID(例: ` {"product_id":"1"} ` )または[エラー](doc:api-response-errors) が返ってきます。 [block:api-header] { "type": "put", "title": "POST : オブジェクトの作成" } [/block] オブジェクトを作成するには、オブジェクトの種類に対応したURLに`POST` HTTPリクエストを送信します。 すべてのオブジェクトタイプを参照するURLのみ使用されます(IDは使用できません)。 送信されるデータはオブジェクトフィールド用のキーと値が指定されたJSON配列である必要があります。( ` { fieldName1: value1, fieldName2: value2} ` ) 一部のフィールドはオブジェクトの作成に必須となるものがあります。詳細はAPIのオブジェクトの各ページを参照してください。 [block:callout] { "type": "success", "body": "`Content-Type` のヘッダーは必ず `application/json` をセットして下さい。宣言が無い場合はデフォルトの `text/plain` が宣言され、リクエストは失敗します。", "title": "重要" } [/block] ###リクエスト例 「My Awesome Product」という名前の新しい商品を作成します: [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey --header 'Content-Type: application/json' -d '{\"product\": \"My Awesome Product\"}' -X POST 'http://example.com/api/products'", "language": "shell" } ] } [/block] ###戻り値 作成されたオブジェクトのID。例: ` {"product_id":"1"} ` または [エラー](doc:api-response-errors) [block:api-header] { "type": "delete", "title": "DELETE : オブジェクトの削除" } [/block] オブジェクトを削除するには、オブジェクトに対応するURLに`DELETE` HTTP リクエストを送信します。 特定のオブジェクトIDを参照するURLのみ使用が可能です。(一度に全ての商品を削除することは出来ません) ###リクエスト例 id 12の持つ商品を削除する: [block:code] { "codes": [ { "code": "curl --user admin@example.com:APIkey -X DELETE 'http://example.com/api/products/12'", "language": "shell" } ] } [/block] ### 戻り値 操作が成功してもレスポンスはありません。