> ## Documentation Index
> Fetch the complete documentation index at: https://docs.utage-system.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 会員サイトツール

> 会員サイト・コース・コースグループ・バンドル・レッスン・受講生の操作ツール

## 概要

会員サイト系ツールでは、会員サイトとその配下のコース・コースグループ・バンドル・レッスン・受講生を管理できます。各ツールの `site_id` には会員サイトIDを指定します（`member_site_list` で取得）。

```
会員サイト
  ├── コース
  │     └── レッスングループ
  │           └── レッスン
  ├── コースグループ（コースの分類）
  ├── バンドル（コース・コミュニティグループのセット）
  ├── コミュニティグループ
  └── 受講生 ── 登録コース・コミュニティ、受講状況、操作履歴
```

コースグループはコースの分類、バンドルは受講生にまとめて登録するコース・コミュニティグループのセットです。受講生は会員サイト配下で、登録コース・コミュニティ（バンドル・コース・コミュニティグループへの登録）と受講状況・操作履歴を持ちます。レッスンごとの受講状況・受講完了者はコース配下のツール（`member_lesson_stats_list` など）で取得します。

## 会員サイト

会員サイトの一覧取得・作成・取得・更新・削除・並び替えを行います。会員サイトはコース・コースグループ・バンドル・レッスン・受講生の親で、それらのツールで指定する `site_id` は `member_site_list` で取得します。

### member\_site\_list

会員サイトの一覧を表示順で取得します（削除したサイトは含みません）。各サイトの設定は `member_site_get` で確認します。コース・コースグループ・バンドル・レッスン・受講生の操作で指定する `site_id` の取得元です。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `page` | integer | - | ページ番号（既定 1） |
| `per_page` | integer | - | 1ページあたりの件数（既定 20・最大 100） |

**指示例:**

* 「会員サイトの一覧を見せて」
* 「"講座サイト"という会員サイトのIDを調べて」

***

### member\_site\_create

会員サイトを作成します。指定できるのはサイト名だけで、その他の設定は既定値で作成されます（アカウント自動発行時仮パスワードは自動で発行、ログインなしでの閲覧は「不可」、検索エンジンに非表示、コースページの検索欄・カテゴリ選択欄は表示）。設定の変更は `member_site_update` で行います。契約内容による会員サイトの件数上限に達している場合はエラー（`bad_request`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `name` | string | 必須 | サイト名（最大255文字） |

**指示例:**

* 「"オンライン講座"という会員サイトを作って」

***

### member\_site\_get

会員サイトの設定を取得します。基本設定、ログインページ・コースページ・レッスンページの設定、メニュー項目（`login_footer_menu_items` など）を含む全項目を返します。取得結果をそのまま `member_site_update` に渡しても状態は変わりません。ただし、リンク先の固定ページが削除されたメニュー項目（`type` が `page` で `page_id` が null）を含む場合は、その項目を直すか除いてから渡します（そのまま渡すとエラー `validation_error`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |

**指示例:**

* 「この会員サイトの設定を見せて」
* 「会員サイトのログインなしでの閲覧の設定を確認して」

***

### member\_site\_update

会員サイトの設定を更新します。指定したフィールドだけを更新する部分更新で、基本設定・ログインページ・コースページ・レッスンページの設定を 1 回で更新できます。メニュー項目の 3 つの配列は指定した内容で全件置き換えます。`login_footer_use_menu` などの `〜_use_menu` に false を指定すると、そのメニュー項目は全て削除されます。更新後に `〜_use_menu` が false になる状態でメニュー項目を 1 件以上指定するとエラー（`validation_error`）です。`days_to_password_change` に null を指定すると、パスワード変更が未完了の受講生への変更要求も解除されます。色と `course_name_font_size` の形式は値を変更する場合だけ検証されます。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `name` | string | - | サイト名（最大255文字） |
| `memo` | string / null | - | メモ（管理画面でのみ表示。null でクリア） |
| `copyright` | string / null | - | Copyright表記（最大255文字。null でクリア） |
| `temporary_password` | string | - | アカウント自動発行時仮パスワード（最大255文字。半角英数字と記号のみ） |
| `days_to_password_change` | integer / null | - | 新規ユーザーへのパスワード変更の強制（初めてログインしてから何日後に強制するか。0〜365。0 は初回ログイン直後）。null で強制しない |
| `js_head` | string / null | - | headタグの最後に挿入するJavaScript（サイト共通。null でクリア） |
| `js_body_top` | string / null | - | bodyタグの最初に挿入するJavaScript（サイト共通。null でクリア） |
| `js_body` | string / null | - | bodyタグの最後に挿入するJavaScript（サイト共通。null でクリア） |
| `login_type` | string | - | ログインなしでの閲覧。`require`: 不可（全てのコンテンツでログインが必須）/ `optional`: 可（指定したコンテンツのみ閲覧可能）/ `none`: 可（全てのコンテンツが閲覧可能）。コース・レッスンの開放日・締め切りに `reader_date` を指定できるのは `optional` / `none` のときだけ |
| `use_bookmark` | boolean | - | ブックマーク機能を利用するか |
| `is_no_index` | boolean | - | 検索エンジンへの表示（true は検索エンジンに非表示） |
| `show_link_to_community` | boolean | - | コミュニティへのリンクを表示するか（コミュニティ機能が有効なサイトのみ変更可。それ以外はエラー `bad_request`） |
| `login_background` | string / null | - | ログインページ全体の背景色（`#RRGGBB`。null でクリア） |
| `login_background_center` | string / null | - | ログインページ中央枠内の背景色（`#RRGGBB`。null でクリア） |
| `login_use_logo` | boolean | - | ログインページでサイトロゴ画像を利用するか |
| `login_logo_url` | string / null | - | ログインページのロゴ画像URL（最大255文字・URL形式。null でクリア） |
| `login_footer_use_menu` | boolean | - | ログインページのフッターメニューを利用するか（false にすると登録済みの項目は全て削除） |
| `login_footer_menu_items` | array | - | ログインページのフッターメニュー項目（全件置き換え）。各要素は `type`（`page`: 固定ページ / `url`: URL / `news`: お知らせ一覧）、`page_id`（固定ページID。`page` のとき必須）、`url`（リンク先URL。`url` のとき必須）、`text`（メニュー表記） |
| `use_description` | boolean | - | トップページ説明文を表示するか |
| `description` | string / null | - | トップページ説明文（HTML。null でクリア） |
| `use_news` | boolean | - | お知らせを表示するか |
| `show_course_search` | boolean | - | コースページに検索欄を表示するか |
| `show_course_category` | boolean | - | コースページにカテゴリ選択欄を表示するか |
| `search_type` | string | - | 検索する範囲。`all`: レッスン内容含め全て / `course_name`: コース名のみ |
| `course_display_type` | string | - | コースの表示形式。`all`: すべてのコースを一覧で表示 / `group`: グループごとにコースを表示 / `only_group`: グループを選択後コースを表示 |
| `course_name_font_size` | string / null | - | コース名の文字サイズ（`16px`〜`26px` の 1px 刻み。null でデフォルト） |
| `course_background` | string / null | - | コースページの背景色（`#RRGGBB`。null でクリア） |
| `course_header_background` | string / null | - | ヘッダー色（`#RRGGBB`。null でクリア） |
| `course_header_color` | string / null | - | ヘッダー文字色（`#RRGGBB`。null でクリア） |
| `course_header_use_logo` | boolean | - | ヘッダーにサイトロゴ画像を利用するか |
| `course_header_logo_url` | string / null | - | ヘッダーのロゴ画像URL（最大255文字・URL形式。null でクリア） |
| `course_header_use_menu` | boolean | - | ヘッダーメニューを利用するか（false にすると登録済みの項目は全て削除） |
| `course_header_menu_items` | array | - | ヘッダーメニュー項目（全件置き換え。要素は `login_footer_menu_items` と同じ） |
| `course_footer_background` | string / null | - | フッター色（`#RRGGBB`。null でクリア） |
| `course_footer_color` | string / null | - | フッター文字色（`#RRGGBB`。null でクリア） |
| `course_footer_use_menu` | boolean | - | フッターメニューを利用するか（false にすると登録済みの項目は全て削除） |
| `course_footer_menu_items` | array | - | フッターメニュー項目（全件置き換え。要素は `login_footer_menu_items` と同じ） |
| `lesson_complete_type` | string | - | 完了ボタンを押した後の動作。`stay`: 何もしない / `go_next`: 次のレッスンページへ遷移 |
| `lesson_show_all_lessons` | boolean | - | レッスン一覧の表示形式（false: 同一グループのレッスンのみ表示 / true: 全てのレッスンを表示） |
| `show_lesson_search` | boolean | - | レッスンページに検索欄を表示するか |

