openapi: 3.0.3
info:
  title: Live API 레퍼런스
  description: >-
    - **API 접근 토큰**: <a
    href="https://kollus-api.redocly.app/products/live/live_guide#%EC%9D%B8%EC%A6%9D-%EB%B0%A9%EC%8B%9D"
    target="_blank">Live API 가이드 - 인증 방식</a> 
     - **식별 키 정보**: <a href="https://docs.kollus.com/dev-guide/live/quickstart/key" target="_blank">인증 및 주요 키</a>
     - **공식 문서**: <a href="https://docs.kollus.com" target="_blank">Kollus Docs</a>
  contact:
    name: 문의
    email: tech_support@catenoid.net
  license:
    name: 서비스 이용 약관
    url: https://www.catenoid.net/ko/other/policy.php
  version: '1.0'
servers:
  - url: https://api-live-kr.kollus.com/api
tags:
  - name: 서비스 계약 정보 조회
  - name: 인코딩 프로파일 관리
  - name: 채널 관리
  - name: Creator 관리
  - name: 라이브 방송 관리
  - name: 편성 관리
  - name: 신디케이션 관리
  - name: 채팅 관리
  - name: 녹화 파일 전송처 관리
  - name: 녹화 파일 관리
  - name: 통계
    description: |-
      - **기준 시간대**: 모든 데이터는 **UTC** 기준입니다. 
      - **업데이트 시점**: 모든 데이터는 라이브 방송 종료 **약 30분 후**부터 확인 가능합니다.
