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

# 日程設定更新

> 個別相談・個別予約タイプのイベントの日程設定（画面の「日程設定」）を更新します（セミナー・説明会タイプでは `400`（`invalid_event_type`））。指定したフィールドのみを更新する部分更新です。リクエストに含めなかったフィールドは既存の値が維持されます。取得応答をそのまま送り返すこともできます（値が変わらない項目は検証されません）。

- `members`・`day_of_week_schedules`・`member_priorities` は指定時にすべて置き換え（空配列はすべて削除）、`specified_date_schedules` は本日以降の設定だけを置き換えます（過去の設定は保持）
- `members` の担当者IDは `GET /event-members` で取得します。参加方式が `one`（担当者1名のみ参加）のときは1件以下です
- `member_priorities` は更新後の参加方式が `one_of_them` で割り当て順が `priority` のときだけ保存されます。それ以外の状態への更新で参加方式・割り当て順・`members`・`member_priorities` のいずれかを指定すると、優先順位はすべて削除されます。グループの担当者は更新後の `members` に含まれている必要があり、全グループを通して重複できません
- 時間は「HH:mm」（または「HH:mm:00」）で 00:00〜24:00 の15分刻みです。応答では「HH:mm:ss」になります
- 日程の表示期間を変更するときは、更新後の状態で `period` なら期間の開始日・終了日、`auto` ならいつから・何日分を表示するかが必要です
- 取得応答が null の項目は null のまま送り返せますが、値が設定されている項目を null にはできません（`calendar_period_date_from`・`calendar_period_date_to` を除く）


`PATCH`

```
https://api.utage-system.com/v1/events/{project_id}/calendar
```


## OpenAPI

````yaml PATCH /events/{project_id}/calendar
openapi: 3.0.3
info:
  title: UTAGE API
  description: >
    UTAGEのパブリックAPIです。ファネル、メール・LINE配信、会員サイト、イベント・予約、決済、メディアなどのリソースをプログラムから操作できます。


    ## 認証

    すべてのリクエストにAPIキーによるBearer認証が必要です（要素タイプ・LINEメッセージタイプ・配信条件タイプの参照エンドポイントを除く）。


    ```

    Authorization: Bearer {api_key}

    ```


    APIキーはUTAGE管理画面から発行できます。APIキーが未指定・無効・無効化済みの場合、またはアカウントが利用停止中の場合は `401
    Unauthorized`（`error.code` は `unauthorized`）が返されます。


    ## レート制限

    リクエスト数には以下の制限があります。表の値は既定値で、契約内容により異なる場合があります。


    | 分間上限 | 日間上限 |

    |----------|----------|

    | 60リクエスト/分（APIキー単位・暦の1分ごと） | 10,000リクエスト/日（アカウント単位・暦日ごと） |


    レスポンスヘッダーで分間上限の窓が終わる時刻を確認できます（分間の残数と日間の残数はヘッダーに含まれません）。


    | ヘッダー | 説明 |

    |----------|------|

    | X-RateLimit-Limit | 接続元IP単位でAPI全体に掛かる制限の上限値（APIキー単位の分間上限ではありません） |

    | X-RateLimit-Remaining | 接続元IP単位の制限の残りリクエスト数（分間上限の残数ではありません） |

    | X-RateLimit-Reset | APIキー単位の分間上限で、現在の1分間の窓が終わる（次の分が始まる）UNIXタイムスタンプ |


    上限を超えた場合は `429 Too Many Requests`（`error.code` は
    `rate_limit_exceeded`）が返されます。日間上限の超過時は `X-RateLimit-Reset`
    が翌日0:00になります（`X-RateLimit-Limit` / `X-RateLimit-Remaining`
    は超過時も接続元IP単位の値です）。認証不要のエンドポイントと読者作成（`POST
    /accounts/{account_id}/scenarios/{scenario_id}/readers`、`POST
    /accounts/{account_id}/line/friends/{friend_id}/readers`）はレート制限の対象外で、`X-RateLimit-Reset`
    ヘッダーは付きません。


    データを作成するAPIには、これとは別にAPI経由の作成件数の上限があります。超過時は `429` で `total_limit_exceeded` /
    `hourly_limit_exceeded` / `monthly_limit_exceeded`
    が返され、`details.resource_type` に対象のリソース種別が含まれます。


    ## エラーレスポンス

    エラー時は以下の形式で返されます。


    ```json

    {
      "error": {
        "code": "error_code",
        "message": "エラーメッセージ"
      }
    }

    ```


    エラーの種類によっては `error.details`
    に補足情報（バリデーションの項目別エラー、`retry_after`、`resource_type` など）が含まれます。
  version: '1.0'
  contact:
    name: UTAGE サポート
