openapi: 3.0.1
info:
  title: learningBOX Ver. 5.1 APIドキュメント
  description: |
    # API概要
    ## OAuth2.0 APIのリクエスト上限値について
    learningBOX 2.24 以降、サーバーの安定稼働を目的に API リクエスト回数の上限を設けています。

    - 1時間あたりの上限: 1社につき 1,000 回
    - 1日あたりの上限: 1社につき 5,000 回

    ※ 上記の回数にはアクセストークン取得（トークンエンドポイントへのアクセス）は含みません。

    ## 共通レスポンス
    各 API にはそれぞれ固有のレスポンス定義がありますが、アクセス上限を超えた場合は以下の共通エラーが返却されます。

    エラー例 (HTTP 401 Unauthorized):

    ```json
    {
      "error": "insufficient_scope",
      "error_description": "The request requires higher privileges than provided by the access token"
    }
    ```

    エラー例 (HTTP 429 Too Many Requests):

    ```json
    {
      "error": "exceeded_limit",
      "error_description": "The access limit has been exceeded"
    }
    ```

    ## アクセス権限（スコープ）について

    本APIは OAuth2.0 のアクセストークンに含まれる **scope**（スコープ）でアクセス制御されます。
    各エンドポイントの「必要権限」欄に、必要な scope を記載しています。

    ### スコープの設定場所（共通）

    サードパーティーアプリの使い方ページ：[https://support.learningbox.online/how-to-use/third-party-app/](https://support.learningbox.online/how-to-use/third-party-app/)

    必要なスコープは、learningBOX 管理画面の以下の画面で設定します。

    - サードパーティーアプリ(/user/manage-3pa) ＞アプリを追加 ＞「アプリを追加する」＞ **アクセス権限**
    - サードパーティーアプリ(/user/manage-3pa) ＞（対象アプリ）更新 ＞「アプリを更新する」＞ **アクセス権限**

    以降、本書ではこの画面を **「アクセス権限設定」** と呼びます。

    ### 表記ルール
    各エンドポイントでは、次の形式で必要権限を示します。

    - アクセス権限設定のチェック項目: 例）教材 ＞ 読取
    - スコープ: `example.scope`

    ## 改訂履歴
    - 本バージョン（5.1）は、前バージョン（5.0）からの内容変更はありません。
  version: 1.0.1
tags:
  - name: oauth
    description: アクセストークン取得
    x-displayName: アクセストークン取得
  - name: sco
    description: コンテンツ関連
    x-displayName: コンテンツ関連
  - name: result
    description: 成績関連
    x-displayName: 成績関連
  - name: user
    description: ユーザー関連
    x-displayName: ユーザー関連
  - name: group
    description: グループ関連
    x-displayName: グループ関連
  - name: access-list
    description: IP制限関連
    x-displayName: IP制限関連
  - name: author
    description: 関係者関連
    x-displayName: 関係者関連
  - name: training
    description: 研修関連
    x-displayName: 研修関連
  - name: payment
    description: EC決済関連
    x-displayName: EC決済関連
paths:
  /v1/oauth/token:
    post:
      security: [] # 明示的に保護なし
      tags:
        - oauth
      summary: accessToken取得
      description: |
        APIの利用にはアクセストークンが必要なため、OAuth2.0認証プロセスで取得します。
        ### 必要権限
        - このエンドポイントに必要な権限はありません。
      operationId: getAccessToken
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TokenRequestPost'
            example:
              grant_type: client_credentials
              client_id: your_client_id
              client_secret: your_client_secret
      responses:
        '200':
          description: アクセストークンを返却
          headers:
            Content-Type:
              description: レスポンスのメディアタイプ
              schema:
                type: string
                example: application/json
            Cache-Control:
              description: キャッシュ制御
              schema:
                type: string
                example: no-store
            Pragma:
              description: キャッシュ制御（レガシー）
              schema:
                type: string
                example: no-cache
          content:
            application/json:
              schema:
                type: object
                required:
                  - access_token
                  - token_type
                  - expires_in
                properties:
                  access_token:
                    type: string
                    description: アクセストークン
                  expires_in:
                    type: integer
                    description: 有効時間（秒）
                  token_type:
                    type: string
                    description: トークンタイプ
                    enum:
                      - Bearer
                  scope:
                    type: string
                    description: サードパーティーアプリ管理で設定したアクセス権限（半角スペース区切り）
                    example: result.read sco.read accesslist.read accesslist.create
              example:
                access_token: 3ba0696fc5157d7c5c3d6da409d57085ccfc7a6b
                expires_in: 3600
                token_type: Bearer
                scope: result.read sco.read
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - error_description
                properties:
                  error:
                    type: string
                    description: エラーメッセージ
                  error_description:
                    type: string
                    description: エラー詳細
                  error_uri:
                    type: string
                    description: エラーURL
              examples:
                clientID_or_secretkey_incorrect:
                  summary: クライアントIDまたはシークレットキーが不正
                  value:
                    error: invalid_client
                    error_description: The client credentials are invalid
                clientID_not_sent:
                  summary: クライアントID未送信
                  value:
                    error: invalid_client
                    error_description: Client credentials were not found in the headers
                      or body
                secretkey_not_sent:
                  summary: シークレットキー未送信
                  value:
                    error: invalid_client
                    error_description: Client credentials are required
                grant_type_error:
                  summary: 「grant_type」が間違っている
                  value:
                    error: unsupported_grant_type
                    error_description: Grant type "aaa" not supported
                grant_type_not_sent:
                  summary: 「grant_type」が未送信
                  value:
                    error: invalid_request
                    error_description: The grant type was not specified in the request
                sending_method_error:
                  summary: 送信方法が間違っている
                  value:
                    error: invalid_request
                    error_description: The request method must be POST when requesting
                      an access token
                    error_uri: http://tools.ietf.org/html/rfc6749#section-3.2
        '401':
          description: 認証エラー（Unauthorized）
          headers:
            WWW-Authenticate:
              description: 認証方式と realm
              schema:
                type: string
                example: 'Bearer realm="Service"'
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      error:
                        type: string
                        description: エラーメッセージ
                      error_description:
                        type: string
                        description: エラー詳細
                      error_uri:
                        type: string
                        description: エラーURL
                  - type: string
                    maxLength: 0
                    description: '空ボディ（実際は Content-Length: 0）'
              examples:
                invalid_token:
                  summary: 存在しないアクセストークン
                  value:
                    error: invalid_token
                    error_description: The access token provided is invalid
                token_expired:
                  summary: アクセストークンの期限切れ
                  value:
                    error: invalid_token
                    error_description: The access token provided has expired
                token_null:
                  summary: アクセストークンが未設定
                  value:
                    error: invalid_request
                    error_description: Malformed auth header
                token_item_missing:
                  summary: アクセストークン項目不足（ボディなし）
                  value: ''
  /v1/sco:
    post:
      security:
        - OAuth2: [sco.read]
      tags:
        - sco
      summary: コンテンツ一覧取得
      description: |
        コンテンツ管理画面にて管理されている情報を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 教材 ＞ 読取
        - スコープ: `sco.read`
      operationId: searchScoList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parent_id:
                  type: integer
                  nullable: true
                  description: 親コース/フォルダのコンテンツ内部ID
                  example: 1765
                parent_code:
                  type: string
                  nullable: true
                  description: '親コース/フォルダのコンテンツコード。ルート直下を取得する場合は `contents_root` を指定します。'
                  example: 1b7c705c-e910-11eb-a524-0698f151fb8c
                sco_type:
                  type: string
                  nullable: true
                  description: コンテンツ種別
                  example: contents
                  enum:
                    - folder
                    - contents
                sco_code:
                  type: string
                  nullable: true
                  description: コンテンツコード
                title:
                  type: string
                  nullable: true
                  description: 教材名
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  nullable: true
                offset:
                  type: integer
                  description: 検索開始行
                  nullable: true
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                parent_id:
                  type: integer
                  nullable: true
                  description: 親コース/フォルダのコンテンツ内部ID
                  example: 1765
                parent_code:
                  type: string
                  nullable: true
                  description: '親コース/フォルダのコンテンツコード。ルート直下を取得する場合は `contents_root` を指定します。'
                  example: 1b7c705c-e910-11eb-a524-0698f151fb8c
                sco_type:
                  type: string
                  nullable: true
                  description: コンテンツ種別
                  example: contents
                  enum:
                    - folder
                    - contents
                sco_code:
                  type: string
                  nullable: true
                  description: コンテンツコード
                title:
                  type: string
                  nullable: true
                  description: 教材名
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  nullable: true
                offset:
                  type: integer
                  description: 検索開始行
                  nullable: true
        required: false
      responses:
        '200':
          description: レスポンス
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ScoListResponse'
                  - $ref: '#/components/schemas/ErrorResponse'
              examples:
                成功時:
                  summary: 正常レスポンス
                  value:
                    scos:
                      - sco_id: '1684'
                        sco_type: folder
                        sco_code: 1b7c6604-e910-11eb-a524-0698f151fb8c
                        generetor_type: null
                        title: サンプルコンテンツ
                        child_count: 21
                        created_at: '2025-07-15 09:58:28'
                        updated_at: '2025-07-15 10:03:51'
                      - sco_id: '1709'
                        sco_type: title-bar
                        sco_code: 1b7c705c-e910-11eb-a524-0698f151fb8c
                        generetor_type: null
                        title: タイトル
                        child_count: 4
                        created_at: '2025-07-15 09:58:28'
                        updated_at: '2024-07-10 09:58:28'
                      - sco_id: '1738'
                        sco_type: contents
                        sco_code: 1b7c86cd-e910-11eb-a524-0698f151fb8c
                        generetor_type: REPORT
                        title: レポート課題
                        child_count: 0
                        created_at: '2025-07-15 09:58:28'
                        updated_at: '2025-07-15 10:03:51'
                    meta:
                      total: 2236
                      limit: 3
                      offset: 0
                sco_type指定エラー:
                  summary: sco_type指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[sco_type] must be <folder> or <contents>.'
                limit指定エラー:
                  summary: limit指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[limit] must be a number greater than 0.'
                offset指定エラー:
                  summary: offset指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[offset] must be a number greater than 0.'
      deprecated: false
      x-codegen-request-body-name: body
  /v1/job/create:
    post:
      security:
        - OAuth2: [sco.create]
        - OAuth2: [sco.update]
      tags:
        - sco
      summary: コンテンツ作成・更新
      description: |
        コース・フォルダを作成・SCORM教材を搭載します。（※非同期処理）
        ### 必要権限
        - アクセス権限設定のチェック項目: 教材 ＞ 追加　または 教材 ＞ 更新
        - スコープ: `sco.create`または`sco.update`
      operationId: jobCreateSco
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentCreateUpdateRequest'
            examples:
              SCORM教材作成:
                summary: SCORM教材作成
                value:
                  type: create-content
                  payload:
                    sco_type: content
                    generator_type: SCORM
                    parent_sco_code: sample
                    insert_after: <last>
                    sco_data:
                      title: sample-scorm
                      description: sample-scorm-description
                    upload_file:
                      extension: zip
                      size: 356589
              PDF教材作成:
                summary: PDF教材作成
                value:
                  type: create-content
                  payload:
                    sco_type: content
                    generator_type: PDF
                    parent_sco_code: sample
                    insert_after: <first>
                    sco_data:
                      title: sample-pdf
                      description: sample-pdf-description
                      additional_fields:
                        downloadable: 1
                        language: ja
                        scroll: vertical
                        no_change_scroll_mode: 0
                        scroll_direction: right
                        use_highlight: 1
                        tool_mode: hand_tool
                    upload_file:
                      extension: pdf
                      size: 25543
              フォルダ作成:
                summary: フォルダ作成
                value:
                  type: create-content
                  payload:
                    sco_type: folder
                    parent_sco_code: sample
                    insert_after: <last>
                    sco_data:
                      title: sample-folder
                      description: sample-folder-description
                    thumbnail_file:
                      extension: jpg
                      size: 2768
      responses:
        '200':
          description: '正常レスポンス<br>

            - upload_file_toに格納された内容にしたがってS3へのアップロードリクエストを作成して、末尾にファイルのバイナリデータを付与してファイルをアップロードしてください。

            - ファイルとサムネイル両方をアップロードする際は、それぞれ別のリクエストでアップロードする必要があります。

            - このレスポンスサンプルをもとに作成したS3へのアップロードリクエストは備考欄のようなものになります。

            - アップロードリクエストに対するS3からのレスポンスについては、[AWSのドキュメント（英語）](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/API/Welcome.html)をご参照ください。'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
              example:
                job_id: 12345
                type: create-content
                status: waiting
                payload:
                  sco_code: '123'
                  upload_file_to:
                    method: POST
                    url: https://your-upload-url
                    headers:
                      Content-Type: multipart/form-data
                    fields:
                      Content-Type: application/zip
                      X-Amz-Security-Token: your-security-token
                      key: your-object-key
                      X-Amz-Credential: your-credential
                      X-Amz-Algorithm: your-algorithm
                      X-Amz-Date: 20250718T013036Z
                      Policy: your-policy
                      X-Amz-Signature: your-signature
                    expires_at: '2025-07-18 10:40:36'
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                type未指定:
                  summary: type未指定
                  value:
                    error: wrong parameter.
                    error_description: type is required.
                payload未指定:
                  summary: payload未指定
                  value:
                    error: wrong parameter.
                    error_description: payload is required.
                typeの値が不正:
                  summary: typeの値が不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid type.
        '422':
          description:
            "異常レスポンス<br>\n各属性のエラー内容には下記のようなものがあります。\n- parent_sco_code:<br>\n\
            \    Parent sco not found.: 配置先として指定されたコードのコンテンツが存在しない<br>\n    Parent\
            \ sco is not a folder or course.: 配置先として指定されたコードがコース・フォルダでない\n- sco_code:<br>\n\
            \    Same sco_code already exists.: 新規作成で同一コードのコンテンツが既に存在する<br>\n    Current\
            \ sco not found.: 更新で指定されたコードのコンテンツが存在しない\n- upload_file_size/thumbnail_file_size:<br>\n\
            \    Size exceeds plan upload limit.: アップロードするファイルのサイズがプラン上限を超えている<br>\n\
            \    Storage capacity exceeded after upload.: アップロード後のストレージ容量がプラン上限を超える\n\
            - generator_type:<br>\n    Invalid generator_type.: generator_typeの値が不正\n\
            - upload_file_extension:<br>\n    Invalid extension.: 教材種別に対応したファイル拡張子でない\n\
            - thumbnail_extension:<br>\n    Invalid extension.: サムネイル画像に利用可能なファイル拡張子でない"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: wrong parameter.
                error_description: 'parent_sco_code: Parent sco not found. sco_code:
                  Same sco_code already exists.'
      deprecated: false
      x-codegen-request-body-name: body
  /v1/sco/delete/{sco_code}:
    post:
      security:
        - OAuth2: [sco.delete]
      tags:
        - sco
      summary: コンテンツ削除
      description: |
        コンテンツを削除します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 教材 ＞ 削除
        - スコープ: `sco.delete`
      operationId: deleteSco
      parameters:
        - name: sco_code
          in: path
          description: コンテンツコード
          required: true
          schema:
            type: string
          example: 'sco_code'
      requestBody:
        content:
          application/json:
            schema:
              required:
                - delete_certificates
                - recursive
              type: object
              properties:
                recursive:
                  type: integer
                  description: '再帰的削除フラグ<br>

                    下層のフォルダ/コンテンツも含めて全て削除するか<br>

                    1: 削除する<br>

                    0: 削除しない'
                  example: 1
                delete_certificates:
                  type: integer
                  description: '発行済み認定証削除フラグ<br>

                    下層のフォルダ/コンテンツも含めて全て削除するか<br>

                    1: 削除する<br>

                    0: 削除しない'
                  example: 1
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                required:
                  - scos
                type: object
                properties:
                  scos:
                    type: array
                    description: 削除したコンテンツデータの配列
                    items:
                      type: object
                      required:
                        - sco_code
                        - title
                      properties:
                        sco_code:
                          type: string
                          example: '123_abc'
                          description: 削除したコンテンツのsco_code
                        title:
                          type: string
                          description: 削除したコンテンツのタイトル
              example:
                scos:
                  - sco_code: 363abb03-7b27-4db4-ac2e-26fed5d03f69
                    title: 削除対象コース
                  - sco_code: 696ec937-bbb8-4e27-904f-e7c564213b23
                    title: 削除対象フォルダ
                  - sco_code: e1579743-e7c4-44a6-bfc4-d41ce140fb12
                    title: 削除対象クイズ
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                sco_code未指定:
                  summary: sco_code未指定
                  value:
                    error: wrong parameter.
                    error_description: sco_code is required.
                delete_certificates未指定:
                  summary: delete_certificates未指定
                  value:
                    error: wrong parameter.
                    error_description: delete_certificates is required.
                recursiveの値が不正:
                  summary: recursiveの値が不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid recursive value.
        '404':
          description: 異常レスポンス - sco_codeに対応するコンテンツが存在しない
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: sco not found.
        '422':
          description: 異常レスポンス - 削除できないコンテンツが含まれている
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: not deletable.
                error_description: sco is not deletable.
      deprecated: false
      x-codegen-request-body-name: body
  /v1/sco/assign/{sco_code}:
    post:
      security:
        - OAuth2: [sco.assign]
      tags:
        - sco
      summary: コンテンツ割当
      description: |
        コンテンツを割り当てます。
        ### 必要権限
        - アクセス権限設定のチェック項目: 教材 ＞ ユーザー/グループに割当
        - スコープ: `sco.assign`
      operationId: assignContents
      parameters:
        - name: sco_code
          in: path
          description: コンテンツのsco_code
          required: true
          schema:
            type: string
          example: 'sco_code'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - recursive
              properties:
                assign_group_ids:
                  type: array
                  description: 割当するグループIDの配列
                  items:
                    type: integer
                    format: int32
                assign_group_codes:
                  type: array
                  description: 割当するグループコードの配列
                  items:
                    type: string
                release_group_ids:
                  type: array
                  description: 割当解除するグループIDの配列
                  items:
                    type: integer
                    format: int32
                release_group_codes:
                  type: array
                  description: 割当解除するグループコードの配列
                  items:
                    type: string
                assign_user_ids:
                  type: array
                  description: 割当するユーザーIDの配列
                  items:
                    type: integer
                    format: int32
                assign_user_logins:
                  type: array
                  description: 割当するユーザーのログインIDの配列
                  items:
                    type: string
                release_user_ids:
                  type: array
                  description: 割当解除するユーザーIDの配列
                  items:
                    type: integer
                    format: int32
                release_user_logins:
                  type: array
                  description: 割当解除するユーザーのログインIDの配列
                  items:
                    type: string
                recursive:
                  type: integer
                  format: int32
                  description: '再帰的割り当てフラグ 1: 適用する, 0: 適用しない'
                  enum:
                    - 0
                    - 1
            example:
              assign_group_codes:
                - g3
              assign_user_ids:
                - 123
              recursive: 1
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                required:
                  - scos
                  - groups
                  - users
                additionalProperties: false
                properties:
                  scos:
                    type: array
                    description: 割当/割当解除を行ったコンテンツの配列
                    items:
                      type: object
                      additionalProperties: false
                      required:
                        - sco_id
                        - sco_code
                        - sco_title
                      properties:
                        sco_id:
                          description: コンテンツの内部ID
                          type: integer
                          format: int64
                        sco_code:
                          description: コンテンツコード
                          type: string
                        sco_title:
                          description: コンテンツのタイトル
                          type: string
                  groups:
                    type: array
                    description: 割当/割当解除を行ったグループの配列
                    items:
                      type: object
                      additionalProperties: false
                      required:
                        - group_id
                        - group_code
                        - name
                      properties:
                        group_id:
                          description: グループの内部ID
                          type: integer
                          format: int64
                        group_code:
                          description: グループコード
                          type: string
                        name:
                          description: グループ名
                          type: string
                  users:
                    description: 割当/割当解除を行ったユーザーの配列
                    type: array
                    items:
                      type: object
                      additionalProperties: false
                      required:
                        - user_id
                        - login
                        - name
                      properties:
                        user_id:
                          description: ユーザーの内部ID
                          type: integer
                          format: int64
                        login:
                          description: ログインID
                          type: string
                        name:
                          description: 氏名
                          type: string
              example:
                scos:
                  - sco_id: 10008
                    sco_code: 91314352-0da3-4bc3-b9f-5056cdef2e67
                    sco_title: 割当用コース
                  - sco_id: 10009
                    sco_code: 6d1cf984-ceff-411a-b701-343316902374
                    sco_title: 割当用フォルダ
                groups:
                  - group_id: 3
                    group_code: g3
                    name: 管理グループ
                users:
                  - user_id: 123
                    login: user-123
                    name: 学習者1
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                sco_code未指定:
                  summary: sco_code未指定
                  value:
                    error: wrong parameter.
                    error_description: sco_code is required.
                recursive未指定:
                  summary: recursive未指定
                  value:
                    error: wrong parameter.
                    error_description: recursive is required.
                recursiveの値が不正:
                  summary: recursiveの値が不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid recursive value.
        '404':
          description: 割当可能なコンテンツではない
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: not found.
                error_description: sco is not assignable.
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                割当・割当解除対象のグループ/ユーザーが指定されていない:
                  summary: 割当・割当解除対象のグループ/ユーザーが指定されていない
                  value:
                    error: wrong parameter.
                    error_description: any assign or release group_ids/group_codes/user_ids
                      are required.
                割当と割当解除のグループ/ユーザーに同じものが含まれている:
                  summary: 割当と割当解除のグループ/ユーザーに同じものが含まれている
                  value:
                    error: wrong parameter.
                    error_description: duplicate group_ids/group_codes/user_ids in
                      assign and release.
                割当可能でないグループ/ユーザーが含まれている:
                  summary: 割当可能でないグループ/ユーザーが含まれている
                  value:
                    error: wrong parameter.
                    error_description: some group_ids/group_codes/user_ids are not
                      assignable.
  /v1/job/status:
    post:
      security:
        - OAuth2: [sco.create]
        - OAuth2: [sco.update]
      tags:
        - sco
      summary: コンテンツ作成状況確認
      description: |
        コンテンツ作成・更新APIからリクエスト送信したコンテンツの作成状況を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 教材 ＞ 追加　または 教材 ＞ 更新
        - スコープ: `sco.create`または`sco.update`
      operationId: jobScoStatus
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - job_ids
              properties:
                job_ids:
                  type: array
                  items:
                    type: string
                  description: ジョブIDの配列(2000件まで)
                  minItems: 1
                  maxItems: 2000
                  example:
                    - 1234
                    - 5678
                    - 9012
                since_requested_at:
                  type: string
                  description: ジョブのリクエスト検索開始日時(YYYY-MM-DD hh:mm:ss)　リクエストが指定日時以降のもので絞り込み
                  format: date-time
                  example: '2024-05-01 00:00:00'
                until_requested_at:
                  type: string
                  description: ジョブのリクエスト検索終了日時(YYYY-MM-DD hh:mm:ss)　リクエストが指定日時以前のもので絞り込み
                  format: date-time
                  example: '2024-05-01 23:59:59'
                statuses:
                  type: array
                  items:
                    type: string
                    enum:
                      - waiting
                      - in progress
                      - complete
                      - failed
                  description: ジョブ進捗状況の配列での指定<br>waiting = 処理待ち<br>in progress = 処理中<br>complete = 処理完了<br>failed = 処理失敗
                  example:
                    - waiting
                    - complete
                    - failed

      responses:
        '200':
          description: '正常レスポンス<br>

            status = failedの場合のerror_descriptionの内容には下記のようなものがあります。


            - file not uploaded.: URLの有効期限中にファイルのアップロードが完了しなかった

            - file infected.: ファイルがウィルスに感染している

            - parent_sco_code not found.: ジョブ登録時に指定されたparent_sco_codeのコンテンツが存在しない（登録から教材作成/更新までの間に削除された、sco_codeが変更されたなど）

            - failed to move item to parent folder.: コンテンツ移動に失敗した（詳細は[使い方ページ](https://support.learningbox.online/how-to-use/move/)をご参照ください。）'

          content:
            application/json:
              schema:
                type: object
                required:
                  - statuses
                properties:
                  statuses:
                    type: array
                    description: ジョブ進捗状況の配列
                    items:
                      type: object
                      required:
                        - job_id
                        - status
                        - detail
                      properties:
                        job_id:
                          type: integer
                          description: ジョブID
                        status:
                          type: string
                          description: ジョブの進捗
                          enum:
                            - waiting
                            - in progress
                            - complete
                            - failed
                        detail:
                          description: ジョブの実行結果詳細（waiting/in progressの場合は空配列、complete/failedの場合はオブジェクト）
                          oneOf:
                            - type: array
                              description: ジョブがwaitingまたはin progressの場合（空配列）
                              maxItems: 0
                            - type: object
                              description: ジョブがcompleteの場合の詳細
                              required:
                                - sco_id
                                - sco_code
                                - sco_title
                              additionalProperties: false
                              properties:
                                sco_id:
                                  type: integer
                                  description: コンテンツの内部ID
                                  format: int32
                                sco_code:
                                  type: string
                                  description: コンテンツコード
                                sco_title:
                                  type: string
                                  description: コンテンツタイトル
                            - type: object
                              description: ジョブがfailedの場合の詳細
                              required:
                                - error_description
                              additionalProperties: false
                              properties:
                                error_description:
                                  type: string
                                  description: ジョブが失敗した場合のエラー内容
                                  enum:
                                    - file not uploaded.
                                    - file infected.
                                    - parent_sco_code not found.
              example:
                statuses:
                  - job_id: 1234
                    status: waiting
                    detail: []
                  - job_id: 5678
                    status: complete
                    detail:
                      sco_id: 123456
                      sco_code: sco-uuid
                      sco_title: 新規コース
                  - job_id: 9012
                    status: failed
                    detail:
                      error_description: file not uploaded.
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                job_ids未指定:
                  summary: job_ids未指定
                  value:
                    error: wrong parameter.
                    error_description: job_ids is required.
                job_idsが不正:
                  summary: job_idsが不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid job_ids.
                job_idsの件数が上限を超えている:
                  summary: job_idsの件数が上限を超えている
                  value:
                    error: wrong parameter.
                    error_description: Too many job_ids.
                since_requested_atの値が不正:
                  summary: since_requested_atの値が不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid since_requested_at.
                until_requested_atの値が不正:
                  summary: until_requested_atの値が不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid until_requested_at.
                since_requested_atがuntil_requested_atより後の日時:
                  summary: since_requested_atがuntil_requested_atより後の日時
                  value:
                    error: wrong parameter.
                    error_description: since_requested_at must be before until_requested_at.
                statusesの値が不正:
                  summary: statusesの値が不正
                  value:
                    error: wrong parameter.
                    error_description: Invalid statuses.
      deprecated: false
      x-codegen-request-body-name: body
  /v1/result:
    post:
      security:
        - OAuth2: [result.read]
      tags:
        - result
      summary: 成績一覧取得
      description: |
        成績管理画面にて管理されている情報を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 成績 ＞ 読取
        - スコープ: `result.read`
      operationId: searchResultList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user_id:
                  type: integer
                  description: ユーザー内部ID検索
                  example: 100
                login:
                  type: string
                  description: ログインID検索
                active_status:
                  type: string
                  description: ユーザーステータス（6:一時停止 7:有効 8:無効　カスタマイズプラン以上かつ無効ユーザー設定がONの場合のみ無効ユーザーの成績データを返します。）
                  default: 6,7
                group_id:
                  type: integer
                  description: グループ内部ID検索(group_recursive=1の場合、必須)
                  example: 30
                group_recursive:
                  type: integer
                  description: グループ内検索フラグ 1の場合、指定したグループIDを含んだ、その下位のグループをすべて検索します。
                  default: 0
                  example: 1
                sco_id:
                  type: integer
                  description: コンテンツ内部ID検索(sco_recursive=1の場合、必須)
                  example: 234
                sco_code:
                  type: string
                  description: コンテンツコード部分一致検索
                sco_recursive:
                  type: integer
                  description: フォルダ内検索フラグ フラグが1で、かつ指定したsco_idがフォルダのものだった場合、該当のフォルダを含んだ下位のフォルダおよび、そのフォルダに所属する教材のすべてを検索します。
                  default: 0
                  example: 1
                lesson_status:
                  type: string
                  description:
                    学習状況検索（合格⇒passed　不合格⇒failed　学習完了⇒completed　学習中⇒incomplete　未学習⇒not
                    attempted　学習免除⇒exempted）
                  example: passed, completed
                best_score_flag:
                  type: integer
                  description: ベストスコア指定フラグ（0:すべて, 1:特定の教材の成績のうち、最も高い得点のみを検索）
                  default: 0
                  example: 1
                start_date:
                  type: string
                  deprecated: true
                  description: '指定された日時以降のデータを検索 (非推奨: 代わりにsince_entry_dateを使用してください)'
                  format: date-time
                finish_date:
                  type: string
                  deprecated: true
                  description: '指定された日時以前のデータを検索 (非推奨: 代わりにuntil_entry_dateを使用してください)'
                  format: date-time
                since_entry_date:
                  type: string
                  description: 指定された日時以降のデータを検索
                  format: date-time
                  example: '2020-01-01 00:00:00'
                until_entry_date:
                  type: string
                  description: 指定された日時以前のデータを検索
                  format: date-time
                  example: '2020-12-31 23:59:59'
                since_updated_date:
                  type: string
                  description: 指定された日時以降のデータを検索
                  format: date-time
                until_updated_date:
                  type: string
                  description: 指定された日時以前のデータを検索
                  format: date-time
                included:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 学習画面での進捗（0:含まない 1:含む 指定なし:すべて）
                limit:
                  type: integer
                  description: 行数
                  default: 20
                offset:
                  type: integer
                  description: 開始行
                  default: 0
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                user_id:
                  type: integer
                  description: ユーザー内部ID検索
                  example: 100
                login:
                  type: string
                  description: ログインID検索
                active_status:
                  type: string
                  description: ユーザーステータス（6:一時停止 7:有効 8:無効　カスタマイズプラン以上かつ無効ユーザー設定がONの場合のみ無効ユーザーの成績データを返します。）
                  default: 6,7
                group_id:
                  type: integer
                  description: グループ内部ID検索(group_recursive=1の場合、必須)
                  example: 30
                group_recursive:
                  type: integer
                  description: グループ内検索フラグ 1の場合、指定したグループIDを含んだ、その下位のグループをすべて検索します。
                  default: 0
                  example: 1
                sco_id:
                  type: integer
                  description: コンテンツ内部ID検索(sco_recursive=1の場合、必須)
                  example: 234
                sco_code:
                  type: string
                  description: コンテンツコード部分一致検索
                sco_recursive:
                  type: integer
                  description: フォルダ内検索フラグ フラグが1で、かつ指定したsco_idがフォルダのものだった場合、該当のフォルダを含んだ下位のフォルダおよび、そのフォルダに所属する教材のすべてを検索します。
                  default: 0
                  example: 1
                lesson_status:
                  type: string
                  description:
                    学習状況検索（合格⇒passed　不合格⇒failed　学習完了⇒completed　学習中⇒incomplete　未学習⇒not
                    attempted　学習免除⇒exempted）
                  example: passed, completed
                best_score_flag:
                  type: integer
                  description: ベストスコア指定フラグ（0:すべて, 1:特定の教材の成績のうち、最も高い得点のみを検索）
                  default: 0
                  example: 1
                start_date:
                  type: string
                  deprecated: true
                  description: '指定された日時以降のデータを検索 (非推奨: 代わりにsince_entry_dateを使用してください)'
                  format: date-time
                finish_date:
                  type: string
                  deprecated: true
                  description: '指定された日時以前のデータを検索 (非推奨: 代わりにuntil_entry_dateを使用してください)'
                  format: date-time
                since_entry_date:
                  type: string
                  description: 指定された日時以降のデータを検索
                  format: date-time
                  example: '2020-01-01 00:00:00'
                until_entry_date:
                  type: string
                  description: 指定された日時以前のデータを検索
                  format: date-time
                  example: '2020-12-31 23:59:59'
                since_updated_date:
                  type: string
                  description: 指定された日時以降のデータを検索
                  format: date-time
                until_updated_date:
                  type: string
                  description: 指定された日時以前のデータを検索
                  format: date-time
                included:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 学習画面での進捗（0:含まない 1:含む 指定なし:すべて）
                limit:
                  type: integer
                  description: 行数
                  default: 20
                offset:
                  type: integer
                  description: 開始行
                  default: 0
        required: false
      responses:
        '200':
          description: 成功またはエラー時のレスポンス
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ResultDetail'
                  - $ref: '#/components/schemas/ErrorResponse'
              examples:
                成功時:
                  summary: 正常レスポンス
                  value:
                    results:
                      - result_id: 1001
                        user_id: 2001
                        login: user-001
                        name: 山田 太郎
                        sco_id: '3001'
                        sco_code: 1b7c86cd-e910-11eb-a524-0698f151fb8c
                        title: レポート課題
                        score: 0
                        lesson_status: completed
                        lesson_status_label: 回答完了
                        entry_date: '2020-08-27 10:18:30'
                        updated_at: null
                        duration: 22
                        session_time: 50
                        start_date: '2020-08-27 10:12:48'
                        finish_date: '2020-08-27 10:19:30'
                        kicked_at: null
                        groups:
                          - id: 3
                            name: 管理グループ
                          - id: 5
                            name: 営業部
                    meta:
                      total: 1
                      limit: 20
                      offset: 0
                group_recursive指定エラー:
                  summary: group_recursive指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[group_recursive] must be 0 or 1.'
                sco_recursive指定エラー:
                  summary: sco_recursive指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[sco_recursive] must be 0 or 1.'
                lesson_status指定エラー:
                  summary: lesson_status指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[lesson_status] must be [passed,failed,completed,incomplete,not
                      attempted,exempted].'
                best_score_flag指定エラー:
                  summary: best_score_flag指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[best_score_flag] must be 0 or 1.'
                limit指定エラー:
                  summary: limit指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[limit] must be a number greater than 0.'
                offset指定エラー:
                  summary: offset指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[offset] must be a number greater than 0.'
                active_status指定エラー:
                  summary: active_status指定エラー
                  value:
                    error: parameter incorrect.
                    error_description: '[active_status] must be [6, 7, 8].'
                start_date指定エラー:
                  summary: start_date指定エラー（非推奨）
                  value:
                    error: parameter incorrect.
                    error_description: '[start_date] format(yyyy-mm-dd hh:mm:ss) not
                      correct.'
                finish_date指定エラー:
                  summary: finish_date指定エラー（非推奨）
                  value:
                    error: parameter incorrect.
                    error_description: '[finish_date] format(yyyy-mm-dd hh:mm:ss)
                      not correct.'
  /v1/result/detail/{result_id}:
    post:
      security:
        - OAuth2: [result.read]
      tags:
        - result
      summary: 成績詳細取得
      description: |
        成績詳細画面にて表示されている情報を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 成績 ＞ 読取
        - スコープ: `result.read`
      operationId: getResultDetail
      parameters:
        - name: result_id
          description: 成績内部ID
          in: path
          required: true
          schema:
            type: integer
          example: 555
      responses:
        '200':
          description: 成功またはエラー時のレスポンス
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ResultBaseResponse'
                  - $ref: '#/components/schemas/ErrorResponse'
              examples:
                成功時:
                  summary: 成功時正常レスポンス
                  value:
                    result:
                      result_id: '3651'
                      user_id: 2
                      login: test-user
                      name: テストユーザー
                      sco_id: '1756'
                      sco_code: QUIZ001
                      title: 数学クイズ2019
                      score: '100'
                      lesson_status: passed
                      lesson_status_label: 合格
                      entry_date: '2018-04-23 11:03:57'
                      duration: '50'
                      session_time: '61'
                      finish_date: '2018-04-23 11:05:01'
                      scoring_history: []
                      rubric_result:
                        - perspective: ビジネスコミュニケーション
                          level: 優
                          score: 25
                        - perspective: ビジネスマナー
                          level: 良
                          score: 17
                      groups:
                        - id: 3
                          name: 管理グループ
                        - id: 5
                          name: 営業部
                    details:
                      - section_no: S001
                        question_no: q007
                        choice_no:
                          - 'choice-1.0_a'
                        type: fill-in
                        student_responce: ロシア　アメリカ　カナダ
                        correct_responce:
                          - pattern: ロシア, カナダ, アメリカ,米国
                        result: correct
                        duration: 9
                        section_tag:
                          - 社会
                        item_tag:
                          - 地理
                          - 世界地理
                        rubric_result: []
                      - section_no: S001
                        question_no: q002
                        choice_no:
                          - '2'
                        type: choice
                        student_responce: 信濃川, 利根川, 石狩川, 天塩川
                        correct_responce:
                          - pattern: 信濃川, 利根川, 石狩川, 天塩川
                        result: correct
                        duration: 26
                        section_tag:
                          - 社会
                        item_tag:
                          - 地理
                          - 日本地理
                        rubric_result: []
                      - section_no: S001
                        question_no: q003
                        choice_no: null
                        type: textarea-report
                        student_responce: 'ルーブリックは評価基準です。'
                        correct_responce:
                          - pattern: ''
                        result: sankaku
                        duration: 3
                        section_tag: []
                        item_tag: []
                        rubric_result:
                          - perspective: 丁寧さ
                            level: 優
                            score: 50
                          - perspective: 正確さ
                            level: 良
                            score: 30
                採点フロー利用時:
                  summary: 採点フロー利用時正常レスポンス
                  value:
                    result:
                      result_id: '136293'
                      user_id: 2
                      login: test-user
                      name: テストユーザー
                      sco_id: '175204'
                      sco_code: QUIZ005
                      title: クイズ2024
                      score: '100'
                      lesson_status: passed
                      lesson_status_label: 合格
                      entry_date: '2024-06-06 10:44:43'
                      duration: '42'
                      session_time: '21'
                      finish_date: '2024-06-06 10:45:06'
                      groups:
                        - id: 3
                          name: 管理グループ
                        - id: 5
                          name: 営業部
                      scoring_history:
                        - user_id: 26473
                          user_login: test-26473
                          action_type: submitted
                          flow_step_type: null
                          flow_step_name: null
                          updated_flow_step_type: before_scoring
                          updated_flow_step_name: 承認1
                          comment: null
                          action_date: '2024-06-07 08:52:18'
                        - user_id: 36253
                          user_login: test-36253
                          action_type: approved
                          flow_step_type: before_scoring
                          flow_step_name: 承認1
                          updated_flow_step_type: before_scoring
                          updated_flow_step_name: 承認2
                          comment: null
                          action_date: '2024-06-08 04:15:24'
                        - user_id: 2
                          user_login: test-2
                          action_type: approved
                          flow_step_type: before_scoring
                          flow_step_name: 承認3
                          updated_flow_step_type: scoring
                          updated_flow_step_name: 採点する
                          comment: null
                          action_date: '2024-06-08 16:50:44'
                        - user_id: 3645
                          user_login: test-3645
                          action_type: completed_scoring
                          flow_step_type: scoring
                          flow_step_name: 採点する
                          updated_flow_step_type: after_scoring
                          updated_flow_step_name: 承認1
                          comment: null
                          action_date: '2024-06-11 04:48:02'
                        - user_id: 15616
                          user_login: test-15616
                          action_type: approved
                          flow_step_type: after_scoring
                          flow_step_name: 承認1
                          updated_flow_step_type: after_scoring
                          updated_flow_step_name: 承認2
                          comment: null
                          action_date: '2024-06-11 23:36:09'
                        - user_id: 27386
                          user_login: test-27386
                          action_type: approved
                          flow_step_type: after_scoring
                          flow_step_name: 承認2
                          updated_flow_step_type: after_scoring
                          updated_flow_step_name: 承認3
                          comment: null
                          action_date: '2024-06-12 15:13:52'
                        - user_id: 32462
                          user_login: test-32462
                          action_type: approved
                          flow_step_type: after_scoring
                          flow_step_name: 承認3
                          updated_flow_step_type: null
                          updated_flow_step_name: null
                          comment: null
                          action_date: '2024-06-12 21:30:32'
                    details:
                      - section_no: S001
                        question_no: q007
                        choice_no:
                          - '1'
                        type: fill-in
                        student_responce: ロシア　アメリカ　カナダ
                        correct_responce:
                          - pattern: ロシア, カナダ, アメリカ,米国
                        result: correct
                        duration: 9
                        section_tag:
                          - 社会
                        item_tag:
                          - 地理
                          - 世界地理
                      - section_no: S001
                        question_no: q002
                        choice_no:
                          - '2'
                        type: choice
                        student_responce: 信濃川, 利根川, 石狩川, 天塩川
                        correct_responce:
                          - pattern: 信濃川, 利根川, 石狩川, 天塩川
                        result: correct
                        duration: 26
                        section_tag:
                          - 社会
                        item_tag:
                          - 地理
                          - 日本地理
                result_id指定エラー:
                  summary: result_id指定エラー
                  value:
                    error: result not found.
                    error_description: could not find result with id [123].
                匿名アンケート指定エラー:
                  summary: 匿名アンケート指定エラー
                  value:
                    error: The result is an anonymous survey
                    error_description: could not retrieve the result with id [10013]
                      because this result is an anonymous survey.
      deprecated: false
  /v1/result/advance-detail:
    post:
      security:
        - OAuth2: [result.read]
      tags:
        - result
      summary: 成績詳細一括取得
      description: |
        特定のユーザーの成績情報を設問への回答詳細データも含め取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 成績 ＞ 読取
        - スコープ: `result.read`
      operationId: getResultAdvanceDetail
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                device_info:
                  type: boolean
                  description: '端末チェックの結果を取得するか true: 取得する false: 取得しない'
                  default: false
                  example: true
                include_detail:
                  type: boolean
                  description: '設問ごとの解答データを取得するか true: 取得する false: 取得しない'
                  default: true
                include_unlink_contents:
                  type: boolean
                  description:
                    '他オーナーから配布されたリンクコースを削除後、削除したリンクコース内のコンテンツ情報と成績を取得するか
                    true: 取得する false: 取得しない'
                  default: false
                score_type:
                  type: string
                  description: 対象となる成績 best_score:最初にとった最高点 last_score:最後の成績 all_score:すべての成績
                  default: best_score
                  enum:
                    - best_score
                    - last_score
                    - all_score
                lesson_status:
                  type: array
                  description:
                    学習状況検索（合格⇒passed　不合格⇒failed　学習・回答完了／採点待⇒completed　学習中⇒incomplete　未学習⇒not
                    attempted　学習免除⇒exempted）
                  items:
                    type: string
                  enum:
                    - passed
                    - failed
                    - completed
                    - incomplete
                    - not attempted
                    - exempted
                  example:
                    - passed
                    - failed
                date_scope:
                  type: object
                  description: 日付範囲で検索
                  properties:
                    since_entry_date:
                      type: string
                      description: 指定された日時以降のデータを検索
                      format: date-time
                      example: '2019-02-01 13:00:00'
                    until_entry_date:
                      type: string
                      description: 指定された日時以前のデータを検索
                      format: date-time
                      example: '2020-02-01 13:00:00'
                    since_updated_date:
                      type: string
                      description: 指定された日時以降のデータを検索
                      format: date-time
                      example: '2019-02-01 13:00:00'
                    until_updated_date:
                      type: string
                      description: 指定された日時以前のデータを検索
                      format: date-time
                      example: '2020-02-01 13:00:00'
                    included:
                      type: integer
                      enum:
                        - 0
                        - 1
                      description: 学習画面での進捗（0:含まない 1:含む 指定なし:すべて）
                search_options:
                  type: array
                  description: 日付の範囲指定 scope_typeが'since'の場合、指定した日付以降のデータをscope_typeが'until'の場合、指定した日付以前のデータをscope_typeが'range'の場合、指定した日付から指定した日付までのデータを取得
                  items:
                    type: object
                    properties:
                      user_id:
                        type: integer
                        description: ユーザー内部ID検索
                      login:
                        type: string
                        description: ログインID検索
                        example: user-001
                      sco_ids:
                        type: array
                        description: コンテンツ内部ID検索
                        items:
                          type: integer
                      sco_codes:
                        type: array
                        description: コンテンツコード部分一致検索
                        items:
                          type: string
                        example:
                          - '21001'
                          - '22001'
                          - '23001'
                  example:
                    - login: unique000x000000000x000000000x00000001
                      sco_codes:
                        - '21001'
                        - '22001'
                        - '23001'
                    - login: unique000x000000000x000000000x00000002
                      sco_codes:
                        - '21001'
                        - '22001'
                        - '23001'
      responses:
        '200':
          description: 成功時のレスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultAdvanceDetailResponse'
              examples:
                device_info_true:
                  summary: device_info：true時の正常レスポンス
                  value:
                    result:
                      - user_id: 2001
                        login: user-001
                        name: 山田 太郎
                        sco_results:
                          - sco_id: '1001'
                            sco_code: 1b7c86cd-e910-11eb-a524-0698f151fb8c
                            title: 数学
                            score: 0
                            lesson_status: not attempted
                            lesson_status_label: 未学習
                            entry_date: '2024-06-01 10:28:47'
                            duration: 0
                            session_time: 0
                            finish_date: '2024-06-01 10:33:47'
                            login_check_result:
                              user_os: Windows 10
                              user_browser: Chrome 92.0.4515.107
                              user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
                                (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
                              entry_date: '2024-06-06 10:25:29'
                            check_result_details: []
                            details: []
                            scoring_history: []
                            rubric_result:
                              - perspective: 数学力
                                level: 優
                                score: 30
                              - perspective: 論理的思考力
                                level: 良
                                score: 20
                          - sco_id: '1002'
                            sco_code: null
                            error: not found.
                          - sco_id: null
                            sco_code: SCO_1003
                            error: not found.
                          - sco_id: '1004'
                            sco_code: 22001
                            title: 国語
                            score: 87
                            lesson_status: passed
                            lesson_status_label: 合格
                            entry_date: '2024-06-01 10:30:55'
                            duration: 50
                            finish_date: '2024-06-01 10:33:47'
                            login_check_result:
                              user_os: Windows 10
                              user_browser: Chrome 92.0.4515.107
                              user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
                                (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
                              entry_date: '2021-06-01 10:25:29'
                            check_result_details:
                              - check_type: speed
                                check_action: allow
                                check_condition: 20Mbps
                                check_result: 12Mbps
                                check_ok: true
                                entry_date: '2021-06-01 10:25:29'
                              - check_type: sound
                                check_action: forbidden
                                check_condition: null
                                check_result: null
                                check_ok: true
                                entry_date: '2021-06-01 10:25:29'
                            details:
                              - section_no: S001
                                question_no: 1
                                choice_no:
                                  - '1'
                                type: choice
                                student_response: 衰
                                correct_responses:
                                  - pattern: 衰
                                result: correct
                                latency: '00:00:09'
                                section_tag:
                                  - 現代文・知識
                                item_tag:
                                  - 語彙
                                  - 漢字
                                rubric_result: []
                              - section_no: S001
                                question_no: q002
                                choice_no:
                                  - '2'
                                type: choice
                                student_response: 化
                                correct_responses:
                                  - pattern: 過
                                result: wrong
                                latency: '00:00:09'
                                section_tag:
                                  - 現代文・知識
                                item_tag:
                                  - 語彙
                                  - 漢字
                                rubric_result: []
                              - section_no: S001
                                question_no: q003
                                choice_no: null
                                type: textarea-report
                                student_response: 'ルーブリックは評価基準です。'
                                correct_responses:
                                  - pattern: ''
                                result: sankaku
                                latency: '00:00:03'
                                section_tag: []
                                item_tag: []
                                rubric_result:
                                  - perspective: 丁寧さ
                                    level: 優
                                    score: 50
                                  - perspective: 正確さ
                                    level: 良
                                    score: 30
                            scoring_history:
                              - user_id: 26473
                                user_login: user-26473
                                action_type: submitted
                                flow_step_type: null
                                flow_step_name: null
                                updated_flow_step_type: before_scoring
                                updated_flow_step_name: 承認1
                                comment: null
                                action_date: '2024-06-07 08:52:18'
                              - user_id: 36253
                                user_login: user-36253
                                action_type: approved
                                flow_step_type: before_scoring
                                flow_step_name: 承認1
                                updated_flow_step_type: before_scoring
                                updated_flow_step_name: 承認2
                                comment: null
                                action_date: '2024-06-08 01:05:51'
                              - user_id: 74524
                                user_login: user-74524
                                action_type: approved
                                flow_step_type: before_scoring
                                flow_step_name: 承認2
                                updated_flow_step_type: before_scoring
                                updated_flow_step_name: 承認3
                                comment: null
                                action_date: '2024-06-08 04:15:24'
                              - user_id: 34675
                                user_login: user-34675
                                action_type: approved
                                flow_step_type: before_scoring
                                flow_step_name: 承認3
                                updated_flow_step_type: scoring
                                updated_flow_step_name: 採点する
                                comment: null
                                action_date: '2024-06-08 16:50:44'
                              - user_id: 36451
                                user_login: user-36451
                                action_type: completed_scoring
                                flow_step_type: scoring
                                flow_step_name: 採点する
                                updated_flow_step_type: after_scoring
                                updated_flow_step_name: 承認1
                                comment: null
                                action_date: '2024-06-11 04:48:02'
                              - user_id: 27386
                                user_login: user-27386
                                action_type: approved
                                flow_step_type: after_scoring
                                flow_step_name: 承認1
                                updated_flow_step_type: after_scoring
                                updated_flow_step_name: 承認2
                                comment: null
                                action_date: '2024-06-11 23:36:09'
                              - user_id: 32462
                                user_login: user-32462
                                action_type: approved
                                flow_step_type: after_scoring
                                flow_step_name: 承認2
                                updated_flow_step_type: after_scoring
                                updated_flow_step_name: 承認3
                                comment: null
                                action_date: '2024-06-12 15:13:52'
                              - user_id: 15616
                                user_login: user-15616
                                action_type: approved
                                flow_step_type: after_scoring
                                flow_step_name: 承認3
                                updated_flow_step_type: null
                                updated_flow_step_name: null
                                comment: null
                                action_date: '2024-06-12 21:30:32'
                      - user_id: null
                        login: test
                        error: not found.
                      - user_id: 99
                        login: null
                        error: not found.
                device_info_false:
                  summary: device_info：false時の正常レスポンス
                  value:
                    result:
                      - user_id: 2001
                        login: user-001
                        name: 山田 太郎
                        sco_results:
                          - sco_id: '1001'
                            sco_code: 1b7c86cd-e910-11eb-a524-0698f151fb8c
                            title: 数学
                            score: 0
                            lesson_status: not attempted
                            lesson_status_label: 未学習
                            entry_date: '2024-06-01 10:28:47'
                            duration: 0
                            session_time: 0
                            details: []
                          - sco_id: '1002'
                            sco_code: null
                            error: not found.
                          - sco_id: null
                            sco_code: SCO_1003
                            error: not found.
                          - sco_id: '1004'
                            sco_code: 22001
                            title: 国語
                            score: 87
                            lesson_status: passed
                            lesson_status_label: 合格
                            entry_date: '2024-06-01 10:30:55'
                            duration: 50
                            finish_date: '2024-06-01 10:33:47'
                            session_time: null
                            details:
                              - section_no: S001
                                question_no: 1
                                choice_no:
                                  - '1'
                                type: choice
                                student_response: 衰
                                correct_responses:
                                  - pattern: 衰
                                result: correct
                                latency: '00:00:09'
                                section_tag:
                                  - 現代文・知識
                                item_tag:
                                  - 語彙
                                  - 漢字
                              - section_no: S001
                                question_no: q002
                                choice_no:
                                  - '2'
                                type: choice
                                student_response: 化
                                correct_responses:
                                  - pattern: 過
                                result: wrong
                                latency: '00:00:09'
                                section_tag:
                                  - 現代文・知識
                                item_tag:
                                  - 語彙
                                  - 漢字
                            scoring_history:
                              - user_id: 26473
                                user_login: user-26473
                                action_type: submitted
                                flow_step_type: null
                                flow_step_name: null
                                updated_flow_step_type: before_scoring
                                updated_flow_step_name: 承認1
                                comment: null
                                action_date: '2024-06-07 08:52:18'
                              - user_id: 36253
                                user_login: user-36253
                                action_type: approved
                                flow_step_type: before_scoring
                                flow_step_name: 承認1
                                updated_flow_step_type: before_scoring
                                updated_flow_step_name: 承認2
                                comment: null
                                action_date: '2024-06-08 01:05:51'
                              - user_id: 74524
                                user_login: user-74524
                                action_type: approved
                                flow_step_type: before_scoring
                                flow_step_name: 承認2
                                updated_flow_step_type: before_scoring
                                updated_flow_step_name: 承認3
                                comment: null
                                action_date: '2024-06-08 04:15:24'
                              - user_id: 34675
                                user_login: user-34675
                                action_type: approved
                                flow_step_type: before_scoring
                                flow_step_name: 承認3
                                updated_flow_step_type: scoring
                                updated_flow_step_name: 採点する
                                comment: null
                                action_date: '2024-06-08 16:50:44'
                              - user_id: 36451
                                user_login: user-36451
                                action_type: completed_scoring
                                flow_step_type: scoring
                                flow_step_name: 採点する
                                updated_flow_step_type: after_scoring
                                updated_flow_step_name: 承認1
                                comment: null
                                action_date: '2024-06-11 04:48:02'
                              - user_id: 27386
                                user_login: user-27386
                                action_type: approved
                                flow_step_type: after_scoring
                                flow_step_name: 承認1
                                updated_flow_step_type: after_scoring
                                updated_flow_step_name: 承認2
                                comment: null
                                action_date: '2024-06-11 23:36:09'
                              - user_id: 32462
                                user_login: user-32462
                                action_type: approved
                                flow_step_type: after_scoring
                                flow_step_name: 承認2
                                updated_flow_step_type: after_scoring
                                updated_flow_step_name: 承認3
                                comment: null
                                action_date: '2024-06-12 15:13:52'
                              - user_id: 15616
                                user_login: user-15616
                                action_type: approved
                                flow_step_type: after_scoring
                                flow_step_name: 承認3
                                updated_flow_step_type: null
                                updated_flow_step_name: null
                                comment: null
                                action_date: '2024-06-12 21:30:32'
                      - user_id: null
                        login: test
                        error: not found.
                      - user_id: 99
                        login: null
                        error: not found.
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ErrorResponse_for_ResultAdvanceDetail'
                  - $ref: '#/components/schemas/ErrorResponse'
              examples:
                search_options未指定:
                  summary: search_options未指定
                  value:
                    error: wrong_parameter
                    error_description: Search options is empty.
                search_options件数超過エラー:
                  summary: search_options件数超過エラー
                  value:
                    error: wrong_parameter
                    error_description: Search options should be less than 10000.
                score_type指定エラー:
                  summary: score_type指定エラー
                  value:
                    error: wrong_parameter
                    error_description: '[score_type] should be [best_score,last_score,all_score].'
                search_options指定エラー:
                  summary: search_options指定エラー
                  value:
                    error: wrong_parameter
                    error_description: Search options is incorrect.
                    error_items:
                      - index: 99
                        error_details:
                          - user_id or login is necessary.
                          - sco_ids or sco_codes is necessary.
                before_created_at指定エラー:
                  summary: before_created_at指定エラー
                  value:
                    error: wrong_parameter
                    error_description: '[before_created_at] format(yyyy-mm-dd hh:mm:ss)
                      is incorrect.'
                lesson_status指定エラー:
                  summary: lesson_status指定エラー
                  value:
                    error: wrong_parameter
                    error_description: '[lesson_status] must be [passed,failed,completed,incomplete,not
                      attempted,exempted].'
      deprecated: false
  /v1/user/list:
    post:
      security:
        - OAuth2: [user.read]
      tags:
        - user
      summary: ユーザー一覧取得
      description: |
        ユーザー管理画面にて管理されているユーザー情報を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 読取
        - スコープ: `user.read`
      operationId: searchUserList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                keyword:
                  type: string
                  description: "任意文字列で曖昧検索

                    検索対象フィールド：'name', 'login', 'email', 'nickname', 'department',
                    'position'"
                group_id:
                  type: integer
                group_code:
                  type: string
                since_created_at:
                  type: string
                until_created_at:
                  type: string
                since_updated_at:
                  type: string
                until_updated_at:
                  type: string
                limit:
                  type: integer
                  default: 20
                  description: '1回の検索で返される行数を指定
                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                offset:
                  type: integer
                  description: 検索開始行
            example:
              keyword: 'user'
              since_created_at: '2017-01-01 00:00:00'
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                keyword:
                  type: string
                  description: "任意文字列で曖昧検索

                    検索対象フィールド：'name', 'login', 'email', 'nickname', 'department',
                    'position'"
                group_id:
                  type: integer
                group_code:
                  type: string
                since_created_at:
                  type: string
                until_created_at:
                  type: string
                since_updated_at:
                  type: string
                until_updated_at:
                  type: string
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                offset:
                  type: integer
                  description: 検索開始行
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserListResponse'
              example:
                results:
                  - user_id: 2
                    active_status: 7
                    active_status_label: 有効
                    login: admin
                    name: 環境管理者
                    nickname: 環境管理者
                    department: 開発部
                    position: 部長
                    email: apitest@example.com
                    lms_country: Japan
                    lms_language: ja_JP
                    lms_timezone: Asia/Tokyo
                    lms_date_format: YYYY年M月D日
                    lms_time_format: H時mm分ss秒
                    created_at: '2017-06-07 08:31:47'
                    updated_at: '2017-06-07 09:35:00'
                    receive_notice_mail: 1
                  - user_id: 4
                    active_status: 7
                    active_status_label: 有効
                    login: user_4
                    name: 学習者4
                    nickname: 学習者4
                    department: 開発部
                    position: 係長
                    email: apitest_user4@example.com
                    lms_country: null
                    lms_language: null
                    lms_timezone: null
                    lms_date_format: DD/MMM/YYYY
                    lms_time_format: hh:mm:ss a
                    created_at: '2017-06-07 08:31:47'
                    updated_at: '2017-06-07 09:35:00'
                    receive_notice_mail: 0
                meta:
                  total: 2236
                  limit: 20
                  offset: 0
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: parameter incorrect.
                error_description: '[before_created_at] format(yyyy-mm-dd hh:mm:ss) is incorrect.'
      deprecated: false
      x-codegen-request-body-name: body
  /v1/user/detail/{login}:
    post:
      security:
        - OAuth2: [user.read]
      tags:
        - user
      summary: ユーザー詳細取得
      description: |
        特定のユーザーの詳細情報を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 読取
        - スコープ: `user.read`
      operationId: getUserDetail
      parameters:
        - name: login
          in: path
          description: ログインID
          required: true
          schema:
            type: string
            minLength: 5
            maxLength: 50
          example: 'test-user'
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDetail'
              example:
                result:
                  user_id: 2
                  active_status: 7
                  active_status_label: 有効
                  login: admin
                  name: 環境管理者
                  nickname: 環境管理者
                  department: 開発部
                  position: 部長
                  email: apitest@example.com
                  lms_country: Japan
                  lms_language: ja_JP
                  lms_timezone: Asia/Tokyo
                  lms_date_format: YYYY年M月D日
                  lms_time_format: H時mm分ss秒
                  created_at: '2017-06-07 08:31:47'
                  updated_at: '2017-06-07 09:35:00'
                  receive_notice_mail: 1
                  groups:
                    - id: 9
                      name: 1年生
                      group_code: g9
                      user_limit: null
                    - id: 51
                      name: 研修3
                      group_code: g51
                      product_id: 55
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                ログインID未指定:
                  summary: ログインID未指定
                  value:
                    error: wrong_parameter
                    error_description: Login ID could not be empty.
                ユーザーが存在しない:
                  summary: ユーザーが存在しない
                  value:
                    error: not_exists
                    error_description: User does not exist.
      deprecated: false
  /v1/user/create:
    post:
      security:
        - OAuth2: [user.create]
      tags:
        - user
      summary: ユーザー作成
      description: |
        新しいユーザーを作成します。

        ## カスタムフィールド
        リクエストボディに標準フィールド以外のキーを指定することで、カスタムフィールドの値を設定できます。
        - **キー**: カスタムフィールドの物理名（入力フィールド設定画面で定義したフィールド名）
        - **値**: string型で指定してください
        - 例: `{"custom_field_key": "value", "another_field": "another_value"}`

        ### チェックボックス型フィールド
        複数の値を設定する場合は配列形式で指定します。
        - **json送信**: `{"hobby": ["釣り", "映画"]}`
        - **フォーム送信**: `hobby[]=釣り&hobby[]=映画`

        ### フィールドタイプごとのバリデーション
        - **テキスト / テキストエリア**: 制限文字数あり（フィールド定義による）
        - **日付**: フィールド定義で指定されたフォーマットに従う（Y-m-d/例: `YYYY-MM-DD`、j-f-Y/例: `dd-February-YYYY`）
        - **数値**: 整数値（フィールド定義による）
        - **プルダウン**: 定義されたオプション値のみ有効

        ### 編集不可フィールドについて
        入力フィールド設定画面で「編集不可：On」に設定されたフィールドも、APIからは更新可能です。

        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 追加
        - スコープ: `user.create`
      operationId: createUser
      requestBody:
        content:
          application/json:
            schema:
              required:
                - login
              type: object
              properties:
                login:
                  minLength: 5
                  maxLength: 50
                  type: string
                  description: ログインID
                  example: 'user01'
                email:
                  maxLength: 255
                  type: string
                  description: メールアドレス
                  format: email
                name:
                  type: string
                  description: 氏名
                  example: 'テスト太郎'
                nickname:
                  type: string
                  description: ディスプレイネーム
                password:
                  type: string
                  description: パスワード
                department:
                  type: string
                  description: 部署
                position:
                  type: string
                  description: 役職
                lms_country:
                  type: string
                  description: |
                    居住国・地域。国名を英語表記で指定します。
                    指定可能な値: Japan, Afghanistan, Albania, Algeria, Andorra, Angola, AntiguaAndBarbuda, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, BosniaAndHerzegovina, Botswana, Brazil, BruneiDarussalam, Bulgaria, BurkinaFaso, Burundi, CaboVerde, Cambodia, Cameroon, Canada, CentralAfricanRepublic, Chad, Chile, China, Colombia, Comoros, Congo, CostaRica, CoteD'Ivoire, Croatia, Cuba, Cyprus, CzechRepublic, DemocraticPeople'sRepublicOfKorea, DemocraticRepublicOfTheCongo, Denmark, Djibouti, Dominica, DominicanRepublic, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, Germany, Ghana, Greece, Grenada, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Jordan, Kazakhstan, Kenya, Kiribati, Kuwait, Kyrgyzstan, LaoPeople'sDemocraticRepublic, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Mauritania, Mauritius, Mexico, Micronesia, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewZealand, Nicaragua, Niger, Nigeria, NorthMacedonia, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, RepublicOfKorea, RepublicOfMoldova, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, SaintLucia, SaintVincentAndTheGrenadines, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthSudan, Spain, SriLanka, Sudan, Suriname, Sweden, Switzerland, SyrianArabRepublic, Tajikistan, Thailand, Timor-Leste, Togo, Tonga, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdomOfGreatBritainAndNorthernIreland, UnitedRepublicOfTanzania, UnitedStatesOfAmerica, Uruguay, Uzbekistan, Vanuatu, Venezuela, VietNam, Yemen, Zambia, Zimbabwe
                lms_language:
                  type: string
                  description: |
                    言語。ロケールコードで指定します。
                    指定可能な値: ja_JP（日本語）, en_US（英語）, vi_VN（ベトナム語）, id_ID（インドネシア語）, de_DE（ドイツ語）, es_ES（スペイン語）, fr_FR（フランス語）, my_MM（ミャンマー語）, pt_PT（ポルトガル語）, tl_PH（タガログ語）, ru_RU（ロシア語）, ur_PK（ウルドゥー語）, hi_IN（ヒンディー語）, th_TH（タイ語）, km_KH（クメール語）, zh_CN（中国語簡体字）, zh_TW（中国語繁体字）, ko_KR（韓国語）
                lms_timezone:
                  type: string
                  description: |
                    タイムゾーン。IANAタイムゾーン識別子で指定します。
                    指定可能な値: Asia/Tokyo, Europe/Budapest, Africa/Lagos, Europe/Amsterdam, Europe/Paris, Africa/Windhoek, Africa/Harare, Europe/Helsinki, Europe/Sofia, Africa/Cairo, Europe/Bucharest, Asia/Jerusalem, Asia/Amman, Asia/Beirut, Asia/Damascus, Europe/Istanbul, Asia/Kuwait, Europe/Minsk, Africa/Nairobi, Asia/Baghdad, Europe/Moscow, Asia/Tehran, Asia/Yerevan, Asia/Baku, Asia/Tbilisi, Asia/Kabul, Asia/Ashgabat, Asia/Karachi, Asia/Kolkata, Asia/Colombo, Asia/Kathmandu, Asia/Dhaka, Asia/Yangon, Asia/Bangkok, Asia/Singapore, Asia/Taipei, Asia/Hong_Kong, Asia/Shanghai, Asia/Macau, Asia/Ulaanbaatar, Asia/Seoul, Australia/Melbourne, Pacific/Guam, Pacific/Noumea, Pacific/Auckland, Pacific/Apia, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Santiago, America/Cayenne, America/Montevideo, America/Manaus, America/Asuncion, America/Bogota, America/Mexico_City, America/Phoenix, America/Vancouver, Pacific/Honolulu, UTC
                lms_date_format:
                  type: string
                  description: 日付形式
                lms_time_format:
                  type: string
                  description: 時刻形式
                active_status:
                  type: integer
                  description: 'ステータスとラベル

                    6:一時停止

                    7:有効

                    8:無効'
                send_mail:
                  maximum: 1
                  minimum: 0
                  type: integer
                  description: 招待メール送信の可否
                receive_notice_mail:
                  maximum: 1
                  minimum: 0
                  type: integer
                  description: 'お知らせ公開通知メールを受け取る
                    0:受け取らない
                    1:受け取る'
              additionalProperties:
                oneOf:
                  - type: string
                    description: 'カスタムフィールド：テキスト・日付・数値・セレクト型フィールドの値'
                  - type: array
                    items:
                      type: string
                    description: 'カスタムフィールド：チェックボックス型フィールドの値（複数選択)'
              example:
                login: 'user01'
                name: 'テスト太郎'
                password: 'SecurePassword123!'
                email: 'user@example.com'
                department: '営業部'
                custom_division: '東京営業所'
                hobby:
                  - '釣り'
                  - '映画'
          application/x-www-form-urlencoded:
            schema:
              required:
                - login
              type: object
              properties:
                login:
                  minLength: 5
                  maxLength: 50
                  type: string
                  description: ログインID
                email:
                  maxLength: 255
                  type: string
                  description: メールアドレス
                  format: email
                name:
                  type: string
                  description: 氏名
                nickname:
                  type: string
                  description: ディスプレイネーム
                password:
                  type: string
                  description: パスワード
                department:
                  type: string
                  description: 部署
                position:
                  type: string
                  description: 役職
                lms_country:
                  type: string
                  description: |
                    居住国・地域。国名を英語表記で指定します。
                    指定可能な値: Japan, Afghanistan, Albania, Algeria, Andorra, Angola, AntiguaAndBarbuda, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, BosniaAndHerzegovina, Botswana, Brazil, BruneiDarussalam, Bulgaria, BurkinaFaso, Burundi, CaboVerde, Cambodia, Cameroon, Canada, CentralAfricanRepublic, Chad, Chile, China, Colombia, Comoros, Congo, CostaRica, CoteD'Ivoire, Croatia, Cuba, Cyprus, CzechRepublic, DemocraticPeople'sRepublicOfKorea, DemocraticRepublicOfTheCongo, Denmark, Djibouti, Dominica, DominicanRepublic, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, Germany, Ghana, Greece, Grenada, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Jordan, Kazakhstan, Kenya, Kiribati, Kuwait, Kyrgyzstan, LaoPeople'sDemocraticRepublic, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Mauritania, Mauritius, Mexico, Micronesia, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewZealand, Nicaragua, Niger, Nigeria, NorthMacedonia, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, RepublicOfKorea, RepublicOfMoldova, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, SaintLucia, SaintVincentAndTheGrenadines, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthSudan, Spain, SriLanka, Sudan, Suriname, Sweden, Switzerland, SyrianArabRepublic, Tajikistan, Thailand, Timor-Leste, Togo, Tonga, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdomOfGreatBritainAndNorthernIreland, UnitedRepublicOfTanzania, UnitedStatesOfAmerica, Uruguay, Uzbekistan, Vanuatu, Venezuela, VietNam, Yemen, Zambia, Zimbabwe
                lms_language:
                  type: string
                  description: |
                    言語。ロケールコードで指定します。
                    指定可能な値: ja_JP（日本語）, en_US（英語）, vi_VN（ベトナム語）, id_ID（インドネシア語）, de_DE（ドイツ語）, es_ES（スペイン語）, fr_FR（フランス語）, my_MM（ミャンマー語）, pt_PT（ポルトガル語）, tl_PH（タガログ語）, ru_RU（ロシア語）, ur_PK（ウルドゥー語）, hi_IN（ヒンディー語）, th_TH（タイ語）, km_KH（クメール語）, zh_CN（中国語簡体字）, zh_TW（中国語繁体字）, ko_KR（韓国語）
                lms_timezone:
                  type: string
                  description: |
                    タイムゾーン。IANAタイムゾーン識別子で指定します。
                    指定可能な値: Asia/Tokyo, Europe/Budapest, Africa/Lagos, Europe/Amsterdam, Europe/Paris, Africa/Windhoek, Africa/Harare, Europe/Helsinki, Europe/Sofia, Africa/Cairo, Europe/Bucharest, Asia/Jerusalem, Asia/Amman, Asia/Beirut, Asia/Damascus, Europe/Istanbul, Asia/Kuwait, Europe/Minsk, Africa/Nairobi, Asia/Baghdad, Europe/Moscow, Asia/Tehran, Asia/Yerevan, Asia/Baku, Asia/Tbilisi, Asia/Kabul, Asia/Ashgabat, Asia/Karachi, Asia/Kolkata, Asia/Colombo, Asia/Kathmandu, Asia/Dhaka, Asia/Yangon, Asia/Bangkok, Asia/Singapore, Asia/Taipei, Asia/Hong_Kong, Asia/Shanghai, Asia/Macau, Asia/Ulaanbaatar, Asia/Seoul, Australia/Melbourne, Pacific/Guam, Pacific/Noumea, Pacific/Auckland, Pacific/Apia, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Santiago, America/Cayenne, America/Montevideo, America/Manaus, America/Asuncion, America/Bogota, America/Mexico_City, America/Phoenix, America/Vancouver, Pacific/Honolulu, UTC
                lms_date_format:
                  type: string
                  description: 日付形式
                lms_time_format:
                  type: string
                  description: 時刻形式
                active_status:
                  type: integer
                  description: 'ステータスとラベル

                    6:一時停止

                    7:有効

                    8:無効'
                send_mail:
                  maximum: 1
                  minimum: 0
                  type: integer
                  description: 招待メール送信の可否
                receive_notice_mail:
                  maximum: 1
                  minimum: 0
                  type: integer
                  description: 'お知らせ公開通知メールを受け取る

                    0:受け取らない

                    1:受け取る'
        required: true
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreateResponse'
              example:
                result:
                  user_id: 32
                  login: test-user
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                追加上限オーバー:
                  summary: 追加上限オーバー
                  value:
                    error: deny
                    error_description: ユーザー数が上限に達しているため、ユーザーの登録に失敗しました。
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_user'
              example:
                send_mail:
                  - 入力内容が正しくありません。
                login:
                  - ログインIDを入力してください。
                email:
                  - E-mailアドレスが正しくありません。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/user/update/{login}:
    post:
      security:
        - OAuth2: [user.update]
      tags:
        - user
      summary: ユーザー更新
      description: |
        特定のユーザーの詳細情報を更新します。

        ## 部分更新（PATCH相当）
        パスパラメータ `{login}` で更新対象を指定し、ボディに含めたフィールドのみが更新されます。

        ## パスパラメータとボディパラメータの関係
        - **パスパラメータ `{login}`**: 更新対象ユーザーの現在のログインID（必須）
        - **ボディ `login`**: 新しいログインIDに変更する場合に指定（省略すると変更なし）

        ## カスタムフィールド
        リクエストボディに標準フィールド以外のキーを指定することで、カスタムフィールドの値を設定できます。
        - **キー**: カスタムフィールドの物理名（入力フィールド設定画面で定義したフィールド名）
        - **値**: string型で指定してください
        - 例: `{"custom_field_key": "value", "another_field": "another_value"}`


        ### チェックボックス型フィールド
        複数の値を設定する場合は配列形式で指定します。空文字を送ると登録内容が消去されます。
        - **json送信**: `{"hobby": ["釣り", "映画"]}`  登録内容のクリア: `{"hobby": ""}`
        - **フォーム送信**: `hobby[]=釣り&hobby[]=映画`  登録内容のクリア: `hobby=`


        ### フィールドタイプごとのバリデーション
        - **テキスト / テキストエリア**: 制限文字数あり（フィールド定義による）
        - **日付**: フィールド定義で指定されたフォーマットに従う（Y-m-d/例: `YYYY-MM-DD`、j-f-Y/例: `dd-February-YYYY`）
        - **数値**: 整数値（フィールド定義による）
        - **プルダウン**: 定義されたオプション値のみ有効

        ### 編集不可フィールドについて
        入力フィールド設定画面で「編集不可：On」に設定されたフィールドも、APIからは更新可能です。

        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 更新
        - スコープ: `user.update`
      operationId: updateUser
      parameters:
        - name: login
          in: path
          description: 更新対象ユーザーのログインID（必須）。このパスパラメータで対象を指定します。
          required: true
          schema:
            type: string
            minLength: 5
            maxLength: 50
          example: 'test-user'
      requestBody:
        description: |
          部分更新用オブジェクト。ボディに含めたフィールドのみが更新されます。
          - パスパラメータ `{login}` で更新対象を指定します。
          - body.login を指定した場合は「更新後のログインID」として適用します（省略すると変更なし）。
          - カスタムフィールドは各フィールドキーで指定できます。
        content:
          application/json:
            schema:
              type: object
              properties:
                login:
                  minLength: 5
                  maxLength: 50
                  type: string
                  description: 更新後のログインID　※loginパラメータを渡した場合、渡されたloginパラメータで上書きします。
                email:
                  maxLength: 255
                  type: string
                  description: メールアドレス　※必須かどうかは入力フィールド設定に依存します。
                  format: email
                name:
                  type: string
                  description: 氏名　※必須かどうかは入力フィールド設定に依存します。
                nickname:
                  type: string
                  description: ディスプレイネーム　※必須かどうかは入力フィールド設定に依存します。
                password:
                  type: string
                  description: パスワード　※パスワードが渡されない場合は、更新しません。
                department:
                  type: string
                  description: 部署　※必須かどうかは入力フィールド設定に依存します。
                position:
                  type: string
                  description: 役職　※必須かどうかは入力フィールド設定に依存します。
                lms_country:
                  type: string
                  description: |
                    居住国・地域　※必須かどうかは入力フィールド設定に依存します。
                    国名を英語表記で指定します。
                    指定可能な値: Japan, Afghanistan, Albania, Algeria, Andorra, Angola, AntiguaAndBarbuda, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, BosniaAndHerzegovina, Botswana, Brazil, BruneiDarussalam, Bulgaria, BurkinaFaso, Burundi, CaboVerde, Cambodia, Cameroon, Canada, CentralAfricanRepublic, Chad, Chile, China, Colombia, Comoros, Congo, CostaRica, CoteD'Ivoire, Croatia, Cuba, Cyprus, CzechRepublic, DemocraticPeople'sRepublicOfKorea, DemocraticRepublicOfTheCongo, Denmark, Djibouti, Dominica, DominicanRepublic, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, Germany, Ghana, Greece, Grenada, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Jordan, Kazakhstan, Kenya, Kiribati, Kuwait, Kyrgyzstan, LaoPeople'sDemocraticRepublic, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Mauritania, Mauritius, Mexico, Micronesia, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewZealand, Nicaragua, Niger, Nigeria, NorthMacedonia, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, RepublicOfKorea, RepublicOfMoldova, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, SaintLucia, SaintVincentAndTheGrenadines, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthSudan, Spain, SriLanka, Sudan, Suriname, Sweden, Switzerland, SyrianArabRepublic, Tajikistan, Thailand, Timor-Leste, Togo, Tonga, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdomOfGreatBritainAndNorthernIreland, UnitedRepublicOfTanzania, UnitedStatesOfAmerica, Uruguay, Uzbekistan, Vanuatu, Venezuela, VietNam, Yemen, Zambia, Zimbabwe
                lms_language:
                  type: string
                  description: |
                    言語　※必須かどうかは入力フィールド設定に依存します。
                    ロケールコードで指定します。
                    指定可能な値: ja_JP（日本語）, en_US（英語）, vi_VN（ベトナム語）, id_ID（インドネシア語）, de_DE（ドイツ語）, es_ES（スペイン語）, fr_FR（フランス語）, my_MM（ミャンマー語）, pt_PT（ポルトガル語）, tl_PH（タガログ語）, ru_RU（ロシア語）, ur_PK（ウルドゥー語）, hi_IN（ヒンディー語）, th_TH（タイ語）, km_KH（クメール語）, zh_CN（中国語簡体字）, zh_TW（中国語繁体字）, ko_KR（韓国語）
                lms_timezone:
                  type: string
                  description: |
                    タイムゾーン　※必須かどうかは入力フィールド設定に依存します。
                    IANAタイムゾーン識別子で指定します。
                    指定可能な値: Asia/Tokyo, Europe/Budapest, Africa/Lagos, Europe/Amsterdam, Europe/Paris, Africa/Windhoek, Africa/Harare, Europe/Helsinki, Europe/Sofia, Africa/Cairo, Europe/Bucharest, Asia/Jerusalem, Asia/Amman, Asia/Beirut, Asia/Damascus, Europe/Istanbul, Asia/Kuwait, Europe/Minsk, Africa/Nairobi, Asia/Baghdad, Europe/Moscow, Asia/Tehran, Asia/Yerevan, Asia/Baku, Asia/Tbilisi, Asia/Kabul, Asia/Ashgabat, Asia/Karachi, Asia/Kolkata, Asia/Colombo, Asia/Kathmandu, Asia/Dhaka, Asia/Yangon, Asia/Bangkok, Asia/Singapore, Asia/Taipei, Asia/Hong_Kong, Asia/Shanghai, Asia/Macau, Asia/Ulaanbaatar, Asia/Seoul, Australia/Melbourne, Pacific/Guam, Pacific/Noumea, Pacific/Auckland, Pacific/Apia, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Santiago, America/Cayenne, America/Montevideo, America/Manaus, America/Asuncion, America/Bogota, America/Mexico_City, America/Phoenix, America/Vancouver, Pacific/Honolulu, UTC
                lms_date_format:
                  type: string
                  description: 日付形式
                lms_time_format:
                  type: string
                  description: 時刻形式
                active_status:
                  type: integer
                  description: 'ステータスとラベル

                    6:一時停止

                    7:有効

                    8:無効'
                send_mail:
                  maximum: 1
                  minimum: 0
                  default: 0
                  type: integer
                  description: '招待メール送信の可否

                    0:送信しない

                    1:送信する'
                receive_notice_mail:
                  maximum: 1
                  minimum: 0
                  type: integer
                  description: 'お知らせ公開通知メールを受け取る

                    0:受け取らない

                    1:受け取る'
              additionalProperties:
                oneOf:
                  - type: string
                    description: 'カスタムフィールド：テキスト・日付・数値・セレクト型フィールドの値'
                  - type: array
                    items:
                      type: string
                    description: 'カスタムフィールド：チェックボックス型フィールドの値（複数選択。全クリアの場合は空文字）'
              example:
                name: 'テスト太郎（更新）'
                department: '営業企画部'
                custom_division: '大阪営業所'
                hobby:
                  - '読書'
                  - 'ゲーム'
          application/x-www-form-urlencoded:
            schema:
              type: object
              description: |
                部分更新（フォーム送信）です。パスパラメータ {login} で更新対象を指定します。
                ボディに含めたフィールドのみが更新されます。
              properties:
                login:
                  minLength: 5
                  maxLength: 50
                  type: string
                  description: ログインID　※loginパラメータを渡した場合、渡されたloginパラメータで上書きします（省略時は変更なし）。
                email:
                  maxLength: 255
                  type: string
                  description: メールアドレス　※必須かどうかは入力フィールド設定に依存します。
                  format: email
                name:
                  type: string
                  description: 氏名　※必須かどうかは入力フィールド設定に依存します。
                nickname:
                  type: string
                  description: ディスプレイネーム　※必須かどうかは入力フィールド設定に依存します。
                password:
                  type: string
                  description: パスワード　※パスワードが渡されない場合は、更新しません。
                department:
                  type: string
                  description: 部署　※必須かどうかは入力フィールド設定に依存します。
                position:
                  type: string
                  description: 役職　※必須かどうかは入力フィールド設定に依存します。
                lms_country:
                  type: string
                  description: |
                    居住国・地域　※必須かどうかは入力フィールド設定に依存します。
                    国名を英語表記で指定します。
                    指定可能な値: Japan, Afghanistan, Albania, Algeria, Andorra, Angola, AntiguaAndBarbuda, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, BosniaAndHerzegovina, Botswana, Brazil, BruneiDarussalam, Bulgaria, BurkinaFaso, Burundi, CaboVerde, Cambodia, Cameroon, Canada, CentralAfricanRepublic, Chad, Chile, China, Colombia, Comoros, Congo, CostaRica, CoteD'Ivoire, Croatia, Cuba, Cyprus, CzechRepublic, DemocraticPeople'sRepublicOfKorea, DemocraticRepublicOfTheCongo, Denmark, Djibouti, Dominica, DominicanRepublic, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, Germany, Ghana, Greece, Grenada, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Jordan, Kazakhstan, Kenya, Kiribati, Kuwait, Kyrgyzstan, LaoPeople'sDemocraticRepublic, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Mauritania, Mauritius, Mexico, Micronesia, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewZealand, Nicaragua, Niger, Nigeria, NorthMacedonia, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, RepublicOfKorea, RepublicOfMoldova, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, SaintLucia, SaintVincentAndTheGrenadines, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthSudan, Spain, SriLanka, Sudan, Suriname, Sweden, Switzerland, SyrianArabRepublic, Tajikistan, Thailand, Timor-Leste, Togo, Tonga, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdomOfGreatBritainAndNorthernIreland, UnitedRepublicOfTanzania, UnitedStatesOfAmerica, Uruguay, Uzbekistan, Vanuatu, Venezuela, VietNam, Yemen, Zambia, Zimbabwe
                lms_language:
                  type: string
                  description: |
                    言語　※必須かどうかは入力フィールド設定に依存します。
                    ロケールコードで指定します。
                    指定可能な値: ja_JP（日本語）, en_US（英語）, vi_VN（ベトナム語）, id_ID（インドネシア語）, de_DE（ドイツ語）, es_ES（スペイン語）, fr_FR（フランス語）, my_MM（ミャンマー語）, pt_PT（ポルトガル語）, tl_PH（タガログ語）, ru_RU（ロシア語）, ur_PK（ウルドゥー語）, hi_IN（ヒンディー語）, th_TH（タイ語）, km_KH（クメール語）, zh_CN（中国語簡体字）, zh_TW（中国語繁体字）, ko_KR（韓国語）
                lms_timezone:
                  type: string
                  description: |
                    タイムゾーン　※必須かどうかは入力フィールド設定に依存します。
                    IANAタイムゾーン識別子で指定します。
                    指定可能な値: Asia/Tokyo, Europe/Budapest, Africa/Lagos, Europe/Amsterdam, Europe/Paris, Africa/Windhoek, Africa/Harare, Europe/Helsinki, Europe/Sofia, Africa/Cairo, Europe/Bucharest, Asia/Jerusalem, Asia/Amman, Asia/Beirut, Asia/Damascus, Europe/Istanbul, Asia/Kuwait, Europe/Minsk, Africa/Nairobi, Asia/Baghdad, Europe/Moscow, Asia/Tehran, Asia/Yerevan, Asia/Baku, Asia/Tbilisi, Asia/Kabul, Asia/Ashgabat, Asia/Karachi, Asia/Kolkata, Asia/Colombo, Asia/Kathmandu, Asia/Dhaka, Asia/Yangon, Asia/Bangkok, Asia/Singapore, Asia/Taipei, Asia/Hong_Kong, Asia/Shanghai, Asia/Macau, Asia/Ulaanbaatar, Asia/Seoul, Australia/Melbourne, Pacific/Guam, Pacific/Noumea, Pacific/Auckland, Pacific/Apia, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Santiago, America/Cayenne, America/Montevideo, America/Manaus, America/Asuncion, America/Bogota, America/Mexico_City, America/Phoenix, America/Vancouver, Pacific/Honolulu, UTC
                lms_date_format:
                  type: string
                  description: 日付形式
                lms_time_format:
                  type: string
                  description: 時刻形式
                active_status:
                  type: integer
                  description: 'ステータスとラベル

                    6:一時停止

                    7:有効

                    8:無効'
                send_mail:
                  maximum: 1
                  minimum: 0
                  default: 0
                  type: integer
                  description: '招待メール送信の可否

                    0:送信しない

                    1:送信する'
                receive_notice_mail:
                  maximum: 1
                  minimum: 0
                  type: integer
                  description: 'お知らせ公開通知メールを受け取る

                    0:受け取らない

                    1:受け取る'
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreateResponse'
              example:
                result:
                  user_id: 32
                  login: test-user
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                ログインID未指定:
                  summary: ログインID未指定
                  value:
                    error: wrong_parameter
                    error_description: Login ID could not be empty.
                ユーザーが存在しない:
                  summary: ユーザーが存在しない
                  value:
                    error: not_exists
                    error_description: User does not exist.
                更新内容が存在しない:
                  summary: 更新内容が存在しない
                  value:
                    error: not_exists
                    error_description: Update field could not be empty.
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_user'
              example:
                email:
                  - メールアドレスの形式は正しくありません。
                  - 50文字以内で入力してください。
                  - メールアドレスのドメインが正しくありません。
                login:
                  - ログインIDを入力してください。
                  - ログインIDに使用不可能な文字が入力されています。
                password:
                  - パスワードを入力してください。
                  - 過去利用したパスワードは使用できません。
                active_status:
                  - ステータスを入力してください。
                  - 入力内容が正しくありません。
                  - 統合元ユーザーのステータスを無効以外にする前にユーザー統合を解除する必要があります。
                  - 「管理グループ」のアカウント登録数が上限を越えます。
                receive_notice_mail:
                  - 入力内容が正しくありません。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/user/delete/{login}:
    post:
      security:
        - OAuth2: [user.delete]
      tags:
        - user
      summary: ユーザー削除
      description: |
        特定のユーザーの詳細情報を削除します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 削除
        - スコープ: `user.delete`
      operationId: deleteUser
      parameters:
        - name: login
          in: path
          description: ログインID
          required: true
          schema:
            type: string
          example: 'test-user'
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDeleteResponse'
              example:
                id: 62
                login: test-user50
                message: ACCEPTED
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                ログインID未指定:
                  summary: ログインID未指定
                  value:
                    error: wrong_parameter
                    error_description: Login ID could not be empty.
                ユーザーが存在しない:
                  summary: ユーザーが存在しない
                  value:
                    error: not_exists
                    error_description: User does not exist.
                有効な商品が存在した:
                  summary: 有効な商品が存在した　※EC機能を利用する場合のみ出力
                  value:
                    error: deny
                    error_description: Active payment exist! user_id:{id}
                購読商品が存在した:
                  summary: 購読商品が存在した　※EC機能を利用する場合のみ出力
                  value:
                    error: deny
                    error_description: Active subscription exist! user_id:{id}
      deprecated: false
  /v1/user/group/{login}:
    post:
      security:
        - OAuth2: [user.group]
      tags:
        - user
      summary: ユーザーへのグループ割当
      description: |
        特定のユーザーを指定したグループに所属させます。
        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 所属グループ管理
        - スコープ: `user.group`
      operationId: assignGroupUser
      parameters:
        - name: login
          in: path
          description: ログインID
          required: true
          schema:
            type: string
          example: 'test-user'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                assign:
                  type: array
                  items:
                    type: integer
                  description: 割当グループ内部ID
                assign_code:
                  type: array
                  items:
                    type: string
                  description: 割当グループコード
                release:
                  type: array
                  items:
                    type: integer
                  description: 解除グループ内部ID
                release_code:
                  type: array
                  items:
                    type: string
                  description: 解除グループコード
            example:
              assign:
                - 3
                - 51
              assign_code:
                - g9
              release:
                - 7
              release_code:
                - g7
                - g51
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                assign:
                  type: array
                  items:
                    type: integer
                  description: 割当グループ内部ID
                assign_code:
                  type: array
                  items:
                    type: string
                  description: 割当グループコード
                release:
                  type: array
                  items:
                    type: integer
                  description: 解除グループ内部ID
                release_code:
                  type: array
                  items:
                    type: string
                  description: 解除グループコード
            example:
              assign:
                - 3
                - 51
              assign_code:
                - g9
              release:
                - 7
              release_code:
                - g7
                - g51
        required: false
      responses:
        '200':
          description: '正常レスポンス<br>

            割当変更後の所属グループ一覧を返します。

            商品用ユーザグループの場合、「product_id」が返されます。

            商品用ユーザグループには「user_limit」が含まれません。

            グループのアカウント登録可能数が上限なしの場合、user_limitにはnullが設定されます。'
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: 変更結果
                    properties:
                      user_id:
                        type: integer
                        description: ユーザー内部ID
                      login:
                        type: string
                        description: ログインID
                      groups:
                        type: array
                        description: 所属グループ一覧
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: グループ内部ID
                            name:
                              type: string
                              description: グループ名
                            group_code:
                              type: string
                              description: グループコード
                            user_limit:
                              type: integer
                              description: ユーザー上限数
                            product_id:
                              type: integer
                              description: 商品ID（EC機能利用時のみ）
              example:
                result:
                  user_id: 32
                  login: test-user
                  groups:
                    - id: 3
                      name: 1年生
                      group_code: g3
                      user_limit: null
                    - id: 21
                      name: 1組
                      group_code: g55
                      user_limit: 5
                    - id: 51
                      name: 研修3
                      group_code: g51
                      product_id: 55
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ログインID未指定:
                  summary: ログインID未指定
                  value:
                    error: wrong_parameter
                    error_description: Login ID could not be empty.
                ユーザーが存在しない:
                  summary: ユーザーが存在しない
                  value:
                    error: not_exists
                    error_description: User does not exist.
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_assignGroup422'
              example:
                assign:
                  - 入力内容が正しくありません。
                release:
                  - 入力内容が正しくありません。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/user/permissions:
    post:
      security:
        - OAuth2: [user.update]
      tags:
        - user
      summary: ユーザー権限一括処理
      description: |
        特定のユーザーの管理権限を追加・更新・削除します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 更新
        - スコープ: `user.update`
      operationId: permissionUser
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: array
                  description: 設定内容
                  items:
                    type: object
                    properties:
                      mode:
                        type: string
                        description: 操作モード
                        enum:
                          - get
                          - add
                          - save
                          - delete
                      user:
                        type: object
                        properties:
                          field_name:
                            type: string
                            description: フィールド名
                            enum:
                              - user_id
                              - login
                          field_value:
                            type: string
                            description: フィールド値
                        description: 対象ユーザー
                      permission_admin:
                        type: array
                        description: 管理者権限
                        items:
                          type: string
                          enum:
                            - grant_admin
                            - edit_notification
                            - edit_setting
                            - edit_ec
                      permission_group:
                        type: array
                        description: グループ管理権限
                        items:
                          type: object
                          properties:
                            group:
                              $ref: '#/components/schemas/GroupFieldIdentifier'
                            permission:
                              type: string
                              description: 権限
                              enum:
                                - view
                                - edit
                      permission_sco:
                        type: array
                        description: コンテンツ管理権限
                        items:
                          type: object
                          properties:
                            sco:
                              $ref: '#/components/schemas/ScoFieldIdentifier'
                            permission:
                              type: string
                              enum:
                                - view
                                - edit
                      permission_result:
                        type: array
                        description: 成績管理権限
                        items:
                          type: object
                          properties:
                            group:
                              $ref: '#/components/schemas/GroupFieldIdentifier'
                            sco:
                              $ref: '#/components/schemas/ScoFieldIdentifier'
                            permission:
                              type: string
                              enum:
                                - view
                                - edit
                                - scoring
                                - approve_scoring
                      permission_sco_assign:
                        type: array
                        description: コンテンツ割当権限
                        items:
                          type: object
                          properties:
                            group:
                              $ref: '#/components/schemas/GroupFieldIdentifier'
                            sco:
                              $ref: '#/components/schemas/ScoFieldIdentifier'
                            permission:
                              type: string
                              enum:
                                - edit
                      permission_mailtemplate:
                        type: array
                        description: メールテンプレート編集権限
                        items:
                          type: object
                          properties:
                            group:
                              $ref: '#/components/schemas/GroupFieldIdentifier'
                            permission:
                              type: string
                              enum:
                                - edit
                      permission_message:
                        type: array
                        description: メッセージ管理権限
                        items:
                          type: object
                          properties:
                            group:
                              $ref: '#/components/schemas/GroupFieldIdentifier'
                            permission:
                              type: string
                              enum:
                                - edit
                      permission_notification:
                        type: array
                        description: お知らせ管理権限
                        items:
                          type: object
                          properties:
                            group:
                              $ref: '#/components/schemas/GroupFieldIdentifier'
                            permission:
                              type: string
                              enum:
                                - edit
            example:
              data:
                - mode: save
                  user:
                    field_name: user_id
                    field_value: 1
                  permission_admin:
                    - grant_admin
                    - edit_notification
                    - edit_setting
                    - edit_ec
                  permission_group:
                    - group:
                        field_name: group_id
                        field_value: -1
                      permission: edit
                    - group:
                        field_name: group_code
                        field_value: g1
                      permission: view
                  permission_sco:
                    - sco:
                        field_name: sco_id
                        field_value: -1
                      permission: edit
                    - sco:
                        field_name: sco_code
                        field_value: a3de5c
                      permission: view
                  permission_result:
                    - group:
                        field_name: group_id
                        field_value: -1
                      sco:
                        field_name: sco_id
                        field_value: -1
                      permission: edit
                    - group:
                        field_name: group_code
                        field_value: g1
                      sco:
                        field_name: sco_code
                        field_value: a3de5c
                      permission: view
                  permission_sco_assign:
                    - group:
                        field_name: group_id
                        field_value: -1
                      sco:
                        field_name: sco_code
                        field_value: all
                      permission: edit
                    - group:
                        field_name: group_code
                        field_value: g1
                      sco:
                        field_name: sco_code
                        field_value: a3de5c
                      permission: edit
                  permission_mailtemplate:
                    - group:
                        field_name: group_id
                        field_value: -1
                      permission: edit
                    - group:
                        field_name: group_code
                        field_value: g1
                      permission: edit
                  permission_message:
                    - group:
                        field_name: group_id
                        field_value: -1
                      permission: edit
                    - group:
                        field_name: group_code
                        field_value: g1
                      permission: edit
                  permission_notification:
                    - group:
                        field_name: group_id
                        field_value: -1
                      permission: edit
                    - group:
                        field_name: group_code
                        field_value: g1
                      permission: edit
        required: true
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: array
                    items:
                      type: object
                      properties:
                        user:
                          type: object
                          properties:
                            user_id:
                              type: integer
                              description: ユーザー内部ID
                            login:
                              type: string
                              description: ログインID
                        permission_admin:
                          type: array
                          description: 管理者権限
                          items:
                            type: string
                            enum:
                              - grant_admin
                              - edit_notification
                              - edit_setting
                              - edit_ec
                        permission_group:
                          type: array
                          description: グループ管理権限
                          items:
                            type: object
                            properties:
                              group:
                                allOf:
                                  - $ref: '#/components/schemas/GroupInfo'
                                  - description: 対象グループ
                              permission:
                                type: string
                                description: 権限 ※全ユーザーの場合は閲覧権限指定不可
                                enum:
                                  - view
                                  - edit
                        permission_sco:
                          type: array
                          description: コンテンツ管理権限
                          items:
                            type: object
                            properties:
                              sco:
                                allOf:
                                  - $ref: '#/components/schemas/ScoInfo'
                                  - description: 対象コンテンツ
                              permission:
                                type: string
                                description: 権限 ※全ユーザーの場合は閲覧権限指定不可
                                enum:
                                  - view
                                  - edit
                        permission_result:
                          type: array
                          description: 成績管理権限
                          items:
                            type: object
                            properties:
                              group:
                                allOf:
                                  - $ref: '#/components/schemas/GroupInfo'
                                  - description: 対象グループ
                              sco:
                                allOf:
                                  - $ref: '#/components/schemas/ScoInfo'
                                  - description: 対象コンテンツ
                              permission:
                                type: string
                                description: 権限 ※全ユーザーの場合は閲覧権限指定不可
                                enum:
                                  - view
                                  - edit
                                  - scoring
                                  - approve_scoring
                        permission_sco_assign:
                          type: array
                          description: コンテンツ割当権限
                          items:
                            type: object
                            properties:
                              group:
                                allOf:
                                  - $ref: '#/components/schemas/GroupInfo'
                                  - description: 対象グループ
                              sco:
                                allOf:
                                  - $ref: '#/components/schemas/ScoInfo'
                                  - description: 対象コンテンツ
                              permission:
                                type: string
                                description: 権限 ※全ユーザーの場合は閲覧権限指定不可
                                enum:
                                  - edit
                        permission_mailtemplate:
                          type: array
                          description: メールテンプレート編集権限
                          items:
                            type: object
                            properties:
                              group:
                                allOf:
                                  - $ref: '#/components/schemas/GroupInfo'
                                  - description: 対象グループ
                              permission:
                                type: string
                                description: 権限 ※全ユーザーの場合は閲覧権限指定不可
                                enum:
                                  - edit
                        permission_message:
                          type: array
                          description: メッセージ管理権限
                          items:
                            type: object
                            properties:
                              group:
                                allOf:
                                  - $ref: '#/components/schemas/GroupInfo'
                                  - description: 対象グループ
                              permission:
                                type: string
                                description: 権限
                                enum:
                                  - edit
                        permission_notification:
                          type: array
                          description: お知らせ管理権限
                          items:
                            type: object
                            properties:
                              group:
                                allOf:
                                  - $ref: '#/components/schemas/GroupInfo'
                                  - description: 対象グループ
                              permission:
                                type: string
                                description: 権限
                                enum:
                                  - edit
                        message:
                          type: string
                          description: 処理メッセージ
              example:
                result:
                  - user:
                      user_id: 32
                      login: test-user
                    permission_admin:
                      - grant_admin
                      - edit_notification
                      - edit_setting
                      - edit_ec
                    permission_group:
                      - group:
                          group_id: -1
                          group_code: all
                          name: 全ユーザー
                        permission: edit
                      - group:
                          group_id: 1
                          group_code: g1
                          name: 1年生
                        permission: view
                    permission_sco:
                      - sco:
                          sco_id: '-1'
                          sco_code: all
                          title: 全コンテンツ
                        permission: edit
                      - sco:
                          sco_id: '1'
                          sco_code: a3de5c
                          title: 国語
                        permission: view
                    permission_result:
                      - group:
                          group_id: -1
                          group_code: all
                          name: 全ユーザー
                        sco:
                          sco_id: '-1'
                          sco_code: all
                          title: 全コンテンツ
                        permission: edit
                      - group:
                          group_id: 1
                          group_code: g2
                          name: 2年生
                        sco:
                          sco_id: '1'
                          sco_code: a3de5c
                          title: 国語
                        permission: view
                    permission_sco_assign:
                      - group:
                          group_id: -1
                          group_code: all
                          name: 全ユーザー
                        sco:
                          sco_id: '-1'
                          sco_code: all
                          title: 全コンテンツ
                        permission: edit
                      - group:
                          group_id: 1
                          group_code: g1
                          name: 1年生
                        sco:
                          sco_id: '1'
                          sco_code: a3de5c
                          title: 国語
                        permission: edit
                    permission_mailtemplate:
                      - group:
                          group_id: -1
                          group_code: all
                          name: 全ユーザー
                        permission: edit
                      - group:
                          group_id: 1
                          group_code: g1
                          name: 1年生
                        permission: edit
                    permission_message:
                      - group:
                          group_id: -1
                          group_code: all
                          name: 全ユーザー
                        permission: edit
                      - group:
                          group_id: 1
                          group_code: g1
                          name: 1年生
                        permission: edit
                    permission_notification:
                      - group:
                          group_id: -1
                          group_code: all
                          name: 全ユーザー
                        permission: edit
                      - group:
                          group_id: 1
                          group_code: g1
                          name: 1年生
                        permission: edit
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_userpermission'
              examples:
                empty:
                  summary: dataが空
                  value:
                    error: wrong_parameter
                    error_description: '[data] is empty.'
                制限:
                  summary: 1回に処理可能なデータ量1000人分を超過
                  value:
                    error: wrong_parameter
                    error_description: '[data] length is more than 1000.'
                data内の値不備:
                  summary: data内の値不備
                  value:
                    error: wrong_parameter
                    error_description: '[data] has wrong.'
                    error_report:
                      - 'Index[0]: mode is incorrect.'
                      - 'Index[0]: user not found.'
                      - 'Index[1]: permission_admin is incorrect.'
                      - 'Index[2]: permission_group is incorrect.'
                      - 'Index[2]: permission_group[0].group not found.'
                      - 'Index[2]: permission_group[0].group not allow.'
                      - 'Index[2]: permission_group[0] is duplicated.'
                      - 'Index[2]: permission_group[0].permission is incorrect.'
                      - 'Index[3]: permission_sco is incorrect.'
                      - 'Index[3]: permission_sco[0].sco not found.'
                      - 'Index[3]: permission_sco[0].sco not allow.'
                      - 'Index[3]: permission_sco[0] is duplicated.'
                      - 'Index[3]: permission_sco[0].permission is incorrect.'
                      - 'Index[4]: permission_result is incorrect.'
                      - 'Index[4]: permission_result[0].group not found.'
                      - 'Index[4]: permission_result[0].group not allow.'
                      - 'Index[4]: permission_result[0].sco not found.'
                      - 'Index[4]: permission_result[0] is duplicated.'
                      - 'Index[4]: permission_result[0].permission is incorrect.'
                      - 'Index[5]: permission_sco_assign is incorrect.'
                      - 'Index[5]: permission_sco_assign[0].group not found.'
                      - 'Index[5]: permission_sco_assign[0].group not allow.'
                      - 'Index[5]: permission_sco_assign[0].sco not found.'
                      - 'Index[5]: permission_sco_assign[0].sco not allow.'
                      - 'Index[5]: permission_sco_assign[0] is duplicated.'
                      - 'Index[5]: permission_sco_assign[0].permission is incorrect.'
                      - 'Index[6]: permission_mailtemplate is incorrect.'
                      - 'Index[6]: permission_mailtemplate[0].group not found.'
                      - 'Index[6]: permission_mailtemplate[0] is duplicated.'
                      - 'Index[6]: permission_mailtemplate[0].permission is incorrect.'
                      - 'Index[7]: permission_message is incorrect.'
                      - 'Index[7]: permission_message[0].group not found.'
                      - 'Index[7]: permission_message[0] is duplicated.'
                      - 'Index[7]: permission_message[0].permission is incorrect.'
      deprecated: false
      x-codegen-request-body-name: body
  /v1/user/merge:
    post:
      security:
        - OAuth2: [user.merge]
      tags:
        - user
      summary: ユーザー統合
      description: |
        特定の2ユーザーを統合します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ユーザー ＞ 統合
        - スコープ: `user.merge`
      operationId: mergeUser
      requestBody:
        content:
          application/json:
            schema:
              required:
                - dst_login
                - src_login
              type: object
              properties:
                src_login:
                  type: string
                  description: 統合元のログインID（無効になっている必要があります。）
                dst_login:
                  type: string
                  description: 統合先のログインID（有効になっている必要があります。）
                force:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 統合済みを無視して、強制的に統合を実施します。
                  default: 0
            example:
              src_login: user-1
              dst_login: user-2
              force: 1
          application/x-www-form-urlencoded:
            schema:
              required:
                - dst_login
                - src_login
              type: object
              properties:
                src_login:
                  type: string
                  description: 統合元のログインID（無効になっている必要があります。）
                dst_login:
                  type: string
                  description: 統合先のログインID（有効になっている必要があります。）
                force:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: 統合済みを無視して、強制的に統合を実施します。
                  default: 0
            example:
              src_login: user-1
              dst_login: user-2
              force: 1
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeResponse'
              example:
                result:
                  src_user_id: 2
                  dst_user_id: 7
                  merge_result:
                    - type: result
                      total: 55
                    - type: badge
                      total: 55
                    - type: login
                      total: 55
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: '異常レスポンス<br>

            統合元のアカウントのログインIDを指定してください。<br>

            統合元のアカウントが存在しません。<br>

            統合元のアカウントは無効になっている必要があります。<br>

            統合先のアカウントのログインIDを指定してください。<br>

            統合先のアカウントが存在しません。<br>

            統合先のアカウントは有効になっている必要があります。<br>

            指定アカウントは既に統合されています。※<br>

            0または1を指定してください。<br>

            ※force=1の場合は出力しません。'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeResponse422'
              example:
                src_login:
                  - 統合元のアカウントのログインIDを指定してください。
                  - 統合元のアカウントが存在しません。
                  - 統合元のアカウントは無効になっている必要があります。
                dst_login:
                  - 統合先のアカウントのログインIDを指定してください。
                  - 統合先のアカウントが存在しません。
                  - 統合先のアカウントは有効になっている必要があります。
                  - 指定アカウントは既に統合されています。
                force:
                  - 0または1を指定してください。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/group/list:
    post:
      security:
        - OAuth2: [group.read]
      tags:
        - group
      summary: グループ一覧取得
      description: |
        ユーザー管理画面にて管理されているグループ情報を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: グループ ＞ 読取
        - スコープ: `group.read`
      operationId: searchGroupList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parent_id:
                  type: integer
                  nullable: true
                  description: 親グループ内部ID
                  example: 15
                parent_code:
                  type: string
                  nullable: true
                  description: 親グループコード
                  example: g15
                keyword:
                  type: string
                  nullable: true
                  description: 検索グループキーワード
                  example: サブグループ
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  nullable: true
                  default: 20
                offset:
                  type: integer
                  description: 検索開始行
                  nullable: true
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                parent_id:
                  type: integer
                  nullable: true
                  description: 親グループ内部ID
                  example: 15
                parent_code:
                  type: string
                  nullable: true
                  description: 親グループコード
                  example: g15
                keyword:
                  type: string
                  nullable: true
                  description: 検索グループキーワード
                  example: サブグループ
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  nullable: true
                  default: 20
                offset:
                  type: integer
                  description: 検索開始行
                  nullable: true
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    description: グループ一覧
                    items:
                      type: object
                      properties:
                        group_id:
                          type: integer
                          description: グループ内部ID
                        group_code:
                          type: string
                          description: グループコード
                        parent_id:
                          type: integer
                          description: 親グループ内部ID
                        parent_code:
                          type: string
                          description: 親グループコード
                        name:
                          type: string
                          description: グループ名
                        user_limit:
                          type: integer
                          description: アカウント登録可能数
                  meta:
                    allOf:
                      - $ref: '#/components/schemas/Meta'
                      - description: メタ情報
              example:
                results:
                  - group_id: 15
                    group_code: g15
                    name: 管理サブグループ
                    parent_id: 3
                    parent_code: g3
                    user_limit: 5
                meta:
                  total: 1
                  limit: 20
                  offset: 0
  /v1/group/create:
    post:
      security:
        - OAuth2: [group.create]
      tags:
        - group
      summary: グループ作成
      description: |
        新しいグループを作成します。
        ### 必要権限
        - アクセス権限設定のチェック項目: グループ ＞ 追加
        - スコープ: `group.create`
      operationId: createGroup
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
              type: object
              properties:
                parent_id:
                  type: integer
                  description: 親グループ内部ID（商品用ユーザグループIDは指定不可）
                  example: 9
                parent_code:
                  type: string
                  description: 親グループコード（商品用ユーザグループコードは指定不可）
                  example: g9
                name:
                  type: string
                  description: グループ名（同階層重複不可）
                  example: 3年生
                group_code:
                  type: string
                  description: グループコード
                  example: g15
                user_limit:
                  type: integer
                  description: アカウント登録数
                  example: 5
          application/x-www-form-urlencoded:
            schema:
              required:
                - name
              type: object
              properties:
                parent_id:
                  type: integer
                  description: 親グループ内部ID（商品用ユーザグループIDは指定不可）
                  example: 9
                parent_code:
                  type: string
                  description: 親グループコード（商品用ユーザグループコードは指定不可）
                  example: g9
                name:
                  type: string
                  description: グループ名（同階層重複不可）
                  example: 3年生
                group_code:
                  type: string
                  description: グループコード
                  example: g15
                user_limit:
                  type: integer
                  description: アカウント登録数
                  example: 5
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: 追加グループ
                    properties:
                      group_id:
                        type: integer
                        description: グループ内部ID
                      group_code:
                        type: string
                        description: グループコード
                      parent_id:
                        type: integer
                        description: 親グループ内部ID
                      parent_code:
                        type: string
                        description: 親グループコード
                      name:
                        type: string
                        description: グループ名
                      user_limit:
                        type: integer
                        description: アカウント登録数
              example:
                result:
                  group_id: 15
                  group_code: g15
                  parent_id: 9
                  parent_code: g9
                  name: 3年生
                  user_limit: 5
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupValidationErrors'
              examples:
                値指定エラー:
                  summary: 値指定エラー
                  value:
                    parent_id:
                      - Parent Group does not exists.
                    parent_code:
                      - Parent Group does not exists.
                    name:
                      - Group name must be 30 characters or less.
                    group_code:
                      - Group Code contains illegal characters.
                    user_limit:
                      - 子グループのアカウント登録可能数の合計値より大きい数値を設定してください。
                SCIMグループ指定エラー:
                  summary: SCIMグループ指定エラー
                  value:
                    parent_id:
                      - SCIMグループを親グループにできません。
                    parent_code:
                      - SCIMグループを親グループにできません。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/group/update:
    post:
      security:
        - OAuth2: [group.update]
      tags:
        - group
      summary: グループ更新（group_id なし）
      description: |
        特定のグループ情報を更新します。
        このエンドポイントは path に `group_id` を含みません。
        `group_id` を指定できる場合は /v1/group/update/{group_id} の利用を推奨します。
        ### 必要権限
        - アクセス権限設定のチェック項目: グループ ＞ 更新
        - スコープ: `group.update`
      operationId: updateGroup
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGroupRequest1'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateGroupRequest1'
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateGroupResponse'
              example:
                result:
                  group_id: 15
                  group_code: g15
                  parent_id: 9
                  parent_code: g9
                  name: 3年生
                  user_limit: 5
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                グループIDまたはグループコード未指定:
                  summary: グループIDまたはグループコード未指定
                  value:
                    error: wrong_parameter
                    error_description: Group ID or Group Code could not be empty.
                グループが存在しない:
                  summary: グループが存在しない
                  value:
                    error: not_exists
                    error_description: Group does not exists.
                商品グループを指定:
                  summary: 商品グループを指定
                  value:
                    error: wrong_parameter
                    error_description: Product Group not allowed update.
                SCIMグループを指定:
                  summary: SCIMグループを指定
                  value:
                    error: wrong_parameter
                    error_description: SCIMグループは編集できません。
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupValidationErrors'
              example:
                name:
                  - Group Name could not be empty.
                  - Group Name must be 30 characters or less.
                  - Group Name duplicated.
                group_code:
                  - Group Code must be 30 characters or less.
                  - Group Code duplicated.
                  - Group Code contains illegal characters.
                  - Group Code is reserved.
                user_limit:
                  - アカウント登録可能数を0〜10の整数値で入力してください。
                  - 子グループのアカウント登録可能数の合計値より大きい数値を設定してください。
                  - すでに対象グループに登録されているアカウント数より大きい数値を設定してください。
      deprecated: false
      x-codegen-request-body-name: body

  /v1/group/update/{group_id}:
    post:
      security:
        - OAuth2: [group.update]
      tags:
        - group
      summary: グループ更新（group_id あり）
      description: |
        特定のグループ情報を更新します。
        `group_id` が 0 以外で指定されている場合は `group_id` を優先し、`group_id` が 0 の場合のみ `group_code` を使用します。
        ### 必要権限
        - アクセス権限設定のチェック項目: グループ ＞ 更新
        - スコープ: `group.update`
      operationId: updateGroupById
      parameters:
        - name: group_id
          in: path
          description: グループ内部ID
          required: true
          schema:
            type: integer
          example: 15
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGroupRequest2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateGroupRequest2'
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateGroupResponse'
              example:
                result:
                  group_id: 15
                  group_code: g15
                  parent_id: 9
                  parent_code: g9
                  name: 3年生
                  user_limit: 5
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                グループIDまたはグループコード未指定:
                  summary: グループIDまたはグループコード未指定
                  value:
                    error: wrong_parameter
                    error_description: Group ID or Group Code could not be empty.
                グループが存在しない:
                  summary: グループが存在しない
                  value:
                    error: not_exists
                    error_description: Group does not exists.
                商品グループを指定:
                  summary: 商品グループを指定
                  value:
                    error: wrong_parameter
                    error_description: Product Group not allowed update.
                SCIMグループを指定:
                  summary: SCIMグループを指定
                  value:
                    error: wrong_parameter
                    error_description: SCIMグループは編集できません。
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupValidationErrors'
              example:
                name:
                  - Group Name could not be empty.
                  - Group Name must be 30 characters or less.
                  - Group Name duplicated.
                group_code:
                  - Group Code must be 30 characters or less.
                  - Group Code duplicated.
                  - Group Code contains illegal characters.
                  - Group Code is reserved.
                user_limit:
                  - アカウント登録可能数を0〜10の整数値で入力してください。
                  - 子グループのアカウント登録可能数の合計値より大きい数値を設定してください。
                  - すでに対象グループに登録されているアカウント数より大きい数値を設定してください。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/group/delete/{group_id}:
    post:
      security:
        - OAuth2: [group.delete]
      tags:
        - group
      summary: グループ削除
      description: |
        特定のグループを削除します。
        パスパラメータ {group_id} で削除対象を指定します。
        {group_id} が 0 の場合のみ、リクエストボディの group_code を使用して対象グループを指定します。
        ### 必要権限
        - アクセス権限設定のチェック項目: グループ ＞ 削除
        - スコープ: `group.delete`
      operationId: deleteGroup
      parameters:
        - name: group_id
          in: path
          description: 削除対象グループのID（0以外の場合は優先的に使用）
          required: true
          schema:
            type: integer
          example: 123
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: グループ削除用オブジェクト（{group_id} が 0 の場合に group_code を指定）
              properties:
                group_code:
                  type: string
                  pattern: '^[a-zA-Z0-9]+$'
                  description: 削除対象グループのコード（{group_id} が 0 の場合に指定。省略可能）
                  example: 'g123'
          application/x-www-form-urlencoded:
            schema:
              type: object
              description: グループ削除用オブジェクト（フォーム送信）
              properties:
                group_code:
                  type: string
                  pattern: '^[a-zA-Z0-9]+$'
                  description: 削除対象グループのコード（{group_id} が 0 の場合に指定。省略可能）
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupDeleteResponse'
              example:
                id: 123
                code: g123
                message: ACCEPTED
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                グループIDまたはグループコード未指定:
                  summary: グループIDまたはグループコード未指定
                  value:
                    error: wrong_parameter
                    error_description: Group ID or Group Code could not be empty.
                グループが存在しない:
                  summary: グループが存在しない
                  value:
                    error: not_exists
                    error_description: Group does not exist.
                商品グループを指定:
                  summary: 商品グループを指定
                  value:
                    error: wrong_parameter
                    error_description: Product Group not allowed delete.
                SCIMグループを指定:
                  summary: SCIMグループを指定
                  value:
                    error: wrong_parameter
                    error_description: SCIMグループは削除できません。
      deprecated: false
  /v1/group/contents/{group_id}:
    post:
      security:
        - OAuth2: [group.contents]
      tags:
        - group
      summary: グループへのコンテンツ割当
      description: |
        特定のグループにコンテンツを割り当てます。
        ### 必要権限
        - アクセス権限設定のチェック項目: グループ ＞ コンテンツ割当
        - スコープ: `group.contents`
      operationId: assignContentsToGroup
      parameters:
        - name: group_id
          in: path
          description: グループ内部ID
          required: true
          schema:
            type: integer
          example: 9
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                assign:
                  type: string
                  description: 割当するコンテンツ内部ID
                  example: 1,2,3
                assign_code:
                  type: string
                  description: 割当するコンテンツコード
                  example: aaa,bbb,ccc
                release:
                  type: string
                  description: 割当解除するコンテンツ内部ID
                  example: 4,5,6
                release_code:
                  type: string
                  description: 割当解除するコンテンツコード
                  example: eee,fff,ggg
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                assign:
                  type: string
                  description: 割当するコンテンツ内部ID
                  example: 1,2,3
                assign_code:
                  type: string
                  description: 割当するコンテンツコード
                  example: aaa,bbb,ccc
                release:
                  type: string
                  description: 割当解除するコンテンツ内部ID
                  example: 4,5,6
                release_code:
                  type: string
                  description: 割当解除するコンテンツコード
                  example: eee,fff,ggg
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGroupContentsResponse'
              example:
                result:
                  group_id: 9
                  group_code: g9
                  name: 1年生
                  scos:
                    - parent_id: 1674
                      sco_id: '1709'
                      sco_code: sample
                      sco_type: folder
                      generator_type: null
                      title: 1年生
                    - parent_id: 1684
                      sco_id: '1773'
                      sco_code: b23d
                      sco_type: contents
                      generator_type: ASSESSMENT
                      title: 診断テスト
                    - parent_id: 1674
                      sco_id: '1764'
                      sco_code: a318
                      sco_type: folder
                      generator_type: null
                      title: サンプルコース
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                グループIDまたはグループコード未指定:
                  summary: グループIDまたはグループコード未指定
                  value:
                    error: wrong_parameter
                    error_description: Group ID or Group Code could not be empty.
                グループが存在しない:
                  summary: グループが存在しない
                  value:
                    error: not_exists
                    error_description: Group does not exist.
                商品グループを指定:
                  summary: 商品グループを指定
                  value:
                    error: wrong_parameter
                    error_description: Product Group not allowed delete.
                SCIMグループを指定:
                  summary: SCIMグループを指定
                  value:
                    error: wrong_parameter
                    error_description: SCIMグループは削除できません。
        '422':
          description: 設定内容に不備あり
          content:
            application/json:
              schema:
                type: object
                properties:
                  assign:
                    type: array
                    description: 割当入力不備
                    items:
                      type: string
                  release:
                    type: array
                    description: 割り当て解除不備
                    items:
                      type: string
              example:
                assign:
                  - 入力内容が正しくありません。
                release:
                  - 入力内容が正しくありません。
      deprecated: false
  /v1/access-list:
    post:
      security:
        - OAuth2: [accesslist.read]
      tags:
        - access-list
      summary: アクセスリスト一覧取得
      description: |
        IP制限管理内のアクセスリストを取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: アクセスリスト ＞ 読取
        - スコープ: `accesslist.read`
      operationId: searchAccessList
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/ListSearchParameters'
                - type: object
                  properties:
                    keyword:
                      description: 検索文字　検索対象：名称、識別コード
                      nullable: true
                    limit:
                      description: '1回の検索で返される行数を指定

                        limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                      nullable: true
                      default: 20
                    offset:
                      description: 検索開始行
                      nullable: true
          application/x-www-form-urlencoded:
            schema:
              allOf:
                - $ref: '#/components/schemas/ListSearchParameters'
                - type: object
                  properties:
                    keyword:
                      description: 検索文字　検索対象：名称、識別コード
                      nullable: true
                    limit:
                      description: '1回の検索で返される行数を指定

                        limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                      nullable: true
                      default: 20
                    offset:
                      description: 検索開始行
                      nullable: true
        required: false
      responses:
        '200':
          description: 成功時のレスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessListResponse'
              example:
                results:
                  - id: 1
                    name: 本社
                    code: 1
                    ip_list:
                      - 192.168.0.1
                      - 192.168.0.2
                      - 192.168.1.0/24
                    inuse: false
                  - id: 2
                    name: 支社
                    code: 2
                    ip_list:
                      - 192.168.0.1
                      - 192.168.0.2
                      - 192.168.1.0/24
                    inuse: true
                meta:
                  total: 2
                  limit: 20
                  offset: 0
        '400':
          description: 異常時のレスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: 異常時のレスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  limit:
                    type: array
                    items:
                      type: string
                  offset:
                    type: array
                    items:
                      type: string
              example:
                limit:
                  - '[limit] must be a number greater than 0.'
                offset:
                  - '[offset] must be a number greater than 0.'
  /v1/access-list/create:
    post:
      security:
        - OAuth2: [accesslist.create]
      tags:
        - access-list
      summary: アクセスリスト作成
      description: |
        IP制限管理内のアクセスリストを作成します。
        ### 必要権限
        - アクセス権限設定のチェック項目: アクセスリスト ＞ 追加
        - スコープ: `accesslist.create`
      operationId: addAccessList
      requestBody:
        content:
          application/json:
            schema:
              required:
                - name
                - ip_list
              type: object
              properties:
                name:
                  type: string
                  description: リスト名
                  example: 本社
                code:
                  type: string
                  description: アクセスリストコード（空文字、または設定がない場合は自動的にランダム文字列付与する）
                  example: 4e6a2e838b64f547825cd1d6cda65ba3
                ip_list:
                  type: string
                  description: IPアドレス（最大100個）
                  example: 192.168.0.1,192.168.0.2,192.168.1.0/24
          application/x-www-form-urlencoded:
            schema:
              required:
                - name
                - ip_list
              type: object
              properties:
                name:
                  type: string
                  description: リスト名
                  example: 本社
                code:
                  type: string
                  description: アクセスリストコード（空文字、または設定がない場合は自動的にランダム文字列付与する）
                  example: 4e6a2e838b64f547825cd1d6cda65ba3
                ip_list:
                  type: string
                  description: IPアドレス（最大100個）
                  example: 192.168.0.1,192.168.0.2,192.168.1.0/24
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: 追加結果
                    properties:
                      id:
                        type: integer
                        description: アクセスリスト内部ID
                      name:
                        type: string
                        description: アクセスリスト名
                      code:
                        type: string
                        description: アクセスリストコード
                      ip_list:
                        type: array
                        description: IPリスト
                        items:
                          type: string
                      inuse:
                        type: boolean
              example:
                result:
                  id: 1
                  name: 本社
                  code: 1
                  ip_list:
                    - 192.168.0.1
                    - 192.168.0.2
                    - 192.168.1.0/24
                  inuse: false
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: '異常レスポンス<br>

            ※必須入力とその他エラーは同時に出力しません'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPValidationErrors'
              example:
                name:
                  - アクセスリスト名を入力してください。
                  - 30文字以内で入力してください
                  - アクセスリスト名が重複しています。
                code:
                  - 255文字以内で入力してください
                  - 半角の英数字と「-」「_」「.」以外の文字が含まれています。
                  - アクセスリストコードが重複しています。
                ip_list:
                  - アクセス可能なIPアドレスを入力してください。
                  - アクセス可能なIPアドレスが正しくありません。
                  - アクセス可能なIPアドレスが重複しています。
                  - アクセス可能なIPアドレスは100個まで設定可能です。
      deprecated: false
      x-codegen-request-body-name: body
  /v1/access-list/update/{id}:
    post:
      security:
        - OAuth2: [accesslist.update]
      tags:
        - access-list
      summary: アクセスリスト更新
      description: |
        特定のアクセスリスト情報を更新します。
        ### 必要権限
        - アクセス権限設定のチェック項目: アクセスリスト ＞ 更新
        - スコープ: `accesslist.update`
      operationId: updateAccessList
      parameters:
        - name: id
          in: path
          required: true
          description: アクセスリスト内部ID
          schema:
            type: integer
          example: 15
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: アクセスリストコード
                  example: code_001
                name:
                  type: string
                  description: アクセスリスト名
                  example: 本社
                ip_list:
                  type: string
                  description: IPアドレス
                  example: 192.168.0.1,192.168.0.2,192.168.1.0/24
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: アクセスリストコード
                  example: code_001
                name:
                  type: string
                  description: アクセスリスト名
                  example: 本社
                ip_list:
                  type: string
                  description: IPアドレス
                  example: 192.168.0.1,192.168.0.2,192.168.1.0/24
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: 更新結果
                    properties:
                      id:
                        type: integer
                        description: アクセスリスト内部ID
                      name:
                        type: string
                        description: アクセスリスト名
                      code:
                        type: string
                        description: アクセスリストコード
                      ip_list:
                        type: array
                        description: IPアドレス一覧
                        items:
                          type: string
                      inuse:
                        type: boolean
                        description: ログイン制限や教材閲覧制限に使われているか
              example:
                result:
                  id: 1
                  name: 本社
                  code: 1
                  ip_list:
                    - 192.168.0.1
                    - 192.168.0.2
                    - 192.168.1.0/24
                  inuse: false
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                アクセスリストが存在しない:
                  summary: アクセスリストが存在しない
                  value:
                    error: not_exists
                    error_description: Access list does not exists.
        '422':
          description: '異常レスポンス<br>

            ※必須入力とその他エラーは同時に出力しません'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPValidationErrors'
              example:
                name:
                  - アクセスリスト名を入力してください。
                  - 30文字以内で入力してください
                  - アクセスリスト名が重複しています。
                code:
                  - アクセスリストコードを入力してください。
                  - 255文字以内で入力してください
                  - 半角の英数字と「-」「_」「.」以外の文字が含まれています。
                  - アクセスリストコードが重複しています。
                ip_list:
                  - アクセス可能なIPアドレスを入力してください。
                  - アクセス可能なIPアドレスが正しくありません。
                  - アクセス可能なIPアドレスが重複しています。
                  - アクセス可能なIPアドレスは100個まで設定可能です。
  /v1/access-list/delete/{id}:
    post:
      security:
        - OAuth2: [accesslist.delete]
      tags:
        - access-list
      summary: アクセスリスト削除
      description: |
        特定のアクセスリストを削除します。
        ### 必要権限
        - アクセス権限設定のチェック項目: アクセスリスト ＞ 削除
        - スコープ: `accesslist.delete`
      operationId: deleteAccessList
      parameters:
        - name: id
          in: path
          required: true
          description: アクセスリスト内部ID
          schema:
            type: integer
          example: 123
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: アクセスリストコード　※URL末尾のidが指定ない時に必須
                  example: code_001
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: アクセスリストコード　※URL末尾のidが指定ない時に必須
                  example: code_001
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IPDeleteResponse'
              example:
                id: 1
                code: 123
                message: ACCEPTED
        '400':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                アクセスリストが存在しない:
                  summary: アクセスリストが存在しない
                  value:
                    error: not_exists
                    error_description: Access list does not exist.
                利用中のリストを指定:
                  summary: 利用中のリストを指定
                  value:
                    error: wrong_parameter
                    error_description: Access list not allowed delete.
  /v1/access-list/permissions:
    post:
      security:
        - OAuth2: [accesspermit.read]
      tags:
        - access-list
      summary: ログイン・コンテンツ閲覧制限一覧取得
      description: |
        IP制限管理内のログイン・教材閲覧制限一覧を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ログイン・教材閲覧制限 ＞ 読取
        - スコープ: `accesspermit.read`
      operationId: searchAccessInUseList
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/ListSearchParameters'
                - type: object
                  properties:
                    keyword:
                      description: 検索文字　検索対象：名称、識別コード
                      nullable: true
                    limit:
                      description: '1回の検索で返される行数を指定

                        limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                      nullable: true
                      default: 20
                    offset:
                      description: 検索開始行
                      nullable: true
          application/x-www-form-urlencoded:
            schema:
              allOf:
                - $ref: '#/components/schemas/ListSearchParameters'
                - type: object
                  properties:
                    keyword:
                      description: 検索文字　検索対象：名称、識別コード
                      nullable: true
                    limit:
                      description: '1回の検索で返される行数を指定

                        limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                      nullable: true
                      default: 20
                    offset:
                      description: 検索開始行
                      nullable: true
        required: false
      responses:
        '200':
          description: 成功時のレスポンス
          content:
            application/json:
              schema:
                type: object
                required:
                  - results
                  - meta
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: アクセス許可内部ID
                        type:
                          type: string
                          description: 制限タイプ
                          enum:
                            - login
                            - sco
                        sco:
                          type: object
                          description: コンテンツ情報（type=scoの場合）
                          properties:
                            id:
                              type: integer
                            type:
                              type: string
                            code:
                              type: string
                            name:
                              type: string
                        group:
                          type: object
                          description: グループ情報
                          properties:
                            id:
                              type: integer
                            code:
                              type: string
                              nullable: true
                            name:
                              type: string
                        access_list:
                          type: object
                          description: アクセスリスト情報
                          properties:
                            id:
                              type: integer
                            code:
                              type: string
                            name:
                              type: string
                  meta:
                    $ref: '#/components/schemas/Meta'
              examples:
                20001:
                  summary: 制限タイプ:login
                  value:
                    results:
                      - id: 1
                        type: login
                        group:
                          id: 7
                          code: g31
                          name: 管理グループ
                        access_list:
                          id: 1
                          code: 111
                          name: 本社
                      - id: 2
                        type: login
                        group:
                          id: 0
                          code: null
                          name: 全ユーザー
                        access_list:
                          id: 2
                          code: 222
                          name: 支社
                    meta:
                      total: 2
                      limit: 20
                      offset: 0
                20002:
                  summary: 制限タイプ:sco
                  value:
                    results:
                      - id: 1
                        type: sco
                        sco:
                          id: 7
                          type: folder
                          code: 1
                          name: 1年生
                        group:
                          id: 7
                          code: g31
                          name: 管理グループ
                        access_list:
                          id: 1
                          code: 111
                          name: 本社
                      - id: 2
                        type: sco
                        sco:
                          id: 7
                          type: folder
                          code: 1
                          name: 1年生
                        group:
                          id: 0
                          code: null
                          name: 全ユーザー
                        access_list:
                          id: 2
                          code: 222
                          name: 支社
                    meta:
                      total: 2
                      limit: 20
                      offset: 0
        '400':
          description: 異常時のレスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: 異常時のレスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: array
                    items:
                      type: string
                  limit:
                    type: array
                    items:
                      type: string
                  offset:
                    type: array
                    items:
                      type: string
              example:
                type:
                  - '[type] must be [login] or [sco].'
                limit:
                  - '[limit] must be a number greater than 0.'
                offset:
                  - '[offset] must be a number greater than 0.'
  /v1/access-list/permission-create:
    post:
      security:
        - OAuth2: [accesspermit.create]
      tags:
        - access-list
      summary: ログイン・コンテンツ閲覧制限追加
      description: |
        IP制限管理内のログイン・コンテンツ閲覧制限を追加します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ログイン・教材閲覧制限 ＞ 追加
        - スコープ: `accesspermit.create`
      operationId: addAccessInUseList
      requestBody:
        content:
          application/json:
            schema:
              required:
                - type
                - group_code
                - access_list_code
              type: object
              properties:
                type:
                  type: string
                  description: 教材のタイプ
                  enum:
                    - login
                    - sco
                  example: sco
                sco_code:
                  type: string
                  description: 制限対象教材のコード（type=scoの時）
                  example: 4e6a2e838b64f547825cd1d6cda65ba3
                group_code:
                  type: string
                  description: 制限対象グループのコード ※空文字の場合は「全ユーザー」と見なします。
                  example: 4e6g1
                access_list_code:
                  type: string
                  description: 制限に利用するアクセスリストコード
                  example: code_001
          application/x-www-form-urlencoded:
            schema:
              required:
                - type
                - group_code
                - access_list_code
              type: object
              properties:
                type:
                  type: string
                  description: 教材のタイプ
                  enum:
                    - login
                    - sco
                  example: sco
                sco_code:
                  type: string
                  description: 制限対象教材のコード（type=scoの時）
                  example: 4e6a2e838b64f547825cd1d6cda65ba3
                group_code:
                  type: string
                  description: 制限対象グループのコード ※空文字の場合は「全ユーザー」と見なします。
                  example: 4e6g1
                access_list_code:
                  type: string
                  description: 制限に利用するアクセスリストコード
                  example: code_001
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: 追加結果
                    properties:
                      id:
                        type: integer
                        description: 制限内部ID
                      type:
                        type: string
                        description: 制限タイプ
                        enum:
                          - login
                          - sco
                      sco:
                        type: object
                        description: 教材
                        properties:
                          id:
                            type: integer
                            description: 教材内部ID
                          type:
                            type: string
                            description: 教材タイプ
                            enum:
                              - quiz
                              - link
                              - folder
                              - link-folder
                          code:
                            type: string
                            description: 教材コード
                          name:
                            type: string
                            description: 教材名
                      group:
                        allOf:
                          - $ref: '#/components/schemas/IdCodeName'
                          - description: グループ
                            properties:
                              id:
                                description: グループ内部ID
                              code:
                                description: グループコード
                              name:
                                description: グループ名
                      access_list:
                        allOf:
                          - $ref: '#/components/schemas/IdCodeName'
                          - description: アクセスリスト
                            properties:
                              id:
                                description: アクセスリスト内部ID
                              code:
                                description: アクセスリストコード
                              name:
                                description: アクセスリスト名
              examples:
                20001:
                  summary: 制限タイプ:login
                  value:
                    result:
                      id: 1
                      type: login
                      group:
                        id: 7
                        code: g31
                        name: 管理グループ
                      access_list:
                        id: 1
                        code: 111
                        name: 本社
                20002:
                  summary: 制限タイプ:sco
                  value:
                    result:
                      id: 1
                      type: sco
                      sco:
                        id: 7
                        type: folder
                        code: 1
                        name: 1年生
                      group:
                        id: 7
                        code: g31
                        name: 管理グループ
                      access_list:
                        id: 1
                        code: 111
                        name: 本社
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: 設定内容に不備あり　※必須入力とその他エラーは同時に出力しません。sco_codeエラーはtype=scoの時のみ出力します。
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: array
                    description: 制限タイプ不備
                    items:
                      type: string
                  sco_code:
                    type: array
                    description: コンテンツ指定不備
                    items:
                      type: string
                  group_code:
                    type: array
                    description: グループ指定不備
                    items:
                      type: string
                  access_list_code:
                    type: array
                    description: アクセスリスト指定不備
                    items:
                      type: string
              example:
                type:
                  - 制限タイプを入力してください。
                  - 制限タイプが正しくありません。
                sco_code:
                  - コンテンツを選択してください。
                  - コンテンツが見つかりません。
                group_code:
                  - グループが見つかりません。
                  - ご指定のグループは設定できません。
                access_list_code:
                  - アクセスリストを選択してください。
                  - アクセスリストが見つかりません。
                  - 同一のグループ・アクセスリストの組み合わせが登録済みです。
                  - 同一のコンテンツ・グループ・アクセスリストの組み合わせが登録済みです。
  /v1/access-list/permission-update/{id}:
    post:
      security:
        - OAuth2: [accesspermit.update]
      tags:
        - access-list
      summary: ログイン・コンテンツ閲覧制限更新
      description: |
        IP制限管理内のログイン・コンテンツ閲覧制限を更新します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ログイン・教材閲覧制限 ＞ 更新
        - スコープ: `accesspermit.update`
      operationId: updateAccessInUseList
      parameters:
        - name: id
          in: path
          required: true
          description: 制限内部ID
          schema:
            type: integer
          example: 15
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                sco_code:
                  type: string
                  description: コンテンツコード
                  example: 51c76
                group_code:
                  type: string
                  description: グループコード
                  example: g3
                access_list_code:
                  type: string
                  description: アクセスリストコード
                  example: 2d1f
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                sco_code:
                  type: string
                  description: コンテンツコード
                  example: 51c76
                group_code:
                  type: string
                  description: グループコード
                  example: g3
                access_list_code:
                  type: string
                  description: アクセスリストコード
                  example: 2d1f
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: 追加結果
                    properties:
                      id:
                        type: integer
                        description: 制限内部ID
                      type:
                        type: string
                        description: 制限タイプ
                        enum:
                          - login
                          - sco
                      sco:
                        type: object
                        description: 教材
                        properties:
                          id:
                            type: integer
                            description: 教材内部ID
                          type:
                            type: string
                            description: 教材タイプ
                            enum:
                              - quiz
                              - link
                              - folder
                              - link-folder
                          code:
                            type: string
                            description: 教材コード
                          name:
                            type: string
                            description: 教材名
                      group:
                        allOf:
                          - $ref: '#/components/schemas/IdCodeName'
                          - description: グループ
                            properties:
                              id:
                                description: グループ内部ID
                              code:
                                description: グループコード
                              name:
                                description: グループ名
                      access_list:
                        allOf:
                          - $ref: '#/components/schemas/IdCodeName'
                          - description: アクセスリスト
                            properties:
                              id:
                                description: アクセスリスト内部ID
                              code:
                                description: アクセスリストコード
                              name:
                                description: アクセスリスト名
              examples:
                20001:
                  summary: 制限タイプ:login
                  value:
                    result:
                      id: 1
                      type: login
                      group:
                        id: 7
                        code: g31
                        name: 管理グループ
                      access_list:
                        id: 1
                        code: 111
                        name: 本社
                20002:
                  summary: 制限タイプ:sco
                  value:
                    result:
                      id: 1
                      type: sco
                      sco:
                        id: 7
                        type: folder
                        code: 1
                        name: 1年生
                      group:
                        id: 7
                        code: g31
                        name: 管理グループ
                      access_list:
                        id: 1
                        code: 111
                        name: 本社
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                更新対象の制限が存在しない:
                  summary: 更新対象の制限が存在しない
                  value:
                    error: not_exists
                    error_description: Permission does not exists.
        '422':
          description: 設定内容に不備あり　※必須入力とその他エラーは同時に出力しません。sco_codeエラーはtype=scoの時のみ出力します。
          content:
            application/json:
              schema:
                type: object
                properties:
                  sco_code:
                    type: array
                    description: コンテンツ指定不備
                    items:
                      type: string
                  group_code:
                    type: array
                    description: グループ指定不備
                    items:
                      type: string
                  access_list_code:
                    type: array
                    description: アクセスリスト指定不備
                    items:
                      type: string
              example:
                sco_code:
                  - コンテンツを選択してください。
                  - コンテンツが見つかりません。
                group_code:
                  - グループが見つかりません。
                  - ご指定のグループは設定できません。
                access_list_code:
                  - アクセスリストを選択してください。
                  - アクセスリストが見つかりません。
                  - 同一のグループ・アクセスリストの組み合わせが登録済みです。
                  - 同一のコンテンツ・グループ・アクセスリストの組み合わせが登録済みです。
  /v1/access-list/permission-delete/{id}:
    post:
      security:
        - OAuth2: [accesspermit.delete]
      tags:
        - access-list
      summary: ログイン・コンテンツ閲覧制限削除
      description: |
        特定のログイン・コンテンツ閲覧制限を削除します。
        ### 必要権限
        - アクセス権限設定のチェック項目: ログイン・教材閲覧制限 ＞ 削除
        - スコープ: `accesspermit.delete`
      operationId: deleteAccessInUseList
      parameters:
        - name: id
          in: path
          required: true
          description: 制限内部ID
          schema:
            type: integer
          example: 123
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: 制限タイプ　※URL末尾のidが指定ない時に必須
                  example: sco
                  enum:
                    - login
                    - sco
                sco_code:
                  type: string
                  description: コンテンツコード　※URL末尾のidが指定ない時、またはtype=scoの時に必須
                  example: d23e74
                group_code:
                  type: string
                  description: グループコード　※URL末尾のidが指定ない時に必須　空文字の場合は「全ユーザー」と見なします。
                  example: g3
                access_list_code:
                  type: string
                  description: アクセスリストコード　※URL末尾のidが指定ない時に必須
                  example: code_001
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                type:
                  type: string
                  description: 制限タイプ　※URL末尾のidが指定ない時に必須
                  example: sco
                  enum:
                    - login
                    - sco
                sco_code:
                  type: string
                  description: コンテンツコード　※URL末尾のidが指定ない時、またはtype=scoの時に必須
                  example: d23e74
                group_code:
                  type: string
                  description: グループコード　※URL末尾のidが指定ない時に必須　空文字の場合は「全ユーザー」と見なします。
                  example: g3
                access_list_code:
                  type: string
                  description: アクセスリストコード　※URL末尾のidが指定ない時に必須
                  example: code_001
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                required:
                  - id
                  - message
                type: object
                properties:
                  id:
                    type: integer
                  message:
                    type: string
              example:
                id: 123
                message: ACCEPTED
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                更新対象の制限が存在しない:
                  summary: 更新対象の制限が存在しない
                  value:
                    error: not_exists
                    error_description: Permission does not exists.
  /v1/author/list:
    post:
      security:
        - OAuth2: [author.read]
      tags:
        - author
      summary: 関係者一覧取得
      description: |
        カリキュラム・商品・セミナー・研修 > 関係者の一覧を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 関係者 ＞ 読取
        - スコープ: `author.read`
      operationId: searchAuthorList
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/ListSearchParameters'
                - type: object
                  properties:
                    keyword:
                      description: 任意文字列で曖昧検索(検索対象：名称、識別コード)
                      example: 先生
                      nullable: true
                    limit:
                      description: '1回の検索で返される行数を指定

                        limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                      nullable: true
                      default: 20
                    offset:
                      description: 検索開始行
                      nullable: true
          application/x-www-form-urlencoded:
            schema:
              allOf:
                - $ref: '#/components/schemas/ListSearchParameters'
                - type: object
                  properties:
                    keyword:
                      description: 任意文字列で曖昧検索(検索対象：名称、識別コード)
                      example: 先生
                      nullable: true
                    limit:
                      description: '1回の検索で返される行数を指定

                        limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                      nullable: true
                      default: 20
                    offset:
                      description: 検索開始行
                      nullable: true
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorList'
              example:
                results:
                  - author_id: 3
                    author_uid: AUTHOR-03
                    author_types:
                      - lecturer
                      - organizer
                      - passers
                    author_name: A先生
                    author_summary: A先生の講師紹介内容
                    organizer_summary: A先生の主催者紹介内容
                    passers_summary: A先生の合格者紹介内容
                    author_description: A先生の講師紹介内容詳細
                    organizer_description: A先生の主催者紹介内容詳細
                    passers_description: A先生の合格者紹介内容詳細
                    author_ratio: 30
                    entry_date: '2018-12-07 00:00:00'
                    user:
                      id: 2
                      login: author-03
                      name: Ａ先生
                  - author_id: 2
                    author_uid: AUTHOR-02
                    author_types:
                      - lecturer
                      - organizer
                      - passers
                    author_name: E先生
                    author_summary: E先生の講師紹介内容
                    organizer_summary: E先生の主催者紹介内容
                    passers_summary: E先生の合格者紹介内容
                    author_description: E先生の講師紹介内容詳細
                    organizer_description: E先生の主催者紹介内容詳細
                    passers_description: E先生の合格者紹介内容詳細
                    author_ratio: 20
                    entry_date: '2018-12-10 00:00:00'
                    user: null
                meta:
                  total: 2
                  limit: 20
                  offset: 0
  /v1/author/create:
    post:
      security:
        - OAuth2: [author.create]
      tags:
        - author
      summary: 関係者作成
      description: |
        カリキュラム・商品・セミナー・研修 > 関係者を作成します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 関係者 ＞ 追加
        - スコープ: `author.create`
      operationId: createAuthor
      requestBody:
        content:
          application/json:
            schema:
              required:
                - author_uid
                - author_types
                - author_name
              type: object
              properties:
                author_uid:
                  type: string
                  description: 識別コード（半角英数字、「-」、「_」が指定可能）
                  example: EC-AUTHOR-04
                author_types:
                  type: array
                  description: 種別一覧
                  items:
                    type: string
                    enum:
                      - lecturer
                      - organizer
                      - passers
                  example:
                    - lecturer
                    - organizer
                    - passers
                author_name:
                  type: string
                  description: 名称
                  example: F先生
                author_summary:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介内容
                organizer_summary:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介内容
                passers_summary:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介内容
                author_description:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介詳細
                organizer_description:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介詳細
                passers_description:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介詳細
                author_ratio:
                  type: integer
                  description: 分配率
                  minimum: 0
                  maximum: 100
                  example: 25
                user_login:
                  type: string
                  description: 連携するアカウントのログインID
                  example: author-04
          application/x-www-form-urlencoded:
            schema:
              required:
                - author_uid
                - author_types
                - author_name
              type: object
              properties:
                author_uid:
                  type: string
                  description: 識別コード（半角英数字、「-」、「_」が指定可能）
                  example: EC-AUTHOR-04
                author_types:
                  type: array
                  description: 種別一覧（複数指定可）。form-urlencodedの場合は author_types[]=lecturer&author_types[]=organizer の形式で指定
                  items:
                    type: string
                    enum:
                      - lecturer
                      - organizer
                      - passers
                  example:
                    - lecturer
                    - organizer
                    - passers
                author_name:
                  type: string
                  description: 名称
                  example: F先生
                author_summary:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介内容
                organizer_summary:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介内容
                passers_summary:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介内容
                author_description:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介詳細
                organizer_description:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介詳細
                passers_description:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介詳細
                author_ratio:
                  type: integer
                  description: 分配率
                  minimum: 0
                  maximum: 100
                  example: 25
                user_login:
                  type: string
                  description: 連携するアカウントのログインID
                  example: author-04
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorResult'
              example:
                result:
                  author_id: 4
                  author_uid: AUTHOR-04
                  author_types:
                    - lecturer
                    - organizer
                    - passers
                  author_name: F先生
                  author_summary: F先生の講師紹介内容
                  organizer_summary: F先生の主催者紹介内容
                  passers_summary: F先生の合格者紹介内容
                  author_description: F先生の講師紹介内容詳細
                  organizer_description: F先生の主催者紹介内容詳細
                  passers_description: F先生の合格者紹介内容詳細
                  author_ratio: 25
                  entry_date: '2018-12-10 00:00:00'
                  user:
                    id: 4
                    login: author-04
                    name: F先生
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                type: object
                description: 各入力項目名をキー、エラーメッセージ配列を値とするマップ
                properties:
                  author_uid:
                    type: array
                    description: 識別コード不備
                    items:
                      type: string
                  author_types:
                    type: array
                    description: 種別不備
                    items:
                      type: string
                  user_id:
                    type: array
                    description: 連携するアカウントのログインID不備
                    items:
                      type: string
                  author_name:
                    type: array
                    description: 名称不備
                    items:
                      type: string
              example:
                author_uid:
                  - 入力してください
                  - 識別コードが未設定です。
                author_types:
                  - 種別は1つ以上選択してください。
                  - 種別が正しくありません。
                user_id:
                  - このアカウントは別の関係者情報に連携しています。
                author_name:
                  - 名称が未設定です。
  /v1/author/update/{author_id}:
    post:
      security:
        - OAuth2: [author.update]
      tags:
        - author
      summary: 関係者更新
      description: |
        カリキュラム・商品・セミナー・研修 > 関係者を更新します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 関係者 ＞ 更新
        - スコープ: `author.update`
      operationId: updateAuthor
      parameters:
        - name: author_id
          in: path
          description: 関係者内部ID
          required: true
          schema:
            type: integer
          example: 123
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                author_uid:
                  type: string
                  description: 識別コード（半角英数字、「-」、「_」が指定可能）
                  example: EC-AUTHOR-04
                author_types:
                  type: array
                  description: 種別一覧
                  items:
                    type: string
                    enum:
                      - lecturer
                      - organizer
                      - passers
                  example:
                    - lecturer
                    - organizer
                    - passers
                author_name:
                  type: string
                  description: 名称
                  example: F先生
                author_summary:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介内容
                organizer_summary:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介内容
                passers_summary:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介内容
                author_description:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介詳細
                organizer_description:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介詳細
                passers_description:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介詳細
                author_ratio:
                  type: integer
                  description: 分配率
                  minimum: 0
                  maximum: 100
                  example: 25
                user_login:
                  type: string
                  description: 連携するアカウントのログインID
                  example: author-04
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                author_uid:
                  type: string
                  description: 識別コード（半角英数字、「-」、「_」が指定可能）
                  example: EC-AUTHOR-04
                author_types:
                  type: array
                  description: 種別一覧（複数指定可）。form-urlencodedの場合は author_types[]=lecturer&author_types[]=organizer の形式で指定
                  items:
                    type: string
                    enum:
                      - lecturer
                      - organizer
                      - passers
                  example:
                    - lecturer
                    - organizer
                    - passers
                author_name:
                  type: string
                  description: 名称
                  example: F先生
                author_summary:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介内容
                organizer_summary:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介内容
                passers_summary:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介内容
                author_description:
                  type: string
                  description: 講師概要
                  example: F先生の講師紹介詳細
                organizer_description:
                  type: string
                  description: 主催者概要
                  example: F先生の主催者紹介詳細
                passers_description:
                  type: string
                  description: 合格者概要
                  example: F先生の合格者紹介詳細
                author_ratio:
                  type: integer
                  description: 分配率
                  minimum: 0
                  maximum: 100
                  example: 25
                user_login:
                  type: string
                  description: 連携するアカウントのログインID
                  example: author-04
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorResult'
              example:
                result:
                  author_id: 4
                  author_uid: AUTHOR-04
                  author_types:
                    - lecturer
                    - organizer
                    - passers
                  author_name: F先生
                  author_summary: F先生の講師紹介内容
                  organizer_summary: F先生の主催者紹介内容
                  passers_summary: F先生の合格者紹介内容
                  author_description: F先生の講師紹介内容詳細
                  organizer_description: F先生の主催者紹介内容詳細
                  passers_description: F先生の合格者紹介内容詳細
                  author_ratio: 25
                  entry_date: '2018-12-10 00:00:00'
                  user:
                    id: 4
                    login: author-04
                    name: F先生
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: unknown
                error_description: '{error message}'
        '422':
          description: 異常レスポンス
          content:
            application/json:
              schema:
                type: object
                description: 各入力項目名をキー、エラーメッセージ配列を値とするマップ
                properties:
                  author_uid:
                    type: array
                    description: 識別コード不備
                    items:
                      type: string
                  author_types:
                    type: array
                    description: 種別不備
                    items:
                      type: string
              example:
                author_uid:
                  - 識別コードが未設定です。
                author_types:
                  - 種別が正しくありません。
  /v1/author/delete/{author_id}:
    post:
      security:
        - OAuth2: [author.delete]
      tags:
        - author
      summary: 関係者削除
      description: |
        特定のカリキュラム・商品・セミナー・研修 > 関係者を削除します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 関係者 ＞ 削除
        - スコープ: `author.delete`
      operationId: deleteAuthor
      parameters:
        - name: author_id
          in: path
          description: 関係者内部ID
          required: true
          schema:
            type: integer
          example: 10
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                required:
                  - id
                  - uid
                  - message
                type: object
                properties:
                  id:
                    type: integer
                    description: 関係者内部ID
                  uid:
                    type: string
                    description: 識別コード
                  message:
                    type: string
                    description: 削除完了メッセージ
              example:
                id: 10
                uid: EC-AUTHOR-10
                message: ACCEPTED
        '400':
          description: 予想外エラー
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                予想外エラー:
                  summary: 予想外エラー
                  value:
                    error: unknown
                    error_description: '{error message}'
                更新対象の関係者が存在しない:
                  summary: 更新対象の関係者が存在しない
                  value:
                    error: not_exists
                    error_description: Author does not exists.
                更新対象の関係者未指定:
                  summary: 更新対象の関係者未指定
                  value:
                    error: wrong_parameter
                    error_description: Author ID could not be empty.
  /v1/training/reservation-list:
    post:
      security:
        - OAuth2: [training_reservation.read]
      tags:
        - training
      summary: 研修予約履歴取得
      description: |
        研修の予約履歴を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 研修予約状況 ＞ 読取
        - スコープ: `training_reservation.read`
      operationId: searchTrainingReservaionList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                reservation_no:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：予約ID)
                  example: P20210426
                reservation_statuses:
                  type: array
                  description: 予約ステータス
                  items:
                    type: string
                    enum:
                      - waiting_approval
                      - approval
                      - disapproval
                      - cancel
                  example:
                    - waiting_approval
                    - approval
                attendance_statuses:
                  type: array
                  description: 出席ステータス
                  items:
                    type: string
                    enum:
                      - not_accepted
                      - attended
                      - absence
                  example:
                    - not_accepted
                    - absence
                created_at1:
                  type: string
                  description: 予約日（～から）
                  example: '2021-04-01'
                created_at2:
                  type: string
                  description: 予約日（～まで）
                  example: '2026-04-26'
                approval_at1:
                  type: string
                  description: 承認日（～から）
                  example: '2021-04-01'
                approval_at2:
                  type: string
                  description: 承認日（～まで）
                  example: '2026-04-26'
                attendance_at1:
                  type: string
                  description: 出席日（～から）
                  example: '2021-04-01'
                attendance_at2:
                  type: string
                  description: 出席日（～まで）
                  example: '2026-04-26'
                ticket_updated_at1:
                  type: string
                  description: チケット更新日（～から）
                  example: '2021-04-01'
                ticket_updated_at2:
                  type: string
                  description: チケット更新日（～まで）
                  example: '2026-04-26'
                user:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：ユーザーのログインID、氏名、メールアドレス)
                  example: ユーザー
                training:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：研修タイトル、研修コード)
                  example: 研修
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  default: 5000
                  example: 1
                offset:
                  type: integer
                  description: 検索開始行
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                reservation_no:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：予約ID)
                  example: P20210426
                reservation_statuses:
                  type: array
                  description: 予約ステータス
                  items:
                    type: string
                    enum:
                      - waiting_approval
                      - approval
                      - disapproval
                      - cancel
                  example:
                    - waiting_approval
                    - approval
                attendance_statuses:
                  type: array
                  description: 出席ステータス
                  items:
                    type: string
                    enum:
                      - not_accepted
                      - attended
                      - absence
                  example:
                    - not_accepted
                    - absence
                created_at1:
                  type: string
                  description: 予約日（～から）
                  example: '2021-04-01'
                created_at2:
                  type: string
                  description: 予約日（～まで）
                  example: '2026-04-26'
                approval_at1:
                  type: string
                  description: 承認日（～から）
                  example: '2021-04-01'
                approval_at2:
                  type: string
                  description: 承認日（～まで）
                  example: '2026-04-26'
                attendance_at1:
                  type: string
                  description: 出席日（～から）
                  example: '2021-04-01'
                attendance_at2:
                  type: string
                  description: 出席日（～まで）
                  example: '2026-04-26'
                ticket_updated_at1:
                  type: string
                  description: チケット更新日（～から）
                  example: '2021-04-01'
                ticket_updated_at2:
                  type: string
                  description: チケット更新日（～まで）
                  example: '2026-04-26'
                user:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：ユーザーのログインID、氏名、メールアドレス)
                  example: ユーザー
                training:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：研修タイトル、研修コード)
                  example: 研修
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  default: 5000
                  example: 1
                offset:
                  type: integer
                  description: 検索開始行
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingReservationList'
              example:
                results:
                  - reservation_no: P202403151AC53A-L
                    reservation_status: approval
                    reservation_at: '2024-03-10 22:00:00'
                    canceled_at: null
                    created_at: '2024-03-10 22:00:00'
                    updated_at: '2024-03-10 22:00:00'
                    attendance_at: '2024-03-25 22:00:00'
                    reservation_user:
                      user_id: 22
                      user_name: テストユーザー
                      user_login: test-user
                      user_email: sample.aaa.bbb@sample.co.jp
                    reserved_training:
                      training_code: sample_training_code
                      training_title: サンプル研修
                      stock_name: A教室
                      duration_end_date: null
                      duration_num: 3
                      duration_unit: D
                      ticket_no: a1234b
                      attendance_status: attended
                meta:
                  total: 2
                  limit: 1
                  offset: 0
        '422':
          description: 設定内容に不備あり
          content:
            application/json:
              schema:
                type: object
                properties:
                  reservation_no:
                    type: array
                    description: 予約ID不備
                    items:
                      type: string
                  reservation_statuses:
                    type: array
                    description: 予約ステータス不備
                    items:
                      type: string
                  attendance_statuses:
                    type: array
                    description: 出席ステータス不備
                    items:
                      type: string
                  created_at1:
                    type: array
                    description: 予約日検索開始日不備
                    items:
                      type: string
                  created_at2:
                    type: array
                    description: 予約日検索終了日不備
                    items:
                      type: string
                  approval_at1:
                    type: array
                    description: 承認日検索開始日不備
                    items:
                      type: string
                  approval_at2:
                    type: array
                    description: 承認日検索終了日不備
                    items:
                      type: string
                  attendance_at1:
                    type: array
                    description: 出席日検索開始日不備
                    items:
                      type: string
                  attendance_at2:
                    type: array
                    description: 出席日検索終了日不備
                    items:
                      type: string
                  ticket_updated_at1:
                    type: array
                    description: チケット更新日検索開始日不備
                    items:
                      type: string
                  ticket_updated_at2:
                    type: array
                    description: チケット更新日検索終了日不備
                    items:
                      type: string
                  user:
                    type: array
                    description: ユーザー検索不備
                    items:
                      type: string
                  training:
                    type: array
                    description: 研修検索不備
                    items:
                      type: string
                  limit:
                    type: array
                    description: 取得上限数不備
                    items:
                      type: string
                  offset:
                    type: array
                    description: 取得開始位置不備
                    items:
                      type: string
              example:
                reservation_no:
                  - 30文字以下で入力してください。
                reservation_statuses:
                  - 予約ステータスは配列で1個以上4個以下の範囲で設定してください。
                  - 予約ステータスが正しくありません。
                attendance_statuses:
                  - 出席ステータスは配列で1個以上3個以下の範囲で設定してください。
                  - 出席ステータスが正しくありません。
                created_at1:
                  - 予約日（から）のフォーマットが正しくありません。
                created_at2:
                  - 予約日（まで）のフォーマットが正しくありません。
                approval_at1:
                  - 承認日（から）のフォーマットが正しくありません。
                approval_at2:
                  - 承認日（まで）のフォーマットが正しくありません。
                attendance_at1:
                  - 出席日（から）のフォーマットが正しくありません。
                attendance_at2:
                  - 出席日（まで）のフォーマットが正しくありません。
                ticket_updated_at1:
                  - チケット更新日（から）のフォーマットが正しくありません。
                ticket_updated_at2:
                  - チケット更新日（まで）のフォーマットが正しくありません。
                user:
                  - ユーザー曖昧検索は200文字以下で入力してください。
                training:
                  - 研修曖昧検索は200文字以下で入力してください。
                limit:
                  - 1以上5000以下の整数で入力してください。
                offset:
                  - 0以上の整数で入力してください。
  /v1/payment/list:
    post:
      security:
        - OAuth2: [payment.read]
      tags:
        - payment
      summary: 決済履歴（注文別）取得
      description: |
        EC機能 > 決済履歴（注文別）を取得します。
        ### 必要権限
        - アクセス権限設定のチェック項目: 決済履歴 ＞ 読取
        - スコープ: `payment.read`
      operationId: searchPaymentList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                no:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：注文ID)
                  example: P20210426
                status:
                  type: array
                  description: 決済ステータス
                  items:
                    type: string
                    enum:
                      - order
                      - cancel
                      - canceled
                      - waiting_pay
                      - waiting_confirm
                      - expired
                      - paid
                  example:
                    - order
                    - paid
                method:
                  type: array
                  description: 決済方法
                  items:
                    type: string
                    enum:
                      - free
                      - bank
                      - bill
                      - paypal
                      - gmo_cvs
                      - gmo_ganb
                      - gmo_card
                  example:
                    - bill
                    - gmo_card
                created_at1:
                  type: string
                  description: 注文日（～から）
                  example: '2021-04-01'
                created_at2:
                  type: string
                  description: 注文日（～まで）
                  example: '2026-04-26'
                paid_at1:
                  type: string
                  description: 入金日（～から）
                  example: '2021-04-01'
                paid_at2:
                  type: string
                  description: 入金日（～まで）
                  example: '2026-04-26'
                comment:
                  type: string
                  description: コメント曖昧検索
                  example: test
                user:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：ユーザーのログインID、氏名、メールアドレス)
                  example: ユーザー
                product:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：商品・セミナータイトル、商品・セミナーコード、クーポンコード)
                  example: 研修
                product_type:
                  type: array
                  description: 種別
                  items:
                    type: string
                    enum:
                      - product
                      - seminar
                  example:
                    - product
                    - seminar
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  default: 20
                  example: 1
                offset:
                  type: integer
                  description: 検索開始行
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                no:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：注文ID)
                  example: P20210426
                status:
                  type: array
                  description: 決済ステータス（複数指定可）。form-urlencodedの場合は status[]=order&status[]=paid の形式で指定
                  items:
                    type: string
                    enum:
                      - order
                      - cancel
                      - canceled
                      - waiting_pay
                      - waiting_confirm
                      - expired
                      - paid
                  example:
                    - order
                    - paid
                method:
                  type: array
                  description: 決済方法（複数指定可）。form-urlencodedの場合は method[]=bill&method[]=gmo_card の形式で指定
                  items:
                    type: string
                    enum:
                      - free
                      - bank
                      - bill
                      - paypal
                      - gmo_cvs
                      - gmo_ganb
                      - gmo_card
                  example:
                    - bill
                    - gmo_card
                created_at1:
                  type: string
                  description: 注文日（～から）
                  example: '2021-04-01'
                created_at2:
                  type: string
                  description: 注文日（～まで）
                  example: '2026-04-26'
                paid_at1:
                  type: string
                  description: 入金日（～から）
                  example: '2021-04-01'
                paid_at2:
                  type: string
                  description: 入金日（～まで）
                  example: '2026-04-26'
                comment:
                  type: string
                  description: コメント曖昧検索
                  example: test
                user:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：ユーザーのログインID、氏名、メールアドレス)
                  example: ユーザー
                product:
                  type: string
                  description: 任意文字列で曖昧検索(検索対象：商品・セミナータイトル、商品・セミナーコード、クーポンコード)
                  example: 研修
                product_type:
                  type: array
                  description: 種別（複数指定可）。form-urlencodedの場合は product_type[]=product&product_type[]=seminar の形式で指定
                  items:
                    type: string
                    enum:
                      - product
                      - seminar
                  example:
                    - product
                    - seminar
                limit:
                  type: integer
                  description: '1回の検索で返される行数を指定

                    limitが設定されない場合は20行取得します。0が指定された場合、全行を返します。'
                  default: 20
                  example: 1
                offset:
                  type: integer
                  description: 検索開始行
        required: false
      responses:
        '200':
          description: 正常レスポンス
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentList'
              example:
                results:
                  - payment_id: 112
                    payment_no: P202104262F00BC-123
                    payment_status: paid
                    payment_method: bill
                    payment_price: 80
                    payment_transaction_fee: 0
                    paid_at: '2021-04-26 17:33:13'
                    canceled_at: null
                    created_at: '2021-04-26 17:33:13'
                    updated_at: '2021-04-26 17:33:13'
                    payment_purchases:
                      - purchase_id: 103
                        product_code: SP-TEST-001
                        product_type: product
                        product_title: 商品タイトル1
                        duration_pirce: 100
                        duration_start: '2021-04-27 15:37:28'
                        duration_close: '2021-04-27 15:37:28'
                        purchase_amount: 1
                        purchase_price: 80
                        coupon:
                          discount_code: test
                          discount_name: test
                          discount_rate: 20
                        tickets: null
                        authors:
                          - author_id: 2
                            author_uid: EC-AUTHOR-02
                            author_name: E先生
                            profit_rate: 20
                    payment_user:
                      user_id: 100
                      user_name: 購入者100
                      user_login: payment-100
                      user_email: user100@example.co.jp
                    payment_contact:
                      contact_username: ユーザー100
                      contact_company: 株式会社100
                      contact_tel: null
                      contact_zip: 111-1111
                      contact_prefectures: 〇〇県
                      contact_city: 〇〇市
                      contact_addr1: 〇〇1-1
                      contact_addr2: null
                    comment: null
                  - payment_id: 111
                    payment_no: P202104264B845D-888
                    payment_status: paid
                    payment_method: bill
                    payment_price: 200
                    payment_transaction_fee: 0
                    paid_at: '2021-04-26 17:28:21'
                    canceled_at: null
                    created_at: '2021-04-26 17:28:21'
                    updated_at: '2021-04-26 17:28:21'
                    payment_purchases:
                      - purchase_id: 102
                        product_code: SP-SEMINAR-001
                        product_type: seminar
                        product_title: セミナータイトル1
                        duration_pirce: 100
                        duration_start: '2021-04-26 17:28:21'
                        duration_close: '2021-04-27 17:28:21'
                        purchase_amount: 2
                        purchase_price: 200
                        coupon: null
                        tickets:
                          - 10206
                          - 10207
                        authors: null
                    payment_user:
                      user_id: 200
                      user_name: 購入者200
                      user_login: payment-200
                      user_email: user200@example.co.jp
                    payment_contact:
                      contact_username: ユーザー200
                      contact_company: 株式会社200
                      contact_tel: null
                      contact_zip: 222-2222
                      contact_prefectures: ▲▲県
                      contact_city: ▲▲市
                      contact_addr1: ▲▲1-1
                      contact_addr2: null
                    comment: null
                meta:
                  total: 5
                  limit: 1
                  offset: 0
        '422':
          description: 設定内容に不備あり
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: array
                    description: ステータス不備
                    items:
                      type: string
                  method:
                    type: array
                    description: 決済方法不備
                    items:
                      type: string
                  product_type:
                    type: array
                    description: 種別不備
                    items:
                      type: string
                  created_at2:
                    type: array
                    description: 注文日検索終了日不備
                    items:
                      type: string
              example:
                status:
                  - ステータスが正しくありません。
                method:
                  - 決済方法が正しくありません。
                product_type:
                  - 種別が正しくありません。
                created_at2:
                  - 注文日（まで）を10文字で入力してください。
                  - 注文日（まで）が正しくありません。
