객체

# CampaignInfo

- 방송 상세 정보
- 방송의 정보는 공통적으로 구성되는 요소들과 함께 각 상태 (`READY`, `ONAIR`, `CLOSED`) 별로 다른 요소들이 추가됩니다.

## 공통(Common)

| Name               | Type                                   | Description       | Note                                                                                                                         |
| ------------------ | -------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| campaignKey        | string                                 | campaign key      |                                                                                                                              |
| campaignUrl        | string                                 | 방송 서비스 URL        | 샵라이브 도메인으로 직접 제공하는, 사용자가 PC/모바일 웹에서 방송에 입장하기 위한 웹페이지 URL입니다. 파라미터에 tk=`{authorization jwt token}`을 함께 붙여 로그인 사용자로 입장시킬 수 있습니다. |
| title              | string                                 | 방송 이름             |                                                                                                                              |
| hostName           | string                                 | 진행자 이름            | 캠페인에 진행자를 명시할 경우 진행자의 이름을 반환합니다                                                                                              |
| memo               | string                                 | 방송 메모             |                                                                                                                              |
| campaignStatus     | string                                 | 방송 상태             | `READY` 준비중<br>`ONAIR` 진행중<br>`CLOSED` 종료됨                                                                                   |
| unsupportInfoUrl   | string                                 | IE 미지원 안내 이미지 URL | IE에서 접속했을 때 화면에 노출할 이미지 URL입니다. 방송 상세 설정에서 이미지를 업로드할 수 있습니다.                                                                 |
| campaignGoodsList  | list\<[CampaignGoods](#CampaignGoods)> | 방송 상품 목록          | 방송에 등록된 상품 목록입니다.<br>캠페인 목록 API에서는 모아보기 구성을 위한 최상단 1개의 상품만 제공하며, 캠페인 상세 조회 시 `allGoods=true` 인 경우 전체 상품 목록을 반환합니다.           |
| campaignGoodsCount | int32                                  | 방송에 등록 상품 개수      | 이 방송에 등록되어 있는 상품의 총 개수입니다.                                                                                                   |
| scheduledAt        | timestamp(int64)                       | 방송 시작 예정 시각       | timestamp in milliseconds.<br>방송 시작 예정 시각을 방송 상세 설정에서 지정할 수 있습니다.                                                            |
| scheduledEndAt     | timestamp(int64)                       | 방송 종료 예정 시각       | timestamp in milliseconds.<br>방송 종료 예정 시각을 방송 상세 설정에서 지정할 수 있습니다.                                                            |
| userCount          | int32                                  | 누적 시청자수           |                                                                                                                              |
| adoreCount         | int32                                  | 좋아요 수             |                                                                                                                              |

### `준비중` 상태일 때 다음의 정보가 추가로 세팅됩니다.

- `READY`

| Name      | Type   | Description | Note                              |
| --------- | ------ | ----------- | --------------------------------- |
| posterUrl | string | 예고 이미지      | 방송 시작 전 `준비중` 상태에서 노출할 예고 이미지입니다. |

### `진행중` 상태일 때 다음의 정보가 추가로 세팅됩니다.

- `ONAIR`

| Name           | Type             | Description           | Note                                                                                                    |
| -------------- | ---------------- | --------------------- | ------------------------------------------------------------------------------------------------------- |
| previewLiveUrl | string           | 방송 영상 미리보기 (m3u8) URL | 로고, 사용자수, 채팅 등을 제외한 **영상만** 미리보기로 제공할 경우에 필요한 HLS m3u8 URL 정보입니다.<br>resolutionLevel에 따라 기본 해상도가 결정됩니다. |
| liveUrl        | string           | 방송 영상 원본 (m3u8) URL   | 사용자의 네트워크 환경에 따라 해상도가 변경되는 영상의 URL입니다.<br>일반적으로 직접 이 값을 사용할 경우는 없습니다.                                   |
| backgroundUrl  | string           | 배경 이미지 URL            | 방송 진행중 송출이 일시적으로 중단되거나 사용자가 해상도 변경 과정에서 잠시 노출할 기분 배경 이미지입니다. 방송 상세에서 설정할 수 있습니다.                        |
| startedAt      | timestamp(int64) | 방송 시작 시각              | timestamp in milliseconds                                                                               |

### `종료됨` 상태일 때 다음의 정보가 추가로 세팅됩니다.

- CLOSED

| Name                 | Type             | Description          | Note                                                                                                                                    |
| -------------------- | ---------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| replayLiveUrl        | string           | 방송 다시보기 URL          | 샵라이브 도메인에서 직접 제공하는, 종료된 방송의 다시보기 URL입니다.<br>스크립트를 embed하여 직접 구현하신 경우 동일한 랜딩 페이지에서 다시보기(리플레이)를 제공합니다. 방송 상세 설정에서 다시보기 제공 여부를 결정할 수 있습니다. |
| previewReplayLiveUrl | string           | 방송 다시보기 영상의 미리보기 URL | 로고, 사용자수, 채팅 등을 제외한 **영상만** 제공할 경우에 필요한 HLS m3u8 URL 정보입니다.<br>resolutionLevel에 따라 기본 해상도가 결정됩니다.                                       |
| poster2Url           | string           | 방송 종료 후 이미지 URL      | 방송 종료 후 화면에 노출할 이미지입니다.                                                                                                                 |
| startedAt            | timestamp(int64) | 방송 시작 시각             | timestamp in milliseconds                                                                                                               |
| endedAt              | timestamp(int64) | 방송 종료 시각             | timestamp in milliseconds                                                                                                               |

# CampaignGoods <span id="CampaignGoods"></span>

- 방송에 등록한 상품 정보

| Name                  | Type                             | Description                          | Note                                                      |
| --------------------- | -------------------------------- | ------------------------------------ | --------------------------------------------------------- |
| campaignId            | int64                            | campaign id                          | 샵라이브에서 방송에 부여한 고유 id                                      |
| goodsId               | int64                            | 상품 ID                                | 샵라이브에서 상품에 부여한 고유 id                                      |
| name                  | string                           | 상품명                                  |                                                           |
| brand                 | string                           | 상품 브랜드명                              |                                                           |
| description           | string                           | 상품 설명                                |                                                           |
| sku                   | string                           | 상품 코드                                |                                                           |
| action                | string                           | 상품 클릭 시 이벤트                          | 현재 `LINK` 단일 값입니다.<br>클릭 시 payload json의 url로 이동합니다.      |
| payload               | json                             | 상품 클릭 시 이동할 URL 정보를 포함하는 json object | `{ "url" : "상품 URL" }`                                    |
| medias                | list\<[GoodsMedia](#GoodsMedia)> | 상품 이미지 정보                            | List형태이지만 현재는 1개의 이미지만 지원합니다.                             |
| showingNow            | bool                             | `NOW` 여부                             | 방송 콘솔에서 상태를 변경할 수 있습니다.                                   |
| salesStatus           | string                           | 상품 판매 상태                             | `ON_SALE` 판매중<br>`ALMOST_SOLD_OUT` 품절 임박<br>`SOLD_OUT` 품절 |
| originalPrice         | double                           | 판매가                                  |                                                           |
| discountedPrice       | double                           | 할인가                                  |                                                           |
| customOriginalPrice   | string                           | 임의로 표시할 판매가 문자열                      | 샵라이브 UI에 표시하기 위해 내부적으로 설정하는 값이며 현재 직접 설정할 수는 없습니다.        |
| customDiscountedPrice | string                           | 임의로 표시할 할인가 문자열                      | 샵라이브 UI에 표시하기 위해 내부적으로 설정하는 값이며 현재 직접 설정할 수는 없습니다.        |
| discountPercentage    | double                           | 할인율                                  | 임의의 할인율을 백분율 단위로 입력할 수 있습니다 (0.0~100.0).                  |
| currency              | string                           | 통화                                   | `KRW` 원<br>`USD` 달러<br>...                                |
| traceId               | string                           | 로깅용 ID                               | 클릭 로깅을 위한 hash ID                                         |

# GoodsMedia <span id="GoodsMedia"></span>

- 상품 이미지 정보

| Name      | Type   | Description | Note               |
| --------- | ------ | ----------- | ------------------ |
| id        | int64  | 이미지 고유 ID   |                    |
| mediaType | string | 미디어 타입      | 현재 `IMAGE`만 지원합니다. |
| url       | string | 이미지 URL     |                    |
| size      | int64  | 이미지 크기      |                    |
| width     | int32  | 이미지 너비      |                    |
| height    | int32  | 이미지 높이      |                    |