servers:
  - url: https://api.utage-system.com/v1
    description: UTAGE API
security:
  - BearerAuth: []
tags:
  - name: ファネル
    description: ファネルの作成・更新・一覧取得
  - name: ステップ
    description: ファネル内のステップの作成・更新・並び替え・一覧取得
  - name: ページ
    description: ステップ内のページの作成・更新・取得・削除・一覧取得
  - name: 配信アカウント
    description: 配信アカウントの作成・一覧取得
  - name: シナリオ
    description: シナリオの作成・一覧取得
  - name: メディア
    description: 動画・音声・通常メディアの一覧取得・アップロード・名称変更
  - name: 要素タイプ
    description: ファネルページ・レッスン・HTMLメールの要素タイプ定義、LINEメッセージタイプ・配信条件タイプの取得（認証不要）
  - name: ファネル統計
    description: ファネルの集計データ・登録者・登録経路の取得
  - name: 配信メッセージ
    description: 配信メッセージの作成・更新・テスト送信・配信統計、置き換え文字の取得
  - name: 読者
    description: 読者の作成・更新・取得、ラベル・配信履歴・開封/クリック履歴の取得
  - name: LINE
    description: LINE友だち・カスタム送信者・1対1チャット・テンプレート・テンプレートグループ・リッチメニュー・自動応答の操作
  - name: ラベル・共通読者・登録経路
    description: ラベル・共通読者・アクション・登録経路の操作
  - name: 登録経路
    description: ファネルの登録経路・登録経路グループの作成・取得・更新・削除
  - name: ファネルアクション
    description: ファネルアクション（管理画面「アクション設定」）の作成・取得・更新・削除とアクショングループの一覧取得
  - name: 登録フォーム・読者項目
    description: 読者項目と登録フォーム項目の作成・更新・取得・削除・並び替え
  - name: 連携
    description: Googleスプレッドシート連携アカウント・広告連携設定の一覧取得
  - name: 会員サイト
    description: 会員サイトの一覧取得・作成・取得・更新・削除・並び替え
  - name: コース
    description: 会員サイト配下のコースの一覧取得・作成・取得・更新・削除・並び替え
  - name: コースグループ
    description: コースグループの一覧取得・作成・取得・更新・削除
  - name: バンドル
    description: バンドル（受講生に開放するコース・コミュニティグループのセット）の一覧取得・作成・取得・更新・削除・並び替え
  - name: レッスン
    description: 会員サイトのレッスン・レッスングループの操作と、レッスンごと受講状況・受講完了者の取得
  - name: 受講生
    description: 会員サイトの受講生の作成・更新・取得・削除、受講状況・操作履歴の取得、コース・バンドルの登録受講生一覧
  - name: 登録コース・コミュニティ
    description: 受講生のバンドル・単一コース・コミュニティグループへの登録の追加・更新・解除・一覧取得
  - name: コミュニティグループ
    description: 会員サイトのコミュニティグループの一覧取得
  - name: イベント
    description: イベント（セミナー・説明会、個別相談・個別予約）の一覧取得・作成・取得・更新・削除
  - name: 日程
    description: イベントの日程の一覧取得・作成・取得・更新・削除
  - name: 日程設定
    description: 個別相談・個別予約タイプのイベントの日程設定（開催する曜日・時間帯・特定日の開催設定・担当者・日程の表示期間）の取得・更新
  - name: 申込フォーム・申込者項目
    description: イベントの申込フォームの基本項目・申込者項目の取得・更新
  - name: 申込者
    description: イベントの申込者の一覧取得・詳細取得・更新
  - name: イベントグループ
    description: イベントグループ（イベント一覧の「グループ管理」）の作成・更新・一覧取得・削除
  - name: 担当者
    description: 担当者（個別相談・個別予約の「担当者設定」）の作成・更新・一覧取得・削除と連携用リンクの発行・削除
  - name: 商品
    description: 商品の一覧取得・作成・取得・更新・削除・並び替え
  - name: 商品グループ
    description: 商品グループの一覧取得・作成・取得・更新・削除
  - name: 商品詳細
    description: 商品配下の商品詳細（価格・支払方法・決済代行会社・支払回数・購入後の動作・通知設定）の作成・更新・並び替え・取得・削除
  - name: 売上
    description: 売上の一覧・詳細取得、領収書・請求書設定の更新、銀行振込の入金反映、削除、月別・日別売上集計
