콘텐츠 API
콘텐츠 API는 서버용 비공개 키가 필요합니다.
Authorization: Bearer {SERVER_PRIVATE_API_KEY}Accept: application/json콘텐츠 목록 조회
섹션 제목: “콘텐츠 목록 조회”GET /api/public/v1/contentsQuery parameters
섹션 제목: “Query parameters”| 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|
language | 선택 | string | ko, en, ja. 기본값 ko |
page | 선택 | integer | 페이지 번호. 기본값 1 |
limit | 선택 | integer | 페이지당 개수. 기본값 20, 최대 100 |
status | 선택 | string | publish, pending, paused, in_review, banned |
content_type | 선택 | string | vod, live, offline, digital_content |
category_id | 선택 | integer | 특정 카테고리의 콘텐츠만 조회 |
category_ids | 선택 | array 또는 comma string | 여러 카테고리 중 하나에 속한 콘텐츠 조회 |
tag_id | 선택 | integer | 특정 태그의 콘텐츠만 조회 |
tag_ids | 선택 | array 또는 comma string | 여러 태그 중 하나가 붙은 콘텐츠 조회 |
search | 선택 | string | 콘텐츠명 검색 |
curl -X GET "https://{site_host}/api/public/v1/contents?content_type=vod&page=1" \ -H "Authorization: Bearer {SERVER_PRIVATE_API_KEY}" \ -H "Accept: application/json"콘텐츠 상세 조회
섹션 제목: “콘텐츠 상세 조회”GET /api/public/v1/contents/{contentId}Query parameters
섹션 제목: “Query parameters”| 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|
language | 선택 | string | ko, en, ja. 기본값 ko |
콘텐츠 생성
섹션 제목: “콘텐츠 생성”POST /api/public/v1/contentsapplication/json 또는 multipart/form-data로 전송합니다.
공통 필드
섹션 제목: “공통 필드”| 이름 | 필수 | 타입 | 설명 |
|---|---|---|---|
content_type | 필수 | string | vod, live, offline, digital_content |
title | 필수 | string | 콘텐츠명 |
description_html | 필수 | string | 콘텐츠 상세 HTML |
category_ids | 필수 | array of integer | 카테고리 ID 목록 |
featured_image | 필수 | file 또는 string | 대표 이미지 |
status | 선택 | string | 기본값 pending |
images | 선택 | array | 추가 이미지 목록 |
thumbnail_link | 선택 | string | 썸네일 링크 |
inventory_display_mode | 선택 | string | 재고 표시 방식 |
installment_month | 선택 | integer | 0부터 36 |
allow_link | 선택 | string | 외부 허용 링크 |
connected_membership_ids | 선택 | array | 연결 멤버십 ID 목록 |
tag_ids | 선택 | array | 콘텐츠 태그 ID 목록. 현재 콘텐츠당 1개까지 선택 가능 |
options | 선택 | array | 구매 옵션 목록 |
VOD 전용 필드
섹션 제목: “VOD 전용 필드”| 이름 | 타입 | 설명 |
|---|---|---|
chapters | array | 챕터와 영상 아이템 구조 |
오프라인 콘텐츠 전용 필드
섹션 제목: “오프라인 콘텐츠 전용 필드”| 이름 | 타입 | 설명 |
|---|---|---|
location | string | 장소 |
schedule | array | 일정 정보 |
디지털 콘텐츠 전용 필드
섹션 제목: “디지털 콘텐츠 전용 필드”| 이름 | 타입 | 설명 |
|---|---|---|
download_files | array | 다운로드 파일 정보 |
curl -X POST "https://{site_host}/api/public/v1/contents" \ -H "Authorization: Bearer {SERVER_PRIVATE_API_KEY}" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "content_type": "vod", "title": "포토샵 입문 클래스", "description_html": "<p>처음 시작하는 분들을 위한 강의입니다.</p>", "status": "publish", "category_ids": [11], "tag_ids": [23], "featured_image": "https://example.com/main.jpg", "base_price": 39000, "sale_price": 29000, "is_on_sale": true, "options": [], "chapters": [] }'콘텐츠 수정
섹션 제목: “콘텐츠 수정”PUT /api/public/v1/contents/{contentId}전달한 필드만 업데이트합니다. 전달하지 않은 필드는 기존 값을 유지합니다.
주의 사항
섹션 제목: “주의 사항”content_type변경은 지원하지 않습니다.- 수정 요청은 대상 콘텐츠의 현재 유형을 기준으로 검증합니다.
- 오프라인 콘텐츠에 VOD 전용
chapters구조를 보내면422오류가 반환될 수 있습니다. featured_image를 보내면 대표 이미지가 교체됩니다.images를 보내면 추가 이미지 전체가 교체됩니다.category_ids를 보내면 카테고리 전체가 교체됩니다.tag_ids를 보내면 콘텐츠 태그가 교체됩니다. 빈 배열을 보내면 태그가 제거됩니다.connected_membership_ids를 보내면 연결 멤버십 전체가 교체됩니다.options를 보내면 해당 타입의 옵션 구조가 동기화됩니다.- VOD에서
chapters를 보내면 챕터/아이템 구조가 동기화됩니다.
curl -X PUT "https://{site_host}/api/public/v1/contents/4321" \ -H "Authorization: Bearer {SERVER_PRIVATE_API_KEY}" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "title": "포토샵 입문 클래스 v2", "status": "publish", "category_ids": [11, 12], "tag_ids": [23] }'대표 응답 필드
섹션 제목: “대표 응답 필드”| 필드 | 설명 |
|---|---|
content_id | 콘텐츠 ID |
title | 콘텐츠명 |
description_html | 콘텐츠 상세 HTML |
content_type | 콘텐츠 유형 |
status | 콘텐츠 상태 |
language | 언어 코드 |
category_ids | 카테고리 ID 목록 |
categories | 카테고리 상세 목록 |
tag_ids | 연결된 콘텐츠 태그 ID |
featured_image | 대표 이미지 |
images | 추가 이미지 |
base_price | 기본가 |
sale_price | 할인가 |
is_on_sale | 할인 여부 |
is_free | 무료 여부 |
connected_membership_ids | 연결 멤버십 ID |
options | 구매 옵션 |
chapters | VOD 챕터 구조 |
created_at | 생성 일시 |
updated_at | 수정 일시 |