components:
  schemas:
    GroupFieldIdentifier:
      type: object
      description: グループ識別子（group_idまたはgroup_code）
      properties:
        field_name:
          type: string
          description: フィールド名
          enum:
            - group_id
            - group_code
        field_value:
          type: string
          description: フィールド値
    ScoFieldIdentifier:
      type: object
      description: コンテンツ識別子（sco_idまたはsco_code）
      properties:
        field_name:
          type: string
          description: フィールド名
          enum:
            - sco_id
            - sco_code
        field_value:
          type: string
          description: フィールド値
    GroupInfo:
      type: object
      description: グループ情報（レスポンス用）
      properties:
        group_id:
          type: integer
          description: グループ内部ID
        group_code:
          type: string
          description: グループコード
        name:
          type: string
          description: グループ名
    ScoInfo:
      type: object
      description: コンテンツ情報（レスポンス用）
      properties:
        sco_id:
          type: string
          description: コンテンツ内部ID
        sco_code:
          type: string
          description: コンテンツコード
        title:
          type: string
          description: コンテンツタイトル
    ListSearchParameters:
      type: object
      description: リスト検索パラメータ
      properties:
        keyword:
          type: string
          description: 検索キーワード
        limit:
          type: integer
          description: 取得件数
        offset:
          type: integer
          description: 取得開始位置
    IdCodeName:
      type: object
      description: ID、コード、名前を持つオブジェクト
      properties:
        id:
          type: integer
          description: 内部ID
        code:
          type: string
          description: コード
        name:
          type: string
          description: 名前
    GetGroupContentsResponse:
      type: object
      required:
        - result
      properties:
        result:
          $ref: '#/components/schemas/Group'
    Group:
      type: object
      description: グループ情報とコンテンツ一覧
      required:
        - group_id
        - group_code
        - name
        - scos
      properties:
        group_id:
          type: integer
          format: int64
          description: グループ内部ID
        group_code:
          type: string
          description: グループコード
        name:
          type: string
        scos:
          type: array
          description: コンテンツ一覧
          items:
            $ref: '#/components/schemas/ScoAssign'
    ScoAssign:
      type: object
      description: コンテンツ要素
      required:
        - parent_id
        - sco_id
        - sco_code
        - sco_type
        - generator_type
        - title
      properties:
        parent_id:
          type: integer
          format: int64
        sco_id:
          type: string
        sco_code:
          type: string
        sco_type:
          type: string
          description: folder=コース/フォルダ, contents=コンテンツ
        generator_type:
          type: string
          description: コンテンツ種別
        title:
          type: string
    GroupValidationErrors:
      type: object
      description: 各入力項目名をキー、エラーメッセージ配列を値とするマップ
      properties:
        parent_id:
          type: array
          description: 親グループID不備
          items:
            type: string
        parent_code:
          type: array
          description: 親グループコード不備
          items:
            type: string
        name:
          type: array
          description: グループ名不備
          items:
            type: string
        group_code:
          type: array
          description: グループコード不備
          items:
            type: string
        user_limit:
          type: array
          description: アカウント登録可能数不備
          items:
            type: string
      additionalProperties: false
    IPValidationErrors:
      type: object
      description: 各入力項目名をキー、エラーメッセージ配列を値とするマップ
      properties:
        name:
          type: array
          description: アクセスリスト名不備
          items:
            type: string
        code:
          type: array
          description: アクセスリストコード不備
          items:
            type: string
        ip_list:
          type: array
          description: IP不備
          items:
            type: string
    User:
      required:
        - active_status
        - active_status_label
        - created_at
        - receive_notice_mail
        - updated_at
        - user_id
      type: object
      properties:
        user_id:
          type: integer
          description: ユーザー内部ID
        active_status:
          type: string
          description: 'ステータスとラベル

            0:未有効化

            1:未承認

            2:非承認

            3:ログイン待ち

            6:一時停止

            7:有効

            8:無効

            9:削除'
        active_status_label:
          type: string
          description: 'active_statusに対応する日本語ラベル。例: 0:未有効化, 1:未承認, 2:非承認, 6:一時停止, 7:有効, 8:無効, 9:削除。active_statusが3の場合はラベルが定義されていないため "unknown" を返します。'
        login:
          minLength: 5
          maxLength: 50
          type: string
          example: 'user-001'
          description: ログインID
        name:
          type: string
          description: 氏名
        nickname:
          type: string
          description: ディスプレイネーム
        department:
          type: string
          description: 部署
        position:
          type: string
          description: 役職
        email:
          type: string
          description: E-mailアドレス
          format: email
        lms_country:
          type: string
          description: |
            居住国・地域。国名が英語表記で返却されます。
            取りうる値: Japan, Afghanistan, Albania, Algeria, Andorra, Angola, AntiguaAndBarbuda, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, BosniaAndHerzegovina, Botswana, Brazil, BruneiDarussalam, Bulgaria, BurkinaFaso, Burundi, CaboVerde, Cambodia, Cameroon, Canada, CentralAfricanRepublic, Chad, Chile, China, Colombia, Comoros, Congo, CostaRica, CoteD'Ivoire, Croatia, Cuba, Cyprus, CzechRepublic, DemocraticPeople'sRepublicOfKorea, DemocraticRepublicOfTheCongo, Denmark, Djibouti, Dominica, DominicanRepublic, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, Germany, Ghana, Greece, Grenada, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Jordan, Kazakhstan, Kenya, Kiribati, Kuwait, Kyrgyzstan, LaoPeople'sDemocraticRepublic, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Mauritania, Mauritius, Mexico, Micronesia, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewZealand, Nicaragua, Niger, Nigeria, NorthMacedonia, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, RepublicOfKorea, RepublicOfMoldova, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, SaintLucia, SaintVincentAndTheGrenadines, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthSudan, Spain, SriLanka, Sudan, Suriname, Sweden, Switzerland, SyrianArabRepublic, Tajikistan, Thailand, Timor-Leste, Togo, Tonga, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdomOfGreatBritainAndNorthernIreland, UnitedRepublicOfTanzania, UnitedStatesOfAmerica, Uruguay, Uzbekistan, Vanuatu, Venezuela, VietNam, Yemen, Zambia, Zimbabwe
        lms_language:
          type: string
          description: |
            言語。ロケールコードで返却されます。
            取りうる値: ja_JP（日本語）, en_US（英語）, vi_VN（ベトナム語）, id_ID（インドネシア語）, de_DE（ドイツ語）, es_ES（スペイン語）, fr_FR（フランス語）, my_MM（ミャンマー語）, pt_PT（ポルトガル語）, tl_PH（タガログ語）, ru_RU（ロシア語）, ur_PK（ウルドゥー語）, hi_IN（ヒンディー語）, th_TH（タイ語）, km_KH（クメール語）, zh_CN（中国語簡体字）, zh_TW（中国語繁体字）, ko_KR（韓国語）
        lms_timezone:
          type: string
          description: |
            タイムゾーン。IANAタイムゾーン識別子で返却されます。
            取りうる値: Asia/Tokyo, Europe/Budapest, Africa/Lagos, Europe/Amsterdam, Europe/Paris, Africa/Windhoek, Africa/Harare, Europe/Helsinki, Europe/Sofia, Africa/Cairo, Europe/Bucharest, Asia/Jerusalem, Asia/Amman, Asia/Beirut, Asia/Damascus, Europe/Istanbul, Asia/Kuwait, Europe/Minsk, Africa/Nairobi, Asia/Baghdad, Europe/Moscow, Asia/Tehran, Asia/Yerevan, Asia/Baku, Asia/Tbilisi, Asia/Kabul, Asia/Ashgabat, Asia/Karachi, Asia/Kolkata, Asia/Colombo, Asia/Kathmandu, Asia/Dhaka, Asia/Yangon, Asia/Bangkok, Asia/Singapore, Asia/Taipei, Asia/Hong_Kong, Asia/Shanghai, Asia/Macau, Asia/Ulaanbaatar, Asia/Seoul, Australia/Melbourne, Pacific/Guam, Pacific/Noumea, Pacific/Auckland, Pacific/Apia, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Santiago, America/Cayenne, America/Montevideo, America/Manaus, America/Asuncion, America/Bogota, America/Mexico_City, America/Phoenix, America/Vancouver, Pacific/Honolulu, UTC
        lms_date_format:
          type: string
          description: 日付形式
        lms_time_format:
          type: string
          description: 時刻形式
        custom_field:
          type: string
          description: カスタムフィールドの値。API呼び出し時は 各カスタムフィールドのフィールドキーで表示されます。
        created_at:
          type: string
          format: date-time
          description: 作成日時
        updated_at:
          type: string
          format: date-time
          description: 更新日時
        receive_notice_mail:
          type: integer
          description: 'お知らせ公開通知メールを受け取る 0:受け取らない 1:受け取る'
    UserDetail:
      type: object
      required:
        - result
      properties:
        result:
          allOf:
            - $ref: '#/components/schemas/User'
            - required:
                - groups
              type: object
              properties:
                groups:
                  type: array
                  description: 所属グループ
                  items:
                    $ref: '#/components/schemas/GroupResponse'
    Meta:
      required:
        - limit
        - offset
        - total
      type: object
      properties:
        total:
          type: integer
          description: 総取得数
          example: 2236
        limit:
          type: integer
          description: 取得上限値
          example: 20
        offset:
          type: integer
          description: 取得開始位置
          example: 0
      description: メタ情報
    UserListResponse:
      required:
        - meta
        - results
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/User'
        meta:
          $ref: '#/components/schemas/Meta'
    GroupResponse:
      required:
        - group_code
        - id
        - name
      type: object
      properties:
        id:
          type: integer
          description: グループ内部ID
        name:
          type: string
          description: グループ名
        group_code:
          type: string
          description: グループコード
        user_limit:
          type: integer
          description: 登録上限数
        product_id:
          type: integer
          description: プロダクト内部ID
    UserCreateResponse:
      type: object
      properties:
        result:
          type: object
          description: 変更結果
          properties:
            user_id:
              type: integer
              description: ユーザー内部ID
            login:
              type: string
              description: ログインID
    UserDeleteResponse:
      required:
        - id
        - login
        - message
      type: object
      properties:
        id:
          type: integer
        login:
          type: string
        message:
          type: string
    GroupDeleteResponse:
      required:
        - id
        - code
        - message
      type: object
      properties:
        id:
          type: integer
        code:
          type: string
        message:
          type: string
    IPDeleteResponse:
      required:
        - id
        - code
        - message
      type: object
      properties:
        id:
          type: integer
        code:
          type: string
        message:
          type: string
    MergeResultItem:
      type: object
      description: タイプ別統合結果
      properties:
        type:
          type: string
          description: 統合データタイプ　result = 成績 badge = バッジ login = ログイン
          enum:
            - result
            - badge
            - login
        total:
          type: integer
          description: 統合データ件数
        login:
          type: integer
          description: ログイン件数
    Result:
      type: object
      properties:
        src_user_id:
          type: integer
          description: 統合元ユーザー内部ID
        dst_user_id:
          type: integer
          description: 統合先ユーザー内部ID
        merge_result:
          type: array
          description: 統合結果
          items:
            $ref: '#/components/schemas/MergeResultItem'
    MergeResponse:
      type: object
      description: 変更結果
      properties:
        result:
          $ref: '#/components/schemas/Result'
    MergeResponse422:
      type: object
      properties:
        src_login:
          type: array
          items:
            type: string
          description: ログインID入力不備
        dst_login:
          type: array
          items:
            type: string
          description: ログインID入力不備
        force:
          type: array
          items:
            type: string
          description: フラグ指定不備
    ErrorResponse_user:
      type: object
      additionalProperties:
        type: array
        items:
          type: string
    ErrorResponse_assignGroup422:
      type: object
      properties:
        assign:
          type: array
          items:
            type: string
        release:
          type: array
          items:
            type: string
    ErrorResponse_userpermission:
      required:
        - error
        - error_description
        - error_report
      type: object
      properties:
        error:
          type: string
          description: エラー種別
        error_description:
          type: string
          description: エラー詳細
        error_report:
          type: array
          description: エラーレポート
          items:
            type: string
    Sco:
      required:
        - child_count
        - created_at
        - sco_code
        - sco_id
        - sco_type
        - title
        - updated_at
      type: object
      properties:
        sco_id:
          type: string
          description: 教材内部ID
        sco_type:
          type: string
          description: 該当コンテンツの種類
          enum:
            - folder
            - contents
            - selectable-contents
            - constraint
            - title-bar
        sco_code:
          type: string
          description: 教材コード
        generetor_type:
          type: string
          nullable: true
          description: 教材種別
          enum:
            - QUIZ
            - CARD
            - MOVIE
            - PDF
            - HTML
            - MARKER
            - DOWNLOAD
            - REPORT
            - DISCUSSION
            - TYPING
            - ASSESSMENT
            - ISPRING
            - SCORM
            - LTI
            - URL_LINK
            - MEXCBT
            - YOUTUBE
            - PPT2HTML
            - IFRAME
            - WRAPPER
            - ENQUETE
            - CERTIFICATE
            - RESULT
        title:
          type: string
          description: 教材タイトル
        child_count:
          type: integer
          description: コース、フォルダ内のコンテンツ数
        created_at:
          type: string
          description: 作成日時
          format: date-time
        updated_at:
          type: string
          description: 更新日時
          format: date-time
    ScoListResponse:
      required:
        - meta
        - scos
      type: object
      properties:
        scos:
          minItems: 0
          type: array
          items:
            $ref: '#/components/schemas/Sco'
        meta:
          $ref: '#/components/schemas/Meta'
    AccessListResponse:
      required:
        - meta
        - results
      type: object
      properties:
        results:
          minItems: 0
          type: array
          items:
            $ref: '#/components/schemas/Accesslist'
        meta:
          $ref: '#/components/schemas/Meta'
    Accesslist:
      title: AccessList
      description: アクセス許可対象の拠点（または一覧の要素）を表すオブジェクト
      type: object
      additionalProperties: false
      required:
        - id
        - name
        - code
        - ip_list
        - inuse
      properties:
        id:
          type: integer
          description: アクセスリスト内部ID
        name:
          type: string
          description: アクセスリスト名
        code:
          type: string
          description: アクセスリストコード（識別子）
        ip_list:
          type: array
          description: IPアドレス一覧
          items:
            type: string
            description: IPアドレス
        inuse:
          type: boolean
          description: ログイン制限や教材閲覧制限に使われているか
    ContentCreateUpdateRequest:
      type: object
      required:
        - payload
        - type
      properties:
        type:
          type: string
          description: ジョブ種別
          enum:
            - create-content
            - update-content
        payload:
          $ref: '#/components/schemas/ContentPayload'
    ContentPayload:
      type: object
      properties:
        sco_code:
          type: string
          description: 教材コード type = update-contentの場合、必須
        sco_type:
          type: string
          description: コンテンツ種別 type = create-content の場合、必須
          enum:
            - course
            - folder
            - content
        generator_type:
          type: string
          description: 教材種別 sco_type = contentの場合、必須
          enum:
            - SCORM
            - PDF
        parent_sco_code:
          type: string
          description: 教材を作成更新して配置するコース/フォルダの教材コード sco_type = content または folder の場合、必須
        insert_after:
          type: string
          description: '配置場所の教材コード<br>

            {sco_code}: 指定したsco_codeの一つ後に配置する<br>

            `<first>`: コース・フォルダの先頭に配置する<br>

            `<last>`: コース・フォルダの末尾に配置する（デフォルト値）'
          default: <last>
        sco_data:
          type: object
          description: 教材データ type = create-content の場合とtype = update-content で教材の内容を更新する場合、必須
          properties:
            title:
              type: string
              description: 教材タイトル type = create-contentの場合、必須
              maxLength: 60
            description:
              type: string
              description: 教材説明
              maxLength: 1000
            additional_fields:
              type: object
              description: 教材ごとに必要となる追加情報
              properties:
                downloadable:
                  type: integer
                  description: PDFダウンロード・印刷の許可フラグ 1:Yes 0:No
                  default: 1
                  enum:
                    - 0
                    - 1
                language:
                  type: string
                  description: 言語 ja:日本語 en:英語
                  default: ja
                  enum:
                    - ja
                    - en
                scroll:
                  type: string
                  description: ページ送り設定 page:ページ単位 vertical:縦スクロール horizontal:横スクロール
                  default: vertical
                  enum:
                    - page
                    - vertical
                    - horizontal
                no_change_scroll_mode:
                  type: integer
                  description: ページ送りモード固定フラグ 1:Yes 0:No
                  default: 0
                  enum:
                    - 0
                    - 1
                scroll_direction:
                  type: string
                  description: 横スクロール・ページ単位の進行方向 right:右方向 left:左方向
                  default: right
                  enum:
                    - right
                    - left
                use_highlight:
                  type: integer
                  description: ハイライト機能有効フラグ 1:Yes 0:No
                  default: 1
                  enum:
                    - 0
                    - 1
                tool_mode:
                  type: string
                  description: ツール初期設定 hand_tool:手のひら highlight:ハイライト brush:ペン none:設定しない
                  default: hand_tool
                  enum:
                    - hand_tool
                    - highlight
                    - brush
                    - none
        upload_file:
          type: array
          items:
            $ref: '#/components/schemas/UploadFile'
        thumbnail_file:
          type: array
          items:
            $ref: '#/components/schemas/ThumbnailFile'
      example:
        type: create-content
        payload:
          sco_type: content
          generator_type: SCORM
          parent_sco_code: sample
          insert_after: <last>
    UploadFile:
      type: object
      properties:
        extension:
          type: string
          description: 拡張子 zip:SCORM教材 pdf:PDF教材
          enum:
            - zip
            - pdf
        size:
          type: integer
          description: ファイルサイズ（バイト単位）
    ThumbnailFile:
      type: object
      properties:
        extension:
          type: string
          description: 拡張子
          enum:
            - jpg
            - jpeg
            - png
        size:
          type: integer
          description: ファイルサイズ(バイト単位)
    UploadFile_ThumbnailTo:
      type: object
      properties:
        method:
          type: string
          description: HTTPメソッド
          enum:
            - POST
        url:
          type: string
          description: アップロード先URL
        headers:
          type: object
          description: HTTPヘッダ
          properties:
            Content-Type:
              type: string
              enum:
                - multipart/form-data
        fields:
          type: object
          description: フォームデータ
          properties:
            Content-Type:
              type: string
              enum:
                - multipart/form-data
            X-Amz-Security-Token:
              type: string
              description: AWSセキュリティトークン
            key:
              type: string
              description: オブジェクトキー
            X-Amz-Credential:
              type: string
              description: AWS認証情報
            X-Amz-Algorithm:
              type: string
              description: AWS署名アルゴリズム
            X-Amz-Date:
              type: string
              description: URL発行日時（AWS署名日付）
            Policy:
              type: string
              description: ポリシー
            X-Amz-Signature:
              type: string
              description: AWS署名
        expires_at:
          type: string
          format: date-time
          description: URL有効期限
    Payload:
      type: object
      properties:
        sco_code:
          type: string
          description: 教材コード
        upload_file_to:
          $ref: '#/components/schemas/UploadFile_ThumbnailTo'
        upload_thumbnail_to:
          $ref: '#/components/schemas/UploadFile_ThumbnailTo'
    JobResponse:
      type: object
      properties:
        job_id:
          type: integer
          description: ジョブID
        type:
          type: string
          description: ジョブ種別
          enum:
            - create-content
            - update-content
        status:
          type: string
          description: ジョブステータス
          enum:
            - waiting
            - in progress
            - complete
            - failed
        payload:
          $ref: '#/components/schemas/Payload'
    Group_for_result:
      type: object
      properties:
        id:
          type: integer
          description: グループ内部ID
        name:
          type: string
          description: グループ名
    Scoringhistory_for_result:
      type: object
      properties:
        user_id:
          type: integer
          description: 操作者の内部ID
        user_login:
          type: string
          description: 操作者のログインID
        action_type:
          type: string
          description: 操作種別
        flow_step_type:
          type: string
          description: 採点フローのフェーズ種別
        flow_step_name:
          type: string
          description: 採点フローのステップ名
        updated_flow_step_type:
          type: string
          description: 採点フローのフェーズ種別
        updated_flow_step_name:
          type: string
          description: 採点フローのステップ名
        comment:
          type: string
          description: 操作時のコメント
        action_date:
          type: string
          description: 操作日時
          format: date-time
    ResultBase:
      type: object
      properties:
        result_id:
          type: integer
          description: 成績ID
        user_id:
          type: integer
          description: ユーザー内部ID
        login:
          type: string
          description: ログインID
        name:
          type: string
          description: 名前
        sco_id:
          type: string
          description: 教材内部ID
        sco_code:
          type: string
          description: コンテンツコード
        title:
          type: string
          description: タイトル
        score:
          type: integer
          description: 得点
        lesson_status:
          type: string
          description: 学習状況
        lesson_status_label:
          type: string
          description: 学習状況ラベル
        entry_date:
          type: string
          description: 回答開始日時
          format: date-time
        updated_date:
          type: string
          description: 成績更新日時
          format: date-time
        duration:
          type: integer
          description: トータル回答時間
        session_time:
          type: integer
          description: 所要時間
        start_date:
          type: string
          description: 回答開始日時
          format: date-time
        finish_date:
          type: string
          description: 回答完了日時
          format: date-time
        kicked_at:
          type: string
          description: 踏り出された日時
          format: date-time
        included:
          type: integer
          description: '学習画面での進捗に含めるか 1: 含める  0: 含めない'
          enum:
            - 0
            - 1
    ResultList:
      allOf:
        - $ref: '#/components/schemas/ResultBase'
        - type: object
          properties:
            is_active:
              type: integer
              description: 評価対象
    AuthorList:
      type: object
      required:
        - results
        - meta
      properties:
        results:
          type: array
          description: 関係者一覧
          items:
            type: object
            properties:
              author_id:
                type: integer
                description: 関係者内部ID
              author_uid:
                type: string
                description: 識別コード
              author_types:
                type: array
                description: 種別一覧
                items:
                  type: string
                  enum:
                    - lecturer
                    - organizer
                    - passers
              author_name:
                type: string
                description: 名称
              author_summary:
                type: string
                description: 講師概要
              organizer_summary:
                type: string
                description: 主催者概要
              passers_summary:
                type: string
                description: 合格者概要
              author_description:
                type: string
                description: 講師詳細
              organizer_description:
                type: string
                description: 主催者詳細
              passers_description:
                type: string
                description: 合格者詳細
              author_ratio:
                type: integer
                description: 分配率
                minimum: 0
                maximum: 100
              entry_date:
                type: string
                description: 登録日時
                format: date-time
              user:
                type: object
                description: 学習者情報
                properties:
                  id:
                    type: integer
                    description: ユーザー内部ID
                  login:
                    type: string
                    description: ログインID
                  name:
                    type: string
                    description: 学習者名
        meta:
          type: object
          description: メタ情報
          properties:
            total:
              type: integer
              description: 取得数
            limit:
              type: integer
              description: 取得上限数
            offset:
              type: integer
              description: 取得開始位置
    TrainingReservationList:
      type: object
      description: 予約履歴一覧
      properties:
        results:
          type: array
          description: 予約履歴詳細
          items:
            type: object
            description: 予約履歴詳細
            properties:
              reservation_no:
                type: string
                description: 予約ID
              reservation_status:
                type: string
                description: 状態
                enum:
                  - waiting_approval
                  - approval
                  - disapproval
                  - cancel
              reservation_at:
                type: string
                description: 予約日
              canceled_at:
                type: string
                description: キャンセル日
              attendance_at:
                type: string
                description: 出席日
              created_at:
                type: string
                description: 作成日
              updated_at:
                type: string
                description: 更新日
              reservation_user:
                type: object
                description: 購入者情報
                properties:
                  user_id:
                    type: integer
                    description: ユーザー内部ID
                  user_name:
                    type: string
                    description: ユーザー名
                  user_login:
                    type: string
                    description: ログインID
                  user_email:
                    type: string
                    description: メールアドレス
              reserved_training:
                type: object
                description: 予約した研修情報
                properties:
                  training_code:
                    type: string
                    description: 研修コード
                  training_title:
                    type: string
                    description: 研修タイトル
                  stock_name:
                    type: string
                    description: 期間名称
                  duration_end_date:
                    type: string
                    description: 期日指定
                  duration_num:
                    type: integer
                    description: 予約後日数
                  duration_unit:
                    type: string
                    description: 予約後の日付単位(日間 = D, 週間 = W, か月間 = M, 年間 = Y)
                    enum:
                      - D
                      - W
                      - M
                      - Y
                  ticket_no:
                    type: string
                    description: チケット番号
                  attendance_status:
                    type: string
                    description: 出席ステータス
                    enum:
                      - not_accepted
                      - attended
                      - absence
        meta:
          $ref: '#/components/schemas/Meta'
    PaymentList:
      type: object
      description: 決済履歴一覧
      properties:
        results:
          type: array
          description: 決済履歴詳細
          items:
            type: object
            description: 決済履歴詳細
            properties:
              payment_id:
                type: integer
                description: 決済内部ID
              payment_no:
                type: string
                description: 決済番号
              payment_status:
                type: string
                description: 状態
              payment_method:
                type: string
                description: 決済方法
              payment_price:
                type: integer
                description: 金額
              payment_transaction_fee:
                type: integer
                description: 決済手数料
              paid_at:
                type: string
                description: 購入日
              canceled_at:
                type: string
                description: キャンセル日
              created_at:
                type: string
                description: 作成日
              updated_at:
                type: string
                description: 更新日
              payment_purchases:
                type: array
                description: 購入リスト
                items:
                  type: object
                  description: 購入詳細
                  properties:
                    purchase_id:
                      type: integer
                      description: 購入内部ID
                    product_code:
                      type: string
                      description: 商品コード
                    product_type:
                      type: string
                      description: 商品タイプ
                    product_title:
                      type: string
                      description: 商品名
                    duration_pirce:
                      type: integer
                      description: 価格
                    duration_start:
                      type: string
                      description: 開始日時
                      format: date-time
                    duration_close:
                      type: string
                      description: 終了日時
                      format: date-time
                    purchase_amount:
                      type: integer
                      description: 個数
                    purchase_price:
                      type: integer
                      description: 購入金額
                    coupon:
                      type: object
                      description: クーポン
                      properties:
                        discount_code:
                          type: string
                          description: 割引コード
                        discount_name:
                          type: string
                          description: 名称
                        discount_rate:
                          type: integer
                          description: 割引率
                    tickets:
                      type: array
                      description: チケット一覧
                      items:
                        type: string
                        description: チケット詳細
                    authors:
                      type: array
                      description: 関係者一覧
                      items:
                        type: object
                        description: 関係者詳細
                        properties:
                          author_id:
                            type: integer
                            description: 関係者内部ID
                          author_uid:
                            type: string
                            description: 識別コード
                          author_name:
                            type: string
                            description: 関係者名
                          profit_rate:
                            type: integer
                            description: 利率
              payment_user:
                type: object
                description: 購入者情報
                properties:
                  user_id:
                    type: integer
                    description: ユーザー内部ID
                  user_name:
                    type: string
                    description: ユーザー名
                  user_login:
                    type: string
                    description: ログインID
                  user_email:
                    type: string
                    description: メールアドレス
              payment_contact:
                type: object
                description: 連絡先情報
                properties:
                  contact_username:
                    type: string
                    description: 氏名
                  contact_company:
                    type: string
                    description: 会社名
                  contact_tel:
                    type: string
                    description: 連絡先情報
                  contact_zip:
                    type: string
                    description: 郵便番号
                  contact_prefectures:
                    type: string
                    description: 都道府県
                  contact_city:
                    type: string
                    description: 市町村区
                  contact_addr1:
                    type: string
                    description: 住所1
                  contact_addr2:
                    type: string
                    description: 住所2
              comment:
                type: string
                description: 備考
        meta:
          $ref: '#/components/schemas/Meta'
    AuthorResult:
      type: object
      required:
        - result
      properties:
        result:
          type: object
          description: 関係者
          properties:
            author_id:
              type: integer
              description: 関係者内部ID
            author_uid:
              type: string
              description: 識別コード
            author_types:
              type: array
              description: 種別一覧
              items:
                type: string
                enum:
                  - lecturer
                  - organizer
                  - passers
            author_name:
              type: string
              description: 名称
            author_summary:
              type: string
              description: 講師概要
            organizer_summary:
              type: string
              description: 主催者概要
            passers_summary:
              type: string
              description: 合格者概要
            author_description:
              type: string
              description: 講師詳細
            organizer_description:
              type: string
              description: 主催者詳細
            passers_description:
              type: string
              description: 合格者詳細
              author_ratio:
                type: integer
                description: 分配率
                minimum: 0
                maximum: 100
              entry_date:
                type: string
                description: 登録日時
              user:
                type: object
                description: 学習者情報
                properties:
                  id:
                    type: integer
                    description: ユーザー内部ID
                  login:
                    type: string
                    description: ログインID
                  name:
                    type: string
                    description: 学習者名
    ResultDetail:
      type: object
      required:
        - results
        - meta
      properties:
        results:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/ResultBase'
              - type: object
                required:
                  - groups
                properties:
                  groups:
                    type: array
                    description: 所属グループ
                    items:
                      $ref: '#/components/schemas/Group_for_result'
        meta:
          $ref: '#/components/schemas/Meta'
    evaluation_result:
      type: array
      description: 評価結果
      items:
        type: object
        properties:
          setting_name:
            type: string
            description: 評価設定名称
          section_tags:
            type: array
            description: タグ種別（セクションタグ）
            items:
              type: object
              properties:
                tag_name:
                  type: string
                  description: タグ名称
                max_score:
                  type: string
                  description: タグ別満点
                score:
                  type: string
                  description: タグ別得点
                evaluation:
                  type: string
                  description: タグ別評価
          question_tags:
            type: array
            description: タグ種別（設問タグ）
            items:
              type: object
              properties:
                tag_name:
                  type: string
                  description: タグ名称
                max_score:
                  type: string
                  description: タグ別満点
                score:
                  type: string
                  description: タグ別得点
                evaluation:
                  type: string
                  description: タグ別評価
          scoring_history:
            type: array
            description: 採点履歴
            items:
              $ref: '#/components/schemas/Scoringhistory_for_result_v2'
            example: []
    scorer:
      type: object
      properties:
        scorer_user_id:
          type: integer
          description: 採点者内部ID
        scorer_user_login:
          type: string
          description: 採点者ログインID
    CheckResultDetails:
      type: array
      items:
        type: object
        properties:
          check_type:
            type: string
            description: チェック項目名
            enum:
              - speed
              - sound
          check_action:
            type: string
            description: チェック結果による挙動
            enum:
              - allow
              - forbidden
          check_condition:
            type: string
            description: チェック条件 音声の場合null
          check_result:
            type: string
            description: チェック結果 音声の場合null
          check_ok:
            type: boolean
            description: 結果
          entry_date:
            type: string
            description: チェック実行日時　受講開始日時と共通
            format: date-time
    LoginCheckResult:
      type: object
      properties:
        user_os:
          type: string
          description: OS名
        user_browser:
          type: string
          description: ブラウザ名
        user_agent:
          type: string
          description: ユーザーエージェント
        check_ok:
          type: boolean
          description: 結果
        entry_date:
          type: string
          description: チェック実行日時　受講開始日時と共通
          format: date-time
    RubricResult:
      type: object
      properties:
        perspective:
          type: string
          description: 評価の観点名
        level:
          type: string
          description: 評価レベル名
        score:
          type: integer
          description: 得点
    detail_n:
      type: object
      properties:
        section_no:
          type: string
        question_no:
          type: string
        choice_no:
          type: array
          items:
            type: string
            pattern: '^[a-zA-Z0-9._-]+$'
          example: choice-1.0_a
        type:
          type: string
        student_responce:
          type: string
        correct_responce:
          type: array
          items:
            $ref: '#/components/schemas/CorrectResponce'
        result:
          type: string
        duration:
          type: integer
        section_tag:
          type: array
          items:
            type: string
        item_tag:
          type: array
          items:
            type: string
        rubric_result:
          type: array
          description: ルーブリック観点毎の結果
          items:
            $ref: '#/components/schemas/RubricResult'
    detail_n_advancedetail:
      type: object
      properties:
        section_no:
          type: string
        question_no:
          type: string
        choice_no:
          type: array
          items:
            type: string
            pattern: '^[a-zA-Z0-9._-]+$'
          example: choice-1.0_a
        type:
          type: string
        student_response:
          type: string
          description: 解答者の回答内容
        correct_responses:
          type: array
          items:
            $ref: '#/components/schemas/CorrectResponce'
        result:
          type: string
          description: 正誤
        latency:
          type: string
          description: 設問の回答時間
        section_tag:
          description: セクションタグ
          type: array
          items:
            type: string
        item_tag:
          description: 設問タグ
          type: array
          items:
            type: string
        rubric_result:
          type: array
          description: ルーブリック観点毎の結果
          items:
            $ref: '#/components/schemas/RubricResult'
    ErrorResponse:
      required:
        - error
      type: object
      properties:
        error:
          type: string
          description: エラー種別
        error_description:
          type: string
          description: エラー詳細
    ErrorResponse_for_ResultAdvanceDetail:
      type: object
      required:
        - error
        - error_description
        - error_items
      properties:
        error:
          type: string
          description: エラー種別
        error_description:
          type: string
          description: エラー詳細
        error_items:
          type: array
          items:
            type: object
            properties:
              index:
                type: integer
                description: エラー対象の配列インデックス
              error_details:
                type: array
                items:
                  type: string
                description: エラー詳細
    TokenRequestPost:
      type: object
      required:
        - grant_type
        - client_id
        - client_secret
      properties:
        client_id:
          type: string
          description: クライアントID（サードパーティーアプリ管理画面から確認）
        client_secret:
          type: string
          format: password
          description: シークレットキー（サードパーティーアプリ管理画面から確認）
        grant_type:
          type: string
          enum:
            - client_credentials
          description: グラントタイプ（`client_credentials`固定）
    ResultBaseResponse:
      type: object
      properties:
        result:
          type: object
          properties:
            result_id:
              type: string
              example: '123'
              description: 成績ID
            user_id:
              type: integer
              description: ユーザー内部ID
            login:
              type: string
              description: ログインID
            name:
              type: string
              description: 名前
            sco_id:
              type: string
              description: 教材内部ID
            sco_code:
              type: string
              description: コンテンツコード
            title:
              type: string
              description: タイトル
            score:
              type: string
              description: 得点
            lesson_status:
              type: string
              description: 学習状況
            lesson_status_label:
              type: string
              description: 学習状況ラベル
            entry_date:
              type: string
              format: date-time
              description: 回答開始日時
            updated_date:
              type: string
              format: date-time
              description: 成績更新日時
            duration:
              type: string
              description: トータル回答時間
            session_time:
              type: string
              description: 所要時間
            start_date:
              type: string
              format: date-time
              nullable: true
              description: 回答開始日時
            finish_date:
              type: string
              format: date-time
              nullable: true
              description: 回答完了日時
            kicked_at:
              type: string
              format: date-time
              nullable: true
              description: 踏り出された日時
            included:
              type: integer
              description: '学習画面での進捗に含めるか 1: 含める  0: 含めない'
              enum:
                - 0
                - 1
            result_table_detail:
              type: string
              description: 成績表の詳細情報
            groups:
              type: array
              description: 所属グループ
              items:
                $ref: '#/components/schemas/Group_for_result'
            scorer:
              $ref: '#/components/schemas/scorer'
            evaluation_result:
              $ref: '#/components/schemas/evaluation_result'
            scoring_history:
              type: array
              description: 採点履歴
              items:
                $ref: '#/components/schemas/Scoringhistory_for_result_v2'
            rubric_result:
              type: array
              description: ルーブリック観点毎の結果
              items:
                $ref: '#/components/schemas/RubricResult'
        details:
          type: array
          items:
            $ref: '#/components/schemas/detail_n'
    CorrectResponce:
      type: object
      properties:
        pattern:
          type: string
          description: 正解パターン
      required:
        - pattern
    Scoringhistory_for_result_v2:
      type: object
      properties:
        user_id:
          type: integer
          description: 操作者の内部ID
        user_login:
          type: string
          description: 操作者のログインID
        action_type:
          type: string
          description: 操作種別
        flow_step_type:
          type: string
          nullable: true
          description: 採点フローのフェーズ種別
        flow_step_name:
          type: string
          nullable: true
          description: 採点フローのステップ名
        updated_flow_step_type:
          type: string
          nullable: true
          description: 採点フローのフェーズ種別（更新後）
        updated_flow_step_name:
          type: string
          nullable: true
          description: 採点フローのステップ名（更新後）
        comment:
          type: string
          nullable: true
          description: 操作時のコメント
        action_date:
          type: string
          format: date-time
          description: 操作日時
      example: []
      required:
        - user_id
        - user_login
        - action_type
        - flow_step_type
        - flow_step_name
        - updated_flow_step_type
        - updated_flow_step_name
        - comment
        - action_date
    ResultAdvanceDetailResponse:
      type: object
      properties:
        result:
          type: array
          items:
            type: object
            properties:
              user_id:
                type: integer
                description: ユーザー内部ID
              login:
                type: string
                description: ログインID
              name:
                type: string
                description: 名前
              error:
                type: string
                description: 指定したユーザが見つからないときだけ、not foundが出力されます
                enum:
                  - not found.
              sco_results:
                type: array
                items:
                  type: object
                  properties:
                    sco_id:
                      type: string
                      description: 教材内部ID
                    sco_code:
                      type: string
                      description: コンテンツコード
                    title:
                      type: string
                      description: タイトル
                    keyword:
                      type: string
                      description: 検索キーワード
                    result_id:
                      type: integer
                      description: 成績内部ID
                    score:
                      type: integer
                      description: 点数
                    lesson_status:
                      type: string
                      description: 学習状況
                    lesson_status_label:
                      type: string
                      description: 学習状況名
                    entry_date:
                      type: string
                      format: date-time
                      description: 受験開始日時
                    updated_date:
                      type: string
                      description: 成績更新日時
                      format: date-time
                    duration:
                      type: integer
                      description: トータル回答時間
                    session_time:
                      type: integer
                      description: 所要時間
                    start_date:
                      type: string
                      format: date-time
                      description: 学習開始日時
                    finish_date:
                      type: string
                      format: date-time
                      description: 提出日時
                    kicked_at:
                      type: string
                      format: date-time
                      nullable: true
                      description: 踏り出された日時
                    included:
                      type: integer
                      description: '学習画面での進捗に含めるか 1: 含める  0: 含めない'
                      enum:
                        - 0
                        - 1
                    result_table_detail:
                      type: string
                      description: 成績表の詳細情報
                    login_check_result:
                      $ref: '#/components/schemas/LoginCheckResult'
                    check_result_details:
                      $ref: '#/components/schemas/CheckResultDetails'
                    details:
                      type: array
                      items:
                        $ref: '#/components/schemas/detail_n_advancedetail'
                    scorer:
                      $ref: '#/components/schemas/scorer'
                    evaluation_result:
                      $ref: '#/components/schemas/evaluation_result'
                    scoring_history:
                      type: array
                      description: 採点履歴
                      items:
                        $ref: '#/components/schemas/Scoringhistory_for_result_v2'
                    rubric_result:
                      type: array
                      description: ルーブリック観点毎の結果
                      items:
                        $ref: '#/components/schemas/RubricResult'
                    error:
                      type: string
                      description: 指定した教材が見つからないときだけ、not foundが出力されます
                      enum:
                        - not found.
    UpdateGroupRequest1:
      type: object
      required:
        - name
        - group_code
      properties:
        name:
          type: string
          description: グループ名　※同階層重複不可
          example: 3年生
        group_code:
          type: string
          description: グループコード
          example: g155
        new_group_code:
          type: string
          description: 新グループコード　※空文字列を指定した場合はデフォルト値に設定される。パラメータが指定されていない場合は更新しない
          example: g15
        user_limit:
          type: integer
          description: 登録上限数　※0を指定すると上限なし。パラメータが指定されていない場合は更新しない
          example: 100

    UpdateGroupRequest2:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: グループ名　※同階層重複不可
          example: 3年生
        group_code:
          type: string
          description: グループコード　※group_idが0の場合のみ使用する
          example: g155
        new_group_code:
          type: string
          description: 新グループコード　※空文字列を指定した場合はデフォルト値に設定される。パラメータが指定されていない場合は更新しない
          example: g15
        user_limit:
          type: integer
          description: 登録上限数　※0を指定すると上限なし。パラメータが指定されていない場合は更新しない
          example: 100

    UpdateGroupResponse:
      type: object
      properties:
        result:
          type: object
          description: 更新結果
          properties:
            group_id:
              type: integer
              description: グループ内部ID
            group_code:
              type: string
              description: グループコード
            parent_id:
              type: integer
              description: 親グループ内部ID
            parent_code:
              type: string
              description: 親グループコード
            name:
              type: string
              description: グループ名
            user_limit:
              type: integer
              description: アカウント登録数
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /v1/oauth/token
          scopes:
            result.read: '成績データの読み取り'
            sco.read: 'コンテンツデータの読み取り'
            sco.delete: 'コンテンツの削除'
            sco.assign: 'コンテンツの割り当て'
            user.read: 'ユーザー情報の読み取り'
            user.create: 'ユーザーの作成'
            user.update: 'ユーザーの更新'
            user.delete: 'ユーザーの削除'
            user.group: 'ユーザーのグループ割り当て'
            user.merge: 'ユーザーの統合'
            group.read: 'グループ情報の読み取り'
            group.create: 'グループの作成'
            group.update: 'グループの更新'
            group.delete: 'グループの削除'
            group.contents: 'グループコンテンツの操作'
            author.read: '関係者情報の読み取り'
            author.create: '関係者の作成'
            author.update: '関係者の更新'
            author.delete: '関係者の削除'
            payment.read: '決済情報の読み取り'
            accesslist.read: 'IP制限リストの読み取り'
            accesslist.create: 'IP制限リストの作成'
            accesslist.update: 'IP制限リストの更新'
            accesslist.delete: 'IP制限リストの削除'
            accesspermit.read: 'アクセス許可の読み取り'
            accesspermit.create: 'アクセス許可の追加'
            accesspermit.update: 'アクセス許可の更新'
            accesspermit.delete: 'アクセス許可の削除'
            training_reservation.read: '研修予約の読み取り'