paths:
  /v1/live/service-accounts/{service_account_key}/contracts:
    get:
      tags:
        - 서비스 계약 정보 조회
      summary: 서비스 계약 정보 조회
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         계약 상세 정보를 조회합니다.
      operationId: 67ce4976bc74feb04e1e46c84fbc6a57
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveContract'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/chatting-services:
    get:
      tags:
        - 서비스 계약 정보 조회
      summary: 채팅 서비스 계약 정보 조회
      description: 채팅 서비스 계약 상세 정보를 조회합니다.
      operationId: d142e2226e243388b38c165d745c62d4
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenChattingService'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/profile-groups:
    get:
      tags:
        - 인코딩 프로파일 관리
      summary: 인코딩 프로파일 그룹 목록 조회
      description: 시스템에 등록된 전체 인코딩 프로파일 그룹 목록을 조회합니다.
      operationId: fd1e5c0c1208df2b154a64f4d3250e36
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaProfileGroup'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live-api:console-control
  /v1/live/service-accounts/{service_account_key}/profile-groups/{live_media_profile_group_key}/profiles:
    get:
      tags:
        - 인코딩 프로파일 관리
      summary: 인코딩 프로파일 목록 조회
      description: 특정 프로파일 그룹 내에 포함된 전체 인코딩 프로파일 목록을 조회합니다.
      operationId: b665d2e469bccd943dcbb7caedc764dd
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: live_media_profile_group_key
          in: path
          description: 인코딩 프로파일 그룹 키
          required: true
          schema:
            type: string
        - name: video_screen_type
          in: query
          description: '비디오 화면 방향 (`landscape`: 가로, `portrait`: 세로)'
          schema:
            type: string
            default: landscape
            enum:
              - landscape
              - portrait
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaProfile'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/profile-groups/{live_media_profile_group_key}/profiles/{live_media_profile_id}/attach:
    put:
      tags:
        - 인코딩 프로파일 관리
      summary: 인코딩 프로파일 활성화
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         특정 인코딩 프로파일을 라이브 송출 시 사용할 수 있도록 활성화합니다. 서비스 계정당 최대 3개까지 동시에 활성화할 수 있습니다.
      operationId: 2a51ebe989ca19d215bf7acd63ac6d39
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: live_media_profile_group_key
          in: path
          description: 인코딩 프로파일 그룹 키
          required: true
          schema:
            type: string
        - name: live_media_profile_id
          in: path
          description: 인코딩 프로파일 ID
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: OK
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/profile-groups/{live_media_profile_group_key}/profiles/{live_media_profile_id}/detach:
    put:
      tags:
        - 인코딩 프로파일 관리
      summary: 인코딩 프로파일 비활성화
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         사용 중인 인코딩 프로파일을 비활성화합니다. 최소 1개의 프로파일은 활성화 상태를 유지해야 합니다.
      operationId: f6873b46af6ebf8e8a2151cc9b9ffb1b
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: live_media_profile_group_key
          in: path
          description: 인코딩 프로파일 그룹 키
          required: true
          schema:
            type: string
        - name: live_media_profile_id
          in: path
          description: 인코딩 프로파일 ID
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: OK
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels:
    get:
      tags:
        - 채널 관리
      summary: 채널 목록 조회
      description: 전체 채널 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      operationId: 8b09ca1457b528b823c66d698beba686
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: id_desc
            enum:
              - id_desc
              - id_asc
              - customer_code_desc
              - customer_code_asc
              - title_desc
              - title_asc
              - hided_at_desc
              - hided_at_asc
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: live_status
          in: query
          description: 채널 활성화 상태 필터링
          schema:
            type: string
            default: all
            enum:
              - all
              - 'on'
              - 'off'
        - name: shared_status
          in: query
          description: |-
            채널 공개 상태 필터링
            - `on`: 공개 채널만 조회
          schema:
            type: string
            default: all
            enum:
              - all
              - 'on'
              - 'off'
        - name: trashed
          in: query
          description: |-
            채널 숨김 상태 필터링
            - `1`: 숨겨진 채널만 조회
          schema:
            type: integer
            default: 0
            enum:
              - 0
              - 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    post:
      tags:
        - 채널 관리
      summary: 신규 채널 등록
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         새로운 라이브 채널을 등록합니다. 채널 설정에 관한 상세 내용은 <a href="https://docs.kollus.com/service-guide/live/setting/channel/#channel-detail-settings" target="_blank">채널 세부 설정</a> 문서를 참고하세요.
      operationId: 3cb7197bdc6e76c558343e27933dbb01
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - customer_code
                - concurrently_viewer_limit
                - is_shared
                - live_media_profile_group_key
              properties:
                kind:
                  description: |-
                    채널 타입 (라이브 유형)
                    - `0`: 라이브
                    - `1`: 편성 라이브
                    - `3`: 저지연 라이브
                  type: integer
                  enum:
                    - 0
                    - 1
                    - 3
                title:
                  description: 채널 이름
                  type: string
                customer_code:
                  description: 고객사 내부 관리용 식별 코드
                  type: string
                concurrently_viewer_limit:
                  description: '최대 동시 시청자 수 (`0`: 무제한)'
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 100
                    - 200
                    - 300
                    - 400
                    - 500
                    - 600
                    - 700
                    - 800
                    - 900
                    - 1000
                is_shared:
                  description: |-
                    채널 외부 공개 정책
                    - `0`: 비공개
                    - `1`: 공개
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                live_media_profile_group_key:
                  description: 인코딩 프로파일 그룹 키
                  type: string
                meta_title_pattern:
                  description: 메타 정보 제목 명명 규칙
                  type: string
                  default: '[CHANNEL_TITLE]-[BROADCAST_COUNTING]'
                meta_description:
                  description: 메타 정보 내용
                  type: string
                recording_file_policy:
                  description: |-
                    녹화 파일 저장 방식
                    - `0`: 미사용
                    - `1`: 자동 저장
                    - `3`: 자동 저장 + 수동 저장
                  type: integer
                  default: 1
                  enum:
                    - 0
                    - 1
                    - 3
                recording_file_segment_policy:
                  description: |-
                    녹화 파일 자동 저장 기준
                    - `1`: 파일 용량 기준 분할 저장 (4GB)
                    - `2`: 녹화 시간 기준 분할 저장
                  type: integer
                  default: 1
                  enum:
                    - 1
                    - 2
                recording_file_segment_by_duration:
                  description: '녹화 시간 기준 분할 저장 선택 시 자동 저장 시간 간격 (단위: 분)'
                  type: integer
                  default: 60
                  enum:
                    - 10
                    - 20
                    - 30
                    - 40
                    - 50
                    - 60
                    - 120
                recording_file_pattern:
                  description: 녹화 파일 명명 규칙
                  type: string
                  default: >-
                    [CHANNEL_KEY]-[CHANNEL_CUSTOMER_CODE]-[BROADCAST_KEY]-[BROADCAST_CREATING_DATE]-[RECORDING_START_DATETIME]-[RECORDING_TYPE]
                idle_screen_kind:
                  description: |-
                    대기 화면 유형
                    - `0`: 사전에 등록한 포스터 이미지 노출
                    - `1`: 최신 스냅샷 이미지 노출
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                media_player_policy:
                  description: |-
                    Kollus 보안 플레이어 사용 설정
                    - `0`: 자동 감지
                    - `1`: 강제 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_chatting_service:
                  description: |-
                    채팅 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                chatting_service_id:
                  description: 채팅 서비스 ID
                  type: integer
                chatting_info:
                  description: 채팅 관련 설정 (JSON 형식)
                  type: string
                division_delayed_minutes:
                  description: '네트워크 장애 시 세션 유지를 위한 유효 대기 시간 (단위: 분)'
                  type: integer
                  default: 3
                  enum:
                    - 0
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                use_duplicate_block:
                  description: |-
                    동일 계정 기반 중복 재생 차단 설정
                    - `0`: 미차단
                    - `1`: 차단
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_capture_block:
                  description: |-
                    Kollus 보안 플레이어 사용 시 녹화 및 캡처 차단 설정
                    - `0`: 미차단
                    - `1`: 차단
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_timeshift:
                  description: |-
                    라이브 방송 중 이전 시점 시청(Timeshift) 기능 활성화 설정
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_aes128:
                  description: |-
                    AES-128 암호화 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_referer_check:
                  description: |-
                    레퍼러 접근 제어 정책
                    - `0`: 미사용
                    - `1`: 특정 도메인 허용
                    - `2`: 특정 도메인 차단
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                    - 2
                referer_check_domains:
                  description: '재생을 허용할 도메인 주소 목록 (구분자: 콤마)'
                  type: string
                referer_reject_domains:
                  description: '재생을 차단할 도메인 주소 목록 (구분자: 콤마)'
                  type: string
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}:
    get:
      tags:
        - 채널 관리
      summary: 채널 정보 조회
      description: 특정 채널의 상세 정보를 조회합니다.
      operationId: 5acdb8ad22b5f1588fb659df5b739365
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
    put:
      tags:
        - 채널 관리
      summary: 채널 정보 수정
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         기존에 등록된 채널의 상세 설정을 수정합니다.
      operationId: 19132bacdba0aa98f079c9a24fa729c1
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                title:
                  description: 채널 이름
                  type: string
                customer_code:
                  description: 고객사 내부 관리용 식별 코드
                  type: string
                concurrently_viewer_limit:
                  description: '최대 동시 시청자 수 (`0`: 무제한)'
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 100
                    - 200
                    - 300
                    - 400
                    - 500
                    - 600
                    - 700
                    - 900
                    - 1000
                is_shared:
                  description: |-
                    채널 외부 공개 정책
                    - `0`: 비공개
                    - `1`: 공개
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                live_media_profile_group_key:
                  description: 인코딩 프로파일 그룹 키
                  type: string
                meta_title_pattern:
                  description: 메타 정보 제목 명명 규칙
                  type: string
                  default: '[CHANNEL_TITLE]-[BROADCAST_COUNTING]'
                meta_description:
                  description: 메타 정보 내용
                  type: string
                recording_file_policy:
                  description: |-
                    녹화 파일 저장 방식
                    - `0`: 미사용
                    - `1`: 자동 저장
                    - `3`: 자동 저장 + 수동 저장
                  type: integer
                  default: 1
                  enum:
                    - 0
                    - 1
                    - 3
                recording_file_segment_policy:
                  description: |-
                    녹화 파일 자동 저장 기준
                    - `1`: 파일 용량 기준 분할 저장 (4GB)
                    - `2`: 녹화 시간 기준 분할 저장
                  type: integer
                  default: 1
                  enum:
                    - 1
                    - 2
                recording_file_segment_by_duration:
                  description: '녹화 시간 기준 분할 저장 선택 시 자동 저장 시간 간격 (단위: 분)'
                  type: integer
                  default: 60
                  enum:
                    - 10
                    - 20
                    - 30
                    - 40
                    - 50
                    - 60
                    - 120
                recording_file_pattern:
                  description: 녹화 파일 명명 규칙
                  type: string
                  default: >-
                    [CHANNEL_KEY]-[CHANNEL_CUSTOMER_CODE]-[BROADCAST_KEY]-[BROADCAST_CREATING_DATE]-[RECORDING_START_DATETIME]-[RECORDING_TYPE]
                idle_screen_kind:
                  description: |-
                    대기 화면 유형
                    - `0`: 사전에 등록한 포스터 이미지 노출
                    - `1`: 최신 스냅샷 이미지 노출
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                media_player_policy:
                  description: |-
                    Kollus 보안 플레이어 사용 설정
                    - `0`: 자동 감지
                    - `1`: 강제 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_chatting_service:
                  description: |-
                    채팅 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                division_delayed_minutes:
                  description: '네트워크 장애 시 세션 유지를 위한 유효 대기 시간 (단위: 분)'
                  type: integer
                  default: 3
                  enum:
                    - 0
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                use_duplicate_block:
                  description: |-
                    동일 계정 기반 중복 재생 차단 설정
                    - `0`: 미차단
                    - `1`: 차단
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_capture_block:
                  description: |-
                    Kollus 보안 플레이어 사용 시 녹화 및 캡처 차단 설정
                    - `0`: 미차단
                    - `1`: 차단
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_timeshift:
                  description: |-
                    라이브 방송 중 이전 시점 시청(Timeshift) 기능 활성화 설정
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_aes128:
                  description: |-
                    AES-128 암호화 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                use_referer_check:
                  description: |-
                    레퍼러 접근 제어 정책
                    - `0`: 미사용
                    - `1`: 특정 도메인 허용
                    - `2`: 특정 도메인 차단
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                    - 2
                referer_check_domains:
                  description: '재생을 허용할 도메인 주소 목록 (구분자: 콤마)'
                  type: string
                referer_reject_domains:
                  description: '재생을 차단할 도메인 주소 목록 (구분자: 콤마)'
                  type: string
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
    delete:
      tags:
        - 채널 관리
      summary: 채널 삭제
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         특정 채널을 시스템에서 영구적으로 삭제합니다.
      operationId: 9896e28965cd9907818109625c8c2fd3
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '204':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/disable:
    put:
      tags:
        - 채널 관리
      summary: 채널 비활성화
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         활성 상태인 채널을 비활성화합니다. 비활성화된 채널은 플레이어에서 재생이 차단됩니다.
      operationId: cab64917d80add751849b14526112618
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/enable:
    put:
      tags:
        - 채널 관리
      summary: 채널 활성화
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         비활성 상태인 채널을 활성화합니다. 활성화된 채널은 플레이어에서 재생 가능한 상태가 됩니다.
      operationId: a70389bb80273c24b9071a9c7a8d6dcf
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/trash:
    put:
      tags:
        - 채널 관리
      summary: 채널 숨김 처리
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         특정 채널의 방송을 중지합니다. 중지된 채널은 채널 목록에 표시되지 않는 숨김 상태로 변경됩니다.
      operationId: d60aae97ec2f37a481c5e98b0eb4dc04
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/restore:
    put:
      tags:
        - 채널 관리
      summary: 숨김 채널 복구
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         숨김 처리되었던 채널을 다시 목록으로 복구합니다.
      operationId: f7d9be7f8d45b6557f151f7ef79589ec
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/callback:
    put:
      tags:
        - 채널 관리
      summary: 콜백 설정
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         특정 이벤트 발생 시 시스템이 외부 서버로 정보를 전달할 수 있도록 엔드포인트(URL)를 설정합니다. 각 콜백 유형에 따라 전송되는 데이터 종류가 상이합니다.<ul><li>**라이브 콜백**: 라이브 방송 상태 알림</li><li>**녹화 파일 전송 콜백**: 녹화 파일 전송 결과 통보</li><li>**재생 콜백**: 라이브 재생 요청 제어</li><li>**LMS 콜백**: 시청 데이터 전송</li></ul>
      operationId: 8c593ff66ca5e1808e6ed68657bb825c
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                use_broadcast_update_callback:
                  description: |-
                    라이브 콜백 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                broadcast_update_callback_url:
                  description: 라이브 콜백 URL
                  type: string
                use_recording_file_transfer_callback:
                  description: |-
                    녹화 파일 전송 콜백 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                recording_file_transfer_callback_url:
                  description: 녹화 파일 전송 콜백 URL
                  type: string
                use_lms_callback:
                  description: |-
                    LMS 콜백 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                lms_callback_url:
                  description: LMS 콜백 URL
                  type: string
                use_play_callback:
                  description: |-
                    재생 콜백 사용 설정
                    - `0`: 미사용
                    - `1`: 사용
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                play_callback_url:
                  description: 재생 콜백 URL
                  type: string
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannel'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/creators:
    get:
      tags:
        - Creator 관리
      summary: 채널별 Creator 목록 조회
      description: 특정 채널에 등록된 Creator 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      operationId: 0a9d5248e34e495f9311e7eb95e85bba
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveCreator'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    post:
      tags:
        - Creator 관리
      summary: 신규 Creator 생성
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         특정 채널에서 라이브 방송을 진행할 새로운 Creator를 등록합니다.
      operationId: 0a9d5248e34e495f9311e7eb95e85bbb
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveCreator'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/creators/{creator_code}:
    put:
      tags:
        - Creator 관리
      summary: Creator 닉네임 수정
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         등록된 Creator의 닉네임을 변경합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: creator_code
          in: path
          description: 수정 대상 Creator 코드
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - nickname
              properties:
                nickname:
                  description: 변경할 Creator 닉네임
                  type: string
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveCreator'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    delete:
      tags:
        - Creator 관리
      summary: Creator 삭제
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         특정 채널에 소속된 Creator를 시스템에서 영구적으로 삭제합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: creator_code
          in: path
          description: 삭제 대상 Creator 코드
          required: true
          schema:
            type: string
      responses:
        '204':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/broadcasts:
    get:
      tags:
        - 라이브 방송 관리
      summary: 전체 방송 목록 조회
      description: 특정 서비스 계정의 전체 라이브 방송 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      operationId: 959c7a991bd8e6ab4e2f20c10b95676f
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: id_desc
            enum:
              - id_desc
              - id_asc
              - title_desc
              - title_asc
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/broadcasts:
    get:
      tags:
        - 라이브 방송 관리
      summary: 채널별 방송 목록 조회
      description: 특정 채널의 라이브 방송 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      operationId: 8c593ff66ca5e1808e6ed68657bb825d
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: id_desc
            enum:
              - id_desc
              - id_asc
              - title_desc
              - title_asc
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}:
    get:
      tags:
        - 라이브 방송 관리
      summary: 방송 정보 조회
      description: 특정 라이브 방송의 상세 정보를 조회합니다.
      operationId: 48664e18d3f032ac84b842f41e95d85b
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
    put:
      tags:
        - 라이브 방송 관리
      summary: 방송 제목 수정
      description: 기존 라이브 방송의 제목을 수정합니다.
      operationId: 0e2c51ff22e3293700099d27feb7af02
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
              properties:
                title:
                  description: 방송 제목
                  type: string
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/duplicate-recording:
    post:
      tags:
        - 라이브 방송 관리
      summary: 수동 녹화 시작
      description: 진행 중인 라이브 방송의 수동 녹화를 시작합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                use_cue_sign_timeshift:
                  description: |-
                    Timeshift 큐 사인 활성화
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '409':
          description: Conflict
      security:
        - kollus_oauth2:
            - live:creator
    delete:
      tags:
        - 라이브 방송 관리
      summary: 수동 녹화 종료
      description: 진행 중인 수동 녹화를 즉시 종료합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:creator
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/cue-sign-timeshift:
    put:
      tags:
        - 라이브 방송 관리
      summary: Timeshift 큐 사인 수정
      description: >-
        Timeshift 기능이 활성화된 방송의 재생 시작 지점(큐 사인)을 변경합니다. 이 설정으로 방송 진입 시 초기 노출 위치를
        조정할 수 있습니다. 시청자의 과거 시점 탐색은 설정된 `cue_sign_at` 시점까지만 가능합니다.
      operationId: 6bbeb29fdaccd3cca5c6e31ff90719ab
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              properties:
                cue_sign_at:
                  description: 변경할 큐 사인 시점
                  type: string
                  example: '2026-01-01 09:00:00'
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaBroadcast'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/like-download:
    get:
      tags:
        - 라이브 방송 관리
      summary: '''좋아요'' 반응 데이터 다운로드'
      description: 특정 라이브 방송에서 발생한 '좋아요' 반응 데이터를 파일 형태로 다운로드할 수 있는 URL을 생성합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312645
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenKollusFileDownload'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/programs:
    get:
      tags:
        - 편성 관리
      summary: 전체 편성 목록 조회
      description: 전체 편성 라이브 채널의 프로그램 편성 목록을 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenProgramSchedule'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/programs:
    get:
      tags:
        - 편성 관리
      summary: 채널별 편성 목록 조회
      description: 특정 편성 라이브 채널의 프로그램 편성 목록을 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenProgramSchedule'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    post:
      tags:
        - 편성 관리
      summary: 신규 프로그램 편성
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         편성 라이브 채널에 방송될 신규 프로그램 일정을 등록합니다. 업로드된 VOD 콘텐츠를 특정 시간에 순차적으로 송출하도록 설정할 수 있습니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - general_file_upload_file_keys[]
                - start_date
              properties:
                title:
                  description: 프로그램 제목
                  type: string
                wait_file_upload_file_key:
                  description: 방송 송출 전 노출할 대기 화면 파일 키
                  type: string
                wait_file_duration:
                  description: '대기 화면 노출 시간 (단위: 분)'
                  type: integer
                  maximum: 360
                general_file_upload_file_keys[]:
                  description: 순차 송출 대상 VOD 콘텐츠 (업로드 파일 키 배열)
                  type: array
                  items:
                    type: string
                start_date:
                  description: 방송 시작 일시
                  type: string
                  example: '2026-01-01 09:00:00'
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenProgramSchedule'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/programs/{program_id}:
    put:
      tags:
        - 편성 관리
      summary: 편성 정보 수정
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         특정 프로그램 편성 정보를 수정합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: program_id
          in: path
          description: 프로그램 ID
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - general_file_upload_file_keys[]
                - start_date
              properties:
                title:
                  description: 프로그램 제목
                  type: string
                wait_file_id:
                  description: 대기 화면 ID
                  type: integer
                wait_file_duration:
                  description: '대기 화면 노출 시간 (단위: 분)'
                  type: integer
                  maximum: 360
                general_file_upload_file_keys[]:
                  description: 순차 송출 대상 VOD 콘텐츠 (업로드 파일 키 배열)
                  type: array
                  items:
                    type: string
                start_date:
                  description: 방송 시작 일시
                  type: string
                  example: '2026-01-01 09:00:00'
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenProgramSchedule'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
    delete:
      tags:
        - 편성 관리
      summary: 편성 정보 삭제
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         특정 프로그램 편성 정보를 삭제합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: program_id
          in: path
          description: 프로그램 ID
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: No content
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/programs/media-contents:
    get:
      tags:
        - 편성 관리
      summary: VOD 콘텐츠 목록 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         편성 라이브 송출을 목적으로 시스템에 업로드된 전체 VOD 콘텐츠 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: '1'
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: created_at_desc
            enum:
              - title_desc
              - title_asc
              - created_at_desc
              - created_at_asc
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: only_selectable
          in: query
          description: 업로드 완료 여부 필터링
          schema:
            type: integer
            default: 0
            enum:
              - 0
              - 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenProgramMediaContents'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/programs/media-contents/upload-url:
    get:
      tags:
        - 편성 관리
      summary: VOD 콘텐츠 업로드
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         콘텐츠 파일을 안전하게 업로드하기 위한 일회성 엔드포인트 URL을 생성합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: general_upload
          in: query
          description: '트랜스코딩 설정 (`1`: 트랜스코딩 진행)'
          schema:
            type: integer
            default: 1
            enum:
              - 0
              - 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenMediaContentUploadURL'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/programs/media-contents/{upload_file_key}:
    delete:
      tags:
        - 편성 관리
      summary: VOD 콘텐츠 삭제
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         편성 라이브 송출을 목적으로 업로드된 VOD 콘텐츠를 시스템에서 영구적으로 삭제합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: upload_file_key
          in: path
          description: 업로드 파일 키
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No content
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/programs/wait-media-contents:
    get:
      tags:
        - 편성 관리
      summary: 대기 화면 목록 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         편성 라이브 송출을 목적으로 시스템에 업로드된 전체 대기 화면 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: created_at_desc
            enum:
              - title_desc
              - title_asc
              - created_at_desc
              - created_at_asc
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: only_selectable
          in: query
          description: 업로드 완료 여부 필터링
          schema:
            type: integer
            default: 0
            enum:
              - 0
              - 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenProgramMediaContents'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                      max_width:
                        type: integer
                      max_height:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/programs/media-contents/upload-wait-file:
    post:
      tags:
        - 편성 관리
      summary: 대기 화면 이미지 업로드
      description: |-
        [ **접근 권한**: 최고 관리자 ]

         편성 프로그램 시작 전 노출할 대기 화면 이미지 파일을 업로드하기 위한 일회성 엔드포인트 URL을 생성합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              properties:
                upload_file:
                  description: 이미지 파일 (jpeg, jpg, png)
                  type: string
                  format: binary
              type: object
      responses:
        '204':
          description: No content
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/syndications:
    get:
      tags:
        - 신디케이션 관리
      summary: 채널별 신디케이션 목록 조회
      description: 특정 채널에 등록된 신디케이션 설정 목록을 조회합니다.
      operationId: a54d316907c57f8c35c037aed1666200
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaSyndication'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    post:
      tags:
        - 신디케이션 관리
      summary: 신규 신디케이션 추가
      description: 새로운 신디케이션 설정을 추가합니다.
      operationId: 16c76f5dd6fda9a187dc8bc3a13e25a7
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - link
                - stream_name
                - status
              properties:
                title:
                  description: 신디케이션 식별 명칭
                  type: string
                link:
                  description: 외부 플랫폼의 스트림 수신 URL (링크)
                  type: string
                stream_name:
                  description: 외부 플랫폼에서 제공하는 방송 식별 키 (스트림 키)
                  type: string
                status:
                  description: |-
                    신디케이션 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaSyndication'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/syndications/{syndication_id}:
    get:
      tags:
        - 신디케이션 관리
      summary: 신디케이션 설정 정보 조회
      description: 특정 신디케이션 설정의 상세 정보를 조회합니다.
      operationId: 0f1ac67f90905f86bfbd879a77d3365c
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: syndication_id
          in: path
          description: 신디케이션 ID
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaSyndication'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    put:
      tags:
        - 신디케이션 관리
      summary: 신디케이션 설정 정보 수정
      description: 특정 신디케이션 설정의 상세 정보를 수정합니다.
      operationId: 3617ae67fe4d4ab0b2cd29ca69b6836a
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: syndication_id
          in: path
          description: 신디케이션 ID
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - status
              properties:
                title:
                  description: 신디케이션 식별 명칭
                  type: string
                link:
                  description: 외부 플랫폼의 스트림 수신 URL (링크)
                  type: string
                stream_name:
                  description: 외부 플랫폼에서 제공하는 방송 식별 키 (스트림 키)
                  type: string
                status:
                  description: |-
                    신디케이션 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaSyndication'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
    delete:
      tags:
        - 신디케이션 관리
      summary: 신디케이션 삭제
      description: 특정 신디케이션 설정을 시스템에서 영구적으로 삭제합니다.
      operationId: d8befcff832d3140d10829704b4d0f6a
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: syndication_id
          in: path
          description: 신디케이션 ID
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/kollus-chatting:
    post:
      tags:
        - 채팅 관리
      summary: 채팅 설정 수정
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         채팅 기능의 상세 설정을 수정합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312642
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - use_chatting_service
              properties:
                use_chatting_service:
                  description: |-
                    채팅 기능 활성화
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 1
                  enum:
                    - 0
                    - 1
                chatting_service_id:
                  description: 연동 대상 채팅 서비스 ID
                  type: integer
                concurrently_chatting_limit:
                  description: 채팅방 동시 입장 최대 인원 제한
                  type: integer
                  default: 300
                chatting_limit_count:
                  description: 채팅 참여자 1명이 1분 동안 전송할 수 있는 최대 메시지 수
                  type: integer
                  default: 30
                chatting_join_message:
                  description: 채팅 참여 시 노출되는 환영 메시지
                  type: string
                chatting_anonymous_chat:
                  description: |-
                    익명 채팅 활성화
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                chatting_enable_block:
                  description: |-
                    채팅 관리자 전용 사용자 차단(강제 퇴장) 기능 활성화
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 1
                  enum:
                    - 0
                    - 1
                chatting_admin_ids:
                  description: '채팅 관리자 ID (구분자: 공백). 인증 시 사용되는 `client_user_id`와 일치해야 합니다.'
                  type: string
                chatting_send_status:
                  description: |-
                    '좋아요' 반응 기능 활성화
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                chatting_display_profile_photo:
                  description: |-
                    채팅 참여자 프로필 이미지 노출 설정
                    - `0`: 미노출
                    - `1`: 노출
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                chatting_disable_default_profile_photo:
                  description: 기본 프로필 이미지 업데이트
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                chatting_profile_photo_file:
                  description: 기본 프로필 이미지 파일
                  type: string
                  format: binary
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannelChatting'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/chatting:
    get:
      tags:
        - 채팅 관리
      summary: 채팅방 설정 정보 조회
      description: 채팅방의 상세 설정 정보를 조회합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312643
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    description: 채팅 서비스 유형에 따라 반환되는 데이터 객체의 구조가 상이합니다.
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/chatting-info:
    get:
      tags:
        - 채팅 관리
      summary: 채팅방 설정 정보 조회 (채팅 SDK 전용)
      description: 채팅방의 상세 설정 정보를 조회합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312640
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    description: 채팅 서비스 유형에 따라 반환되는 데이터 객체의 구조가 상이합니다.
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/chatroll-chatting:
    post:
      tags:
        - 채팅 관리
      summary: Chatroll 연동 정보 수정
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         외부 채팅 서비스인 Chatroll의 연동 정보를 수정합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312641
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - use_chatting_service
              properties:
                use_chatting_service:
                  description: |-
                    채팅 기능 활성화
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 1
                  enum:
                    - 0
                    - 1
                chatting_service_id:
                  description: 연동 대상 Chatroll 서비스 ID
                  type: integer
                chatting_position:
                  description: 플레이어 내 채팅창 노출 위치
                  type: string
                  default: bottom
                  enum:
                    - right
                    - left
                    - bottom
                chatting_embed_code:
                  description: Chatroll에서 발급받은 HTML 임베드 코드
                  type: string
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaChannelChatting'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/chatting-joined-users-on-air:
    get:
      tags:
        - 채팅 관리
      summary: 실시간 채팅 참여자 정보 조회
      description: 실시간 채팅 참여자 수와 참여자 정보를 조회합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312647
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: '최대 출력 데이터 개수 (`0`: 전체 데이터 조회)'
          schema:
            type: integer
            default: 10
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveChattingJoinedUsersOnAir'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/service-accounts/{service_account_key}/chat/stats:
    get:
      tags:
        - 채팅 관리
      summary: 채팅 이용 통계 데이터 조회
      description: 채팅 이용 통계 데이터를 조회합니다. 쿼리 파라미터를 통해 집계 단위와 조회 기간을 세부적으로 설정할 수 있습니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312646
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: query
          description: 채널 키
          schema:
            type: string
        - name: broadcast_key
          in: query
          description: 방송 키
          schema:
            type: string
        - name: from
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: '2026-01-01'
        - name: to
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: '2026-02-01'
        - name: timegroup
          in: query
          description: '집계 단위 (`5m`: 5분, `10m`: 10분, `1h`: 1시간, `1d`: 1일)'
          schema:
            type: string
            default: 5m
            enum:
              - 5m
              - 10m
              - 1h
              - 1d
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: desc
        - name: limit
          in: query
          description: '최대 출력 데이터 개수 (`0`: 전체 데이터 조회)'
          schema:
            type: integer
            default: 10
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: info
          in: query
          description: '검색 정보 포함 여부 (`y`: 포함, `n`: 미포함)'
          schema:
            type: string
            default: 'y'
            enum:
              - 'y'
              - 'n'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  info:
                    description: 채팅 서비스 유형에 따라 반환되는 데이터 객체의 구조가 상이합니다.
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/chatting-download:
    get:
      tags:
        - 채팅 관리
      summary: 채팅 원본 다운로드
      description: 특정 라이브 방송의 채팅 원본 데이터를 파일 형태로 다운로드할 수 있는 URL을 생성합니다.
      operationId: 8ac0a6f372a7ad57d22de24f8c312644
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenKollusFileDownload'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers:
    get:
      tags:
        - 녹화 파일 전송처 관리
      summary: 채널별 파일 전송처 목록 조회
      description: 특정 채널에 등록된 녹화 파일의 외부 전송처(FTP, 스토리지 등) 목록을 조회합니다.
      operationId: 77de69ba7be7bf5c1e888e8312d160e5
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers/ftp:
    post:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 등록 (FTP)
      description: 녹화 완료된 파일을 전송할 외부 FTP 서버 정보를 등록합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - host
                - port
                - username
                - password
                - remote_path
                - status
              properties:
                title:
                  description: 전송처 식별 명칭
                  type: string
                host:
                  description: FTP 서버 호스트 주소
                  type: string
                port:
                  description: FTP 포트 번호
                  type: string
                username:
                  description: FTP 접속 사용자 계정
                  type: string
                password:
                  description: FTP 접속 비밀번호
                  type: string
                remote_path:
                  description: 파일이 저장될 원격 서버 경로
                  type: string
                status:
                  description: |-
                    파일 전송 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers/sftp:
    post:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 등록 (SFTP)
      description: 녹화 완료된 파일을 보안 전송할 외부 SFTP 서버 정보를 등록합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - host
                - port
                - username
                - password
                - remote_path
                - status
              properties:
                title:
                  description: 전송처 식별 명칭
                  type: string
                host:
                  description: SFTP 서버 호스트 주소
                  type: string
                port:
                  description: SFTP 포트 번호
                  type: string
                username:
                  description: SFTP 접속 사용자 계정
                  type: string
                password:
                  description: SFTP 접속 비밀번호
                  type: string
                remote_path:
                  description: 파일이 저장될 원격 서버 경로
                  type: string
                status:
                  description: |-
                    파일 전송 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers/kollus:
    post:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 등록 (Kollus VOD)
      description: >-
        녹화 완료된 파일을 Kollus VOD 서비스로 전송하기 위한 계정 및 연동 정보를 등록합니다. 파라미터 상세 정보는 <a
        href="https://docs.kollus.com/service-guide/live/setting/recording/#register-destination-kollus-vod"
        target="_blank">전송처 등록 절차 (Kollus VOD)</a> 문서를 참고하세요.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - host
                - username
                - password
                - category_key
                - use_encryption
                - status
              properties:
                title:
                  description: 전송처 식별 명칭
                  type: string
                host:
                  description: Kollus VOD FTP 서버 주소
                  type: string
                username:
                  description: Kollus VOD 서비스 계정 키
                  type: string
                password:
                  description: Kollus VOD FTP 접속 비밀번호
                  type: string
                category_key:
                  description: 업로드 대상 카테고리 키
                  type: string
                use_encryption:
                  description: |-
                    녹화 파일 암호화 설정
                    - `0`: 비암호화
                    - `1`: 암호화
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                status:
                  description: |-
                    파일 전송 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers/s3:
    post:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 등록 (Amazon S3)
      description: 녹화 완료된 파일을 전송할 Amazon S3 버킷 및 인증 정보를 등록합니다.
      operationId: 89385d7adb008bdae8696705cc128200
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - aws_access_key_id
                - aws_secret_access_key
                - bucket_name
                - aws_region_key
                - status
              properties:
                title:
                  description: 전송처 식별 명칭
                  type: string
                aws_access_key_id:
                  description: S3 Access Key
                  type: string
                aws_secret_access_key:
                  description: S3 Secret Access Key
                  type: string
                bucket_name:
                  description: 파일이 저장될 S3 버킷 이름
                  type: string
                aws_region_key:
                  description: S3 Region Key
                  type: string
                  example: ap-northeast-2
                status:
                  description: |-
                    파일 전송 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers/{file_transfer_id}:
    get:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 정보 조회
      description: 등록한 파일 전송처의 상세 설정을 조회합니다.
      operationId: 774d33cb10a8777e6ddbfd28aca34691
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: file_transfer_id
          in: path
          description: 파일 전송처 ID
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
    put:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 정보 수정
      description: >-
        기존에 등록된 파일 전송처의 연결 정보 및 운영 설정을 변경합니다. 전송처 유형(FTP, SFTP, S3, Kollus)에 따라
        요구되는 필수 파라미터가 다릅니다.
      operationId: 6eab18cd2235ecb10648bdcb6dffe485
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: file_transfer_id
          in: path
          description: 파일 전송처 ID
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - title
                - status
              properties:
                title:
                  description: 파일 전송처 식별 명칭
                  type: string
                host:
                  description: (FTP, SFTP, Kollus 필수) 호스트 서버 주소
                  type: string
                port:
                  description: (FTP, SFTP 필수) 포트 번호
                  type: string
                username:
                  description: (FTP, SFTP, Kollus 필수) 서버 접속 사용자 계정
                  type: string
                password:
                  description: (FTP, SFTP, Kollus 필수) 서버 접속 비밀번호
                  type: string
                remote_path:
                  description: (FTP, SFTP 필수) 파일이 저장될 원격 서버 경로
                  type: string
                category_key:
                  description: (Kollus 필수) 업로드 대상 카테고리 키
                  type: string
                use_encryption:
                  description: |-
                    (Kollus 필수) 녹화 파일 암호화 설정
                    - `0`: 비암호화
                    - `1`: 암호화
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
                aws_access_key_id:
                  description: (S3 필수) S3 Access Key
                  type: string
                aws_secret_access_key:
                  description: (S3 필수) S3 Secret Access Key
                  type: string
                bucket_name:
                  description: (S3 필수) 파일이 저장될 S3 버킷 이름
                  type: string
                aws_region_key:
                  description: (S3 필수) S3 Region Key
                  type: string
                  example: ap-northeast-2
                status:
                  description: |-
                    파일 전송 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
    delete:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송처 삭제
      description: 등록된 파일 전송처 설정을 시스템에서 영구적으로 삭제합니다.
      operationId: b20dedeb4c8baea4ec13fd6795b11535
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: file_transfer_id
          in: path
          description: 삭제 대상 파일 전송처 ID
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/file-transfers/{file_transfer_id}/status:
    put:
      tags:
        - 녹화 파일 전송처 관리
      summary: 파일 전송 활성화/비활성화
      description: 등록된 특정 전송처로의 파일 전송을 활성화 또는 비활성화합니다.
      operationId: 16b01651f49114c89e5971b1dee88d22
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: file_transfer_id
          in: path
          description: 파일 전송처 ID
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
                - status
              properties:
                status:
                  description: |-
                    파일 전송 활성화 여부
                    - `0`: 비활성
                    - `1`: 활성
                  type: integer
                  default: 0
                  enum:
                    - 0
                    - 1
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveMediaFileTransfer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/recording-files:
    get:
      tags:
        - 녹화 파일 관리
      summary: 전체 녹화 파일 목록 조회
      description: 전체 녹화 파일 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: id_desc
            enum:
              - id_desc
              - id_asc
              - title_desc
              - title_asc
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaRecordingFile'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/recording-files:
    get:
      tags:
        - 녹화 파일 관리
      summary: 채널별 녹화 파일 목록 조회
      description: 특정 채널에서 진행된 라이브 방송의 녹화 파일 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: id_desc
            enum:
              - id_desc
              - id_asc
              - title_desc
              - title_asc
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    description: 라이브 녹화 파일
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaRecordingFile'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/broadcasts/{broadcast_key}/recording-files:
    get:
      tags:
        - 녹화 파일 관리
      summary: 방송별 녹화 파일 목록 조회
      description: 특정 라이브 방송의 녹화 파일 목록을 조회합니다. 쿼리 파라미터를 활용하여 결과를 필터링할 수 있습니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
        - name: keyword
          in: query
          description: 검색 키워드 필터링
          schema:
            type: string
        - name: order
          in: query
          description: 데이터 정렬 기준
          schema:
            type: string
            default: id_desc
            enum:
              - id_desc
              - id_asc
              - title_desc
              - title_asc
        - name: page
          in: query
          description: 조회 대상 페이지 번호
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          description: 페이지당 출력 데이터 개수
          schema:
            type: integer
            default: 10
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveMediaRecordingFile'
                  links:
                    properties:
                      first:
                        type: string
                      last:
                        type: string
                      prev:
                        type: string
                      next:
                        type: string
                    type: object
                  meta:
                    properties:
                      current_page:
                        type: integer
                      from:
                        type: integer
                      last_page:
                        type: integer
                      path:
                        type: string
                      per_page:
                        type: integer
                      to:
                        type: integer
                      total:
                        type: integer
                    type: object
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/broadcasts/{broadcast_key}/recording-files/{recording_file_id}/download:
    get:
      tags:
        - 녹화 파일 관리
      summary: 녹화 파일 다운로드
      description: 생성된 녹화 파일을 로컬 환경으로 다운로드할 수 있는 URL을 생성합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
        - name: recording_file_id
          in: path
          description: 녹화 파일 ID
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenKollusFileDownload'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
        '422':
          description: Unprocessable entity
      security:
        - kollus_oauth2:
            - live:control
  /v1/live/service-accounts/{service_account_key}/statistics/viewer/{duration_minute}min-during-a-day:
    get:
      tags:
        - 통계
      summary: 일별 시청자 수 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         서비스 계정 내 전체 라이브 방송의 시청자 수 데이터를 지정한 시간 간격별로 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: duration_minute
          in: path
          description: '데이터 집계 시간 간격 (단위: 분)'
          required: true
          schema:
            type: string
            default: '5'
            enum:
              - '5'
              - '10'
        - name: start_date
          in: query
          description: 조회 대상 기준 일시
          required: true
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveViewer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/statistics/viewer/{duration_minute}min-during-a-day:
    get:
      tags:
        - 통계
      summary: 채널별 시청자 수 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         특정 채널에서 송출된 모든 라이브 방송의 시청자 수 데이터를 시간 간격별로 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: duration_minute
          in: path
          description: '데이터 집계 시간 간격 (단위: 분)'
          required: true
          schema:
            type: string
            default: '5'
            enum:
              - '5'
              - '10'
        - name: start_date
          in: query
          description: 조회 대상 기준 일시
          required: true
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveChannelViewer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/statistics/viewer/{duration_minute}min-during-a-day:
    get:
      tags:
        - 통계
      summary: 방송별 시청자 수 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         특정 라이브 방송에 대한 시청자 수 데이터를 시간 간격별로 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
        - name: duration_minute
          in: path
          description: '데이터 집계 시간 간격 (단위: 분)'
          required: true
          schema:
            type: string
            default: '5'
            enum:
              - '5'
              - '10'
        - name: start_date
          in: query
          description: 조회 대상 기준 일시
          required: true
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ApiOpenLiveBroadcastViewer'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/statistics/summary-daily:
    get:
      tags:
        - 통계
      summary: 일별 통계 요약 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         전체 라이브 방송에 대한 일자별 주요 통계 지표의 요약 데이터를 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 일시
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 일시
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveSummaryDaily'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/statistics/summary:
    get:
      tags:
        - 통계
      summary: 기간별 통계 요약 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         지정한 기간 동안의 전체 라이브 방송에 대한 요약 데이터를 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 일시
          required: true
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 일시
          required: true
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveStatisticsSummary'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/channels/{channel_key}/statistics/summary:
    get:
      tags:
        - 통계
      summary: 채널별 통계 요약 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         지정한 기간 동안 특정 채널에서 송출된 모든 라이브 방송에 대한 요약 데이터를 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: channel_key
          in: path
          description: 채널 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 일시
          required: true
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 일시
          required: true
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenLiveChannelStatisticsSummary'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/live/service-accounts/{service_account_key}/broadcasts/{broadcast_key}/statistics/summary:
    get:
      tags:
        - 통계
      summary: 방송별 통계 요약 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         지정한 기간 동안 특정 라이브 방송에 대한 요약 데이터를 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: broadcast_key
          in: path
          description: 방송 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 일시
          required: true
          schema:
            type: string
            example: 2026-01-01 09:00:00 또는 2026-01-01
        - name: end_date
          in: query
          description: 조회 범위 종료 일시
          required: true
          schema:
            type: string
            example: 2026-02-01 11:59:59 또는 2026-02-01
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: >-
                        #/components/schemas/ApiOpenLiveBroadcastStatisticsSummary
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
  /v1/vod/service-accounts/{service_account_key}/statistics/summary-daily:
    get:
      tags:
        - 통계
      summary: 일별 VOD 통계 요약 조회
      description: |-
        [ **접근 권한**: 최고 관리자, 관리자 ]

         전체 편성 라이브 방송에 대한 일자별 VOD 통계 요약 데이터를 조회합니다.
      parameters:
        - name: service_account_key
          in: path
          description: 서비스 계정 키
          required: true
          schema:
            type: string
        - name: start_date
          in: query
          description: 조회 범위 시작 날짜
          required: true
          schema:
            type: string
            example: '2026-01-01'
        - name: end_date
          in: query
          description: 조회 범위 종료 날짜
          required: true
          schema:
            type: string
            example: '2026-02-01'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiOpenVodSummaryDaily'
                type: object
        '400':
          description: Bad request
        '401':
          description: Unauthenticated
        '404':
          description: Not found
      security:
        - kollus_oauth2:
            - live:statistics
components:
  schemas:
    ApiOpenKollusFileDownload:
      properties:
        download_uri:
          description: 다운로드 URI
          type: string
        expires:
          description: URI 만료 일시
          type: string
      type: object
    ApiOpenLiveChattingJoinedUsersOnAir:
      properties:
        total:
          description: 채팅 참여자 수
          type: integer
        users:
          type: array
          items:
            properties:
              UserId:
                description: 채팅 참여자 ID
                type: string
              Nickname:
                description: 닉네임
                type: string
            type: object
      type: object
    ApiOpenChattingService:
      description: 채팅 서비스 계약 정보
      properties:
        id:
          description: 채팅 계약 ID
          type: integer
        kind:
          description: 채팅 서비스 유형
          properties:
            type:
              description: 채팅 서비스 유형
              type: string
              enum:
                - chatroll
                - kollus
            value:
              description: '채팅 서비스 유형 코드 (`1`: Chatroll, `2`: Kollus)'
              type: integer
          type: object
        info:
          description: 채팅 서비스 유형에 따라 반환되는 데이터 객체의 구조가 상이합니다.
      type: object
    ApiOpenLiveCreator:
      description: Creator 정보
      properties:
        id:
          description: Creator ID
          type: integer
        nickname:
          description: Creator 닉네임
          type: string
        code:
          description: Creator 코드
          type: string
        stream_key:
          description: Creator 스트림 키
          type: string
        created_at:
          description: Creator 생성 일시
          type: string
        updated_at:
          description: Creator 정보 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaBroadcastItem:
      description: 라이브 방송 정보
      properties:
        id:
          description: 방송 ID
          type: integer
        key:
          description: 방송 키
          type: string
        title:
          description: 방송 제목
          type: string
        is_onair:
          description: 방송 상태
          type: boolean
        subscribe_url:
          description: 구독 URL
          type: string
        duration:
          description: 방송 시간
          type: string
        counting_number:
          description: 방송 회차
          type: integer
        creator:
          $ref: '#/components/schemas/ApiOpenLiveCreator'
        duplicate_recording_state:
          description: 수동 녹화 상태
          properties:
            type:
              description: 수동 녹화 상태
              type: string
              enum:
                - duplicate_recording_stopped
                - duplicate_recording_started
            value:
              description: |-
                수동 녹화 상태 코드
                - `0`: 수동 녹화 종료
                - `1`: 수동 녹화 시작
              type: integer
          type: object
        started_at:
          description: 방송 시작 시각
          type: string
        paused_at:
          description: 방송 일시정지 시각
          type: string
        ended_at:
          description: 방송 종료 시각
          type: string
        created_at:
          description: 생성 일시
          type: string
        updated_at:
          description: 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaBroadcast:
      properties:
        id:
          description: 방송 ID
          type: integer
        key:
          description: 방송 키
          type: string
        title:
          description: 방송 제목
          type: string
        is_onair:
          description: 방송 상태
          type: boolean
        subscribe_url:
          description: 구독 URL
          type: string
        duration:
          description: 방송 시간
          type: string
        counting_number:
          description: 방송 회차
          type: integer
        channel:
          $ref: '#/components/schemas/ApiOpenLiveMediaChannelItem'
        creator:
          $ref: '#/components/schemas/ApiOpenLiveCreator'
        duplicate_recording_state:
          properties:
            type:
              description: 수동 녹화 상태
              type: string
              enum:
                - duplicate_recording_stopped
                - duplicate_recording_started
            value:
              description: |-
                수동 녹화 상태 코드
                - `0`: 수동 녹화 종료
                - `1`: 수동 녹화 시작
              type: integer
          type: object
        streaming_server_type:
          description: 스트리밍 서버 종류
          type: string
        streaming_server_host:
          description: 스트리밍 서버 호스트
          type: string
        streaming_server_ip:
          description: 스트리밍 서버 IP
          type: string
        timeshift_cue_sign_at:
          description: Timeshift 큐 사인 시점
          type: string
        started_at:
          description: 방송 시작 시각
          type: string
        paused_at:
          description: 방송 일시정지 시각
          type: string
        ended_at:
          description: 방송 종료 시각
          type: string
        created_at:
          description: 방송 생성 일시
          type: string
        updated_at:
          description: 방송 정보 업데이트 일시
          type: string
      type: object
    ApiOpenLiveMediaChannelChatting:
      properties:
        use_chatting_service:
          description: 채팅 사용 여부
          type: boolean
        chatting_service:
          $ref: '#/components/schemas/ApiOpenChattingService'
        chatting_position:
          description: 플레이어 내 채팅창 노출 위치
          type: string
          enum:
            - right
            - left
            - bottom
        chatting_embed_code:
          description: 채팅 HTML 임베드 코드
          type: string
        concurrently_chatting_limit:
          description: 채팅방 동시 입장 최대 인원 제한
          type: integer
        chatting_limit_count:
          description: 채팅 참여자 1명이 1분 동안 전송할 수 있는 최대 메시지 수
          type: integer
        chatting_join_message:
          description: 채팅 참여 시 노출되는 환영 메시지
          type: string
        chatting_anonymous_chat:
          description: 익명 채팅 활성화 여부
          type: boolean
        chatting_display_profile_photo:
          description: 채팅 참여자 프로필 이미지 노출 여부
          type: boolean
        chatting_disable_default_profile_photo:
          description: 기본 프로필 이미지 업데이트
          type: boolean
        chatting_profile_photo_url:
          description: 프로필 이미지 URL
          type: string
        chatting_enable_block:
          description: 채팅 관리자 전용 사용자 차단(강제 퇴장) 기능 활성화 여부
          type: boolean
        chatting_admin_ids:
          description: '채팅 관리자 ID (구분자: 공백)'
          type: string
        chatting_send_status:
          description: '''좋아요'' 반응 기능 활성화 여부'
          type: boolean
      type: object
    ApiOpenLiveMediaChannelItem:
      properties:
        id:
          description: 채널 ID
          type: integer
        key:
          description: 채널 키
          type: string
        title:
          description: 채널 이름
          type: string
        customer_code:
          description: 고객사 내부 관리용 식별 코드
          type: string
        concurrently_viewer_limit:
          description: '최대 동시 시청자 수 (`0`: 무제한)'
          type: integer
        kind:
          description: |-
            채널 타입 (라이브 유형)
            - `0`: 라이브
            - `1`: 편성 라이브
            - `3`: 저지연 라이브
          type: integer
        is_shared:
          description: '채널 공개 여부 (`true`: 공개, `false`: 비공개)'
          type: boolean
        profile_group:
          $ref: '#/components/schemas/ApiOpenLiveMediaProfileGroup'
        meta_title_pattern:
          description: 메타 정보 제목 명명 규칙
          type: string
        meta_description:
          description: 메타 정보 내용
          type: string
        logo_url:
          description: 로고 URL
          type: string
        idle_screen_url:
          description: 대기 화면 URL
          type: string
        idle_screen_kind:
          description: 대기 화면 유형
          properties:
            type:
              description: '대기 화면 유형 (`poster`: 사전에 등록한 포스터 노출, `snapshot`: 최신 스냅샷 노출)'
              type: string
              enum:
                - poster
                - snapshot
            value:
              description: |-
                대기 화면 유형 코드
                - `0`: 사전에 등록한 포스터 이미지 노출
                - `1`: 최신 스냅샷 이미지 노출
              type: integer
          type: object
        publish_url:
          description: 애플리케이션 링크 (OBS, vMix 등의 외부 인코더 연결 시 사용하는 방송 송출 주소 및 송출 연결 정보)
          type: string
        video_gateway_url:
          description: 비디오 게이트웨이 링크 (라이브 방송 시청 URL)
          type: string
        recording_file_policy:
          description: 녹화 파일 저장 방식
          properties:
            type:
              description: '녹화 파일 저장 방식 (`segment`: 자동 저장, `duplicate`: 수동 저장)'
              type: string
              enum:
                - not_used
                - segment_recording
                - segment_and_duplicate_recording
            value:
              description: |-
                녹화 파일 저장 방식 코드
                - `0`: 미사용
                - `1`: 자동 저장
                - `3`: 자동 저장 + 수동 저장
              type: integer
          type: object
        recording_file_pattern:
          description: 녹화 파일 명명 규칙
          type: string
        recording_file_segment_policy:
          description: 녹화 파일 자동 저장 기준
          properties:
            type:
              description: >-
                녹화 파일 자동 저장 기준 (`by_size`: 녹화 파일 용량(4G) 기준 분할 저장, `by_duration`:
                녹화 시간 기준 분할 저장)
              type: string
              enum:
                - by_size
                - by_duration
            value:
              description: >-
                녹화 파일 자동 저장 기준 코드 (`1`: 녹화 파일 용량(4G) 기준 분할 저장, `2`: 녹화 시간 기준 분할
                저장)
              type: integer
          type: object
        recording_file_segment_by_size:
          description: 녹화 파일 용량 기준 분할 저장 선택 시 파일 최대 용량 (Mib)
          type: integer
        recording_file_segment_by_duration:
          description: '녹화 시간 기준 분할 저장 선택 시 자동 저장 시간 간격 (단위: 분)'
          type: integer
        media_player_policy:
          description: Kollus 보안 플레이어 사용 설정
          properties:
            type:
              description: >-
                Kollus 보안 플레이어 사용 설정 (`auto_detect`: 자동 감지,
                `force_exclusive_player`: 강제 사용)
              type: string
              enum:
                - auto_detect
                - force_exclusive_player
            value:
              description: |-
                Kollus 보안 플레이어 사용 설정 코드
                - `0`: 자동 감지
                - `1`: 강제 사용
              type: integer
          type: object
        use_chatting_service:
          description: 채팅 서비스 활성화 여부
          type: boolean
        chatting_service:
          $ref: '#/components/schemas/ApiOpenChattingService'
        use_duplicate_block:
          description: 중복 재생 차단 사용 여부
          type: boolean
        use_capture_block:
          description: 녹화 및 캡처 차단 사용 여부 (보안 플레이어 전용)
          type: boolean
        use_timeshift:
          description: 라이브 방송 중 이전 시점 시청(Timeshift) 기능 활성화 여부
          type: boolean
        use_aes128:
          description: AES-128 암호화 사용 여부
          type: boolean
        hided_at:
          description: 채널 숨김 시각
          type: string
        created_at:
          description: 채널 등록 일시
          type: string
        updated_at:
          description: 채널 정보 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaChannel:
      properties:
        id:
          description: 채널 ID
          type: integer
        key:
          description: 채널 키
          type: string
        title:
          description: 채널 이름
          type: string
        customer_code:
          description: 고객사 내부 관리용 식별 코드
          type: string
        concurrently_viewer_limit:
          description: '최대 동시 시청자 수 (`0`: 무제한)'
          type: integer
        kind:
          description: 채널 타입
          properties:
            type:
              description: '채널 타입 (`general`: 일반 라이브 채널, `programming`: 편성 라이브 채널)'
              type: string
              enum:
                - general
                - programming
            value:
              description: |-
                채널 타입 코드
                - `0`: 일반 라이브 채널
                - `1`: 편성 라이브 채널
              type: integer
        is_shared:
          description: '채널 공개 여부 (`true`: 공개, `false`: 비공개)'
          type: boolean
        profile_group:
          $ref: '#/components/schemas/ApiOpenLiveMediaProfileGroup'
        creators:
          description: Creator 계정 정보
          type: array
          items:
            $ref: '#/components/schemas/ApiOpenLiveCreator'
        latest_broadcast:
          $ref: '#/components/schemas/ApiOpenLiveMediaBroadcastItem'
        meta_title_pattern:
          description: 메타 정보 제목 명명 규칙
          type: string
        meta_description:
          description: 메타 정보 내용
          type: string
        logo_url:
          description: 로고 URL
          type: string
        idle_screen_url:
          description: 대기 화면 URL
          type: string
        idle_screen_kind:
          description: 대기 화면 유형
          properties:
            type:
              description: '대기 화면 유형 (`poster`: 사전에 등록한 포스터 노출, `snapshot`: 최신 스냅샷 노출)'
              type: string
              enum:
                - poster
                - snapshot
            value:
              description: |-
                대기 화면 유형 코드
                - `0`: 사전에 등록한 포스터 이미지 노출
                - `1`: 최신 스냅샷 이미지 노출
              type: integer
          type: object
        publish_url:
          description: 애플리케이션 링크 (OBS, vMix 등의 외부 인코더 연결 시 사용하는 방송 송출 주소 및 송출 연결 정보)
          type: string
        video_gateway_url:
          description: 비디오 게이트웨이 링크 (라이브 방송 시청 URL)
          type: string
        recording_file_policy:
          description: 녹화 파일 저장 방식
          properties:
            type:
              description: '녹화 파일 저장 방식 (`segment`: 자동 저장, `duplicate`: 수동 저장)'
              type: string
              enum:
                - not_used
                - segment_recording
                - segment_and_duplicate_recording
            value:
              description: |-
                녹화 파일 저장 방식 코드
                - `0`: 미사용
                - `1`: 자동 저장
                - `3`: 자동 저장 + 수동 저장
              type: integer
          type: object
        recording_file_pattern:
          description: 녹화 파일 명명 규칙
          type: string
        recording_file_segment_policy:
          description: 녹화 파일 자동 저장 기준
          properties:
            type:
              description: >-
                녹화 파일 자동 저장 기준 (`by_size`: 녹화 파일 용량(4G) 기준 분할 저장, `by_duration`:
                녹화 시간 기준 분할 저장)
              type: string
              enum:
                - by_size
                - by_duration
            value:
              description: >-
                녹화 파일 자동 저장 기준 코드 (`1`: 녹화 파일 용량(4G) 기준 분할 저장, `2`: 녹화 시간 기준 분할
                저장)
              type: integer
          type: object
        recording_file_segment_by_size:
          description: 녹화 파일 용량 기준 분할 저장 선택 시 파일 최대 용량 (Mib)
          type: integer
        recording_file_segment_by_duration:
          description: '녹화 시간 기준 분할 저장 선택 시 자동 저장 시간 간격 (단위: 분)'
          type: integer
        media_player_policy:
          description: Kollus 보안 플레이어 사용 설정
          properties:
            type:
              description: >-
                Kollus 보안 플레이어 사용 설정 (`auto_detect`: 자동 감지,
                `force_exclusive_player`: 강제 사용)
              type: string
              enum:
                - auto_detect
                - force_exclusive_player
            value:
              description: |-
                Kollus 보안 플레이어 사용 설정 코드
                - `0`: 자동 감지
                - `1`: 강제 사용
              type: integer
          type: object
        use_chatting_service:
          description: 채팅 서비스 활성화 여부
          type: boolean
        chatting_service:
          $ref: '#/components/schemas/ApiOpenChattingService'
        division_delayed_minutes:
          description: '네트워크 장애 시 세션 유지를 위한 유효 대기 시간 (단위: 분)'
          type: integer
        use_duplicate_block:
          description: 중복 재생 차단 사용 여부
          type: boolean
        use_capture_block:
          description: 녹화 및 캡처 차단 사용 여부 (보안 플레이어 전용)
          type: boolean
        use_timeshift:
          description: 라이브 방송 중 이전 시점 시청(Timeshift) 기능 활성화 여부
          type: boolean
        use_aes128:
          description: AES-128 암호화 사용 여부
          type: boolean
        use_broadcast_update_callback:
          description: 라이브 콜백 기능 활성화 여부
          type: boolean
        broadcast_update_callback_url:
          description: 라이브 콜백 URL
          type: string
        use_recording_file_transfer_callback:
          description: 녹화 파일 전송 콜백 기능 활성화 여부
          type: boolean
        recording_file_transfer_callback_url:
          description: 녹화 파일 전송 콜백 URL
          type: string
        use_lms_callback:
          description: LMS 콜백 기능 활성화 여부
          type: boolean
        lms_callback_url:
          description: LMS 콜백 URL
          type: string
        use_play_callback:
          description: 재생 콜백 기능 활성화 여부
          type: boolean
        play_callback_url:
          description: 재생 콜백 URL
          type: string
        use_referer_check:
          description: |-
            레퍼러 접근 제어 정책
            - `0`: 미사용
            - `1`: 특정 도메인 허용
            - `2`: 특정 도메인 차단
          type: integer
          enum:
            - 0
            - 1
            - 2
        referer_check_domains:
          description: '재생을 허용할 도메인 주소 목록 (구분자: 콤마)'
          type: string
        referer_reject_domains:
          description: '재생을 차단할 도메인 주소 목록 (구분자: 콤마)'
          type: string
        status:
          description: '채널 상태 (`true`: 활성, `false`: 비활성)'
          type: boolean
        hided_at:
          description: 채널 숨김 시각
          type: string
        created_at:
          description: 채널 등록 일시
          type: string
        updated_at:
          description: 채널 정보 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaFileTransfer:
      description: 파일 전송처 정보
      properties:
        id:
          description: 전송처 ID
          type: integer
        title:
          description: 전송처 식별 명칭
          type: string
        host:
          description: (FTP, SFTP, Kollus 필수) 호스트 서버 주소
          type: string
        port:
          description: (FTP, SFTP 필수) 포트 번호
          type: string
        username:
          description: (FTP, SFTP, Kollus 필수) 서버 접속 사용자 계정
          type: string
        password:
          description: (FTP, SFTP, Kollus 필수) 서버 접속 비밀번호
          type: string
        remote_path:
          description: (FTP, SFTP 필수) 파일이 저장될 원격 서버 경로
          type: string
        category_key:
          description: (Kollus 필수) 업로드 대상 카테고리 키
          type: string
        use_encryption:
          description: (Kollus 필수) 녹화 파일 암호화 사용 여부
          type: boolean
        aws_access_key_id:
          description: (S3 필수) S3 Access Key
          type: string
        aws_secret_access_key:
          description: (S3 필수) S3 Secret Access Key
          type: string
        bucket_name:
          description: (S3 필수) 파일이 저장될 S3 버킷 이름
          type: string
        aws_region_key:
          description: (S3 필수) S3 Region Key
          type: string
        status:
          description: 파일 전송 활성화 여부
          type: boolean
        created_at:
          description: 전송처 등록 일시
          type: string
        updated_at:
          description: 전송처 정보 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaProfileGroup:
      description: 인코딩 프로파일 그룹 정보
      properties:
        id:
          description: 인코딩 프로파일 그룹 ID
          type: integer
        name:
          description: 인코딩 프로파일 그룹 이름
          type: string
        key:
          description: 인코딩 프로파일 그룹 키
          type: string
        group_type:
          description: 인코딩 프로파일 그룹 유형
          properties:
            type:
              description: 인코딩 프로파일 그룹 유형
              type: string
            value:
              description: 인코딩 프로파일 그룹 유형 코드
              type: integer
        screen_type:
          description: '비디오 화면 방향 (`landscape`: 가로, `portrait`: 세로)'
          type: string
        created_at:
          description: 인코딩 프로파일 그룹 생성 일시
          type: string
        updated_at:
          description: 인코딩 프로파일 그룹 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaRecordingFile:
      properties:
        id:
          description: 녹화 파일 ID
          type: integer
        channel_key:
          description: 채널 키
          type: string
        broadcast_key:
          description: 방송 키
          type: string
        kind:
          description: '녹화 파일 저장 방식 (`segment`: 자동 저장, `duplicate`: 수동 저장)'
          type: string
        filesize:
          description: 녹화 파일 용량 (bytes)
          type: integer
        started_at:
          description: 방송 시작 시각
          type: string
        ended_at:
          description: 방송 종료 시각
          type: string
        created_at:
          description: 녹화 파일 생성 일시
          type: string
        updated_at:
          description: 녹화 파일 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaSyndication:
      properties:
        id:
          description: 신디케이션 ID
          type: integer
        title:
          description: 신디케이션 식별 명칭
          type: string
        application_link:
          description: 외부 플랫폼의 스트림 수신 URL (링크)
          type: string
        stream_key:
          description: 외부 플랫폼에서 제공하는 방송 식별 키 (스트림 키)
          type: string
        status:
          description: |-
            신디케이션 활성화 여부
            - `0`: 비활성
            - `1`: 활성
          type: integer
        created_at:
          description: 신디케이션 추가 일시
          type: string
        updated_at:
          description: 신디케이션 정보 수정 일시
          type: string
      type: object
    ApiOpenLiveMediaGeneralFile:
      properties:
        id:
          description: VOD 콘텐츠 ID
          type: integer
        title:
          description: VOD 콘텐츠 제목
          type: string
        upload_file_key:
          description: 업로드 파일 키
          type: string
        raw_duration:
          description: '대기 화면 노출 시간 (단위: 밀리초)'
          type: integer
        created_at:
          description: 편성 등록 일시
          type: string
        updated_at:
          description: 편성 수정 일시
          type: string
      type: object
    ApiOpenProgramSchedule:
      properties:
        id:
          description: ID
          type: integer
        live_program_id:
          description: 프로그램 ID
          type: integer
        live_media_channel_key:
          description: 채널 키
          type: string
        title:
          description: 프로그램 제목
          type: string
        wait_file:
          $ref: '#/components/schemas/ApiOpenLiveMediaWaitFile'
        files:
          $ref: '#/components/schemas/ApiOpenLiveMediaGeneralFile'
        ongoing:
          description: '방송 진행 중 여부 (`1`: 진행 중)'
          type: integer
        finished:
          description: '방송 종료 여부 (`1`: 종료)'
          type: integer
        started_at:
          description: 방송 시작 시간
          type: string
        ended_at:
          description: 방송 종료 시간
          type: string
        created_at:
          description: 편성 등록 일시
          type: string
        updated_at:
          description: 편성 수정 일시
          type: string
      type: object
    ApiOpenMediaContentUploadURL:
      properties:
        upload_url:
          description: 업로드 URL
          type: string
        progress_url:
          description: 업로드 진행률 확인 URL
          type: string
        upload_file_key:
          description: 업로드 파일 키
          type: string
        will_be_expired_at:
          description: URL 만료 시각
          type: string
      type: object
    ApiOpenLiveMediaProfile:
      description: 라이브 인코딩 프로파일 정보
      properties:
        id:
          description: 인코딩 프로파일 ID
          type: integer
        name:
          description: 인코딩 프로파일 이름
          type: string
        key:
          description: 인코딩 프로파일 키
          type: string
        profile_type:
          description: 인코딩 프로파일 유형
          type: integer
        device_type:
          description: 디바이스 유형
          type: string
        video_codec:
          description: 비디오 코덱
          type: string
        video_profile:
          description: 비디오 프로파일
          type: string
        video_bitrate:
          description: 비디오 비트레이트
          type: integer
        video_framerate:
          description: 비디오 프레임레이트
          type: integer
        video_width:
          description: 비디오 가로 해상도
          type: integer
        video_height:
          description: 비디오 세로 해상도
          type: integer
        video_fitmode:
          description: 영상 출력 비율 맞춤 방식
          type: string
        video_screen_type:
          description: '비디오 화면 방향 (`landscape`: 가로, `portrait`: 세로)'
          type: string
        audio_codec:
          description: 오디오 코덱
          type: string
        audio_bitrate:
          description: 오디오 비트레이트
          type: integer
        audio_sample_rate:
          description: 오디오 샘플레이트
          type: integer
        status:
          description: 인코딩 프로파일 선택 가능 여부
          type: boolean
        is_default_preset:
          description: 기본 프리셋 설정 여부
          type: boolean
        is_used:
          description: 인코딩 프로파일 활성화 여부
          type: boolean
        created_at:
          description: 인코딩 프로파일 생성 일시
          type: string
        updated_at:
          description: 인코딩 프로파일 수정 일시
          type: string
      type: object
    ApiOpenLiveContract:
      properties:
        start_date:
          description: 서비스 계약 시작 일시
          type: string
        end_date:
          description: 서비스 계약 종료 일시
          type: string
        live_service_type:
          description: 서비스 제공 유형
          type: string
        live_max_channels:
          description: 최대 채널 수
          type: integer
        live_max_fps:
          description: 최대 프레임레이트 (FPS)
          type: integer
        live_max_bitrate:
          description: 최대 비트레이트 (Kbps)
          type: integer
        live_use_concurrently_viewer_limit:
          description: 동시 시청자 수 제한 적용 여부
          type: boolean
        live_use_exclusive_player:
          description: Kollus 보안 플레이어 사용 여부
          type: boolean
        live_duplicate_block:
          description: |-
            중복 재생 차단 사용 여부
            - `0`: 미차단
            - `1`: 차단
          type: integer
        live_max_player_id_count:
          description: 등록 가능 최대 기기 수
          type: integer
        live_capture_block_policy:
          description: 녹화 및 캡처 차단 사용 여부
          type: boolean
        live_capture_period:
          description: 녹화 및 캡처 차단 로직 실행 주기
          type: integer
        live_use_time_shift:
          description: 라이브 방송 중 이전 시점 시청(Timeshift) 기능 활성화 여부
          type: boolean
        live_use_recording_file:
          description: 녹화 파일 자동 전송 기능 사용 여부
          type: boolean
        live_max_recording_files_per_channel:
          description: 채널별 등록 가능한 녹화 파일 전송처 수
          type: integer
        live_use_syndication:
          description: 신디케이션(외부 플랫폼 동시 송출) 기능 사용 여부
          type: boolean
        live_max_syndication_per_channel:
          description: 채널별 등록 가능한 신디케이션 설정 수
          type: integer
        live_use_snapshot:
          description: 스냅샷 생성 기능 사용 여부
          type: boolean
        live_use_mobile_encoder_sdk:
          description: 모바일 인코더 SDK 사용 여부
          type: boolean
        live_use_lms_callback:
          description: LMS 콜백 기능 활성화 여부
          type: boolean
        live_use_play_callback:
          description: 재생 콜백 기능 활성화 여부
          type: boolean
        live_use_chatting_service:
          description: 채팅 서비스 사용 여부
          type: boolean
        chatting_service:
          description: 채팅 서비스 계약 정보
          properties:
            kind:
              description: '채팅 서비스 유형 코드 (`1`: Chatroll, `2`: Kollus)'
              type: integer
            info:
              description: 채팅 관련 설정 (JSON 형식)
              type: object
            use_scalable:
              description: 대규모 채팅 서비스 적용 여부
              type: boolean
          type: object
        live_use_file_to_live:
          description: 편성 라이브 기능 사용 여부
          type: boolean
        user_id:
          description: 서비스 사용자 식별 번호
          type: integer
      type: object
    ApiOpenProgramMediaContents:
      properties:
        id:
          description: VOD 콘텐츠 ID
          type: integer
        title:
          description: VOD 콘텐츠 제목
          type: string
        upload_file_key:
          description: 업로드 파일 키
          type: string
        duration:
          description: '전체 콘텐츠 길이 (단위: 초)'
          type: string
        raw_duration:
          description: '전체 콘텐츠 길이 (단위: 밀리초)'
          type: integer
        is_passthru:
          description: |-
            패스스루(원본 영상 정보 유지) 적용 여부
            - `0`: 미적용
            - `1`: 적용
          type: boolean
        transcoding_state:
          description: 트랜스코딩 진행 상태
          type: string
        transcoding_percent:
          description: 트랜스코딩 진행률 (%)
          type: integer
        created_at:
          description: 콘텐츠 등록 일시
          type: string
        updated_at:
          description: 콘텐츠 정보 수정 일시
          type: string
        snapshot_url:
          description: 스냅샷 URL
          type: string
        status:
          description: 콘텐츠 활성화 및 편성 가능 여부
          type: integer
        programs_ready_schedules:
          $ref: '#/components/schemas/ApiOpenProgramScheduleResourceSummary'
        transcoding_file:
          $ref: '#/components/schemas/ApiTranscodingFile'
        transcoding_file_size:
          description: 트랜스코딩 파일 용량
          type: integer
        original_file_size:
          description: 원본 파일 용량
          type: integer
        sum_original_file_and_transcoding_file:
          description: 트랜스코딩 및 원본 파일 용량 합계
          type: integer
      type: object
    ApiTranscodingFile:
      description: 트랜스코딩 파일 정보
      properties:
        id:
          description: 트랜스코딩 파일 ID
          type: integer
        profile_name:
          description: 인코딩 프로파일 이름
          type: string
        profile_key:
          description: 인코딩 프로파일 키
          type: string
        media_information:
          description: 미디어 정보
          type: object
        raw_duration:
          description: '전체 콘텐츠 길이 (단위: 밀리초)'
          type: integer
        created_at:
          description: 콘텐츠 등록 일시
          type: string
        updated_at:
          description: 콘텐츠 정보 수정 일시
          type: string
      type: object
    ApiOpenProgramScheduleResourceSummary:
      properties:
        id:
          description: 프로그램 ID
          type: integer
        start_at:
          description: 방송 시작 시각
          type: string
        end_at:
          description: 방송 종료 시각
          type: string
      type: object
    ApiOpenLiveMediaWaitFile:
      properties:
        id:
          description: 대기 화면 ID
          type: integer
        title:
          description: 대기 화면 이름
          type: string
        upload_file_key:
          description: 업로드 파일 키
          type: string
        raw_duration:
          description: '대기 화면 노출 시간 (단위: 밀리초)'
          type: integer
        created_at:
          description: 대기 화면 이미지 업로드 일시
          type: string
        updated_at:
          description: 대기 화면 정보 수정 일시
          type: string
      type: object
    ApiOpenLiveBroadcastStatisticsSummary:
      description: 방송별 통계 요약
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        max_cur_user:
          description: 최대 동시 시청자 수
          type: integer
        max_sum_user:
          description: 누적 시청자 수
          type: integer
        total_acc_user:
          description: 순 시청자 수
          type: integer
        total_count:
          description: 조회 수
          type: integer
        total_broadcast_interval:
          description: 총 방송 시간
          type: string
        total_watch_time:
          description: 총 시청 시간
          type: string
        average_broadcast_interval:
          description: 평균 방송 시간
          type: string
        average_watch_time:
          description: 평균 시청 시간
          type: string
        live_count:
          description: 방송 횟수
          type: integer
      type: object
    ApiOpenLiveChannelStatisticsSummary:
      description: 채널별 통계 요약
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        max_cur_user:
          description: 최대 동시 시청자 수
          type: integer
        max_sum_user:
          description: 누적 시청자 수
          type: integer
        total_acc_user:
          description: 순 시청자 수
          type: integer
        total_count:
          description: 조회 수
          type: integer
        total_broadcast_interval:
          description: 총 방송 시간
          type: string
        total_watch_time:
          description: 총 시청 시간
          type: string
        average_broadcast_interval:
          description: 평균 방송 시간
          type: string
        average_watch_time:
          description: 평균 시청 시간
          type: string
        live_count:
          description: 방송 횟수
          type: integer
      type: object
    ApiOpenLiveStatisticsSummary:
      description: 통계 요약
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        max_cur_user:
          description: 최대 동시 시청자 수
          type: integer
        max_sum_user:
          description: 누적 시청자 수
          type: integer
        total_acc_user:
          description: 순 시청자 수
          type: integer
        total_count:
          description: 조회 수
          type: integer
        total_broadcast_interval:
          description: 총 방송 시간
          type: string
        total_watch_time:
          description: 총 시청 시간
          type: string
        average_broadcast_interval:
          description: 평균 방송 시간
          type: string
        average_watch_time:
          description: 평균 시청 시간
          type: string
        live_count:
          description: 방송 횟수
          type: integer
      type: object
    ApiOpenLiveSummaryDaily:
      description: 일별 통계 요약
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        total_transfer:
          description: 총 전송량 (bytes)
          type: integer
        max_traffic:
          description: 최대 트래픽 (bps)
          type: integer
        total_watch_time:
          description: '총 시청 시간 (단위: 분)'
          type: integer
        total_broadcast_time:
          description: '총 방송 시간 (단위: 분)'
          type: integer
        daily_data:
          type: array
          items:
            properties:
              datetime:
                description: 조회 대상 기준 날짜
                type: string
              transfer:
                description: 전송량 (bytes)
                type: integer
              traffic:
                description: 트래픽 (bps)
                type: integer
              watch_time:
                description: '시청 시간 (단위: 분)'
                type: integer
              broadcast_time:
                description: '방송 시간 (단위: 분)'
                type: integer
            type: object
      type: object
    ApiOpenLiveBroadcastViewer:
      description: 방송별 시청자 수 통계
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        max_cur_user:
          description: 최대 동시 시청자 수
          type: integer
        max_acc_user:
          description: 누적 시청자 수
          type: integer
        daily_data:
          type: array
          items:
            properties:
              datetime:
                description: 조회 대상 기준 날짜
                type: string
              cur_user:
                description: 동시 시청자 수
                type: integer
              acc_user:
                description: 순 시청자 수
                type: integer
            type: object
      type: object
    ApiOpenLiveChannelViewer:
      description: 채널별 시청자 수 통계
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        max_cur_user:
          description: 최대 동시 시청자 수
          type: integer
        max_acc_user:
          description: 누적 시청자 수
          type: integer
        user_data:
          type: array
          items:
            properties:
              datetime:
                description: 조회 대상 기준 날짜
                type: string
              cur_user:
                description: 동시 시청자 수
                type: integer
              acc_user:
                description: 순 시청자 수
                type: integer
            type: object
      type: object
    ApiOpenLiveViewer:
      description: 시청자 수 통계
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        max_cur_user:
          description: 최대 동시 시청자 수
          type: integer
        max_acc_user:
          description: 누적 시청자 수
          type: integer
        user_data:
          type: array
          items:
            properties:
              datetime:
                description: 조회 대상 기준 날짜
                type: string
              cur_user:
                description: 동시 시청자 수
                type: integer
              acc_user:
                description: 순 시청자 수
                type: integer
            type: object
      type: object
    ApiOpenVodSummaryDaily:
      description: 일별 VOD 통계 요약
      properties:
        startdate:
          description: 조회 범위 시작 날짜
          type: string
        enddate:
          description: 조회 범위 종료 날짜
          type: string
        total_transfer:
          description: 총 전송량 (bytes)
          type: integer
        max_traffic:
          description: 최대 트래픽 (bps)
          type: integer
        total_storage:
          description: 총 스토리지 (bytes)
          type: integer
        total_transcoding_size:
          description: 총 트랜스코딩 파일 용량 (bytes)
          type: integer
        total_transcoding_count:
          description: 총 트랜스코딩 수
          type: integer
        total_visitor:
          description: 총 방문자 수
          type: integer
        daily_data:
          type: array
          items:
            properties:
              datetime:
                description: 조회 대상 기준 날짜
                type: string
              transfer:
                description: 전송량 (bytes)
                type: integer
              traffic:
                description: 트래픽 (bps)
                type: integer
              storage:
                description: 스토리지 (bytes)
                type: integer
              transcoding_size:
                description: 트랜스코딩 파일 용량 (bytes)
                type: integer
              transcoding_count:
                description: 트랜스코딩 수
                type: integer
              visitor:
                description: 방문자 수
                type: integer
            type: object
      type: object
  securitySchemes:
    kollus_oauth2:
      type: oauth2
      description: Kollus oauth2 security.
      flows:
        authorizationCode:
          authorizationURL: https://live-kr.kollus.com/oauth/authorize
          tokenURL: https://live-kr.kollus.com/oauth/token
          refreshURL: https://live-kr.kollus.com/token/refresh
          scopes:
            live:control: Live Control
            live:statistics: Live Statistics
        clientCredentials:
          tokenURL: https://live-kr.kollus.com/oauth/token
          refreshURL: https://live-kr.kollus.com/token/refresh
          scopes:
            live:creator: Live Creator App
            platform-app: Platform Api Actions