**指示例:**

* 「この会員サイトをログインなしで閲覧できるようにして」
* 「会員サイトのヘッダー色を #2B3636 に変えて」

***

### member\_site\_delete

会員サイトを削除します。削除したサイトは一覧・取得の対象外になります。配下のコース・レッスン・受講生のデータは変更しません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |

**指示例:**

* 「この会員サイトを削除して」

***

### member\_site\_reorder

会員サイトの表示順を変更します。削除したサイトを除く全ての会員サイトのIDを並べたい順で指定します（過不足があるとエラー `validation_error`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_ids` | array | 必須 | 会員サイトIDの配列（並べたい順序で全サイトのIDを指定） |

**指示例:**

* 「"オンライン講座"の会員サイトを一番上に並べ替えて」

***

## コース

会員サイト配下のコースの一覧取得・作成・取得・更新・削除・並び替えを行います。コースの所属コースグループはコース並び替え（`member_course_reorder`）で変更します。レッスンの操作はレッスンのツールで行います。

### member\_course\_list

会員サイト配下のコースの一覧を表示順で取得します（削除したコースは含みません）。各コースの設定は `member_course_get` で確認します。`course_url` は受講生向けのコースページURLです（`type` が `url` のコースは null）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |

**指示例:**

* 「この会員サイトのコース一覧を見せて」
* 「下書きのコースを教えて」

***

### member\_course\_create

会員サイトにコースを作成します。作成したコースはコース一覧の末尾に未分類で追加され、コースグループへの振り分けは `member_course_reorder` で行います。レッスングループ「メインレッスン」が自動で作成されます。契約内容によるコースの件数上限に達している場合、`type` に `normal` / `url` 以外を指定した場合、`release_type` / `close_type` / 期間限定オファーの `type` に `reader_date` を指定したがサイトの `login_type` が `optional` / `none` ではない場合はエラー（`bad_request`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `name` | string | 必須 | コース名（最大255文字） |
| `system_name` | string | - | 管理名称（最大255文字。設定すると管理画面の一覧でコース名の代わりに表示） |
| `type` | string | - | 種類。`normal`: 通常コース（既定）/ `url`: 指定したURLへリンク |
| `url` | string | - | リンク先URL（最大2,048文字。`type` が `url` のとき必須） |
| `href_type` | string / null | - | リンクの開き方。null: 通常 / `blank`: 別ウィンドウ |
| `image_url` | string / null | - | コース画像URL（最大255文字・URL形式） |
| `button_text` | string / null | - | ボタンテキスト（最大255文字。省略時は「受講する」） |
| `is_hide_progress` | boolean | - | 進捗率を表示しないか（既定 false） |
| `is_video_autoplay_setting` | boolean | - | 動画自動再生/視聴完了設定を表示するか（既定 true） |
| `comment_setting_type` | string | - | コメント機能。`individual`: 各レッスンごとに設定（既定）/ `enable_all`: 全レッスンで利用する |
| `is_published` | boolean | - | ステータス（true: 公開 / false: 下書き。既定 false） |
| `category_ids` | array | - | コースカテゴリIDの配列（同じサイトのカテゴリ以外はエラー `validation_error`） |
| `require_login` | boolean | - | 未ログイン時の閲覧（true: 不可 / false: 可。既定 true） |
| `show_non_purchaser` | boolean | - | 常時表示オファーを利用するか（既定 false） |
| `url_for_non_purchaser` | string | - | 常時オファーページURL（最大255文字。`show_non_purchaser` が true のとき必須） |
| `use_limited_offer` | boolean | - | 期間限定オファーを利用するか（既定 false） |
| `limited_offers` | array | - | 期間限定オファーの配列（`use_limited_offer` が true のとき 1 件以上必須）。各要素は `type`（`bundle_enrolled_date`: バンドル登録日時（既定）/ `reader_date`: アクセス元シナリオの配信基準日時）、`bundle_id`（バンドルID。`bundle_enrolled_date` のとき必須）、`day`（起算日時から何日後まで表示するか。0〜9999）、`hour`（表示を終了する時刻。0〜23）、`url`（オファーページURL）。`reader_date` はサイトの `login_type` が `optional` / `none` のときのみ |
| `has_target_persons` | boolean | - | 受講対象者をコース登録日で指定するか（既定 false。true のときは開始日・終了日の少なくとも一方が必須） |
| `target_persons_date_from` | string | - | 受講対象者のコース登録日の開始日（YYYY-MM-DD） |
| `target_persons_date_to` | string | - | 受講対象者のコース登録日の終了日（YYYY-MM-DD。開始日以降） |
| `course_style` | string | - | 受講スタイル。`open_all`: 最初から開放済みの全てのレッスンが受講可能（既定）/ `one_by_one`: 受講完了に変更すると次のレッスンが受講可能 |
| `release_type` | string | - | 開放日（開始日）。`immediately`: コースへ登録後すぐに開放（既定）/ `scheduled`: コースへ登録後、指定した日数経過後に開放 / `scheduled_month`: コースへ登録後、指定した月数経過後に開放 / `datetime`: 指定した日時に開放 / `reader_date`: アクセス元シナリオの配信基準日時から指定した日数経過後に開放（サイトの `login_type` が `optional` / `none` のときのみ） |
| `release_day` | integer | - | 開放日数（0〜9999。`release_type` が `scheduled` / `reader_date` のとき必須） |
| `release_month` | integer | - | 開放月数（0〜9999。`release_type` が `scheduled_month` のとき必須） |
| `release_date` | string | - | 開放日（YYYY-MM-DD。`release_type` が `datetime` のとき必須） |
| `release_hour` | integer | - | 開放時刻（0〜23。`release_type` が `immediately` 以外のとき必須） |
| `action_before_release` | string | - | 開放前の表示。`show`: 表示する（既定）/ `hide`: 表示しない |
| `close_type` | string | - | 締め切り（終了日）。`none`: 締め切りを設けない（既定）/ `scheduled`: コースへ登録後、指定した日数経過後に終了 / `datetime`: 指定した日時に終了 / `reader_date`: アクセス元シナリオの配信基準日時から指定した日数経過後に終了（サイトの `login_type` が `optional` / `none` のときのみ） |
| `close_day` | integer | - | 締め切り日数（0〜9999。`close_type` が `scheduled` / `reader_date` のとき必須） |
| `close_date` | string | - | 締め切り日（YYYY-MM-DD。`close_type` が `datetime` のとき必須） |
| `close_hour` | integer | - | 締め切り時刻（0〜23。`close_type` が `none` 以外のとき必須） |
| `cancel_type` | string | - | 受講停止時の動作。`close`: 全て閲覧不可（既定）/ `release`: 停止日までに開放済みのレッスンは引き続き閲覧可 |

**指示例:**

* 「"基礎編"というコースを作って」
* 「登録の7日後の10時に開放されるコースを下書きで作って」

***

### member\_course\_get

コースの設定を取得します。基本設定、未購入者へのオファー設定（常時表示オファー・期間限定オファー）、自動化設定（受講対象者・受講スタイル・開放日・締め切り・受講停止時の動作）、コメント設定、コースカテゴリ（`category_ids`）、所属コースグループ（`course_group_id`）を含む全項目を返します。`course_group_id` の変更は `member_course_reorder` で行います。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |

**指示例:**

* 「このコースの設定を見せて」
* 「このコースの開放日と締め切りの設定を確認して」

***

### member\_course\_update

コースの設定を更新します。指定したフィールドだけを更新する部分更新です。`category_ids` / `limited_offers` は指定した内容で全件置き換えます。`use_limited_offer` に false を指定すると登録済みの期間限定オファーは全て削除されます。更新後の `show_non_purchaser` が false の場合、`url_for_non_purchaser` は null になります。`course_group_id` は変更できません（`member_course_reorder` で変更します）。`type` を `normal` / `url` 以外へ変更した場合や、`reader_date` を指定できないサイトで `release_type` / `close_type` を `reader_date` へ変更した場合はエラー（`bad_request`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `name` | string | - | コース名（最大255文字） |
| `system_name` | string / null | - | 管理名称（最大255文字。null でクリア） |
| `type` | string | - | 種類（`normal` / `url`） |
| `url` | string / null | - | リンク先URL（最大2,048文字。`type` が `url` のとき必須） |
| `href_type` | string / null | - | リンクの開き方。null: 通常 / `blank`: 別ウィンドウ |
| `image_url` | string / null | - | コース画像URL（最大255文字・URL形式。null でクリア） |
| `button_text` | string / null | - | ボタンテキスト（最大255文字。null で「受講する」） |
| `is_hide_progress` | boolean | - | 進捗率を表示しないか |
| `is_video_autoplay_setting` | boolean | - | 動画自動再生/視聴完了設定を表示するか |
| `comment_setting_type` | string | - | コメント機能（`individual`: 各レッスンごとに設定 / `enable_all`: 全レッスンで利用する） |
| `is_published` | boolean | - | ステータス（true: 公開 / false: 下書き） |
| `category_ids` | array | - | コースカテゴリIDの配列（全件置き換え。空配列で全て解除） |
| `require_login` | boolean | - | 未ログイン時の閲覧（true: 不可 / false: 可） |
| `show_non_purchaser` | boolean | - | 常時表示オファーを利用するか |
| `url_for_non_purchaser` | string / null | - | 常時オファーページURL（最大255文字。`show_non_purchaser` が true のとき必須） |
| `use_limited_offer` | boolean | - | 期間限定オファーを利用するか（false にすると登録済みのオファーは全て削除） |
| `limited_offers` | array | - | 期間限定オファーの配列（全件置き換え。要素は `member_course_create` と同じ） |
| `has_target_persons` | boolean | - | 受講対象者をコース登録日で指定するか |
| `target_persons_date_from` | string / null | - | 受講対象者のコース登録日の開始日（YYYY-MM-DD。null でクリア） |
| `target_persons_date_to` | string / null | - | 受講対象者のコース登録日の終了日（YYYY-MM-DD。null でクリア） |
| `course_style` | string | - | 受講スタイル（`open_all` / `one_by_one`） |
| `release_type` | string | - | 開放日（開始日）（`immediately` / `scheduled` / `scheduled_month` / `datetime` / `reader_date`）。`reader_date` への変更はサイトの `login_type` が `optional` / `none` のときのみ |
| `release_day` | integer / null | - | 開放日数（0〜9999。null でクリア） |
| `release_month` | integer / null | - | 開放月数（0〜9999。null でクリア） |
| `release_date` | string / null | - | 開放日（YYYY-MM-DD。null でクリア） |
| `release_hour` | integer / null | - | 開放時刻（0〜23。null でクリア） |
| `action_before_release` | string | - | 開放前の表示（`show`: 表示する / `hide`: 表示しない） |
| `close_type` | string | - | 締め切り（終了日）（`none` / `scheduled` / `datetime` / `reader_date`）。`reader_date` への変更はサイトの `login_type` が `optional` / `none` のときのみ |
| `close_day` | integer / null | - | 締め切り日数（0〜9999。null でクリア） |
| `close_date` | string / null | - | 締め切り日（YYYY-MM-DD。null でクリア） |
| `close_hour` | integer / null | - | 締め切り時刻（0〜23。null でクリア） |
| `cancel_type` | string | - | 受講停止時の動作（`close`: 全て閲覧不可 / `release`: 停止日までに開放済みのレッスンは引き続き閲覧可） |

**指示例:**

* 「このコースを公開にして」
* 「このコースの締め切りを登録の30日後に変更して」

***

### member\_course\_delete

コースを削除します。削除したコースは一覧・取得の対象外になります。配下のレッスンや受講生の登録データは変更しません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |

**指示例:**

* 「このコースを削除して」

***

### member\_course\_reorder

コースの表示順を変更します。会員サイトの `course_display_type` によって指定方法が変わります。`all` のサイトは `course_ids` に全コースIDを並べたい順で指定します。`group` / `only_group` のサイトは `groups` にコースグループごとのコースの並びを指定し、コースの所属コースグループもこの指定で変わります（全コースグループと全コースを含める必要があります）。IDに過不足があるとエラー（`validation_error`）、指定方法がサイトの設定と合わない場合はエラー（`bad_request`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_ids` | array | - | コースIDの配列（`course_display_type` が `all` のサイト用。並べたい順序で全コースIDを指定） |
| `groups` | array | - | コースグループごとのコースの並び（`course_display_type` が `group` / `only_group` のサイト用）。各要素は `course_group_id`（コースグループID。null は未分類）、`course_ids`（そのグループに所属させるコースIDの配列。空配列可）。配列順がコースグループの表示順。未分類の要素は、未分類にするコースが無ければ省略可 |

