플레이리스트
⚠️ 현재 상태(2026-04 기준) — 일부 SDK 메서드가 백엔드와 경로 정렬이 진행 중입니다.
| SDK 메서드 | 동작 | 비고 |
|---|---|---|
cb.video.addToPlaylist(playlistId, videoId, position?) | ✅ | POST /v1/public/playlists/:playlist_id/items |
cb.video.removeFromPlaylist(playlistId, itemId) | ✅ | DELETE /v1/public/playlists/:playlist_id/items/:item_id |
cb.video.createPlaylist(channelId, data) | ❌ 404 | SDK 가 POST /channels/:channelId/playlists 호출, 백엔드는 POST /v1/public/playlists (body 에 channel_id 포함) |
cb.video.getPlaylists(channelId) | ❌ 404 | SDK 가 GET /channels/:channelId/playlists 호출, 백엔드는 GET /v1/public/playlists (인증된 본인 목록) 또는 GET /v1/public/playlists/public |
cb.video.getPlaylistItems(playlistId) | ❌ 404 | 백엔드에 별도 items 조회 라우트 없음 — GET /v1/public/playlists/:playlist_id 응답에 items 가 포함됨 |
비디오 추가 / 제거 (동작 예제)
typescript
// 추가 (마지막 위치)
const item = await cb.video.addToPlaylist('playlist-id', 'video-id')
// 특정 위치에 삽입
await cb.video.addToPlaylist('playlist-id', 'video-id', 3)
// 제거 (item ID 기반)
await cb.video.removeFromPlaylist('playlist-id', item.id)임시 우회: raw fetch 로 플레이리스트 생성/조회
typescript
// 생성 — body 에 channel_id 포함, 앱 멤버 JWT 필수
await fetch('https://api.connectbase.world/v1/public/playlists', {
method: 'POST',
headers: {
'X-Public-Key': 'cb_pk_...',
'Authorization': 'Bearer ' + appMemberToken,
'Content-Type': 'application/json',
},
body: JSON.stringify({
channel_id: 'channel-id',
title: '내 플레이리스트',
description: '설명',
visibility: 'public',
}),
})
// 단일 플레이리스트 조회 (items 포함)
const res = await fetch('https://api.connectbase.world/v1/public/playlists/playlist-id', {
headers: { 'X-Public-Key': 'cb_pk_...' },
})
const playlist = await res.json()