🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)
API v2 リファレンス — ストアフロント(Front)
このページは tools/openapi-to-markdown.php によって openapi.json から生成されています。手作業で編集しないでください。
api/v2/front 配下のすべてのエンドポイント(ストアフロント、顧客アカウント、カート、チェックアウト)について、呼び出せる人、パラメーター、呼び出し例、返す内容をまとめています。
API を初めて使う場合は、まず クイックスタート をご覧ください。すべてのエンドポイントに共通するルール(レスポンス形式、ページ分割、fields、include、304)は 共通ルール に、各エラーコードの説明は トラブルシューティング にあります。
目次
- Front · サイト情報 — ストアフロントが提供する情報:API バージョン、パッケージのバージョン、言語、通貨。
- Front · カタログ — 呼び出し元ドメインのストアフロントに表示される商品、カテゴリー、ブランド。
- Front · コンテンツ — ストアフロントのバナーとコンテンツページ。
- Front · ログインとセッション — 顧客のログイン、トークンの更新、2 段階ログイン、ログイン中のデバイス一覧。
- Front · 顧客アカウント — ログイン中の顧客の会員登録、パスワード再設定、プロフィール、アドレス帳、メールアドレスの確認。
- Front · カート — ログイン中の顧客またはゲスト(カートトークン)のカート:明細とプロモーションコード。
- Front · チェックアウト — 住所、配送方法と支払い方法の選択、合計金額、注文の確定。
- Front · 注文 — 顧客の注文(または注文アクセストークンを持つゲストの注文):一覧、詳細、支払い、キャンセル。
- データオブジェクト
Front · サイト情報
ストアフロントが提供する情報:API バージョン、パッケージのバージョン、言語、通貨。
API の説明 — GET /api/v2/front/meta
API バージョン、インストール済みの GP247 パッケージ(名前のみ)、有効な言語、デフォルト言語、呼び出し元ドメインに応答するストアを返します。公開エンドポイントです。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | front 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/meta" \
-H "Accept: application/json"
レスポンス 200 — data: Meta
{
"data": {
"api_version": "2",
"packages": [
"gp247/core",
"gp247/front",
"gp247/shop"
],
"languages": [
"en",
"vi"
],
"locale": "en",
"store_id": "1"
}
}
Front · カタログ
呼び出し元ドメインのストアフロントに表示される商品、カテゴリー、ブランド。
ブランドを 1 件取得 — GET /api/v2/front/brand/detail/{id}
有効なブランドを 1 件返します。公開エンドポイントです。無効なブランドは 404 を返します。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/brand/detail/123" \
-H "Accept: application/json"
レスポンス 200 — data: Brand
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"name": "Acme",
"alias": "acme",
"image": "/data/brand/acme.png",
"url": "https://acme.example.com",
"sort": 0,
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
エラー: not_found · validation_failed
ブランド一覧 — GET /api/v2/front/brand/list
有効なブランドをページ単位で返します。sort または name で並べ替え、name で検索できます。公開エンドポイントです。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
page[number] |
クエリ | integer |
読み込むページ(1 から)。 |
page[size] |
クエリ | integer |
1 ページあたりの件数(デフォルト 20、最大 100)。 |
filter |
クエリ | object |
filter[<name>]=value — リソースごとに使える名前は api-introduction のセクション 8 を参照。不明な名前は 422 |
sort |
クエリ | string |
<name> で昇順、-<name> で降順。不明な名前は 422 |
q |
クエリ | string |
検索語 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/brand/list" \
-H "Accept: application/json"
レスポンス 200 — data: 一覧: Brand — meta(ページ情報)と links 付き。
{
"meta": {
"current_page": 1,
"per_page": 20,
"total": 135,
"last_page": 7,
"next_after": "eyJ0IjoiMjAyNi0xMC0zMSAwODowMDowMCIsImsiOiI5ZjBjIn0",
"has_more": true,
"sync_until": "2026-10-31T08:00:00+07:00"
},
"links": {
"first": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=1&page%5Bsize%5D=20",
"last": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=7&page%5Bsize%5D=20",
"prev": null,
"next": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=2&page%5Bsize%5D=20"
},
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"name": "Acme",
"alias": "acme",
"image": "/data/brand/acme.png",
"url": "https://acme.example.com",
"sort": 0,
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
]
}
エラー: validation_failed
カテゴリーを 1 件取得 — GET /api/v2/front/category/detail/{id}
ストアフロントに表示されるカテゴリーを 1 件返します。公開エンドポイントです。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/category/detail/123" \
-H "Accept: application/json"
レスポンス 200 — data: Category
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"alias": "t-shirts",
"name": "T-shirts",
"keyword": "t-shirt",
"description": "All our T-shirts.",
"image": "/data/category/tshirts.jpg",
"parent": null,
"top": 1,
"sort": 0,
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
エラー: not_found · validation_failed
カテゴリー一覧 — GET /api/v2/front/category/list
ストアフロントに表示されるカテゴリーを、?lang= で指定した言語でページ単位に返します。parent または top で絞り込み、sort または created_at で並べ替え、name で検索できます。公開エンドポイントです。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
page[number] |
クエリ | integer |
読み込むページ(1 から)。 |
page[size] |
クエリ | integer |
1 ページあたりの件数(デフォルト 20、最大 100)。 |
filter |
クエリ | object |
filter[<name>]=value — リソースごとに使える名前は api-introduction のセクション 8 を参照。不明な名前は 422 |
sort |
クエリ | string |
<name> で昇順、-<name> で降順。不明な名前は 422 |
q |
クエリ | string |
検索語 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/category/list" \
-H "Accept: application/json"
レスポンス 200 — data: 一覧: Category — meta(ページ情報)と links 付き。
{
"meta": {
"current_page": 1,
"per_page": 20,
"total": 135,
"last_page": 7,
"next_after": "eyJ0IjoiMjAyNi0xMC0zMSAwODowMDowMCIsImsiOiI5ZjBjIn0",
"has_more": true,
"sync_until": "2026-10-31T08:00:00+07:00"
},
"links": {
"first": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=1&page%5Bsize%5D=20",
"last": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=7&page%5Bsize%5D=20",
"prev": null,
"next": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=2&page%5Bsize%5D=20"
},
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"alias": "t-shirts",
"name": "T-shirts",
"keyword": "t-shirt",
"description": "All our T-shirts.",
"image": "/data/category/tshirts.jpg",
"parent": null,
"top": 1,
"sort": 0,
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
]
}
エラー: validation_failed
商品を 1 件取得 — GET /api/v2/front/product/detail/{id}
ストアフロントで販売中の商品を 1 件、HTML 本文、追加画像、属性の選択肢、在庫状況とともに返します。公開エンドポイントです。非表示の商品は 404 を返します。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
include |
クエリ | string |
埋め込む関連レコードをカンマ区切りで指定します(1 階層、最大 3 つ):images、brand(有効なブランドのみ)、categories(表示中のカテゴリーのみ)。それ以外は 422。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/product/detail/123" \
-H "Accept: application/json"
レスポンス 200 — data: Product
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"sku": "TSHIRT-RED-M",
"alias": "red-t-shirt",
"name": "Red T-shirt",
"keyword": "t-shirt, red",
"description": "Soft cotton T-shirt.",
"content": "<p>Soft cotton T-shirt.</p>",
"image": "/data/product/tshirt.jpg",
"images": [
"/data/product/tshirt-2.jpg"
],
"price": 200000,
"price_final": 180000,
"tax_id": "auto",
"kind": 0,
"product_type": "physical",
"brand_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"category_ids": [
"9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f"
],
"minimum": 1,
"weight": 0.3,
"weight_class": "kg",
"length": 30,
"width": 20,
"height": 2,
"length_class": "cm",
"date_available": "2026-11-01",
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"image_sizes": {
"original": "https://shop.example.com/data/product/tshirt.jpg",
"thumb": "https://shop.example.com/data/product/thumb/tshirt.jpg"
},
"stock_status": "in_stock",
"attributes": [
{
"group_id": "1",
"name": "Color",
"required": true,
"options": [
{
"value": "Red",
"add_price": 0
}
]
}
],
"cost": 120000,
"stock": 15,
"sold": 42,
"status": 1,
"approve": 1,
"supplier_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"view": 310
}
}
エラー: not_found · validation_failed
商品一覧 — GET /api/v2/front/product/list
呼び出し元ドメインのストアフロントで販売中の商品を、請求価格(price_final)、属性の選択肢、在庫状況(在庫数は返しません)とともにページ単位で返します。ストアが価格を非表示にしている場合、価格は null です。絞り込み:category_id、brand_id、kind、product_type、price_min、price_max。並べ替え:price、created_at、sort、sku。検索:SKU または名前。fields[product] と include=images,brand,categories に対応しています。公開エンドポイントで、キャッシュできます。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
page[number] |
クエリ | integer |
読み込むページ(1 から)。 |
page[size] |
クエリ | integer |
1 ページあたりの件数(デフォルト 20、最大 100)。 |
filter |
クエリ | object |
filter[<name>]=value — リソースごとに使える名前は api-introduction のセクション 8 を参照。不明な名前は 422 |
sort |
クエリ | string |
<name> で昇順、-<name> で降順。不明な名前は 422 |
q |
クエリ | string |
検索語 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
include |
クエリ | string |
埋め込む関連レコードをカンマ区切りで指定します(1 階層、最大 3 つ):images、brand(有効なブランドのみ)、categories(表示中のカテゴリーのみ)。それ以外は 422。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/product/list" \
-H "Accept: application/json"
レスポンス 200 — data: 一覧: Product — meta(ページ情報)と links 付き。
{
"meta": {
"current_page": 1,
"per_page": 20,
"total": 135,
"last_page": 7,
"next_after": "eyJ0IjoiMjAyNi0xMC0zMSAwODowMDowMCIsImsiOiI5ZjBjIn0",
"has_more": true,
"sync_until": "2026-10-31T08:00:00+07:00"
},
"links": {
"first": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=1&page%5Bsize%5D=20",
"last": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=7&page%5Bsize%5D=20",
"prev": null,
"next": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=2&page%5Bsize%5D=20"
},
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"sku": "TSHIRT-RED-M",
"alias": "red-t-shirt",
"name": "Red T-shirt",
"keyword": "t-shirt, red",
"description": "Soft cotton T-shirt.",
"content": "<p>Soft cotton T-shirt.</p>",
"image": "/data/product/tshirt.jpg",
"images": [
"/data/product/tshirt-2.jpg"
],
"price": 200000,
"price_final": 180000,
"tax_id": "auto",
"kind": 0,
"product_type": "physical",
"brand_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"category_ids": [
"9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f"
],
"minimum": 1,
"weight": 0.3,
"weight_class": "kg",
"length": 30,
"width": 20,
"height": 2,
"length_class": "cm",
"date_available": "2026-11-01",
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"image_sizes": {
"original": "https://shop.example.com/data/product/tshirt.jpg",
"thumb": "https://shop.example.com/data/product/thumb/tshirt.jpg"
},
"stock_status": "in_stock",
"attributes": [
{
"group_id": "1",
"name": "Color",
"required": true,
"options": [
{
"value": "Red",
"add_price": 0
}
]
}
],
"cost": 120000,
"stock": 15,
"sold": 42,
"status": 1,
"approve": 1,
"supplier_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"view": 310
}
]
}
エラー: validation_failed
Front · コンテンツ
ストアフロントのバナーとコンテンツページ。
バナーを 1 件取得 — GET /api/v2/front/banner/detail/{id}
呼び出し元ドメインのストアフロントに表示されるバナーを 1 件返します。公開エンドポイントです。非表示のバナーは 404 を返します。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | front 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/banner/detail/123" \
-H "Accept: application/json"
レスポンス 200 — data: Banner
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"name": "Autumn sale",
"image": "/data/banner/autumn.jpg",
"url": "https://shop.example.com/sale",
"target": "_self",
"html": null,
"type": "banner",
"sort": 0,
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"click": 57
}
}
エラー: not_found
バナー一覧 — GET /api/v2/front/banner/list
呼び出し元ドメインのストアフロントに表示されるバナーをページ単位で返します。公開エンドポイントです。type で絞り込み、sort または created_at で並べ替え、name で検索できます。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | front 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
page[number] |
クエリ | integer |
読み込むページ(1 から)。 |
page[size] |
クエリ | integer |
1 ページあたりの件数(デフォルト 20、最大 100)。 |
filter |
クエリ | object |
filter[<name>]=value — リソースごとに使える名前は api-introduction のセクション 8 を参照。不明な名前は 422 |
sort |
クエリ | string |
<name> で昇順、-<name> で降順。不明な名前は 422 |
q |
クエリ | string |
検索語 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/banner/list" \
-H "Accept: application/json"
レスポンス 200 — data: 一覧: Banner — meta(ページ情報)と links 付き。
{
"meta": {
"current_page": 1,
"per_page": 20,
"total": 135,
"last_page": 7,
"next_after": "eyJ0IjoiMjAyNi0xMC0zMSAwODowMDowMCIsImsiOiI5ZjBjIn0",
"has_more": true,
"sync_until": "2026-10-31T08:00:00+07:00"
},
"links": {
"first": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=1&page%5Bsize%5D=20",
"last": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=7&page%5Bsize%5D=20",
"prev": null,
"next": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=2&page%5Bsize%5D=20"
},
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"name": "Autumn sale",
"image": "/data/banner/autumn.jpg",
"url": "https://shop.example.com/sale",
"target": "_self",
"html": null,
"type": "banner",
"sort": 0,
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"click": 57
}
]
}
エラー: validation_failed
CMS ページを 1 件取得 — GET /api/v2/front/page/detail/{id}
表示中の CMS ページを 1 件、HTML 本文付きで、?lang= で指定した言語で返します。公開エンドポイントです。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | front 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/page/detail/123" \
-H "Accept: application/json"
レスポンス 200 — data: Page
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"alias": "about-us",
"image": null,
"name": "About us",
"keyword": "about",
"description": "Who we are.",
"content": "<p>Who we are.</p>",
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
エラー: not_found
CMS ページ一覧 — GET /api/v2/front/page/list
ストアフロントに表示される CMS ページを、HTML 本文なしでページ単位に返します。テキストは ?lang= で指定した言語です。公開エンドポイントです。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | front 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
page[number] |
クエリ | integer |
読み込むページ(1 から)。 |
page[size] |
クエリ | integer |
1 ページあたりの件数(デフォルト 20、最大 100)。 |
filter |
クエリ | object |
filter[<name>]=value — リソースごとに使える名前は api-introduction のセクション 8 を参照。不明な名前は 422 |
sort |
クエリ | string |
<name> で昇順、-<name> で降順。不明な名前は 422 |
q |
クエリ | string |
検索語 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/page/list" \
-H "Accept: application/json"
レスポンス 200 — data: 一覧: Page — meta(ページ情報)と links 付き。
{
"meta": {
"current_page": 1,
"per_page": 20,
"total": 135,
"last_page": 7,
"next_after": "eyJ0IjoiMjAyNi0xMC0zMSAwODowMDowMCIsImsiOiI5ZjBjIn0",
"has_more": true,
"sync_until": "2026-10-31T08:00:00+07:00"
},
"links": {
"first": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=1&page%5Bsize%5D=20",
"last": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=7&page%5Bsize%5D=20",
"prev": null,
"next": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=2&page%5Bsize%5D=20"
},
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"alias": "about-us",
"image": null,
"name": "About us",
"keyword": "about",
"description": "Who we are.",
"content": "<p>Who we are.</p>",
"status": 1,
"store_id": "1",
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
]
}
エラー: validation_failed
Front · ログインとセッション
顧客のログイン、トークンの更新、2 段階ログイン、ログイン中のデバイス一覧。
顧客ログイン — POST /api/v2/front/login
有効な顧客をメールアドレスとパスワードでログインさせ、Bearer トークン(with_refresh=true の場合はリフレッシュトークンも)を返します。アプリがゲストカートの X-Cart-Token を送ると、そのカートはアカウントに統合され、レスポンスに cart_merge が含まれます。プラグインによる 2 段階目がある場合は 401 challenge_required を返します。失敗した試行の回数には制限があります。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.3.0 |
リクエスト本文: CustomerLoginV2
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/login" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"","password":"","remember_me":false,"with_refresh":false,"device_name":""}'
レスポンス 200 — data: SessionToken
{
"data": {
"access_token": "12|XyZ...plain-token",
"token_type": "Bearer",
"scopes": [
"user"
],
"expires_at": "2026-11-03 09:00:00",
"expires_in": 3600,
"session_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"refresh_token": "a1b2c3...64chars",
"refresh_expires_at": "2026-12-03 08:00:00",
"cart_merge": {
"merged": 2,
"dropped": 0
}
}
}
エラー: validation_failed · unauthenticated · too_many_attempts · challenge_required · challenge_invalid
顧客のサインアウト — POST /api/v2/front/logout
現在のセッション(アクセストークンとリフレッシュトークン)をサインアウトします。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.3.0 |
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/logout" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontLogoutResult
{
"data": {
"revoked": true
}
}
顧客の MFA ログインを完了 — POST /api/v2/front/login/challenge
challenge_required レスポンスのチケットを、プラグインの項目とともに送ります。成功すると login と同じ形式で応答します(ゲストカートの統合を含む)。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: LoginChallengeAnswer
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/login/challenge" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"ticket":""}'
レスポンス 200 — data: SessionToken
{
"data": {
"access_token": "12|XyZ...plain-token",
"token_type": "Bearer",
"scopes": [
"user"
],
"expires_at": "2026-11-03 09:00:00",
"expires_in": 3600,
"session_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"refresh_token": "a1b2c3...64chars",
"refresh_expires_at": "2026-12-03 08:00:00",
"cart_merge": {
"merged": 2,
"dropped": 0
}
}
}
エラー: validation_failed · challenge_invalid · too_many_attempts
顧客のアクセストークンを更新 — POST /api/v2/front/refresh
リフレッシュトークンを、新しいアクセストークンとリフレッシュトークンの組と交換します。各リフレッシュトークンは 1 回だけ使え、再使用するとセッションがサインアウトされます。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: RefreshRequest
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/refresh" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"refresh_token":""}'
レスポンス 200 — data: SessionToken
{
"data": {
"access_token": "12|XyZ...plain-token",
"token_type": "Bearer",
"scopes": [
"user"
],
"expires_at": "2026-11-03 09:00:00",
"expires_in": 3600,
"session_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"refresh_token": "a1b2c3...64chars",
"refresh_expires_at": "2026-12-03 08:00:00",
"cart_merge": {
"merged": 2,
"dropped": 0
}
}
}
エラー: validation_failed · not_found · refresh_token_invalid · refresh_token_reused · refresh_in_progress · unauthenticated
自分のセッション一覧 — GET /api/v2/front/member/sessions
ログイン中の顧客の有効な API セッション(デバイス)を返します。現在のセッションには印が付きます。ページ分割はありません。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.4.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/member/sessions" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: 一覧: Session
{
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"name": "Pixel 8",
"ip": "203.0.113.5",
"created_at": "2026-10-31T08:00:00+07:00",
"last_used_at": "2026-10-31T08:00:00+07:00",
"refreshable": true,
"refresh_expires_at": "2026-11-30T08:00:00+07:00",
"current": true
}
]
}
自分のセッションを 1 つサインアウト — DELETE /api/v2/front/member/sessions/{id}
顧客自身のセッションを 1 つサインアウトします。他の所有者の id は 404 を返します。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト例
curl -X DELETE "https://shop.example.com/api/v2/front/member/sessions/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontMemberSessionsDeleteResult
{
"data": {
"revoked": true
}
}
エラー: not_found
Front · 顧客アカウント
ログイン中の顧客の会員登録、パスワード再設定、プロフィール、アドレス帳、メールアドレスの確認。
ログイン中の顧客(基本) — GET /api/v2/front/info
ログイン中の顧客のプロフィールを返します(ストアや確認状態の項目は含みません)。member/profile は同じ内容に加えて、確認状態とデフォルトの住所を返します。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/info" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: Customer
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"email": "an@example.com",
"phone": "0901234567",
"sex": 1,
"birthday": "1990-05-20",
"company": null,
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"status": 1,
"group": 1,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"store_id": "1",
"email_verified_at": "2026-10-01 08:00:00"
}
}
会員登録してログイン — POST /api/v2/front/register
ストア独自の項目ルール(有効な場合は captcha も)に従って顧客アカウントを作成し、ログインさせます。プロフィールとトークン情報を付けて 201 を返します。X-Cart-Token で送られたゲストカートは統合されます。IP ごとに回数制限があります。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: Register
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/register" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"first_name":"","email":"","password":"","password_confirmation":"","with_refresh":false,"device_name":""}'
レスポンス 201 — data: FrontRegisterResult
{
"data": {
"customer": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"email": "an@example.com",
"phone": "0901234567",
"sex": 1,
"birthday": "1990-05-20",
"company": null,
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"status": 1,
"group": 1,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"email_verified": true,
"email_verification_required": false,
"default_address_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"default_address": {}
},
"access_token": "12|XyZ...plain-token",
"token_type": "Bearer",
"scopes": [
"user"
],
"expires_at": "2026-11-03 09:00:00",
"expires_in": 3600,
"session_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"refresh_token": "a1b2c3...64chars",
"refresh_expires_at": "2026-12-03 08:00:00",
"cart_merge": {
"merged": 2,
"dropped": 0
}
}
}
エラー: validation_failed · challenge_required · challenge_invalid
パスワード再設定メールを送信 — POST /api/v2/front/password/forgot
パスワード再設定メールを送信します。メールアドレスにアカウントがあるかどうかに関係なく同じレスポンスを返すため、アカウントの探索には使えません。IP ごとに回数制限があります。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: ForgotPassword
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/password/forgot" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":""}'
レスポンス 200 — data: FrontPasswordForgotResult
{
"data": {
"sent": true
}
}
エラー: validation_failed
トークンでパスワードを再設定 — POST /api/v2/front/password/reset
再設定メールのトークンで新しいパスワードを設定し、アカウントのすべての API セッションをサインアウトします。ログインは行いません。新しいパスワードで login を呼び出してください。誤ったトークンや期限切れのトークンは、token 項目の 422 になります。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: ResetPassword
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/password/reset" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"","token":"","password":"","password_confirmation":""}'
レスポンス 200 — data: FrontPasswordResetResult
{
"data": {
"reset": true
}
}
エラー: validation_failed · too_many_attempts
自分のプロフィールを取得 — GET /api/v2/front/member/profile
ログイン中の顧客のプロフィールを、メールアドレスの確認状態とデフォルトの住所とともに返します。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.4.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/member/profile" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: CustomerProfile
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"email": "an@example.com",
"phone": "0901234567",
"sex": 1,
"birthday": "1990-05-20",
"company": null,
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"status": 1,
"group": 1,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"email_verified": true,
"email_verification_required": false,
"default_address_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"default_address": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"phone": "0901234567",
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"is_default": true,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
}
自分のプロフィールを更新 — PUT /api/v2/front/member/profile
ストアが有効にしているプロフィール項目を更新し、更新後のプロフィールを返します。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: Profile
リクエスト例
curl -X PUT "https://shop.example.com/api/v2/front/member/profile" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"first_name":"","email":""}'
レスポンス 200 — data: CustomerProfile
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"email": "an@example.com",
"phone": "0901234567",
"sex": 1,
"birthday": "1990-05-20",
"company": null,
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"status": 1,
"group": 1,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"email_verified": true,
"email_verification_required": false,
"default_address_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"default_address": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"phone": "0901234567",
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"is_default": true,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
}
エラー: validation_failed
自分のパスワードを変更 — PUT /api/v2/front/member/password
現在のパスワードを確認したうえでパスワードを変更します(現在のパスワードが誤っている場合は 422)。このセッションはログインしたままで、他のすべてのセッションはサインアウトされます。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: ChangePassword
リクエスト例
curl -X PUT "https://shop.example.com/api/v2/front/member/password" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"password_old":"","password":"","password_confirmation":""}'
レスポンス 200 — data: FrontMemberPasswordUpdateResult
{
"data": {
"changed": true
}
}
エラー: validation_failed · too_many_attempts
確認メールを再送信 — POST /api/v2/front/member/email/verify
ストアがメールアドレスの確認を必須にしている場合、確認リンクを再送信します。必須でない場合、sent は false です。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/member/email/verify" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontMemberEmailVerifyResult
{
"data": {
"sent": true
}
}
自分の住所一覧 — GET /api/v2/front/member/address/list
ログイン中の顧客のアドレス帳を古い順に返します。デフォルトの住所には印が付きます。ページ分割はありません。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.4.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/member/address/list" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: 一覧: CustomerAddress
{
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"phone": "0901234567",
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"is_default": true,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
]
}
住所を追加 — POST /api/v2/front/member/address
ストアの住所項目ルールに従って住所を追加します。default: true を指定するとデフォルトの住所になります。住所を付けて 201 を返します。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: Address
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/member/address" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"first_name":"","address1":"","default":false}'
レスポンス 201 — data: CustomerAddress
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"phone": "0901234567",
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"is_default": true,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
エラー: validation_failed
住所を更新 — PUT /api/v2/front/member/address/{id}
顧客自身の住所を 1 件更新します。他の顧客の id は 404 を返します。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト本文: Address
リクエスト例
curl -X PUT "https://shop.example.com/api/v2/front/member/address/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"first_name":"","address1":"","default":false}'
レスポンス 200 — data: CustomerAddress
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"first_name": "An",
"last_name": "Nguyen",
"first_name_kana": null,
"last_name_kana": null,
"phone": "0901234567",
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"is_default": true,
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00"
}
}
エラー: not_found · validation_failed
住所を削除 — DELETE /api/v2/front/member/address/{id}
顧客自身の住所を 1 件削除します。デフォルトの住所は削除できません(422)。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.4.0 |
リクエスト例
curl -X DELETE "https://shop.example.com/api/v2/front/member/address/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontMemberAddressDeleteResult
{
"data": {
"deleted": true
}
}
エラー: not_found · validation_failed
Front · カート
ログイン中の顧客またはゲスト(カートトークン)のカート:明細とプロモーションコード。
カートを取得 — GET /api/v2/front/cart
カートをストアごとにまとめて返します。価格はサーバーで計算され、購入できなくなった明細には印が付きます。顧客の Bearer トークン、またはストアがゲスト購入を許可している場合はゲストの X-Cart-Token ヘッダーで利用できます。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/cart" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: Cart
{
"data": {
"stores": [
{
"store_id": "1",
"lines": [],
"subtotal": 360000
}
],
"line_count": 1,
"item_count": 2,
"currency": "VND"
}
}
エラー: login_required · cart_conflict
カートに商品を追加 — POST /api/v2/front/cart/items
属性の選択肢とともに商品を追加します(すべての属性グループの選択が必要です)。同じ商品を同じ選択肢で追加すると、その明細の数量が増えます。カート全体を付けて 201 を返します。カートを持たないゲストには、保存しておくための新しい X-Cart-Token レスポンスヘッダーが返されます。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
リクエスト本文: FrontCartItemsRequest
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/cart/items" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"product_id":"","qty":0,"options":{}}'
レスポンス 201 — data: Cart
{
"data": {
"stores": [
{
"store_id": "1",
"lines": [],
"subtotal": 360000
}
],
"line_count": 1,
"item_count": 2,
"currency": "VND"
}
}
エラー: login_required · cart_conflict · validation_failed · not_found · product_not_for_sale · cart_line_limit · insufficient_stock
明細の数量を設定 — PATCH /api/v2/front/cart/items/{rowId}
カート明細の数量を設定します。0 以下にすると明細が削除されます。カート全体を返します。顧客の Bearer トークン、またはストアがゲスト購入を許可している場合はゲストの X-Cart-Token ヘッダーで利用できます。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
rowId (必須) |
パス | string |
カート明細の ID(カートから取得)。 |
リクエスト本文: FrontCartItemsUpdateRequest
リクエスト例
curl -X PATCH "https://shop.example.com/api/v2/front/cart/items/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"qty":0}'
レスポンス 200 — data: Cart
{
"data": {
"stores": [
{
"store_id": "1",
"lines": [],
"subtotal": 360000
}
],
"line_count": 1,
"item_count": 2,
"currency": "VND"
}
}
エラー: login_required · cart_conflict · validation_failed · not_found · insufficient_stock
カート明細を削除 — DELETE /api/v2/front/cart/items/{rowId}
明細を 1 件削除し、カート全体を返します。顧客の Bearer トークン、またはストアがゲスト購入を許可している場合はゲストの X-Cart-Token ヘッダーで利用できます。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
rowId (必須) |
パス | string |
カート明細の ID(カートから取得)。 |
リクエスト例
curl -X DELETE "https://shop.example.com/api/v2/front/cart/items/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: Cart
{
"data": {
"stores": [
{
"store_id": "1",
"lines": [],
"subtotal": 360000
}
],
"line_count": 1,
"item_count": 2,
"currency": "VND"
}
}
エラー: login_required · cart_conflict · not_found
プロモーションを適用 — POST /api/v2/front/cart/promotions/{pluginKey}
パスで指定したプロモーションプラグインを通じて、ペイロードとともにプロモーション(クーポン、ポイントなど)を適用します。プラグインのメッセージと新しい合計金額を返します。拒否された場合は 422 promotion_refused です。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
pluginKey (必須) |
パス | string |
プロモーションプラグインのキー(カートのレスポンスから取得)。 |
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
リクエスト本文: FrontCartPromotionsRequest
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/cart/promotions/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"payload":{}}'
レスポンス 200 — data: FrontCartPromotionsResult
{
"data": {
"result": {
"msg": "Coupon applied"
},
"totals": {
"store_id": "1",
"lines": [
{
"code": "total",
"title": "Total",
"value": 426000,
"text": "426,000 VND"
}
],
"currency": "VND"
}
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity · not_found · promotion_refused
プロモーションを解除 — DELETE /api/v2/front/cart/promotions/{pluginKey}
指定したプラグインのプロモーションを解除し、新しい合計金額を返します。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
pluginKey (必須) |
パス | string |
プロモーションプラグインのキー(カートのレスポンスから取得)。 |
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
リクエスト例
curl -X DELETE "https://shop.example.com/api/v2/front/cart/promotions/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontCartPromotionsDeleteResult
{
"data": {
"totals": {
"store_id": "1",
"lines": [
{
"code": "total",
"title": "Total",
"value": 426000,
"text": "426,000 VND"
}
],
"currency": "VND"
}
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity · not_found
Front · チェックアウト
住所、配送方法と支払い方法の選択、合計金額、注文の確定。
チェックアウトの状態を取得 — GET /api/v2/front/checkout
カート内の 1 つのストアについて、これまでに選んだチェックアウトの内容(住所、配送方法、支払い方法、プロモーション)を返します。カートに複数のストアがある場合は store_id を送ってください。別のストアを選ぶと、そのストアのチェックアウトの選択は最初からになります。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/checkout" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: CheckoutState
{
"data": {
"store_id": "1",
"address": null,
"save_address": false,
"shipping_method": null,
"payment_method": null,
"promotions": []
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity
配送先住所を設定 — PUT /api/v2/front/checkout/address
入力した項目、または保存済みの住所(address_id、ログイン中の顧客のみ)から配送先住所を設定します。住所を変更すると、選択済みの配送方法はクリアされます。チェックアウトの状態を返します。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
リクエスト本文: FrontCheckoutAddressUpdateRequest
リクエスト例
curl -X PUT "https://shop.example.com/api/v2/front/checkout/address" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"first_name":"","last_name":"","first_name_kana":"","last_name_kana":"","email":"","phone":"","city":"","district":"","ward":"","address1":"","address2":"","address3":"","postcode":"","country":"","company":"","comment":"","address_id":"","save_address":false}'
レスポンス 200 — data: CheckoutState
{
"data": {
"store_id": "1",
"address": null,
"save_address": false,
"shipping_method": null,
"payment_method": null,
"promotions": []
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity · validation_failed · not_found
配送方法の見積もり — GET /api/v2/front/checkout/shipping-methods
チェックアウトの住所とカートに対して見積もられた配送方法を返します。ストアが配送を使わない場合、required は false、rates は空です。先に住所を設定する必要があります。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/checkout/shipping-methods" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontCheckoutShippingMethodsResult
{
"data": {
"required": true,
"rates": [],
"unquotable": [
"ShippingExpress"
],
"selected": null
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity · address_required
配送方法を選択 — PUT /api/v2/front/checkout/shipping-method
見積もられた配送方法を rate_id で 1 つ選びます。見積もり価格は注文用に保持されます。チェックアウトの状態を返します。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
リクエスト本文: FrontCheckoutShippingMethodUpdateRequest
リクエスト例
curl -X PUT "https://shop.example.com/api/v2/front/checkout/shipping-method" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"rate_id":""}'
レスポンス 200 — data: CheckoutState
{
"data": {
"store_id": "1",
"address": null,
"save_address": false,
"shipping_method": null,
"payment_method": null,
"promotions": []
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity · validation_failed · method_unavailable
支払い方法一覧 — GET /api/v2/front/checkout/payment-methods
API で使える支払い方法を返します:オンラインの手続きがない方法(type none)と、ホスト型の支払いページを持つゲートウェイ(type hosted)です。Web サイト上でしか使えない方法は含まれません。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/checkout/payment-methods" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontCheckoutPaymentMethodsResult
{
"data": {
"required": true,
"methods": [],
"selected": null
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity
支払い方法を選択 — PUT /api/v2/front/checkout/payment-method
使える支払い方法の中から key で 1 つ選びます。チェックアウトの状態を返します。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
リクエスト本文: FrontCheckoutPaymentMethodUpdateRequest
リクエスト例
curl -X PUT "https://shop.example.com/api/v2/front/checkout/payment-method" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"key":""}'
レスポンス 200 — data: CheckoutState
{
"data": {
"store_id": "1",
"address": null,
"save_address": false,
"shipping_method": null,
"payment_method": null,
"promotions": []
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity · validation_failed · method_unavailable
チェックアウトの合計金額を取得 — GET /api/v2/front/checkout/totals
請求される合計行(小計、送料、税、割引、合計)を返します。これらの金額は保持され、注文確定時に再度照合されます。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
store_id |
クエリ | string |
カートに複数のストアがある場合に、チェックアウトするストア |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/checkout/totals" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: CheckoutTotals
{
"data": {
"store_id": "1",
"lines": [
{
"code": "total",
"title": "Total",
"value": 426000,
"text": "426,000 VND"
}
],
"currency": "VND"
}
}
エラー: login_required · cart_conflict · cart_empty · store_required · invalid_quantity
注文を確定 — POST /api/v2/front/checkout/place
チェックアウト中のストアの注文を、Idempotency-Key ヘッダーごとに 1 回だけ確定します。同じキーで再送すると、確定済みの注文を返します(201 ではなく 200)。API による注文は、サイトのオーナーが有効にするまでオフです(403 api_checkout_disabled)。合計金額を表示した後に価格が変わった場合は、409 price_changed で新しい合計金額が返されます。それを表示してから、再度確定してください。ゲストには、後で注文を参照・キャンセルするための access_token が返されます。ホスト型の支払い方法では、支払いページの URL が返されます。
| ログイン | 顧客トークン(Bearer)、またはゲストカートのカートトークン。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
Idempotency-Key (必須) |
ヘッダー | string |
変更ごとに選ぶ一意のキー(例:UUID)。同じキーで同じリクエストを再送しても、二重には適用されません。 |
リクエスト本文: FrontCheckoutPlaceRequest
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/checkout/place" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>" \
-H "Content-Type: application/json" \
-d '{"store_id":"","return_url":""}'
レスポンス 201 — data: FrontCheckoutPlaceResult
{
"data": {
"order": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"store_id": "1",
"status": 1,
"payment_status": 1,
"total": 426000,
"balance": 426000,
"currency": "VND"
},
"access_token": "oat_8f3c...",
"payment": {
"type": "hosted",
"url": "https://pay.example.com/checkout/abc"
}
}
}
エラー: api_checkout_disabled · idempotency_key_required · idempotency_key_reused · login_required · cart_conflict · cart_empty · store_required · invalid_quantity · address_required · shipping_method_required · payment_method_required · method_unavailable · minimum_not_met · price_changed · create_failed · token_missing · input_empty · shipping_unquotable
Front · 注文
顧客の注文(または注文アクセストークンを持つゲストの注文):一覧、詳細、支払い、キャンセル。
自分の注文を 1 件取得 — GET /api/v2/front/member/order/detail/{id}
ログイン中の顧客の注文を 1 件、明細と合計とともに返します。他の顧客の注文は 404 を返します。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/member/order/detail/123" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: Order
{
"data": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"customer_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"status": 1,
"payment_status": 1,
"shipping_status": 1,
"currency": "VND",
"exchange_rate": 1,
"subtotal": 360000,
"tax": 36000,
"shipping": 30000,
"discount": 0,
"other_fee": 0,
"total": 426000,
"received": 0,
"balance": 426000,
"first_name": "An",
"last_name": "Nguyen",
"email": "an@example.com",
"phone": "0901234567",
"company": null,
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"comment": "Call before delivery",
"payment_method": "Cash",
"shipping_method": "ShippingStandard",
"store_id": "1",
"details": [],
"totals": [],
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"ip": "203.0.113.5",
"user_agent": "MyShopApp/1.0",
"device_type": "phone",
"domain": "shop.example.com",
"transaction": null
}
}
エラー: not_found · validation_failed
自分の注文一覧 — GET /api/v2/front/member/order/list
ログイン中の顧客自身の注文を、明細と合計付き(管理者向けのリクエスト情報は除く)でページ単位に返します。status で絞り込み、created_at または total で並べ替えできます。fields[order] に対応しています。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.3.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
page[number] |
クエリ | integer |
読み込むページ(1 から)。 |
page[size] |
クエリ | integer |
1 ページあたりの件数(デフォルト 20、最大 100)。 |
filter |
クエリ | object |
filter[<name>]=value — リソースごとに使える名前は api-introduction のセクション 8 を参照。不明な名前は 422 |
sort |
クエリ | string |
<name> で昇順、-<name> で降順。不明な名前は 422 |
q |
クエリ | string |
検索語 |
lang |
クエリ | string |
名前・説明の言語 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
fields |
クエリ | object |
fields[<type>]=a,b を指定すると、レコードと埋め込みレコードのうち指定した項目(と id)だけを返します。不明な type や項目は 422。指定しない場合、本文は変わりません。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/member/order/list" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: 一覧: Order — meta(ページ情報)と links 付き。
{
"meta": {
"current_page": 1,
"per_page": 20,
"total": 135,
"last_page": 7,
"next_after": "eyJ0IjoiMjAyNi0xMC0zMSAwODowMDowMCIsImsiOiI5ZjBjIn0",
"has_more": true,
"sync_until": "2026-10-31T08:00:00+07:00"
},
"links": {
"first": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=1&page%5Bsize%5D=20",
"last": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=7&page%5Bsize%5D=20",
"prev": null,
"next": "https://shop.example.com/api/v2/front/product/list?page%5Bnumber%5D=2&page%5Bsize%5D=20"
},
"data": [
{
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"customer_id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"status": 1,
"payment_status": 1,
"shipping_status": 1,
"currency": "VND",
"exchange_rate": 1,
"subtotal": 360000,
"tax": 36000,
"shipping": 30000,
"discount": 0,
"other_fee": 0,
"total": 426000,
"received": 0,
"balance": 426000,
"first_name": "An",
"last_name": "Nguyen",
"email": "an@example.com",
"phone": "0901234567",
"company": null,
"country": "VN",
"postcode": "700000",
"city": "Ho Chi Minh City",
"district": "District 1",
"ward": "Ben Nghe",
"address1": "1 Le Loi",
"address2": null,
"address3": null,
"comment": "Call before delivery",
"payment_method": "Cash",
"shipping_method": "ShippingStandard",
"store_id": "1",
"details": [],
"totals": [],
"created_at": "2026-10-31T08:00:00+07:00",
"updated_at": "2026-10-31T08:00:00+07:00",
"ip": "203.0.113.5",
"user_agent": "MyShopApp/1.0",
"device_type": "phone",
"domain": "shop.example.com",
"transaction": null
}
]
}
エラー: validation_failed
自分の注文の支払い状況 — GET /api/v2/front/member/orders/{id}/payment
ログイン中の顧客の注文 1 件について、決済ゲートウェイで確認された支払い状況と金額を返します。他の顧客の注文は 404 を返します。
| ログイン | 顧客トークン(Bearer)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/member/orders/123/payment" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontMemberOrdersPaymentResult
{
"data": {
"order": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"store_id": "1",
"status": 1,
"payment_status": 2,
"total": 426000,
"received": 426000,
"balance": 0,
"currency": "VND"
},
"payment": {
"type": "hosted",
"status": "paid"
}
}
}
エラー: not_found
ゲスト注文の支払い状況 — GET /api/v2/front/orders/{id}/payment
X-Order-Access ヘッダーの注文アクセストークン(checkout/place で取得)で開いたゲスト注文の支払い状況を返します。誤ったトークンは、存在しない注文と同じ 404 を返します。
| ログイン | 不要(公開)。 |
| キャッシュ | ETag — If-None-Match を送ると、変更がない場合に 304 を受け取れます。 |
| 導入バージョン | shop 3.5.0 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
X-Order-Access (必須) |
ヘッダー | string |
ゲストが注文を確定したときに返された access_token |
If-None-Match |
ヘッダー | string |
以前のレスポンスの ETag。変更がない場合は本文が空の 304 を返します。core 3.8.0 以降。 |
リクエスト例
curl "https://shop.example.com/api/v2/front/orders/123/payment" \
-H "Accept: application/json"
レスポンス 200 — data: FrontOrdersPaymentResult
{
"data": {
"order": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"store_id": "1",
"status": 1,
"payment_status": 2,
"total": 426000,
"received": 426000,
"balance": 0,
"currency": "VND"
},
"payment": {
"type": "hosted",
"status": "paid"
}
}
}
エラー: not_found
自分の未払い注文をキャンセル — POST /api/v2/front/member/orders/{id}/cancel
ログイン中の顧客の注文のうち、API で確定され、まだ処理されていない未払いの注文を 1 件キャンセルします。その在庫は戻されます。新しい支払い状況を返します。それ以外の注文は 409 order_not_cancellable です。
| ログイン | 顧客トークン(Bearer)。 |
| 導入バージョン | shop 3.5.1 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/member/orders/123/cancel" \
-H "Accept: application/json" \
-H "Authorization: Bearer <customer-token>"
レスポンス 200 — data: FrontMemberOrdersCancelResult
{
"data": {
"order": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"store_id": "1",
"status": 1,
"payment_status": 2,
"total": 426000,
"received": 426000,
"balance": 0,
"currency": "VND"
},
"payment": {
"type": "hosted",
"status": "paid"
}
}
}
エラー: not_found · order_not_cancellable
未払いのゲスト注文をキャンセル — POST /api/v2/front/orders/{id}/cancel
API で確定された未払いのゲスト注文を、X-Order-Access トークンで開いてキャンセルします。在庫は戻されます。新しい支払い状況を返します。
| ログイン | 不要(公開)。 |
| 導入バージョン | shop 3.5.1 |
パラメーター
| 名前 | 場所 | 型 | 意味 |
|---|---|---|---|
id (必須) |
パス | string |
レコードの ID(UUID)。 |
X-Order-Access (必須) |
ヘッダー | string |
ゲストが注文を確定したときに返された access_token |
リクエスト例
curl -X POST "https://shop.example.com/api/v2/front/orders/123/cancel" \
-H "Accept: application/json"
レスポンス 200 — data: FrontOrdersCancelResult
{
"data": {
"order": {
"id": "9f0c2a3e-6b1d-4c5e-8a7f-2d3b4c5d6e7f",
"store_id": "1",
"status": 1,
"payment_status": 2,
"total": 426000,
"received": 426000,
"balance": 0,
"currency": "VND"
},
"payment": {
"type": "hosted",
"status": "paid"
}
}
}
エラー: not_found · order_not_cancellable
データオブジェクト
上記のエンドポイントが送受信するオブジェクトの項目です。日付は ISO 8601 形式の文字列、金額はレコードの通貨での数値です。
Meta
| 項目 | 型 | 意味 |
|---|---|---|
api_version |
string |
常に '2'。 |
packages |
一覧: string |
インストール済みの GP247 パッケージ(名前のみ、バージョンなし)。 |
languages |
一覧: string |
有効な言語のコード。 |
locale |
string |
サイトのデフォルト言語。 |
store_id |
string |
呼び出し元ドメインに応答するストア。 |
Brand
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
ブランド ID。 |
name |
string |
ブランド名。 |
alias |
string |
URL スラッグ。 |
image |
string | null |
ロゴのパス。 |
url |
string | null |
ブランドの Web サイト。 |
sort |
integer |
並び順。 |
status |
integer |
1 = 有効。 |
store_id |
string | null |
ストア ID。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
Category
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
カテゴリー ID。 |
alias |
string |
URL スラッグ。 |
name |
string | null |
指定した言語での名前。 |
keyword |
string | null |
指定した言語での SEO キーワード。 |
description |
string | null |
指定した言語での説明。 |
image |
string | null |
画像のパス。 |
parent |
string | null |
親カテゴリーの ID。 |
top |
integer |
1 = トップメニューに表示。 |
sort |
integer |
並び順。 |
status |
integer |
1 = 有効。 |
store_id |
string | null |
ストア ID。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
Product
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
商品 ID(UUID)。 |
sku |
string |
在庫管理単位(SKU)コード。 |
alias |
string |
商品の URL スラッグ。 |
name |
string | null |
指定した言語での商品名(ない場合は最初の言語)。 |
keyword |
string | null |
指定した言語での SEO キーワード。 |
description |
string | null |
指定した言語での短い説明。 |
content |
string | null |
指定した言語での HTML 本文。詳細のレスポンスのみ(一覧には含まれません)。 (詳細のみ) |
image |
string | null |
保存されているメイン画像のパス。 |
images |
一覧: string |
追加画像のパス。詳細のレスポンスまたは include=images 指定時に値が入り、それ以外の一覧では空の配列です。 |
price |
number | null |
定価。ストアがストアフロントで価格を非表示にしている場合は null(管理者には常に表示されます)。 |
price_final |
number | null |
ストアフロントで請求される価格(プロモーション適用後)。ストアが価格を非表示にしている場合は null。 |
tax_id |
string | null |
税ルールの ID。'0' = 非課税、'auto' = ストアのデフォルトの税。 |
kind |
integer |
商品の種類:0 単品、1 セット(構成品から成る)、2 グループ。 |
product_type |
string | null |
商品タイプ(例:物理商品、デジタル商品)。 |
brand_id |
string | null |
ブランド ID。 |
category_ids |
一覧: string |
商品のカテゴリー ID(ストアフロント:ストアフロントに表示されるカテゴリーのみ)。 |
minimum |
number |
1 回の注文あたりの最小数量。 |
weight |
number |
重量。 |
weight_class |
string | null |
重量の単位。 |
length |
number |
長さ。 |
width |
number |
幅。 |
height |
number |
高さ。 |
length_class |
string | null |
長さの単位。 |
date_available |
string | null |
商品の販売開始日(Y-m-d、カラムの生の値)。 |
store_id |
string | null |
商品を所有するストア。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
image_sizes |
object |
メイン画像の絶対 URL:{original, thumb}(画像がない場合はサイトのプレースホルダー)。 |
stock_status |
string |
in_stock または out_of_stock。ショップが在庫を管理していない場合や、在庫切れでも販売する場合は常に in_stock。 |
attributes |
一覧: ProductAttributeGroup | 商品をカートに追加するために購入者が選ぶ必要のある属性グループ。 |
cost |
number |
管理者のみ。原価。 (管理者のみ) |
stock |
number |
管理者のみ。在庫数。 (管理者のみ) |
sold |
number |
管理者のみ。販売数。 (管理者のみ) |
status |
integer |
管理者のみ。1 = 有効、0 = 無効。 (管理者のみ) |
approve |
integer |
管理者のみ。承認フラグ:1 = 承認済み。 (管理者のみ) |
supplier_id |
string | null |
管理者のみ。仕入先 ID。 (管理者のみ) |
view |
integer |
管理者のみ。閲覧数。 (管理者のみ) |
brand |
Brand | include=brand 指定時のみ:ブランド(ストアフロント:有効なブランドのみ)。 (include 指定時のみ brand) |
categories |
一覧: Category | include=categories 指定時のみ:カテゴリーの全情報。 (include 指定時のみ categories) |
Banner
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
バナー ID。 |
name |
string | null |
バナー名。 |
image |
string | null |
画像のパス。 |
url |
string | null |
リンク先。 |
target |
string | null |
リンク先のウィンドウ(例:_self、_blank)。 |
html |
string | null |
任意の HTML コンテンツ。 |
type |
string |
バナーの位置・種類のコード。 |
sort |
integer |
並び順。 |
status |
integer |
1 = 有効。 |
store_id |
string | null |
ストア ID。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
click |
integer |
管理者のみ。クリック数。 (管理者のみ) |
Page
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
ページ ID。 |
alias |
string |
URL スラッグ。 |
image |
string | null |
画像のパス。 |
name |
string | null |
指定した言語でのタイトル。 |
keyword |
string | null |
SEO キーワード。 |
description |
string | null |
短い説明。 |
content |
string | null |
HTML 本文。詳細のレスポンスのみ(一覧には含まれません)。 (詳細のみ) |
status |
integer |
1 = 有効。 |
store_id |
string | null |
ストア ID。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
SessionToken
| 項目 | 型 | 意味 |
|---|---|---|
access_token |
string |
Authorization: Bearer <token> として送る Bearer トークン。 |
token_type |
string |
常に Bearer。 |
scopes |
一覧: string |
トークンの権限。 |
expires_at |
string | null |
アクセストークンの有効期限。サイトのタイムゾーンでの 'Y-m-d H:i:s'(ISO 8601 ではありません)。 |
expires_in |
integer | null |
アクセストークンの有効期限までの秒数。 |
session_id |
string |
API セッション ID。サイトで gp247:update を実行済み(セッションのテーブルが存在する)の場合に含まれます。 |
refresh_token |
string |
with_refresh=true の場合のみ:1 回限りのリフレッシュトークン。表示されるのは 1 回だけです。 |
refresh_expires_at |
string |
with_refresh=true の場合のみ:リフレッシュトークンの有効期限('Y-m-d H:i:s')。 |
cart_merge |
object |
顧客ログインで X-Cart-Token のゲストカートが送られた場合のみ:明細数 {merged, dropped}。 |
CustomerLoginV2
| 項目 | 型 | 意味 |
|---|---|---|
email |
string (email) |
顧客アカウントのメールアドレス。 (必須) |
password |
string |
アカウントのパスワード。 (必須) |
remember_me |
boolean |
有効期間の長いトークン(Web サイトの「ログイン状態を保持」と同じ)。 |
with_refresh |
boolean |
ローテーションするリフレッシュトークンも発行します。その場合、アクセストークンの有効期間は 60 分です |
device_name |
string |
セッション一覧に表示されます |
FrontLogoutResult
| 項目 | 型 | 意味 |
|---|---|---|
revoked |
boolean |
常に true。 |
LoginChallengeAnswer
さらに、チャレンジプラグインが定義する項目(例:code)
| 項目 | 型 | 意味 |
|---|---|---|
ticket |
string |
login の challenge_required レスポンスで受け取ったチケット。 (必須) |
RefreshRequest
| 項目 | 型 | 意味 |
|---|---|---|
refresh_token |
string |
login または前回の更新で受け取ったリフレッシュトークン。各トークンは 1 回だけ使えます。 (必須) |
Session
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
セッション ID。 |
name |
string | null |
ログイン時に送られたデバイス名。ない場合はユーザーエージェント。 |
ip |
string | null |
ログイン時の IP アドレス。 |
created_at |
string | null |
ログイン日時(ISO 8601)。 |
last_used_at |
string | null |
最終利用日時(ISO 8601)。 |
refreshable |
boolean |
セッションにリフレッシュトークンがあるかどうか。 |
refresh_expires_at |
string | null |
リフレッシュ可能な期間の終了日時(ISO 8601)。 |
current |
boolean |
呼び出し元のトークンのセッションでは true。 |
FrontMemberSessionsDeleteResult
| 項目 | 型 | 意味 |
|---|---|---|
revoked |
boolean |
常に true。 |
Customer
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
顧客 ID。 |
first_name |
string | null |
名。 |
last_name |
string | null |
姓。 |
first_name_kana |
string | null |
名のカナ(日本のストア向け)。 |
last_name_kana |
string | null |
姓のカナ(日本のストア向け)。 |
email |
string |
メールアドレス(ログイン名)。 |
phone |
string | null |
電話番号。 |
sex |
integer | null |
0 = 女性、1 = 男性(カラムの生の値)。 |
birthday |
string | null |
生年月日(Y-m-d、カラムの生の値)。 |
company |
string | null |
会社。 |
country |
string | null |
国コード。 |
postcode |
string | null |
郵便番号。 |
city |
string | null |
都市。 |
district |
string | null |
地区。 |
ward |
string | null |
区・町。 |
address1 |
string | null |
住所 1 行目。 |
address2 |
string | null |
住所 2 行目。 |
address3 |
string | null |
住所 3 行目。 |
status |
integer |
1 = 有効、0 = ロック中。 |
group |
integer |
顧客グループ(カラムの生の値)。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
store_id |
string | null |
管理者のみ。アカウントのストア。 (管理者のみ) |
email_verified_at |
string | null |
管理者のみ。メールアドレスが確認された日時。'Y-m-d H:i:s' の生の値(ISO 8601 ではありません)。未確認の場合は null。 (管理者のみ) |
FrontRegisterResult
| 項目 | 型 | 意味 |
|---|---|---|
customer |
CustomerProfile | 新しいアカウント。 |
access_token |
string |
Authorization: Bearer <token> として送る Bearer トークン。 |
token_type |
string |
常に Bearer。 |
scopes |
一覧: string |
トークンの権限。 |
expires_at |
string | null |
アクセストークンの有効期限。サイトのタイムゾーンでの 'Y-m-d H:i:s'(ISO 8601 ではありません)。 |
expires_in |
integer | null |
アクセストークンの有効期限までの秒数。 |
session_id |
string |
API セッション ID。サイトで gp247:update を実行済み(セッションのテーブルが存在する)の場合に含まれます。 |
refresh_token |
string |
with_refresh=true の場合のみ:1 回限りのリフレッシュトークン。表示されるのは 1 回だけです。 |
refresh_expires_at |
string |
with_refresh=true の場合のみ:リフレッシュトークンの有効期限('Y-m-d H:i:s')。 |
cart_merge |
object |
顧客ログインで X-Cart-Token のゲストカートが送られた場合のみ:明細数 {merged, dropped}。 |
Register
ストアの設定に応じたその他の顧客項目(last_name、phone、address1…、カスタム項目、有効な場合は captcha 項目)。with_refresh、device_name は login と同じ
| 項目 | 型 | 意味 |
|---|---|---|
first_name |
string |
名。 (必須) |
email |
string (email) |
メールアドレス。ログイン名も兼ねます。 |
password |
string |
パスワード(サイトのパスワードルールが適用されます)。 (必須) |
password_confirmation |
string |
同じパスワードをもう一度。 (必須) |
with_refresh |
boolean |
リフレッシュトークンも返します。 |
device_name |
string |
ログイン中のデバイス一覧に表示される名前。 |
FrontPasswordForgotResult
| 項目 | 型 | 意味 |
|---|---|---|
sent |
boolean |
常に true。 |
ForgotPassword
| 項目 | 型 | 意味 |
|---|---|---|
email |
string (email) |
アカウントのメールアドレス。存在するかどうかに関係なく、同じレスポンスを返します。 (必須) |
FrontPasswordResetResult
| 項目 | 型 | 意味 |
|---|---|---|
reset |
boolean |
常に true。 |
ResetPassword
| 項目 | 型 | 意味 |
|---|---|---|
email |
string (email) |
アカウントのメールアドレス。 (必須) |
token |
string |
再設定メールのトークン。 (必須) |
password |
string |
新しいパスワード。 (必須) |
password_confirmation |
string |
同じパスワードをもう一度。 (必須) |
CustomerProfile
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
顧客 ID。 |
first_name |
string | null |
名。 |
last_name |
string | null |
姓。 |
first_name_kana |
string | null |
名のカナ(日本のストア向け)。 |
last_name_kana |
string | null |
姓のカナ(日本のストア向け)。 |
email |
string |
メールアドレス(ログイン名)。 |
phone |
string | null |
電話番号。 |
sex |
integer | null |
0 = 女性、1 = 男性(カラムの生の値)。 |
birthday |
string | null |
生年月日(Y-m-d、カラムの生の値)。 |
company |
string | null |
会社。 |
country |
string | null |
国コード。 |
postcode |
string | null |
郵便番号。 |
city |
string | null |
都市。 |
district |
string | null |
地区。 |
ward |
string | null |
区・町。 |
address1 |
string | null |
住所 1 行目。 |
address2 |
string | null |
住所 2 行目。 |
address3 |
string | null |
住所 3 行目。 |
status |
integer |
1 = 有効、0 = ロック中。 |
group |
integer |
顧客グループ(カラムの生の値)。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
email_verified |
boolean |
メールアドレスが確認済みかどうか。 |
email_verification_required |
boolean |
ストアがメールアドレスの確認を必須にしているかどうか。 |
default_address_id |
string | null |
デフォルトの住所の ID。 |
default_address |
CustomerAddress | デフォルトの住所(CustomerAddress の形式)、または null。 |
Profile
ストアで設定された顧客項目。status と password は無視されます
| 項目 | 型 | 意味 |
|---|---|---|
first_name |
string |
名。 |
email |
string (email) |
メールアドレス。変更すると、新しいアドレスの確認が必要になる場合があります。 |
FrontMemberPasswordUpdateResult
| 項目 | 型 | 意味 |
|---|---|---|
changed |
boolean |
常に true。 |
ChangePassword
| 項目 | 型 | 意味 |
|---|---|---|
password_old |
string |
現在のパスワード。 (必須) |
password |
string |
新しいパスワード。 (必須) |
password_confirmation |
string |
同じパスワードをもう一度。 (必須) |
FrontMemberEmailVerifyResult
| 項目 | 型 | 意味 |
|---|---|---|
sent |
boolean |
メールが送信された場合は true(ストアが確認を必須にしている場合)。 |
CustomerAddress
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
住所 ID。 |
first_name |
string | null |
名。 |
last_name |
string | null |
姓。 |
first_name_kana |
string | null |
名のカナ。 |
last_name_kana |
string | null |
姓のカナ。 |
phone |
string | null |
電話番号。 |
country |
string | null |
国コード。 |
postcode |
string | null |
郵便番号。 |
city |
string | null |
都市。 |
district |
string | null |
地区。 |
ward |
string | null |
区・町。 |
address1 |
string | null |
住所 1 行目。 |
address2 |
string | null |
住所 2 行目。 |
address3 |
string | null |
住所 3 行目。 |
is_default |
boolean |
顧客のデフォルトの住所では true。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
Address
ストアの設定に応じたその他の住所項目。"default": true を指定するとデフォルトの住所になります
| 項目 | 型 | 意味 |
|---|---|---|
first_name |
string |
受取人の名。 (必須) |
address1 |
string |
住所の 1 行目。 (必須) |
default |
boolean |
デフォルトの住所にします。 |
FrontMemberAddressDeleteResult
| 項目 | 型 | 意味 |
|---|---|---|
deleted |
boolean |
常に true。 |
Cart
| 項目 | 型 | 意味 |
|---|---|---|
stores |
一覧: object |
ストアごとにまとめたカート明細:{store_id, lines: [CartLine], subtotal}。subtotal は購入可能な明細だけを合計します。 |
line_count |
integer |
明細の数。 |
item_count |
number |
すべての明細の合計数量。 |
currency |
string |
価格の表示通貨。 |
FrontCartItemsRequest
| 項目 | 型 | 意味 |
|---|---|---|
product_id |
string |
商品の ID。 (必須) |
qty |
number |
追加する数量。 (必須) |
options |
object |
属性グループ ID => 選択肢名 |
FrontCartItemsUpdateRequest
| 項目 | 型 | 意味 |
|---|---|---|
qty |
number |
明細の新しい数量。 (必須) |
FrontCartPromotionsResult
| 項目 | 型 | 意味 |
|---|---|---|
result |
object |
{msg}:プロモーションプラグインのメッセージ。 |
totals |
CheckoutTotals | 新しい合計金額(CheckoutTotals の形式)。 |
FrontCartPromotionsRequest
| 項目 | 型 | 意味 |
|---|---|---|
payload |
object |
プラグインが求める形式(例:{"code": "SUMMER"}) |
FrontCartPromotionsDeleteResult
| 項目 | 型 | 意味 |
|---|---|---|
totals |
CheckoutTotals | 新しい合計金額(CheckoutTotals の形式)。 |
CheckoutState
| 項目 | 型 | 意味 |
|---|---|---|
store_id |
string |
チェックアウト中のストア。 |
address |
object | null |
これまでに設定された配送先住所:first_name, last_name, first_name_kana, last_name_kana, email, phone, city, district, ward, address1, address2, address3, postcode, country, company, comment(すべて文字列)。 |
save_address |
boolean |
住所を顧客のアドレス帳に保存するかどうか。 |
shipping_method |
object | null |
選択された配送方法(ShippingRate の形式、見積もりが保持されていない場合は {plugin_key})。未選択の場合は null。 |
payment_method |
string | null |
選択された支払いプラグインのキー。 |
promotions |
一覧: string |
適用されたプロモーションプラグインのキー。 |
FrontCheckoutAddressUpdateRequest
| 項目 | 型 | 意味 |
|---|---|---|
first_name |
string |
受取人の名。 |
last_name |
string |
受取人の姓。 |
first_name_kana |
string |
名のカナ(日本のストア向け)。 |
last_name_kana |
string |
姓のカナ(日本のストア向け)。 |
email |
string |
注文確認用のメールアドレス。 |
phone |
string |
電話番号。 |
city |
string |
都市または省・県。 |
district |
string |
地区。 |
ward |
string |
区・町。 |
address1 |
string |
住所の 1 行目。 |
address2 |
string |
住所の 2 行目。 |
address3 |
string |
住所の 3 行目。 |
postcode |
string |
郵便番号。 |
country |
string |
国コード(ISO 3166-1 alpha-2、例:VN)。 |
company |
string |
会社名。 |
comment |
string |
ショップへの備考。 |
address_id |
string |
顧客の保存済み住所のいずれか |
save_address |
boolean |
ログイン中の顧客:アドレス帳にも保存します。 |
FrontCheckoutShippingMethodsResult
| 項目 | 型 | 意味 |
|---|---|---|
required |
boolean |
ストアが配送方法の選択を必須にしているかどうか。 |
rates |
一覧: ShippingRate | 見積もられた選択肢。 |
unquotable |
一覧: string |
この荷物の見積もりができなかった配送プラグインのキー。 |
selected |
string | null |
すでに選択された配送方法の ID(この住所とカートに対してまだ有効な場合)。 |
FrontCheckoutShippingMethodUpdateRequest
| 項目 | 型 | 意味 |
|---|---|---|
rate_id |
string |
checkout/shipping-methods で取得した配送方法の ID。 (必須) |
FrontCheckoutPaymentMethodsResult
| 項目 | 型 | 意味 |
|---|---|---|
required |
boolean |
ストアが支払い方法の選択を必須にしているかどうか。 |
methods |
一覧: PaymentMethod | 使える支払い方法。 |
selected |
string | null |
すでに選択された支払い方法のキー。 |
FrontCheckoutPaymentMethodUpdateRequest
| 項目 | 型 | 意味 |
|---|---|---|
key |
string |
checkout/payment-methods で取得した支払い方法のキー。 (必須) |
CheckoutTotals
| 項目 | 型 | 意味 |
|---|---|---|
store_id |
string |
チェックアウト中のストア。 |
lines |
一覧: OrderTotal | 合計行(OrderTotal と同じ形式):code、title、value、text。 |
currency |
string |
表示通貨。 |
FrontCheckoutPlaceRequest
| 項目 | 型 | 意味 |
|---|---|---|
store_id |
string |
注文する明細のストア(カートには複数のストアの明細が入ることがあります)。 |
return_url |
string |
ゲートウェイでの手続き後に支払者が戻る先。サイトの許可リスト(GP247_PAYMENT_RETURN_URLS)にある場合のみ使われます |
FrontCheckoutPlaceResult
| 項目 | 型 | 意味 |
|---|---|---|
order |
object |
確定した注文の {id, store_id, status, payment_status, total, balance, currency}。 |
access_token |
string |
ゲストのみ:注文アクセストークン。orders/{id}/payment と orders/{id}/cancel で X-Order-Access として送ります。 |
payment |
object |
{type: none} または {type: hosted, url}:url はゲートウェイのページの URL です。ゲートウェイを開始できなかった場合(同じキーで再試行してください)や、支払う金額がない場合は null。 |
Order
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
注文 ID。 |
customer_id |
string | null |
顧客 ID(ゲスト注文では '0' または空)。 |
status |
integer |
注文ステータスの ID(管理画面の注文画面で設定したステータス)。 |
payment_status |
integer |
支払いステータスの ID。 |
shipping_status |
integer |
配送ステータスの ID。 |
currency |
string |
注文の通貨。 |
exchange_rate |
number |
注文に使われた為替レート。 |
subtotal |
number |
明細の合計。 |
tax |
number |
税。 |
shipping |
number |
送料。 |
discount |
number |
割引。 |
other_fee |
number |
その他の手数料。 |
total |
number |
支払金額。 |
received |
number |
これまでに受け取った金額。 |
balance |
number |
未払いの残額。 |
first_name |
string | null |
配送先の名。 |
last_name |
string | null |
配送先の姓。 |
email |
string | null |
購入者のメールアドレス。 |
phone |
string | null |
購入者の電話番号。 |
company |
string | null |
会社。 |
country |
string | null |
国コード。 |
postcode |
string | null |
郵便番号。 |
city |
string | null |
都市。 |
district |
string | null |
地区。 |
ward |
string | null |
区・町。 |
address1 |
string | null |
住所 1 行目。 |
address2 |
string | null |
住所 2 行目。 |
address3 |
string | null |
住所 3 行目。 |
comment |
string | null |
購入者の備考。 |
payment_method |
string | null |
支払いプラグインのキー。 |
shipping_method |
string | null |
配送プラグインのキー。 |
store_id |
string | null |
注文のストア。 |
details |
一覧: OrderLine | 注文明細。 |
totals |
一覧: OrderTotal | 表示順の合計行。 |
created_at |
string | null |
作成日時(ISO 8601)。 |
updated_at |
string | null |
最終更新日時(ISO 8601)。 |
ip |
string | null |
管理者のみ。注文元の IP アドレス。 (管理者のみ) |
user_agent |
string | null |
管理者のみ。ブラウザー/アプリのユーザーエージェント。 (管理者のみ) |
device_type |
string | null |
管理者のみ。デバイスの種類(desktop、phone、tablet、other)。 (管理者のみ) |
domain |
string | null |
管理者のみ。注文が確定されたサイトのドメイン。 (管理者のみ) |
transaction |
string | null |
管理者のみ。従来の取引参照番号。 (管理者のみ) |
transactions |
一覧: OrderTransaction | 管理者のみ、include=transactions 指定時:注文の入出金。 (管理者のみ, include 指定時のみ transactions) |
histories |
一覧: OrderHistory | 管理者のみ、include=histories 指定時:注文履歴の行(プレーンテキスト)。 (管理者のみ, include 指定時のみ histories) |
FrontMemberOrdersPaymentResult
| 項目 | 型 | 意味 |
|---|---|---|
order |
object |
{id, store_id, status, payment_status, total, received, balance, currency}。住所と明細は含みません。 |
payment |
object |
ゲートウェイから記録された {type: none|hosted, status: paid|partially_paid|refunded|unpaid}。 |
FrontOrdersPaymentResult
| 項目 | 型 | 意味 |
|---|---|---|
order |
object |
{id, store_id, status, payment_status, total, received, balance, currency}。住所と明細は含みません。 |
payment |
object |
ゲートウェイから記録された {type: none|hosted, status: paid|partially_paid|refunded|unpaid}。 |
FrontMemberOrdersCancelResult
| 項目 | 型 | 意味 |
|---|---|---|
order |
object |
{id, store_id, status, payment_status, total, received, balance, currency}。住所と明細は含みません。 |
payment |
object |
ゲートウェイから記録された {type: none|hosted, status: paid|partially_paid|refunded|unpaid}。 |
FrontOrdersCancelResult
| 項目 | 型 | 意味 |
|---|---|---|
order |
object |
{id, store_id, status, payment_status, total, received, balance, currency}。住所と明細は含みません。 |
payment |
object |
ゲートウェイから記録された {type: none|hosted, status: paid|partially_paid|refunded|unpaid}。 |
ProductAttributeGroup
| 項目 | 型 | 意味 |
|---|---|---|
group_id |
string |
属性グループ ID。カートは選択を options[group_id] として受け取ります。 |
name |
string |
グループ名(例:色)。 |
required |
boolean |
常に true:すべてのグループを選択する必要があります。 |
options |
一覧: object |
グループの選択肢:{value, add_price}。add_price は追加料金で、価格が非表示の場合は null。 |
ShippingRate
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
rate_id として送るレート ID。 |
plugin_key |
string |
配送プラグインのキー。 |
service_code |
string |
プラグイン内のサービスコード。 |
title |
string |
表示するラベル。 |
amount |
number |
表示通貨での価格。 |
currency |
string |
表示通貨。 |
eta_min_days |
integer | null |
最短配送日数。 |
eta_max_days |
integer | null |
最長配送日数。 |
PaymentMethod
| 項目 | 型 | 意味 |
|---|---|---|
key |
string |
key として送る支払いプラグインのキー。 |
title |
string |
ラベル。 |
note |
string |
支払い方法の補足説明。 |
type |
string |
none = オンライン決済の手続きなし。hosted = 支払者をゲートウェイのページへ移動させます。 |
OrderTotal
| 項目 | 型 | 意味 |
|---|---|---|
code |
string |
行コード(例:subtotal、tax、shipping、discount、total)。 |
title |
string |
行のラベル。 |
value |
number |
金額。 |
text |
string |
表示用に整形した金額。 |
OrderLine
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
明細 ID。 |
product_id |
string |
商品 ID。 |
sku |
string | null |
注文時の SKU。 |
name |
string | null |
注文時の商品名。 |
price |
number |
単価。 |
qty |
number |
数量。 |
discount |
number |
明細の割引。 |
tax |
number |
明細の税。 |
tax_rate |
number |
税率(パーセント)。 |
total_price |
number |
明細の合計。 |
attribute |
string | null |
選択された属性。JSON エンコードされた文字列 {group_id: 'name__price[__slug]'}、カラムの生の値。 |
OrderTransaction
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
取引 ID。 |
type |
string |
入出金の種類(例:支払い、返金)。 |
amount |
number |
金額。 |
currency |
string |
通貨。 |
method |
string | null |
支払い方法のキー。 |
gateway_transaction_id |
string | null |
決済ゲートウェイ側の参照番号。 |
paid_at |
string | null |
支払日時(ISO 8601)。 |
created_at |
string | null |
記録日時(ISO 8601)。 |
OrderHistory
| 項目 | 型 | 意味 |
|---|---|---|
id |
string |
履歴行の ID。 |
content |
string |
履歴行のテキスト(HTML は除去済み)。 |
order_status_id |
integer |
その行の時点での注文ステータス。 |
admin_id |
string | null |
記入した管理者。 |
customer_id |
string | null |
記入した顧客。 |
created_at |
string | null |
記入日時(ISO 8601)。 |
📅 最終更新: 2026-11-03 · ✍️ 作成者 (Author): GP247