**指示例:**

* 「"基礎編"のコースを一番上に移動して」
* 「"応用編"のコースを"上級者向け"のコースグループに移して」

***

## コースグループ

コースグループの一覧取得・作成・取得・更新・削除を行います。コースグループは、会員サイトの `course_display_type` が `group` / `only_group` のときにコースページでコースを分類する単位です。コースの振り分けは `member_course_reorder` で行います。

### member\_course\_group\_list

会員サイト配下のコースグループの一覧を表示順で取得します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |

**指示例:**

* 「この会員サイトのコースグループ一覧を見せて」

***

### member\_course\_group\_create

コースグループを作成します。作成したグループは一覧の末尾に追加されます。`image_url` はサイトの `course_display_type` が `only_group` のときだけ指定できます（それ以外はエラー `bad_request`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `name` | string | 必須 | 名称（最大255文字） |
| `system_name` | string | - | 管理名称（最大255文字。設定すると管理画面の一覧で名称の代わりに表示） |
| `image_url` | string / null | - | グループの画像URL（最大255文字・URL形式。`course_display_type` が `only_group` のサイトのみ） |

**指示例:**

* 「"初心者向け"というコースグループを作って」

***

### member\_course\_group\_get

コースグループを取得します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_group_id` | string | 必須 | コースグループID |

**指示例:**

* 「このコースグループの設定を見せて」

***

### member\_course\_group\_update

コースグループを更新します。指定したフィールドだけを更新する部分更新です。`image_url` はサイトの `course_display_type` が `only_group` のときだけ変更できます（それ以外はエラー `bad_request`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_group_id` | string | 必須 | コースグループID |
| `name` | string | - | 名称（最大255文字） |
| `system_name` | string / null | - | 管理名称（最大255文字。null でクリア） |
| `image_url` | string / null | - | グループの画像URL（最大255文字・URL形式。null でクリア。`course_display_type` が `only_group` のサイトのみ変更可） |

