Team Stash API Reference
NOTE
외부 개발자를 위한 Team Stash 기능 API 문서
개요
Base URL: https://api.teamstash.eupthere.uk
모든 리소스 식별자는 내부 ID 대신 UUID를 사용합니다. API 요청/응답에서 노출되는 모든 ID는 UUID 형식입니다.
응답 형식
모든 API 응답은 아래 구조를 따릅니다.
성공 응답
{
"success": true,
"status": 200,
"message": "작업 완료 메시지",
"data": { ... }
}| 필드 | 타입 | 설명 |
|---|---|---|
success | boolean | 항상 true |
status | number | HTTP 상태 코드 (200, 201 등) |
message | string | 응답 메시지 |
data | object | 실제 응답 데이터 (엔드포인트마다 다름) |
에러 응답
{
"success": false,
"status": 400,
"message": "에러 메시지"
}| 필드 | 타입 | 설명 |
|---|---|---|
success | boolean | 항상 false |
status | number | HTTP 상태 코드 (400, 401, 403, 404, 500 등) |
message | string | 에러 메시지 |
Teams API
팀 관리 관련 API입니다.
1. 새로운 팀 생성
새로운 팀을 생성합니다. 생성한 사용자가 팀의 owner가 됩니다.
📌 팀 생성 시
기본 폴더가 자동으로 함께 생성됩니다.
Endpoint
POST /teamsRequest Body
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
teamName | string | ✅ | 팀 이름 (1~50자) |
Request 예시
{
"teamName": "개발팀"
}Response 201 Created
{
"success": true,
"status": 201,
"message": "팀이 성공적으로 생성되었습니다.",
"data": {
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"teamName": "개발팀",
"createdAt": "2026-02-03T00:00:00.000Z",
"role": "owner"
}
}Response 필드 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
teamUuid | string | 팀 UUID |
teamName | string | 팀 이름 |
createdAt | string | 생성 일시 (ISO 8601) |
role | string | 사용자의 팀 내 역할 (owner, member) |
2. 내 팀 목록 조회
현재 인증된 사용자가 속한 모든 팀을 조회합니다.
Endpoint
GET /teams/meRequest Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "내 팀 정보를 성공적으로 조회했습니다.",
"data": [
{
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"teamName": "개발팀",
"createdAt": "2026-02-03T00:00:00.000Z",
"role": "owner"
},
{
"teamUuid": "660e8400-e29b-41d4-a716-446655440001",
"teamName": "디자인팀",
"createdAt": "2026-01-15T00:00:00.000Z",
"role": "member"
}
]
}3. 초대 링크용 팀 정보 조회
팀 UUID로 팀 기본 정보를 조회합니다. 초대 링크 미리보기 용도로 사용됩니다.
⚠️ 인증 없이 접근 가능한 Public API입니다.
Endpoint
GET /teams/:teamUuid/previewPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 팀 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "팀 정보를 성공적으로 조회했습니다.",
"data": {
"teamName": "개발팀"
}
}Response 필드 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
teamName | string | 팀 이름 |
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
4. 팀 가입
특정 팀에 가입합니다.
Endpoint
POST /teams/:teamUuid/joinPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 가입할 팀 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "팀에 성공적으로 가입되었습니다.",
"data": {
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"teamName": "개발팀",
"joinedAt": "2026-02-03T00:00:00.000Z",
"role": "member"
}
}Response 필드 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
teamUuid | string | 가입한 팀 UUID |
teamName | string | 팀 이름 |
joinedAt | string | 가입 일시 (ISO 8601) |
role | string | 팀 내 역할 |
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 409 | 이미 해당 팀에 가입되어 있습니다. |
5. 팀 탈퇴
특정 팀에서 탈퇴합니다.
⚠️ 팀 소유자(
owner)는 탈퇴할 수 없습니다. 팀을 삭제하거나 소유권을 위임해야 합니다.
Endpoint
DELETE /teams/:teamUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 탈퇴할 팀 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "팀에서 성공적으로 탈퇴되었습니다.",
"data": {}
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 현재 가입된 팀이 없습니다. / 해당 팀에 소속되어 있지 않습니다. |
| 403 | 팀 소유자는 탈퇴할 수 없습니다. 팀을 삭제하거나 소유권을 위임해주세요. |
6. 특정 팀 멤버 목록 조회
특정 팀의 모든 멤버를 조회합니다.
📌 해당 팀의 멤버만 조회할 수 있습니다.
Endpoint
GET /teams/:teamUuid/membersPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 팀 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "팀 멤버 정보를 성공적으로 조회했습니다.",
"data": [
{
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동",
"role": "owner",
"joinedAt": "2026-02-01T00:00:00.000Z"
},
{
"userUuid": "223e4567-e89b-12d3-a456-426614174001",
"userName": "김철수",
"role": "member",
"joinedAt": "2026-02-02T00:00:00.000Z"
}
]
}Response 필드 (배열 내 객체)
| 필드 | 타입 | 설명 |
|---|---|---|
userUuid | string | 사용자 UUID |
userName | string | 사용자 닉네임 |
role | string | 팀 내 역할 (owner, member) |
joinedAt | string | 가입 일시 (ISO 8601) |
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. / 해당 팀에 소속되어 있지 않습니다. |
Folders API
폴더 관리 관련 API입니다.
📌 각 팀에는
기본 폴더가 자동으로 생성되어 있습니다. 기본 폴더는 이름 변경 및 삭제가 불가능합니다.
7. 새로운 폴더 생성
특정 팀에 새로운 폴더를 생성합니다.
⚠️
기본 폴더라는 이름은 사용할 수 없습니다.
Endpoint
POST /foldersRequest Body
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
teamUuid | UUID | ✅ | 폴더를 생성할 팀 UUID |
folderName | string | ✅ | 폴더 이름 |
Request 예시
{
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"folderName": "중요 링크"
}Response 201 Created
{
"success": true,
"status": 201,
"message": "폴더가 성공적으로 생성되었습니다.",
"data": {
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"folderName": "중요 링크",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
}Response 필드 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
folderUuid | string | 폴더 UUID |
folderName | string | 폴더 이름 |
createdAt | string | 생성 일시 (ISO 8601) |
createdBy | object | 생성자 정보 |
createdBy.userUuid | string | 생성자 UUID |
createdBy.userName | string | 생성자 닉네임 |
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 409 | 해당 폴더는 기본 폴더 이름으로, 사용할 수 없습니다. |
8. 특정 팀의 모든 폴더 조회
특정 팀에 속한 모든 폴더를 조회합니다.
Endpoint
GET /folders?teamUuid={teamUuid}Query Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
teamUuid | UUID | ✅ | 팀 UUID |
Request 예시
GET /folders?teamUuid=550e8400-e29b-41d4-a716-446655440000Response 200 OK
{
"success": true,
"status": 200,
"message": "폴더들을 성공적으로 조회했습니다.",
"data": [
{
"folderUuid": "660e8400-e29b-41d4-a716-446655440001",
"folderName": "기본 폴더",
"createdAt": "2026-02-01T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
},
{
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"folderName": "중요 링크",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
]
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
9. 특정 폴더 조회
특정 폴더의 상세 정보를 조회합니다.
Endpoint
GET /folders/:folderUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
folderUuid | UUID | 폴더 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "폴더 정보를 성공적으로 조회했습니다.",
"data": {
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"folderName": "중요 링크",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 폴더를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
10. 특정 폴더 이름 수정
특정 폴더의 이름을 수정합니다.
⚠️
기본 폴더는 이름을 변경할 수 없습니다. 또한기본 폴더라는 이름으로 변경할 수 없습니다.
Endpoint
PATCH /folders/:folderUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
folderUuid | UUID | 폴더 UUID |
Request Body
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
folderName | string | ✅ | 새로운 폴더 이름 |
Request 예시
{
"folderName": "업데이트된 폴더명"
}Response 200 OK
{
"success": true,
"status": 200,
"message": "폴더 이름이 성공적으로 수정되었습니다.",
"data": {
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"folderName": "업데이트된 폴더명",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 폴더를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 400 | 해당 폴더는 기본 폴더로, 이름을 변경할 수 없습니다. |
| 409 | 해당 폴더는 기본 폴더 이름으로, 사용할 수 없습니다. |
11. 특정 폴더 삭제
특정 폴더를 삭제합니다.
⚠️
기본 폴더는 삭제할 수 없습니다.
Endpoint
DELETE /folders/:folderUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
folderUuid | UUID | 삭제할 폴더 UUID |
Request Body: 없음
Response 204 No Content
응답 본문 없음
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 폴더를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 409 | 해당 폴더는 기본 폴더로, 삭제할 수 없습니다. |
Links API
링크 관리 관련 API입니다.
12. 새로운 링크 추가
새로운 링크를 생성합니다.
📌
folderUuid를 지정하지 않으면 해당 팀의기본 폴더에 자동으로 추가됩니다.
Endpoint
POST /linksRequest Body
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
teamUuid | UUID | ✅ | 링크가 속할 팀 UUID |
folderUuid | UUID | ❌ | 링크가 속할 폴더 UUID (미지정 시 기본 폴더) |
url | string | ✅ | 링크 URL (유효한 URL 형식) |
title | string | ✅ | 링크 제목 |
tags | string[] | ✅ | 태그 배열 (빈 배열 가능) |
summary | string | ✅ | 링크 요약 |
Request 예시
{
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"url": "https://example.com/article",
"title": "유용한 기사",
"tags": ["개발", "튜토리얼", "JavaScript"],
"summary": "이 기사는 JavaScript의 고급 패턴에 대해 설명합니다."
}Response 201 Created
{
"success": true,
"status": 201,
"message": "링크가 성공적으로 생성되었습니다.",
"data": {
"linkUuid": "880e8400-e29b-41d4-a716-446655440003",
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"url": "https://example.com/article",
"title": "유용한 기사",
"tags": ["개발", "튜토리얼", "JavaScript"],
"summary": "이 기사는 JavaScript의 고급 패턴에 대해 설명합니다.",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
}Response 필드 (data)
| 필드 | 타입 | 설명 |
|---|---|---|
linkUuid | string | 링크 UUID |
teamUuid | string | 팀 UUID |
folderUuid | string | 폴더 UUID |
url | string | 링크 URL |
title | string | 링크 제목 |
tags | string[] | 태그 배열 |
summary | string | 요약 |
createdAt | string | 생성 일시 (ISO 8601) |
createdBy | object | 생성자 정보 |
createdBy.userUuid | string | 생성자 UUID |
createdBy.userName | string | 생성자 닉네임 |
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 404 | 해당 폴더를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 400 | 해당 팀에 속해있는 폴더가 아닙니다. |
13. 링크 목록 조회 (전체 또는 조건)
조건에 따라 링크 목록을 조회합니다. 모든 Query Parameter는 선택적입니다.
📌
teamUuid를 지정하지 않으면 사용자가 속한 모든 팀의 링크를 조회합니다.
Endpoint
GET /linksQuery Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
teamUuid | UUID | ❌ | 특정 팀의 링크만 필터링 |
folderUuid | UUID | ❌ | 특정 폴더의 링크만 필터링 |
tags | string | ❌ | 태그로 필터링 (쉼표 구분) |
createdAfter | Date | ❌ | 이 시간 이후에 생성된 링크만 (ISO 8601) |
Request 예시
GET /links?teamUuid=550e8400-e29b-41d4-a716-446655440000&tags=JavaScript,개발
GET /links?folderUuid=770e8400-e29b-41d4-a716-446655440002
GET /links?createdAfter=2026-02-01T00:00:00.000ZResponse 200 OK
{
"success": true,
"status": 200,
"message": "링크들을 성공적으로 조회했습니다.",
"data": [
{
"linkUuid": "880e8400-e29b-41d4-a716-446655440003",
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"url": "https://example.com/article",
"title": "유용한 기사",
"tags": ["개발", "튜토리얼", "JavaScript"],
"summary": "이 기사는 JavaScript의 고급 패턴에 대해 설명합니다.",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
]
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 404 | 해당 폴더를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 400 | 해당 팀에 속해있는 폴더가 아닙니다. |
14. 특정 링크 조회
특정 링크의 상세 정보를 조회합니다.
Endpoint
GET /links/:linkUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
linkUuid | UUID | 링크 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "링크 정보를 성공적으로 조회했습니다.",
"data": {
"linkUuid": "880e8400-e29b-41d4-a716-446655440003",
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"url": "https://example.com/article",
"title": "유용한 기사",
"tags": ["개발", "튜토리얼", "JavaScript"],
"summary": "이 기사는 JavaScript의 고급 패턴에 대해 설명합니다.",
"createdAt": "2026-02-03T00:00:00.000Z",
"createdBy": {
"userUuid": "123e4567-e89b-12d3-a456-426614174000",
"userName": "홍길동"
}
}
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 링크를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
15. 특정 링크 삭제
특정 링크를 삭제합니다.
Endpoint
DELETE /links/:linkUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
linkUuid | UUID | 삭제할 링크 UUID |
Request Body: 없음
Response 204 No Content
응답 본문 없음
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 링크를 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
Webhooks API
웹훅 관리 관련 API입니다. 웹훅은 팀 단위로 관리됩니다.
📌 웹훅 등록/삭제/수정은 팀 소유자(
owner)만 가능합니다. 조회는 팀 멤버라면 가능합니다.
16. 팀에 등록된 웹훅 목록 조회
특정 팀에 등록된 모든 웹훅을 조회합니다.
Endpoint
GET /teams/:teamUuid/webhooksPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 팀 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "웹훅 목록을 조회했습니다.",
"data": [
{
"webhookUuid": "990e8400-e29b-41d4-a716-446655440004",
"url": "https://myservice.com/webhook",
"isActive": true
},
{
"webhookUuid": "aa0e8400-e29b-41d4-a716-446655440005",
"url": "https://another-service.com/hook",
"isActive": false
}
]
}Response 필드 (배열 내 객체)
| 필드 | 타입 | 설명 |
|---|---|---|
webhookUuid | string | 웹훅 UUID |
url | string | 웹훅 URL |
isActive | boolean | 활성화 여부 |
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
17. 특정 웹훅 삭제
특정 웹훅을 삭제합니다.
⚠️ 팀 소유자(
owner)만 삭제할 수 있습니다.
Endpoint
DELETE /teams/:teamUuid/webhooks/:webhookUuidPath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 팀 UUID |
webhookUuid | UUID | 삭제할 웹훅 UUID |
Request Body: 없음
Response 204 No Content
응답 본문 없음
에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 404 | 웹훅을 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 403 | 팀 오너만 웹훅을 삭제할 수 있습니다. |
| 403 | 해당 팀에 속해있는 웹훅이 아닙니다. |
18. 팀에 등록된 웹훅 활성화
특정 웹훅을 활성화합니다.
⚠️ 팀 소유자(
owner)만 활성화할 수 있습니다.
Endpoint
PATCH /teams/:teamUuid/webhooks/:webhookUuid/activatePath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 팀 UUID |
webhookUuid | UUID | 활성화할 웹훅 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "웹훅이 활성화되었습니다.",
"data": {
"webhookUuid": "990e8400-e29b-41d4-a716-446655440004",
"url": "https://myservice.com/webhook",
"isActive": true
}
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 404 | 웹훅을 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 403 | 팀 오너만 웹훅을 수정할 수 있습니다. |
| 403 | 해당 팀에 속해있는 웹훅이 아닙니다. |
19. 팀에 등록된 웹훅 비활성화
특정 웹훅을 비활성화합니다.
⚠️ 팀 소유자(
owner)만 비활성화할 수 있습니다.
Endpoint
PATCH /teams/:teamUuid/webhooks/:webhookUuid/deactivatePath Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
teamUuid | UUID | 팀 UUID |
webhookUuid | UUID | 비활성화할 웹훅 UUID |
Request Body: 없음
Response 200 OK
{
"success": true,
"status": 200,
"message": "웹훅이 비활성화되었습니다.",
"data": {
"webhookUuid": "990e8400-e29b-41d4-a716-446655440004",
"url": "https://myservice.com/webhook",
"isActive": false
}
}에러 응답
| 상태 코드 | 메시지 |
|---|---|
| 404 | 해당 팀을 찾을 수 없습니다. |
| 404 | 웹훅을 찾을 수 없습니다. |
| 403 | 해당 팀에 접근 권한이 없습니다. |
| 403 | 팀 오너만 웹훅을 수정할 수 있습니다. |
| 403 | 해당 팀에 속해있는 웹훅이 아닙니다. |
웹훅 이벤트 페이로드
활성화된 웹훅으로 전송되는 이벤트 페이로드입니다.
link.created
링크가 생성될 때 등록된 웹훅으로 다음과 같은 POST 요청이 전송됩니다.
{
"event": "link.created",
"timestamp": "2026-02-03T00:00:00.000Z",
"data": {
"linkUuid": "880e8400-e29b-41d4-a716-446655440003",
"url": "https://example.com/article",
"title": "유용한 기사",
"summary": "이 기사는 JavaScript의 고급 패턴에 대해 설명합니다.",
"tags": ["개발", "튜토리얼", "JavaScript"],
"teamUuid": "550e8400-e29b-41d4-a716-446655440000",
"teamName": "개발팀",
"folderUuid": "770e8400-e29b-41d4-a716-446655440002",
"folderName": "중요 링크",
"createdBy": {
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"nickname": "홍길동"
}
}
}페이로드 필드
| 필드 | 타입 | 설명 |
|---|---|---|
event | string | 이벤트 타입 (link.created) |
timestamp | string | 이벤트 발생 시각 (ISO 8601) |
data.linkUuid | string | 링크 UUID |
data.url | string | 링크 URL |
data.title | string | 링크 제목 |
data.summary | string | 링크 요약 |
data.tags | string[] | 태그 배열 |
data.teamUuid | string | 팀 UUID |
data.teamName | string | 팀 이름 |
data.folderUuid | string | 폴더 UUID |
data.folderName | string | 폴더 이름 |
data.createdBy.uuid | string | 생성자 UUID |
data.createdBy.nickname | string | 생성자 닉네임 |
HTTP 상태 코드
| 코드 | 의미 |
|---|---|
200 OK | 요청 성공 |
201 Created | 리소스 생성 성공 |
204 No Content | 요청 성공 (응답 본문 없음) |
400 Bad Request | 잘못된 요청 (유효성 검사 실패 등) |
401 Unauthorized | 인증 실패 |
403 Forbidden | 권한 없음 |
404 Not Found | 리소스를 찾을 수 없음 |
409 Conflict | 리소스 충돌 |
500 Internal Server Error | 서버 오류 |
API 목록 요약
| # | Method | Endpoint | 설명 |
|---|---|---|---|
| 1 | POST | /teams | 새로운 팀 생성 |
| 2 | GET | /teams/me | 내 팀 목록 조회 |
| 3 | GET | /teams/:teamUuid/preview | 초대 링크용 팀 정보 조회 |
| 4 | POST | /teams/:teamUuid/join | 팀 가입 |
| 5 | DELETE | /teams/:teamUuid | 팀 탈퇴 |
| 6 | GET | /teams/:teamUuid/members | 특정 팀 멤버 목록 조회 |
| 7 | POST | /folders | 새로운 폴더 생성 |
| 8 | GET | /folders?teamUuid={uuid} | 특정 팀의 모든 폴더 조회 |
| 9 | GET | /folders/:folderUuid | 특정 폴더 조회 |
| 10 | PATCH | /folders/:folderUuid | 특정 폴더 이름 수정 |
| 11 | DELETE | /folders/:folderUuid | 특정 폴더 삭제 |
| 12 | POST | /links | 새로운 링크 추가 |
| 13 | GET | /links | 링크 목록 조회 (전체 또는 조건) |
| 14 | GET | /links/:linkUuid | 특정 링크 조회 |
| 15 | DELETE | /links/:linkUuid | 특정 링크 삭제 |
| 16 | GET | /teams/:teamUuid/webhooks | 팀에 등록된 웹훅 목록 조회 |
| 17 | DELETE | /teams/:teamUuid/webhooks/:webhookUuid | 특정 웹훅 삭제 |
| 18 | PATCH | /teams/:teamUuid/webhooks/:webhookUuid/activate | 웹훅 활성화 |
| 19 | PATCH | /teams/:teamUuid/webhooks/:webhookUuid/deactivate | 웹훅 비활성화 |