-
Notifications
You must be signed in to change notification settings - Fork 0
Video API
awebow edited this page Aug 4, 2021
·
1 revision
GET /videos/<동영상 ID>
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
{
"id": "<동영상 ID>",
"channel_id": "<채널 ID>",
"title": "<동영상 제목>",
"description": "<동영상 설명>",
"duration": <동영상 길이(초): float>,
"status": "<동영상 상태: 'ACTIVE' / 'ENCODING' / 'INACTIVE'>",
"likes": <좋아요 수: integer>,
"dislikes": <싫어요 수: integer>,
"posted_at": "<게시 일시(RFC 3339)|nullable>",
"updated_at": "<최근 수정 일시(RFC 3339)>",
"deactivated_at": "<비활성화 일시(RFC 3339)|nullable>"
}
POST /videos
Authorization: Bearer <인증 토큰>
Content-Type: application/json
{
"channel_id": "<채널 ID>",
"title": "<동영상 제목>",
"description": "<동영상 설명>"
}
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 401 | 사용자 인증 실패 |
| 403 | 해당 채널에 대한 권한이 없음 |
| 404 | 해당 채널이 존재하지 않음 |
| 500 | 서버 오류 |
{
"id": "<동영상 ID>",
"token": "<업로드 토큰>"
}
GET /videos?query=<검색 키워드|optional>&pagination=<페이지네이션 토큰|optional>&limit=<최대 결과 개수|optional>
Authorization: Bearer <인증 토큰|optional>
구독 채널의 동영상을 우선하여 표시하려면 인증 토큰 입력
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 400 | 요청 데이터에 문제가 있음 |
| 401 | 사용자 인증 실패 |
| 500 | 서버 오류 |
{
"pagination": "<페이지네이션 토큰|nullable>",
"data": [
{
"id": "<동영상 ID>",
"channel_id": "<채널 ID>",
"title": "<동영상 제목>",
"description": "<동영상 설명>",
"duration": <동영상 길이(초): float>,
"status": "<동영상 상태: 'ACTIVE' / 'ENCODING' / 'INACTIVE'>",
"likes": <좋아요 수: integer>,
"dislikes": <싫어요 수: integer>,
"posted_at": "<게시 일시(RFC 3339)|nullable>",
"updated_at": "<최근 수정 일시(RFC 3339)>",
"deactivated_at": "<비활성화 일시(RFC 3339)|nullable>"
},
...
]
}
PUT /videos/<동영상 ID>
Authorization: Bearer <인증 토큰|optional>
Content-Type: application/json
{
"title": "<동영상 제목|optional>",
"description": "<동영상 설명|optional>",
"duration": "<동영상 길이|optional>",
"status": "<동영상 상태: 'ACTIVE' / 'ENCODING' / 'INACTIVE'>",
"posted_at": "<게시 일시(RFC 3339)|nullable>"
}
duration, status, posted_at은 사용자가 수정 불가능하고 인코딩 완료 시 영상의 정보를 입력하는데 사용.
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 400 | 요청 데이터에 문제가 있음 |
| 401 | 사용자 인증 실패 |
| 403 | 해당 요청에 대한 권한이 없음 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
{
"id": "<동영상 ID>",
"channel_id": "<채널 ID>",
"title": "<동영상 제목>",
"description": "<동영상 설명>",
"duration": <동영상 길이(초): float>,
"status": "<동영상 상태: 'ACTIVE' / 'ENCODING' / 'INACTIVE'>",
"likes": <좋아요 수: integer>,
"dislikes": <싫어요 수: integer>,
"posted_at": "<게시 일시(RFC 3339)|nullable>",
"updated_at": "<최근 수정 일시(RFC 3339)>",
"deactivated_at": "<비활성화 일시(RFC 3339)|nullable>"
}
DELETE /videos/<동영상 ID>
Authorization: Bearer <인증 토큰>
| 코드 | 설명 |
|---|---|
| 204 | 성공 |
| 401 | 사용자 인증 실패 |
| 403 | 해당 요청에 대한 권한이 없음 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
없음
PUT /videos/<동영상 ID>/thumbnail
Authorization: Bearer <인증 토큰>
Content-Type: multipart/form-data
| 필드 | 유형 | 설명 |
|---|---|---|
| file | file | 프로필 이미지 파일 |
| 코드 | 설명 |
|---|---|
| 204 | 성공 |
| 401 | 사용자 인증 실패 |
| 403 | 해당 동영상에 대한 권한이 없음 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
없음
GET /videos/<동영상 ID>/comments?pagination=<페이지네이션 토큰|optional>&limit=<최대 결과 개수|optional>
Authorization: Bearer <인증 토큰|optional>
인코딩 중인 영상의 댓글 목록 조회 시 채널 소유자만 Authorization 헤더를 입력하여 조회 가능.
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 401 | 사용자 인증 실패 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
{
"pagination": "<페이지네이션 토큰>",
"data": [
{
"id": "<댓글 ID>",
"video_id": "<동영상 ID>",
"content": "<내용>",
"writer_id": "<작성자 ID>",
"posted_at": "<작성 일시(RFC 3339)>",
"deactivated_at": "<비활성화 일시(RFC 3339)|nullable>"
},
...
]
}
GET /videos/<동영상 ID>/expressions
Authorization: Bearer <인증 토큰|optional>
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 401 | 사용자 인증 실패 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
{
"my_expression": "<내 감정표현: 'LIKE' / 'DISLIKE'|nullable>",
"likes": <좋아요 수: integer>,
"dislikes": <싫어요 수: integer>
}
PUT /videos/<동영상 ID>/expressions
Authorization: Bearer <인증 토큰>
Content-Type: application/json
{
"type": "<감정표현 유형: 'LIKE' / 'DISLIKE'>"
}
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 401 | 사용자 인증 실패 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
{
"my_expression": "<내 감정표현: 'LIKE' / 'DISLIKE'>",
"likes": <좋아요 수: integer>,
"dislikes": <싫어요 수: integer>
}
DELETE /videos/<동영상>/expressions
Authorization: Bearer <인증 토큰>
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 401 | 사용자 인증 실패 |
| 404 | 해당 동영상 또는 감정표현이 존재하지 않음 |
| 500 | 서버 오류 |
{
"my_expression": null,
"likes": <좋아요 수: integer>,
"dislikes": <싫어요 수: integer>
}
POST /comments
Authorization: Bearer <인증 토큰>
Content-Type: application/json
{
"video_id": "<동영상 ID>",
"content": "<내용>"
}
| 코드 | 설명 |
|---|---|
| 200 | 성공 |
| 401 | 사용자 인증 실패 |
| 404 | 해당 동영상이 존재하지 않음 |
| 500 | 서버 오류 |
{
"id": "<댓글 ID>",
"video_id": "<동영상 ID>",
"content": "<내용>",
"writer_id": "<작성자 ID>",
"posted_at": "<작성 일시(RFC 3339)>",
"deactivated_at": "<비활성화 일시(RFC 3339)|nullable>"
}
DELETE /comments/<댓글 ID>
Authorization: Bearer <인증 토큰>
| 코드 | 설명 |
|---|---|
| 204 | 성공 |
| 401 | 사용자 인증 실패 |
| 403 | 해당 댓글에 대한 권한이 없음 |
| 404 | 해당 댓글이 존재하지 않음 |
| 500 | 서버 오류 |
없음