**指示例:**

* 「このコースグループの名称を"中級者向け"に変えて」

***

### member\_course\_group\_delete

コースグループを削除します。コースが 1 件でも所属しているグループは削除できません（エラー `conflict`）。先に `member_course_reorder` で所属コースを未分類または他のグループへ移します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_group_id` | string | 必須 | コースグループID |

**指示例:**

* 「このコースグループを削除して」

***

## バンドル

バンドル（受講生に開放するコース・コミュニティグループのセット）の一覧取得・作成・取得・更新・削除・並び替えを行います。受講生の登録・解除はファネルアクション・配信アクションの `bundle_course` / `bundle_course_cancel`、または受講生の登録のツールで行います。

### member\_bundle\_list

会員サイト配下のバンドルの一覧を表示順で取得します。ファネルアクション・配信アクションの `bundle_course` / `bundle_course_cancel` に指定する `bundle_course_id` と、`member_bundle_get` / `member_bundle_update` / `member_bundle_delete` の `bundle_id` の取得元です。含まれるコースは `member_bundle_get` で確認します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |

**指示例:**

* 「この会員サイトのバンドル一覧を見せて」
* 「"入門セット"というバンドルのIDを調べて」

***

### member\_bundle\_create

会員サイトにバンドルを作成します。`course_ids` で含めるコース、`community_group_ids` で紐付けるコミュニティグループを指定します（後から `member_bundle_update` で変更できます）。作成直後の表示順は 0 で、並び位置は `member_bundle_reorder` で調整します。`community_group_ids` はコミュニティ機能が有効なサイトでだけ指定できます（それ以外はエラー `bad_request`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `name` | string | 必須 | バンドル名（最大255文字） |
| `course_ids` | array | - | バンドルに含めるコースIDの配列（`member_course_list` で取得。同じサイトのコースのみ。重複不可。無いIDはエラー `validation_error`。省略時はコースなし） |
| `community_group_ids` | array | - | バンドルに紐付けるコミュニティグループIDの配列（`member_community_group_list` で取得。同じサイトのグループのみ。重複不可。無いIDはエラー `validation_error`。省略時は紐付けなし） |

**指示例:**

* 「"基礎編"と"応用編"のコースをまとめた"入門セット"というバンドルを作って」

***

### member\_bundle\_get

バンドルを取得します。含まれるコース（`course_ids`）と紐付くコミュニティグループ（`community_group_ids`）、表示順（`order`）を返します。取得結果をそのまま `member_bundle_update` に渡しても状態は変わりません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `bundle_id` | string | 必須 | バンドルID（`member_bundle_list` で取得） |

**指示例:**

* 「このバンドルに含まれるコースを見せて」

***

### member\_bundle\_update

バンドルを更新します。指定したフィールドだけを更新する部分更新です。`course_ids` / `community_group_ids` は指定した内容で全件置き換えます（空配列で全て外します）。コミュニティ機能が無効なサイトでは、`community_group_ids` は現在紐付いているグループの維持・解除だけができ、新しいグループを追加するとエラー（`bad_request`）になります。表示順の変更は `member_bundle_reorder` で行います。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `bundle_id` | string | 必須 | バンドルID（`member_bundle_list` で取得） |
| `name` | string | - | バンドル名（最大255文字） |
| `course_ids` | array | - | バンドルに含めるコースIDの配列（全件置き換え。同じサイトのコースのみ。重複不可。無いIDはエラー `validation_error`） |
| `community_group_ids` | array | - | バンドルに紐付けるコミュニティグループIDの配列（全件置き換え。空配列で全て外す。同じサイトのグループのみ。重複不可。無いIDはエラー `validation_error`） |

**指示例:**

* 「このバンドルに"上級編"のコースを追加して」

***

### member\_bundle\_delete

バンドルを削除します（復元はできません）。削除するのはバンドル本体だけで、受講生の登録やこのバンドルを参照している設定は変更しません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `bundle_id` | string | 必須 | バンドルID（`member_bundle_list` で取得） |

**指示例:**

* 「このバンドルを削除して」

***

### member\_bundle\_reorder

バンドルの表示順を変更します。会員サイト配下の全てのバンドルのIDを並べたい順で指定します（過不足があるとエラー `validation_error`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `bundle_ids` | array | 必須 | バンドルIDの配列（並べたい順序でサイト配下の全バンドルのIDを指定） |

**指示例:**

* 「"入門セット"のバンドルを一番上に並べ替えて」

***

## レッスン

コース配下のレッスンとレッスングループを操作します。API で作成・取得・更新・削除できるレッスンは種類が「コンテンツエディター」（`type=html`）のものだけで、「リッチテキスト」（`type=rich_text`）のレッスンは一覧の取得と並び替えだけができます。

### member\_lesson\_group\_list

コース配下のレッスングループ一覧を表示順に取得します（全件）。`member_lesson_create` / `member_lesson_update` で指定する `lesson_group_id` と、`member_lesson_list` の絞り込みに使う ID の取得元です。レッスングループの追加・編集・削除は管理画面で行い、表示順の変更は `member_lesson_reorder` で行います。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |

**指示例:**

* 「このコースのレッスングループを見せて」
* 「レッスンを追加できるグループの一覧を出して」

***

### member\_lesson\_list

コース配下のレッスン一覧を取得します（レッスングループの表示順 → レッスンの表示順）。省略時はコンテンツエディター（`type=html`）のレッスンだけを返し、`type=all` でリッチテキスト（`type=rich_text`）のレッスンも含めて取得できます。応答は一覧用の項目（ID・レッスン名・グループ・種類・ステータス等）だけなので、要素や開放日の設定が必要なときは `member_lesson_get` を使います。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `lesson_group_id` | string | - | レッスングループIDで絞り込み（省略時はコース配下の全レッスン） |
| `is_published` | boolean | - | ステータスで絞り込み（true=公開のみ、false=下書きのみ。省略時は両方） |
| `type` | string | - | 種類で絞り込み（`html`=コンテンツエディター、`rich_text`=リッチテキスト、`all`=両方。省略時は `html`） |
| `page` | integer | - | ページ番号（デフォルト: 1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト: 20、最大: 100） |

**指示例:**

* 「このコースのレッスン一覧を見せて」
* 「下書きのレッスンだけ出して」
* 「リッチテキストのレッスンも含めて全部見せて」

***

### member\_lesson\_create

コースにレッスンを作成します（種類はコンテンツエディターのみ）。要素は section > row > col > コンテンツ要素の `children` 階層構造で指定します。先に `element_types_lesson` / `element_types_lesson_properties` で使える要素とプロパティを確認してください（ファネルページとは異なります）。参照系プロパティ（`target_element_id` / `related_element_id` / `show_element_ids` / `hide_element_ids`）は作成時には指定できず、作成後に `member_lesson_update` で設定します。レッスンは `lesson_group_id` のグループ末尾に追加され、並び位置は `member_lesson_reorder` で変更します。契約内容による件数上限に達しているとエラー（`bad_request`）になります。API 経由の作成上限（月間・累計）も適用されます。

#### 主要パラメータ

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `name` | string | 必須 | レッスン名（最大255文字） |
| `lesson_group_id` | string | 必須 | レッスングループID（`member_lesson_group_list` で取得） |
| `elements` | array | 必須 | 要素の配列（section > row > col > コンテンツ要素の階層構造） |
| `is_published` | boolean | - | ステータス（true=公開、false=下書き。デフォルト: false） |

#### コメント設定

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `use_comment` | boolean | - | コメント機能（true=利用する。デフォルト: false） |
| `is_comment_override` | boolean | - | 個別設定。コースのコメント設定が「全レッスンで利用する」のとき、true でこのレッスンの `use_comment` に従う |
| `comment_text` | string | - | 表示文字列（コメント欄の呼称。最大255文字。省略時は「コメント」。`課題` で「課題を提出する」の表示） |
| `comment_show_type` | string | - | 投稿されたコメントの表示（`all`=全て表示する、`all_after_post`=投稿後に全て表示する、`own`=自身が投稿したコメントだけ表示する。デフォルト: `all`） |
| `hide_comment_posted_at` | boolean | - | コメント投稿日（true=表示しない。デフォルト: false） |
| `comment_default_value` | string | - | 入力欄の初期値 |

#### 受講対象者・開放日

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `has_target_persons` | boolean | - | 受講対象者をコース登録日で指定する（デフォルト: false。true のときは開始日・終了日の少なくとも一方が必須） |
| `target_persons_date_from` | string | - | 受講対象者のコース登録日の開始日（YYYY-MM-DD） |
| `target_persons_date_to` | string | - | 受講対象者のコース登録日の終了日（YYYY-MM-DD） |
| `release_type` | string | - | 開放日(開始日)。`immediately`=コースへ登録後すぐに開放（デフォルト）、`scheduled`=登録後、指定した日数経過後、`scheduled_month`=登録後、指定した月数経過後、`datetime`=指定した日時、`reader_date`=アクセス元シナリオの配信基準日時から指定した日数経過後（会員サイトの「ログインなしでの閲覧」が「可」の場合のみ） |
| `release_day` | integer | - | 開放までの日数（0〜9999。`scheduled` / `reader_date` で必須） |
| `release_month` | integer | - | 開放までの月数（0〜9999。`scheduled_month` で必須） |
| `release_date` | string | - | 開放日（YYYY-MM-DD。`datetime` で必須） |
| `release_hour` | integer | - | 開放時刻（0〜23。`immediately` 以外で必須） |
| `action_before_release` | string | - | 開放前の表示（`show`=表示する（デフォルト）、`hide`=表示しない） |

#### デザイン・カスタムJS/CSS

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `show_title` | boolean | - | ページ上部へのレッスン名の表示（デフォルト: true） |
| `width` | integer | - | 最大幅（100=100%、600〜2000の10刻み=px。省略時はデフォルト） |
| `background_color` | string | - | 背景色（`#RRGGBB` または `#RGB`） |
| `js_head` | string | - | headタグの最後に挿入するJavaScript（scriptタグも含めて記載） |
| `js_body_top` | string | - | bodyタグの最初に挿入するJavaScript（scriptタグも含めて記載） |
| `js_body` | string | - | bodyタグの最後に挿入するJavaScript（scriptタグも含めて記載） |
| `css` | string | - | カスタムCSS（styleタグ不要） |