paths:
  /events/{project_id}/calendar:
    patch:
      tags:
        - 日程設定
      summary: 日程設定更新
      description: >
        個別相談・個別予約タイプのイベントの日程設定（画面の「日程設定」）を更新します（セミナー・説明会タイプでは
        `400`（`invalid_event_type`））。指定したフィールドのみを更新する部分更新です。リクエストに含めなかったフィールドは既存の値が維持されます。取得応答をそのまま送り返すこともできます（値が変わらない項目は検証されません）。


        - `members`・`day_of_week_schedules`・`member_priorities`
        は指定時にすべて置き換え（空配列はすべて削除）、`specified_date_schedules`
        は本日以降の設定だけを置き換えます（過去の設定は保持）

        - `members` の担当者IDは `GET /event-members` で取得します。参加方式が
        `one`（担当者1名のみ参加）のときは1件以下です

        - `member_priorities` は更新後の参加方式が `one_of_them` で割り当て順が `priority`
        のときだけ保存されます。それ以外の状態への更新で参加方式・割り当て順・`members`・`member_priorities`
        のいずれかを指定すると、優先順位はすべて削除されます。グループの担当者は更新後の `members`
        に含まれている必要があり、全グループを通して重複できません

        - 時間は「HH:mm」（または「HH:mm:00」）で 00:00〜24:00 の15分刻みです。応答では「HH:mm:ss」になります

        - 日程の表示期間を変更するときは、更新後の状態で `period` なら期間の開始日・終了日、`auto`
        ならいつから・何日分を表示するかが必要です

        - 取得応答が null の項目は null のまま送り返せますが、値が設定されている項目を null
        にはできません（`calendar_period_date_from`・`calendar_period_date_to` を除く）
      operationId: updateEventCalendar
      parameters:
        - $ref: '#/components/parameters/EventProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventCalendarUpdateRequest'
      responses:
        '200':
          description: 更新後の日程設定
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/EventCalendar'
        '400':
          description: セミナー・説明会タイプのイベントを指定した場合（`invalid_event_type`）
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_event_type
                  message: セミナー・説明会タイプのイベントにはカレンダー設定がありません
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: >
            バリデーションエラー（`validation_error`）。`details`
            に項目ごとのメッセージが入ります（曜日・時間帯、特定日、優先順位の項目は
            `details.{配列名}.{配列位置}.{項目名}`）。指定した担当者が存在しない場合、優先順位に `members`
            に無い担当者を指定した場合、参加方式が `one` で担当者を2件以上指定した場合、値が設定されている項目を null
            にした場合、特定日に過去の日付を指定した場合もこのエラーになります。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: validation_error
                  message: 入力内容に誤りがあります
                  details:
                    members.0.id:
                      - 指定されたイベントメンバーが存在しません
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
components:
  parameters:
    EventProjectId:
      name: project_id
      in: path
      required: true
      description: イベントID
      schema:
        type: string
  schemas:
    EventCalendarUpdateRequest:
      type: object
      description: >
        指定した項目だけを更新します。取得応答の値をそのまま送り返した項目（値が変わらない項目）は検証されません。

        `members`・`day_of_week_schedules`・`member_priorities`
        は指定時にすべて置き換え（空配列はすべて削除）、`specified_date_schedules`
        は本日以降の設定だけを置き換えます（過去の設定は保持）。

        取得応答が null の項目は null のまま送り返せますが、値が設定されている項目を null
        にはできません（`calendar_period_date_from`・`calendar_period_date_to` を除く）。
      properties:
        duration:
          type: integer
          minimum: 1
          maximum: 32767
          nullable: true
          description: 所要時間（分）
        duration_before:
          type: integer
          minimum: 0
          maximum: 32767
          nullable: true
          description: 開催前の確保時間（分）
        duration_after:
          type: integer
          minimum: 0
          maximum: 32767
          nullable: true
          description: 開催後の確保時間（分）
        reserve_quota_interval:
          type: integer
          description: 予約枠の間隔（分）。0（自動。所要時間と同じ間隔）または 10〜1000
        capacity:
          type: integer
          minimum: 1
          maximum: 65535
          nullable: true
          description: 定員（同じ時間帯に受け付ける申込数）
        member_join_type:
          type: string
          enum:
            - one
            - one_of_them
          nullable: true
          description: >-
            参加方式。`one`（担当者1名のみ参加）/ `one_of_them`（担当者を提示し1名が参加）。`one` のときは
            `members` は1件以下
        members:
          type: array
          maxItems: 100
          description: 担当者（`GET /event-members` の担当者ID）。指定時はすべて置き換え、空配列で紐付けを解除
          items:
            type: object
            required:
              - id
            properties:
              id:
                type: string
                description: 担当者ID
        member_auto_assignment:
          type: boolean
          description: 自動割り当てを利用するかどうか
        member_assignment_type:
          type: string
          enum:
            - display_order
            - random
            - priority
          description: >-
            割り当て順。`display_order`（担当者設定の表示順）/ `random`（ランダム）/
            `priority`（優先順位を指定。`member_priorities` で順序を指定）
        member_priorities:
          type: array
          maxItems: 100
          description: >
            優先順位（配列の順が優先度）。更新後の参加方式が `one_of_them` で割り当て順が `priority`
            のときだけ保存され、それ以外の状態への更新では内容を見ずにすべて削除されます。

            各グループの担当者は `members`（更新後の担当者）に含まれている必要があり、全グループを通して重複できません。`members`
            にいてここに無い担当者は最後のグループの末尾に自動で加わります。

            省略時は既存の優先順位を保持します（`members` を同時に変更したときは更新後の担当者に合わせて整えます）。
          items:
            type: object
            required:
              - assignment_type
              - members
            properties:
              assignment_type:
                type: string
                enum:
                  - display_order
                  - random
                example: display_order
                description: グループ内の担当者の決め方。`display_order`（上から順）/ `random`（ランダム）
              members:
                type: array
                maxItems: 100
                description: グループに含む担当者
                items:
                  type: object
                  required:
                    - id
                  properties:
                    id:
                      type: string
                      description: 担当者ID
        use_member_profile:
          type: boolean
          description: 申込時に担当者のプロフィールを表示するかどうか
        use_zoom:
          type: boolean
          nullable: true
          description: >-
            Zoom連携 / Google Meet連携を利用するかどうか（会議URLを自動で発行）。null
            は未設定のときだけ指定できます（取得応答の送り返し用）
        use_holiday:
          type: boolean
          nullable: true
          description: 祝日の開催。`true` は開催する。null は未設定のときだけ指定できます（取得応答の送り返し用）
        calendar_display_type:
          type: string
          enum:
            - auto
            - period
          nullable: true
          description: >-
            日程の表示期間。`auto`（自動で調整。`calendar_auto_from`・`calendar_auto_days` が必要）/
            `period`（期間を指定。`calendar_period_date_from`・`calendar_period_date_to`
            が必要）
        calendar_auto_from:
          type: integer
          minimum: 1
          maximum: 32767
          nullable: true
          description: 日程の表示期間「自動で調整」のいつから（何時間後から表示するか）
        calendar_auto_days:
          type: integer
          minimum: 1
          maximum: 90
          nullable: true
          description: 日程の表示期間「自動で調整」の何日分を表示するか
        calendar_period_date_from:
          type: string
          nullable: true
          description: 日程の表示期間「期間を指定」の開始日（YYYY-MM-DD）
        calendar_period_date_to:
          type: string
          nullable: true
          description: 日程の表示期間「期間を指定」の終了日（YYYY-MM-DD）
        calendar_period_deadline:
          type: integer
          minimum: 1
          maximum: 32767
          nullable: true
          description: 予約締切（何時間前まで）
        day_of_week_schedules:
          type: array
          maxItems: 100
          description: >-
            開催する曜日・時間帯。同じ曜日を複数指定して複数の時間帯を設定できます（曜日・開始・終了がすべて同じ行は重複エラー）。指定時はすべて置き換え、空配列ですべて削除
          items:
            $ref: '#/components/schemas/EventCalendarDayOfWeekSchedule'
        use_specified_date_schedule:
          type: boolean
          description: 特定日の開催設定を使うかどうか
        specified_date_schedules:
          type: array
          maxItems: 1000
          description: 特定日の開催設定（本日以降の日付）。指定時は本日以降の設定だけを置き換え、空配列で本日以降の設定をすべて削除
          items:
            $ref: '#/components/schemas/EventCalendarSpecifiedDateSchedule'
    EventCalendar:
      type: object
      description: 個別相談・個別予約タイプのイベントの日程設定
      properties:
        duration:
          type: integer
          nullable: true
          description: 所要時間（分）
        duration_before:
          type: integer
          nullable: true
          description: 開催前の確保時間（分）
        duration_after:
          type: integer
          nullable: true
          description: 開催後の確保時間（分）
        reserve_quota_interval:
          type: integer
          nullable: true
          description: 予約枠の間隔（分）。0 は自動（所要時間と同じ間隔）
        capacity:
          type: integer
          nullable: true
          description: 定員（同じ時間帯に受け付ける申込数）
        member_join_type:
          type: string
          nullable: true
          description: 参加方式。`one`（担当者1名のみ参加）/ `one_of_them`（担当者を提示し1名が参加）。未設定のときは null
        members:
          type: array
          description: 担当者（削除済の担当者は除きます）
          items:
            $ref: '#/components/schemas/EventMemberSummary'
        member_auto_assignment:
          type: boolean
          description: 自動割り当てを利用するかどうか
        member_assignment_type:
          type: string
          nullable: true
          description: >-
            割り当て順（自動割り当てを利用しないときは申込フォームの表示順）。`display_order`（担当者設定の表示順）/
            `random`（ランダム）/ `priority`（優先順位を指定）
        member_priorities:
          type: array
          description: 優先順位（配列の順が優先度）。参加方式が「担当者を提示し1名が参加」で割り当て順が「優先順位を指定」のときだけ返し、それ以外は空配列
          items:
            $ref: '#/components/schemas/EventCalendarMemberPriority'
        use_member_profile:
          type: boolean
          description: 申込時に担当者のプロフィールを表示するかどうか
        use_zoom:
          type: boolean
          nullable: true
          description: Zoom連携 / Google Meet連携を利用するかどうか。未設定のときは null
        use_holiday:
          type: boolean
          nullable: true
          description: 祝日の開催。`true` は開催する。未設定のときは null
        calendar_display_type:
          type: string
          nullable: true
          description: 日程の表示期間。`auto`（自動で調整）/ `period`（期間を指定）。未設定のときは null
        calendar_auto_from:
          type: integer
          nullable: true
          description: 日程の表示期間「自動で調整」のいつから（何時間後から表示するか）
        calendar_auto_days:
          type: integer
          nullable: true
          description: 日程の表示期間「自動で調整」の何日分を表示するか
        calendar_period_date_from:
          type: string
          nullable: true
          description: 日程の表示期間「期間を指定」の開始日（Y-m-d）
        calendar_period_date_to:
          type: string
          nullable: true
          description: 日程の表示期間「期間を指定」の終了日（Y-m-d）
        calendar_period_deadline:
          type: integer
          nullable: true
          description: 予約締切（何時間前まで）
        day_of_week_schedules:
          type: array
          description: 開催する曜日・時間帯（曜日・開始時間の順）
          items:
            $ref: '#/components/schemas/EventCalendarDayOfWeekSchedule'
        use_specified_date_schedule:
          type: boolean
          description: 特定日の開催設定を使うかどうか
        specified_date_schedules:
          type: array
          description: 特定日の開催設定（本日以降の設定だけを日付・開始時間の順で返します）
          items:
            $ref: '#/components/schemas/EventCalendarSpecifiedDateSchedule'
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: エラーコード
            message:
              type: string
              description: エラーメッセージ
            details:
              type: object
              nullable: true
              description: >-
                エラーの補足情報（`retry_after` /
                `resource_type`、項目別のエラーメッセージ等）。エラー種別により含まれる場合があります。`422`
                の項目別エラーの値は通常はメッセージの配列ですが、会員サイト更新・コース更新の変更時だけ行う検証では文字列です。
    EventCalendarDayOfWeekSchedule:
      type: object
      description: 開催する曜日・時間帯の1件
      required:
        - day_of_week
        - time_from
        - time_to
      properties:
        day_of_week:
          type: integer
          minimum: 0
          maximum: 6
          description: 曜日（0 が日曜日、6 が土曜日）
        time_from:
          type: string
          description: 開始時間。応答は「HH:mm:ss」、指定時は「HH:mm」または「HH:mm:00」（00:00〜24:00 の15分刻み）
        time_to:
          type: string
          description: 終了時間（形式は `time_from` と同じ）。開始時間より後
    EventCalendarSpecifiedDateSchedule:
      type: object
      description: 特定日の開催設定の1件
      required:
        - specified_date
        - time_from
        - time_to
        - is_opened
      properties:
        specified_date:
          type: string
          description: 特定日（Y-m-d。指定時は本日以降の日付）
        time_from:
          type: string
          description: >-
            開始時間。応答は「HH:mm:ss」、指定時は「HH:mm」または「HH:mm:00」（00:00〜24:00
            の15分刻み。`is_opened` が `false` でも必須）
        time_to:
          type: string
          description: 終了時間（形式は `time_from` と同じ）。`is_opened` が `true` のときは開始時間より後
        is_opened:
          type: boolean
          description: その日を開催するかどうか。`true` は開催する、`false` は開催しない。同じ特定日の設定では同じ値にします
    EventMemberSummary:
      type: object
      description: 担当者（画面の「担当者設定」で管理する担当者）の要約
      properties:
        id:
          type: string
          description: 担当者ID
        name:
          type: string
          description: 担当者名
    EventCalendarMemberPriority:
      type: object
      description: 優先順位の1グループ
      properties:
        assignment_type:
          type: string
          enum:
            - display_order
            - random
          description: グループ内の担当者の決め方。`display_order`（上から順）/ `random`（ランダム）
        members:
          type: array
          description: グループに含む担当者
          items:
            $ref: '#/components/schemas/EventMemberSummary'
  responses:
    Unauthorized:
      description: 認証エラー。APIキーが未指定・無効・無効化済み、またはアカウントが利用停止中。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: unauthorized
              message: APIキーが無効です
    NotFound:
      description: 指定されたリソースが見つかりません（`error.code` は `not_found`。`message` は資源ごとに異なります）。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: not_found
              message: ページが見つかりません
    RateLimitExceeded:
      description: >-
        レート制限超過（`rate_limit_exceeded`）。`X-RateLimit-Reset`
        の時刻（`details.retry_after` がある場合はその日時）以降に再試行してください。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: rate_limit_exceeded
              message: レート制限を超過しました
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: APIキーをBearerトークンとして指定

````

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