#### 要素構造

```json theme={null}
[
  {
    "type": "section",
    "children": [
      {
        "type": "row",
        "children": [
          {
            "type": "col",
            "children": [
              {
                "type": "text",
                "content": "<p>テキスト</p>"
              }
            ]
          }
        ]
      }
    ]
  }
]
```

> [!NOTE]
>
> 使用可能な要素タイプとプロパティは `element_types_lesson` と `element_types_lesson_properties` で取得できます。プロパティは `properties` キーで包まず、各要素の直下にフラットに書きます。

**指示例:**

* 「第1章のグループに『はじめに』というレッスンを作って」
* 「動画とテキストを置いたレッスンを下書きで追加して」

***

### member\_lesson\_get

レッスンの詳細を取得します。要素の階層構造（`element_id` 付き）と、ステータス・開放日・コメント・受講対象者・デザイン・カスタムJS/CSS の設定を含みます。応答の `data` をそのまま `member_lesson_update` に渡してもレッスンの状態は変わりません。リッチテキストのレッスンはエラー（`bad_request`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `lesson_id` | string | 必須 | レッスンID |

**指示例:**

* 「このレッスンの内容と開放日の設定を見せて」

***

### member\_lesson\_update

レッスンを更新します（部分更新）。送信したフィールドのみ更新され、未送信のフィールドは既存の値を維持します。`elements` は `element_id` で既存要素と同期します（`element_id` あり=既存要素の部分更新、なし=新規追加、リクエストに含めない既存要素=削除、既存要素の `children` 省略=子要素を維持。`elements` 自体を省略すると要素は変更しない）。参照系プロパティ（`target_element_id` / `related_element_id` / `show_element_ids` / `hide_element_ids`）はここで設定でき、`null` または空配列で解除します。`memo` 要素を含むレッスンでは `memo` 要素の順序を変えないでください（受講生の入力したメモが別の `memo` に移ることがあります）。リッチテキストのレッスンと種類の変更、レッスンで使えない要素タイプはエラー（`bad_request`）です。同じ `element_id` を複数の要素に指定するとエラー `duplicate_element_id`、存在しない `element_id` を指定するとエラー `invalid_element_id` です。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `lesson_id` | string | 必須 | レッスンID |
| `name` | string | - | レッスン名（最大255文字） |
| `lesson_group_id` | string | - | レッスングループID（変更すると新しいグループの末尾に移動。位置を指定して移動するときは `member_lesson_reorder`） |
| `elements` | array | - | 要素の配列（`element_id` 同期。省略時は既存要素を維持） |
| `is_published` | boolean | - | ステータス（true=公開、false=下書き） |
| `use_comment` | boolean | - | コメント機能 |
| `is_comment_override` | boolean | - | コメントの個別設定 |
| `comment_text` | string / null | - | 表示文字列（最大255文字）。null で「コメント」に戻す |
| `comment_show_type` | string | - | 投稿されたコメントの表示（`all` / `all_after_post` / `own`） |
| `hide_comment_posted_at` | boolean | - | コメント投稿日を表示しない |
| `comment_default_value` | string / null | - | 入力欄の初期値。null でクリア |
| `has_target_persons` | boolean | - | 受講対象者をコース登録日で指定する |
| `target_persons_date_from` | string / null | - | 受講対象者のコース登録日の開始日（YYYY-MM-DD）。null でクリア |
| `target_persons_date_to` | string / null | - | 受講対象者のコース登録日の終了日（YYYY-MM-DD）。null でクリア |
| `release_type` | string | - | 開放日(開始日)（`immediately` / `scheduled` / `scheduled_month` / `datetime` / `reader_date`）。`reader_date` への変更は会員サイトの「ログインなしでの閲覧」が「可」の場合のみ（それ以外はエラー `bad_request`） |
| `release_day` | integer / null | - | 開放までの日数（0〜9999）。null でクリア |
| `release_month` | integer / null | - | 開放までの月数（0〜9999）。null でクリア |
| `release_date` | string / null | - | 開放日（YYYY-MM-DD）。null でクリア |
| `release_hour` | integer / null | - | 開放時刻（0〜23）。null でクリア |
| `action_before_release` | string | - | 開放前の表示（`show` / `hide`） |
| `show_title` | boolean | - | ページ上部へのレッスン名の表示 |
| `width` | integer / null | - | 最大幅（100 または 600〜2000 の 10 刻み）。null でデフォルトに戻す |
| `background_color` | string / null | - | 背景色（`#RRGGBB` または `#RGB`）。null でクリア |
| `js_head` | string / null | - | headタグの最後に挿入するJavaScript。null でクリア |
| `js_body_top` | string / null | - | bodyタグの最初に挿入するJavaScript。null でクリア |
| `js_body` | string / null | - | bodyタグの最後に挿入するJavaScript。null でクリア |
| `css` | string / null | - | カスタムCSS（styleタグ不要）。null でクリア |

**指示例:**

* 「このレッスンを公開にして」
* 「レッスンの最後にボタンを追加して、押したら動画の位置までスクロールするようにして」
* 「開放日をコース登録の7日後の10時に変えて」

***

### member\_lesson\_delete

レッスンを削除します（復元不可）。レッスンに紐づく受講生のデータ（コメント・メモ・受講完了の記録）は削除されません。リッチテキストのレッスンはエラー（`bad_request`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `lesson_id` | string | 必須 | レッスンID |

**指示例:**

* 「このレッスンを削除して」

***

### member\_lesson\_reorder

レッスングループとレッスンの表示順を変更します（管理画面「並べ替え」と同じ操作）。`groups` の配列順がレッスングループの表示順、各グループの `lesson_ids` の順がグループ内のレッスンの表示順になります。レッスンを別のグループの `lesson_ids` に入れると所属グループが変わります。コース配下の全レッスングループと全レッスン（コンテンツエディター・リッチテキストの両方）を過不足なく含める必要があり、過不足があるとエラー（`validation_error`）になります。全レッスンの ID は `member_lesson_list` を `type=all`・`per_page=100` で、`lesson_group_id` / `is_published` を指定せずに `meta.total` 件そろうまで全ページ取得します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID |
| `groups` | array | 必須 | レッスングループごとのレッスン並び。各要素は `{lesson_group_id, lesson_ids}`（`lesson_ids` は空配列可）。配列順がレッスングループの表示順 |

**指示例:**

* 「『まとめ』のレッスンを第1章の最後に移動して」
* 「第2章と第3章のグループの順番を入れ替えて」

***

## レッスンごと受講状況・受講完了者

コースのレッスンごとの受講状況と、レッスンを受講完了した受講生を取得します。

### member\_lesson\_stats\_list

コースのレッスンごと受講状況を取得します（全件）。公開のレッスングループごとに、公開のレッスンの完了数（`completed_count`）と完了率（`completion_rate`、%・小数2桁）を返します。完了率の分母は、利用停止でなく、停止していない登録があるコースの登録受講生の数です。完了数には利用停止中でも停止していない登録がある受講生の完了を含みます。期間を指定すると期間内に完了した人数だけを返し、`completion_rate` は `null` になります。`member_lesson_completed_student_list` は利用停止中の受講生を除くため、件数が `completed_count` と一致しないことがあります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID（`member_course_list` で取得） |
| `date_from` | string | - | 完了日時の開始日（YYYY-MM-DD） |
| `date_to` | string | - | 完了日時の終了日（YYYY-MM-DD。当日を含む） |

**指示例:**

* 「このコースのレッスンごとの完了率を見せて」
* 「今月レッスンを完了した人数をレッスンごとに出して」

***

### member\_lesson\_completed\_student\_list

レッスンを受講完了した受講生の一覧を完了日時の降順で取得します。対象は、利用停止でなく、停止していない登録があるコースの登録受講生です。公開のレッスンだけ指定でき、下書きのレッスンはエラー（`not_found`）になります。完了日時の期間・名前・メールアドレスで絞り込めます。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID（`member_course_list` で取得） |
| `lesson_id` | string | 必須 | レッスンID（`member_lesson_list` を `type=all` で取得、または `member_lesson_stats_list` / `member_student_progress_get` が返すレッスンの `id`。公開レッスンのみ） |
| `date_from` | string | - | 完了日時の開始日（YYYY-MM-DD） |
| `date_to` | string | - | 完了日時の終了日（YYYY-MM-DD。当日を含む） |
| `name` | string | - | 名前で部分一致検索 |
| `mail` | string | - | メールアドレスで部分一致検索 |
| `page` | integer | - | ページ番号（デフォルト: 1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト: 20、最大: 100） |

**指示例:**

* 「このレッスンを完了した受講生を見せて」
* 「先週このレッスンを完了した人を一覧にして」

***

### member\_lesson\_completion\_list

会員サイトの受講完了者を、受講生×レッスンの受講完了の記録ごとに取得します（既定は完了日時の降順）。コース・完了日時の期間・名前・メールアドレスで絞り込めます。利用停止中の受講生や、停止した登録の完了も含みます。削除したコースの記録は含みません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | - | コースIDで絞り込み（省略時は全てのコース。会員サイト配下に無い ID はエラー `validation_error`） |
| `date_from` | string | - | 完了日時の開始日（YYYY-MM-DD） |
| `date_to` | string | - | 完了日時の終了日（YYYY-MM-DD。当日を含む） |
| `name` | string | - | 名前で部分一致検索 |
| `mail` | string | - | メールアドレスで部分一致検索 |
| `order` | string | - | 完了日時の表示順（`asc`=昇順、`desc`=降順。デフォルト: `desc`） |
| `page` | integer | - | ページ番号（デフォルト: 1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト: 20、最大: 100） |

**指示例:**

* 「この会員サイトで今日レッスンを完了した人を見せて」
* 「コースAの受講完了の記録を古い順に出して」

***

## 受講生

会員サイトの受講生（管理画面「受講生管理」）を操作します。受講生の作成・更新・取得・削除と、受講状況・操作履歴の取得、コース・バンドルの登録受講生一覧の取得ができます。受講生のコース・コミュニティへの登録は「登録コース・コミュニティ」のツールで行います。

### member\_student\_list

会員サイトの受講生一覧を取得します（追加日の新しい順）。利用停止中の受講生も含みます。追加日の期間と、名前・ニックネーム・メールアドレス（部分一致）で絞り込めます。受講生の詳細・登録コース・コミュニティ・受講状況のツールで指定する `student_id` の取得元です。一覧にはコミュニティへの投稿の表示設定（`keep_posts_visible`）は含まれません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID（`member_site_list` で取得） |
| `date_from` | string | - | 追加日の開始日（YYYY-MM-DD） |
| `date_to` | string | - | 追加日の終了日（YYYY-MM-DD。当日を含む） |
| `name` | string | - | 名前で部分一致検索 |
| `nickname` | string | - | ニックネームで部分一致検索 |
| `mail` | string | - | メールアドレスで部分一致検索 |
| `page` | integer | - | ページ番号（デフォルト1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト20、最大100） |

**指示例:**

* 「この会員サイトの受講生一覧を見せて」
* 「今月追加された受講生を確認して」
* 「メールアドレスに example.com を含む受講生を探して」

***

### member\_student\_create

会員サイトに受講生を作成します。作成した受講生はメールアドレスとパスワードで受講生画面にログインできます。メール通知は送信されません。サイトに「新規ユーザーへのパスワード変更の強制」が設定されている場合、初回ログイン後にパスワード変更が求められます。同じサイトに同じメールアドレスの受講生が既にいる場合はエラー（`validation_error`）になります。受講生の作成には API 経由の作成上限（1時間・月間・累計）があり、超過するとエラー（`hourly_limit_exceeded` / `monthly_limit_exceeded` / `total_limit_exceeded`）になります。作成後にコースを受講させるには `member_student_enrollment_create` でバンドル・単一コースに登録します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `name` | string | 必須 | 名前（最大255文字） |
| `mail` | string | 必須 | メールアドレス（最大255文字。受講生画面のログインに使用。同じサイト内で重複不可） |
| `password` | string | 必須 | パスワード（最大255文字。受講生画面のログインに使用。結果には含まれない） |

**指示例:**

* 「この会員サイトに受講生を追加して」
* 「田中さんをメールアドレスとパスワードを指定して受講生に登録して」

***

### member\_student\_get

受講生の詳細を取得します。名前・ニックネーム・メールアドレス・ステータス（利用停止かどうか）・コミュニティへの投稿・返信・ダイレクトメッセージの表示設定・最終操作日・追加日を返します。取得した内容をそのまま `member_student_update` に渡しても状態は変わりません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |

**指示例:**

* 「この受講生の詳細を見せて」
* 「この受講生の最終操作日を確認して」

***

### member\_student\_update

受講生の情報を更新します（部分更新）。送信したフィールドのみ更新されます。`is_suspended` を `true` にすると利用停止になり、受講生画面にログインできなくなります。`keep_posts_visible` を `false` にすると、コミュニティへの投稿・返信・ダイレクトメッセージが他のユーザーに表示されなくなります（管理者とのダイレクトメッセージは引き続き利用できます）。パスワード・ニックネームは変更できません。同じサイトの他の受講生と同じメールアドレスへの変更はエラー（`validation_error`）になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |
| `name` | string / null | - | 名前（最大255文字）。null でクリア |
| `mail` | string | - | メールアドレス（最大255文字。受講生画面のログインに使用） |
| `is_suspended` | boolean | - | ステータス（true: 利用停止（ログイン不可）/ false: 利用可） |
| `keep_posts_visible` | boolean | - | コミュニティへの投稿・返信・ダイレクトメッセージを他のユーザーに表示するか（true: 表示 / false: 非表示） |

**指示例:**

* 「この受講生を利用停止にして」
* 「この受講生のメールアドレスを変更して」
* 「この受講生のコミュニティ投稿を非表示にして」

***

### member\_student\_delete

受講生を削除します（復元不可）。登録コース・コミュニティ、受講完了、操作履歴のレコードは削除されず残ります。受講を止めるだけなら、`member_student_update` で利用停止にするか、`member_student_enrollment_update` で登録に停止日を設定します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |

**指示例:**

* 「この受講生を削除して」

***

### member\_student\_progress\_list

受講生の受講状況をコース別に取得します（全件、コースの表示順）。ステータスが「公開」のコースのうち受講生が登録しているもの（バンドル経由・単一コース。停止中の登録も含む）ごとに、公開レッスン数・受講済みレッスン数・進捗率（%）を返します。公開レッスンが 0 件のコースや受講済みが 0 件のコースの進捗率は 0 です。レッスン単位の受講状況は `member_student_progress_get` で取得します。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |

**指示例:**

* 「この受講生の受講状況を見せて」
* 「この受講生が各コースをどこまで進めているか確認して」

***

### member\_student\_progress\_get

受講生のコース内の受講状況をレッスン別に取得します。レッスングループ（全件）ごとに公開レッスンの受講済みかどうか（`is_completed`）と受講完了日時（`completed_at`）を返します。受講生がそのコースに登録していなくても取得でき、ステータスが「下書き」のコースも指定できます。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |
| `course_id` | string | 必須 | コースID（`member_course_list` で取得） |

**指示例:**

* 「この受講生がこのコースのどのレッスンを受講済みか見せて」
* 「この受講生の未受講のレッスンを一覧にして」

***

### member\_student\_activity\_log\_list

受講生の操作履歴を取得します（日時の新しい順）。種類（`type`）は `login`（ログイン）/ `logout`（ログアウト）/ `view_top`（トップページアクセス）/ `view_course`（レッスン一覧ページアクセス）/ `view_lesson`（レッスンページアクセス）/ `view_page`（固定ページアクセス）/ `view_news`（お知らせページアクセス）/ `view_account`（アカウント設定アクセス）/ `view_payment`（支払い設定アクセス）/ `complete_lesson`（レッスン受講完了）/ `change_password`（パスワード変更）です。操作の対象のコース・レッスン・固定ページが削除済みの場合は null になります。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |
| `date_from` | string | - | 日時の開始日（YYYY-MM-DD） |
| `date_to` | string | - | 日時の終了日（YYYY-MM-DD。当日を含む） |
| `page` | integer | - | ページ番号（デフォルト1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト20、最大100） |

**指示例:**

* 「この受講生の操作履歴を見せて」
* 「この受講生が先週ログインしたか確認して」

***

### member\_course\_student\_list

コースの登録受講生一覧を取得します（受講生の追加日の新しい順）。利用停止でなく、そのコースを含む停止していない登録（バンドル経由または単一コース）が 1 件以上ある受講生を返します。名前・メールアドレスの部分一致で絞り込めます。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `course_id` | string | 必須 | コースID（`member_course_list` で取得） |
| `name` | string | - | 名前で部分一致検索 |
| `mail` | string | - | メールアドレスで部分一致検索 |
| `page` | integer | - | ページ番号（デフォルト1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト20、最大100） |

**指示例:**

* 「このコースの登録受講生を見せて」
* 「このコースを受講している人数を教えて」

***

### member\_bundle\_student\_list

バンドルの登録受講生一覧を取得します（登録の作成日時の新しい順）。バンドルへの登録レコードを起点に返すため、利用停止中の受講生や停止中の登録も含みます。名前・メールアドレスの部分一致で絞り込めます。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `bundle_id` | string | 必須 | バンドルID（`member_bundle_list` で取得） |
| `name` | string | - | 名前で部分一致検索 |
| `mail` | string | - | メールアドレスで部分一致検索 |
| `page` | integer | - | ページ番号（デフォルト1） |
| `per_page` | integer | - | 1ページあたりの件数（デフォルト20、最大100） |

**指示例:**

* 「このバンドルの登録受講生を見せて」
* 「このバンドルに登録されている人を名前で探して」

***

## 登録コース・コミュニティ

受講生のバンドル・単一コース・コミュニティグループへの登録（管理画面「登録コース・コミュニティ」）を操作します。登録の追加・登録日と停止日の更新・解除と、コミュニティグループへの登録で指定するコミュニティグループの一覧取得ができます。

### member\_student\_enrollment\_list

受講生の登録コース・コミュニティ一覧を取得します（全件。バンドル → 単一コース → コミュニティグループの順）。登録ごとに種類（`type`）・登録先（`bundle` / `course` / `community_group`）・登録日・停止日を返し、停止中（`cancelled_at` あり）の登録も含みます。コミュニティグループへの登録は、サイトのコミュニティ機能が「利用する」の場合のみ含まれます。削除済みのコース・コミュニティグループへの登録は含まれません。`member_student_enrollment_update` / `member_student_enrollment_delete` で指定する `enrollment_id` の取得元です。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |

**指示例:**

* 「この受講生が登録しているコースを見せて」
* 「この受講生の停止中の登録を確認して」

***

### member\_student\_enrollment\_create

受講生をバンドル・単一コース・コミュニティグループに登録します。`type` に応じて `bundle_id` / `course_id` / `community_group_id` のいずれか 1 つを指定します。登録日は省略すると現在日時になり、コースの開放日の設定で登録日を基準にする場合の起点になります。同じ対象に登録済み（停止中を含む）の場合はエラー（`conflict`）、指定したバンドル・コース・コミュニティグループがサイトに無い場合はエラー（`validation_error`）になります。コミュニティグループへの登録はサイトのコミュニティ機能が「利用する」の場合のみ可能です（それ以外はエラー `bad_request`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |
| `type` | string | 必須 | 登録の種類（`bundle`: バンドル / `course`: 単一コース / `community_group`: コミュニティグループ） |
| `bundle_id` | string | - | バンドルID（`type=bundle` のとき必須。`member_bundle_list` で取得） |
| `course_id` | string | - | コースID（`type=course` のとき必須。`member_course_list` で取得。ステータスが「下書き」のコースも指定可） |
| `community_group_id` | string | - | コミュニティグループID（`type=community_group` のとき必須。`member_community_group_list` で取得） |
| `enrolled_at` | string | - | 登録日（YYYY-MM-DD または YYYY-MM-DD HH:MM:SS。1970-01-02〜2038-01-18。省略時は現在日時） |

**指示例:**

* 「この受講生をこのバンドルに登録して」
* 「この受講生を単一コースに登録日 2026-11-01 で登録して」
* 「この受講生をコミュニティグループに追加して」

***

### member\_student\_enrollment\_update

受講生の登録の登録日・停止日を更新します（部分更新）。`cancelled_at` に日時を設定すると停止、null を設定すると停止解除になります。停止した登録のコースを受講生が閲覧できるかは、コースの「受講停止時の動作」（全て閲覧不可 / 停止日までに開放済みのレッスンは引き続き閲覧可）に従います。コミュニティグループへの登録は、サイトのコミュニティ機能が「利用する」の場合のみ対象です（それ以外はエラー `not_found`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |
| `enrollment_id` | string | 必須 | 登録ID（`member_student_enrollment_list` で取得） |
| `enrolled_at` | string | - | 登録日（YYYY-MM-DD または YYYY-MM-DD HH:MM:SS。1970-01-02〜2038-01-18） |
| `cancelled_at` | string / null | - | 停止日（YYYY-MM-DD または YYYY-MM-DD HH:MM:SS。1970-01-02〜2038-01-18）。設定すると停止、null で停止解除 |

**指示例:**

* 「この受講生のこのコースの受講を今日で停止して」
* 「この登録の停止を解除して」
* 「この登録の登録日を 2026-10-01 に変更して」

***

### member\_student\_enrollment\_delete

受講生の登録を解除します（登録レコードを削除。復元不可）。受講完了・操作履歴は残ります。登録日を残したまま受講を止めるには、`member_student_enrollment_update` で停止日を設定します。コミュニティグループへの登録は、サイトのコミュニティ機能が「利用する」の場合のみ対象です（それ以外はエラー `not_found`）。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |
| `student_id` | string | 必須 | 受講生ID（`member_student_list` で取得） |
| `enrollment_id` | string | 必須 | 登録ID（`member_student_enrollment_list` で取得） |

**指示例:**

* 「この受講生のこのバンドルの登録を解除して」

***

### member\_community\_group\_list

会員サイトのコミュニティグループ一覧を取得します（全件、表示順。管理画面「コミュニティ管理 > グループ管理」の一覧と同じ）。`member_student_enrollment_create` で `type=community_group` を指定するときの `community_group_id` と、`member_bundle_create` / `member_bundle_update` の `community_group_ids` の取得元です。サイトのコミュニティ機能が「利用しない」の場合もグループは返りますが、受講生の登録はできません。

**パラメータ:**

| パラメータ | 型 | 必須 | 説明 |
| - | - | - | - |
| `site_id` | string | 必須 | 会員サイトID |

**指示例:**

* 「この会員サイトのコミュニティグループ一覧を見せて」
* 「受講生を追加できるコミュニティグループを確認して」

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.