-
Notifications
You must be signed in to change notification settings - Fork 0
API
EunHyo Park edited this page Jun 11, 2025
·
8 revisions
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 카카오 로그인 |
Content-Type: application/json
{
"code": "[인가코드]"
}-
code: 카카오에서 발급 받은 인가코드
{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"tokens": {
"accessToken": "ACCESS_TOKEN_STRING",
"refreshToken": "REFRESH_TOKEN_STRING"
}
}
}-
isSuccess→ 성공 여부 -
code→ 커스텀 상태 코드 -
message→ 요청 결과에 대한 메시지 -
result.tokens.accessToken→ JWT access token -
result.tokens.refreshToken→ JWT refresh token
{
"isSuccess": false,
"code": "KAKAO4002",
"message": "카카오 인가 코드가 유효하지 않습니다.",
"result": {
"error": "invalid_grant",
"error_description": "authorization code not found for code=...",
"error_code": "KOE320"
}
}-
code→ 에러 유형 식별을 위한 커스텀 코드 -
error_description→ 상세 에러 메시지 -
error_code→ 카카오 에러 코드
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 대화 시작 버튼 → 여기로 POST → 해당 대화 chatId와 캐릭터의 첫 멘트 반환 |
- 로컬: http://localhost:5173/api/chat/start?character=앙글이
- 배포: https://soulmate.o-r.kr/api/chat/start?character=앙글이
{
"chatId": 3,
"role": "assistant",
"content": "오늘 기분 어땠는데! 오늘도 화가 나는 일 있었냐고?!"
}-
chatId→ 해당 대화의 id (앞으로 대화를 진행할 때 사용하게 됩니다) -
role→ 현재 말하고 있는게 누구인지-
user: 사용자 -
assistant: ai 캐릭터
-
-
content→ 처음 대화 시작해서 대화창에 들어갔을 때, 캐릭터가 말하는 멘트
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 위에서 받은 chatId를 넣어 사용자의 응답을 요청으로 보냄 |
- 로컬: http://localhost:5173/api/chat/3/reply?character=앙글이
- 배포: https://soulmate.o-r.kr/api/chat/3/reply?character=앙글이
{
"role": "user",
"content": "너무 화가나!!!"
}-
role→ 현재 말하고 있는게 누구인지-
user: 사용자 -
assistant: ai 캐릭터
-
-
content→ 사용자의 입력
{
"role": "assistant",
"content": "왜 그래? 무슨 일이야? 나한테 털어놔봐, 내가 같이 화내주지!"
}-
role: 현재 말하고 있는게 누구인지-
user: 사용자 -
assistant: ai 캐릭터
-
-
content→ ai의 응답
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 대화 내용을 보고 AI가 일기를 생성 |
{
"chatId": 3,
"character": "앙글이",
"date": "2025-05-16"
}-
chatId→ 일기를 생성할 대화창의 id -
character→ 무슨 캐릭터와 대화했는지- 앙글이
- 웅이
- 티바노
-
data→ 일기 작성 날짜
{
"diaryId": 38,
"title": "팀플 고민",
"content": "오늘은 팀플에서 팀원이 적극적으로 참여하지 않아서 짜증이 났다. 팀원들과 소통하고 협력하는 것이 중요하다고 느꼈고, 팀원들을 독려하고 역할을 분담하는 등의 방법을 고민했다. 또한, 미리 계획을 세우고 목표를 분명히 하는 것이 중요하다는 것을 깨달았다.",
"hashtag": "팀플고민 #협력 #계획",
"character": "티바노"
}-
diaryId→ 일기의 고유 ID -
title→ 일기 제목 -
content→ 일기 내용 -
hashtag→ 해시태그 -
character→ 캐릭터
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 사용자가 일기 직접 작성 |
{
"date": "2025-06-09",
"title": "ㅁㄴㅇㄹ",
"content": "ㅁㄴㅇㄻㄴㅇㄹ",
"hashtag": "ㅁㄴㅇㄹ",
"character": "티바노"
}-
character: 앙글이, 웅이, 티바노 중 하나
{
"id": 122,
"date": "2025-06-09",
"title": "ㅁㄴㅇㄹ",
"content": "ㅁㄴㅇㄻㄴㅇㄹ",
"hashtag": "ㅁㄴㅇㄹ",
"character": "티바노"
}-
id→ diary id
{
"isSuccess": false,
"code": "COMMON500",
"message": "서버 에러, 관리자에게 문의 바랍니다.",
"result": "존재하지 않는 캐릭터입니다: 티바"
}- 존재하지 않는 캐릭터 입력 시
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 사용자가 선택한 캐릭터가 다이어리에 코멘트 작성 |
- 로컬: http://localhost:5173/api/comment/diary?diaryId=12
- 배포: https://soulmate.o-r.kr/api/comment/diary?diaryId=12
Content-Type : application/json
Authorization : Bearer [카카오 인가코드를 백에게 준 뒤 받은 액세스 토큰]
{
"context": "와랄라",
"characterId": 1
}{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"commentId": 3,
"createdAt": "2025-06-02T15:48:15.4534789"
}
}-
id→ diary id
| 항목 | 내용 |
|---|---|
| Method | GET |
| 설명 | 사용자가 작성한 전체 일기 목록 조회 |
[
{
"id": 122,
"date": "2025-06-09",
"title": "ㅁㄴㅇㄹ",
"content": "ㅁㄴㅇㄻㄴㅇㄹ",
"hashTags": [
"ㅁㄴㅇㄹ"
]
},
{
"id": 117,
"date": "2025-06-06",
"title": "여행 계획 짜기의 어려움",
"content": "오늘은 여행 계획을 짜려고 했으나 생각보다 많은 어려움에 부딪혔다. 어디로 가야 할지, 무엇을 해야 할지 결정하는 것부터가 벅찼다. 여러 여행지를 고려하다 보니 선택의 폭이 넓어져 오히려 결정을 내리기가 힘들었다. 또한, 예산 계획과 일정 조율도 쉽지 않았다. 이 모든 과정에서 느낀 점은 체계적인 계획이 얼마나 중요한지를 다시 한번 깨닫게 되었다. 내일은 좀 더 구체적인 계획을 세워서 여행 준비를 차근차근 진행해야겠다.",
"hashTags": [
"여행계획",
"결정장애",
"체계적준비"
]
},
{
"id": 110,
"date": "2025-06-05",
"title": "오늘의 발표 준비",
"content": "오늘은 중요한 발표가 있었다. 아침부터 긴장이 되어 있었지만, 대화를 통해 몇 가지 유용한 팁을 얻었다. 깊게 숨을 쉬고, 발표 내용을 여러 번 연습하며, 청중의 머리 위를 바라보는 방법 등을 배웠다. 이러한 조언들 덕분에 발표 준비를 좀 더 자신 있게 마칠 수 있었다. 발표가 잘 진행되기를 바라며, 이 경험을 통해 앞으로의 발표에도 자신감을 가질 수 있기를 희망한다.",
"hashTags": [
"발표준비",
"긴장완화",
"자신감"
]
},
...
{
"id": 56,
"date": "2025-05-16",
"title": "test",
"content": "test",
"hashTags": [
"testsetst"
]
}
]| 항목 | 내용 |
|---|---|
| Method | GET |
| 설명 | 사용자가 작성한 일기 개별 조회 |
{
"id": 105,
"date": "2025-06-05",
"title": "dddd",
"content": "dddd",
"commentId": 254,
"comment": "네, 사용자가 속상한 마음을 이해해. 함께 화를 내며 그 마음을 터뜨려보자. 우리는 함께 강해질 수 있어. #화를터뜨리자 #강해지자 #싸우자",
"character": "앙글이",
"hashTags": [
"dddd"
]
}{
"isSuccess": false,
"code": "COMMON500",
"message": "서버 에러, 관리자에게 문의 바랍니다.",
"result": "해당 멤버의 일기가 아닙니다."
}- 자신의 일기가 아닌 경우
| 항목 | 내용 |
|---|---|
| Method | PUT |
| 설명 | 사용자가 작성한 일기 수정 |
{
"date": "2025-06-01",
"title": "오늘의 일기 수정본!!!!!!",
"content": "오늘 하루는 정말 특별했어요. 수정된 내용입니다.",
"hashtag": "#행복 #일상 #수정됨"
}{
"id": 1,
"date": "2025-06-01",
"title": "오늘의 일기 수정본!!!!!!",
"content": "오늘 하루는 정말 특별했어요. 수정된 내용입니다.",
"hashtag": "#행복 #일상 #수정됨",
"character": "웅이"
}| 항목 | 내용 |
|---|---|
| Method | DELETE |
| 설명 | 사용자가 작성한 일기 삭제 |
{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": "일기 삭제 성공"
}| 항목 | 내용 |
|---|---|
| Method | GET |
| 설명 | 사용자가 생성한 해시태그 조회 |
[
{
"HashTagId": 34,
"HashTagName": "실패는성공의길"
},
{
"HashTagId": 35,
"HashTagName": "배움"
},
{
"HashTagId": 36,
"HashTagName": "열정"
},
{
"HashTagId": 37,
"HashTagName": "계획"
},
{
"HashTagId": 86,
"HashTagName": "스트레스해소"
},
{
"HashTagId": 87,
"HashTagName": "차분한대화"
},
{
"HashTagId": 88,
"HashTagName": "기분좋은하루"
},
{
"HashTagId": 89,
"HashTagName": "친구와함께"
},
{
"HashTagId": 90,
"HashTagName": "걱정은내일로"
},
{
"HashTagId": 91,
"HashTagName": "우울"
},
{
"HashTagId": 92,
"HashTagName": "답답"
},
{
"HashTagId": 93,
"HashTagName": "쓸쓸"
},
{
"HashTagId": 146,
"HashTagName": "걍아아아아ㅏㄱ"
}
]| 항목 | 내용 |
|---|---|
| Method | GET |
| 설명 | 해당 해시태그가 달린 자신의 일기 목록 조회 |
[
{
"id": 30,
"date": "2025-05-23",
"title": "작은 쉼표 같은 하루",
"content": "바쁘게 흘러가던 일상 속, 잠시 멈춰 영화 한 편을 봤다. 극장 안 어두운 공간 속에서 빛나는 스크린을 바라보며 마음도 함께 맑아지는 느낌. 영화는 생각보다 훨씬 더 좋았고, 감정이 몽글몽글 피어올랐다. 친구와 나눈 대화, 웃음, 그리고 팝콘 냄새까지… 모든 게 오랜만에 느껴보는 따뜻한 순간들이었다.",
"hashTags": [
"취미",
"힐링"
]
},
{
"id": 29,
"date": "2025-05-23",
"title": "작은 쉼표 같은 하루",
"content": "바쁘게 흘러가던 일상 속, 잠시 멈춰 영화 한 편을 봤다. 극장 안 어두운 공간 속에서 빛나는 스크린을 바라보며 마음도 함께 맑아지는 느낌. 영화는 생각보다 훨씬 더 좋았고, 감정이 몽글몽글 피어올랐다. 친구와 나눈 대화, 웃음, 그리고 팝콘 냄새까지… 모든 게 오랜만에 느껴보는 따뜻한 순간들이었다.",
"hashTags": [
"취미",
"힐링"
]
},
{
"id": 28,
"date": "2025-05-23",
"title": "작은 쉼표 같은 하루",
"content": "바쁘게 흘러가던 일상 속, 잠시 멈춰 영화 한 편을 봤다. 극장 안 어두운 공간 속에서 빛나는 스크린을 바라보며 마음도 함께 맑아지는 느낌. 영화는 생각보다 훨씬 더 좋았고, 감정이 몽글몽글 피어올랐다. 친구와 나눈 대화, 웃음, 그리고 팝콘 냄새까지… 모든 게 오랜만에 느껴보는 따뜻한 순간들이었다.",
"hashTags": [
"취미",
"힐링"
]
},
{
"id": 27,
"date": "2025-05-23",
"title": "작은 쉼표 같은 하루",
"content": "바쁘게 흘러가던 일상 속, 잠시 멈춰 영화 한 편을 봤다. 극장 안 어두운 공간 속에서 빛나는 스크린을 바라보며 마음도 함께 맑아지는 느낌. 영화는 생각보다 훨씬 더 좋았고, 감정이 몽글몽글 피어올랐다. 친구와 나눈 대화, 웃음, 그리고 팝콘 냄새까지… 모든 게 오랜만에 느껴보는 따뜻한 순간들이었다.",
"hashTags": [
"취미",
"힐링"
]
},
{
"id": 26,
"date": "2025-05-23",
"title": "작은 쉼표 같은 하루",
"content": "바쁘게 흘러가던 일상 속, 잠시 멈춰 영화 한 편을 봤다. 극장 안 어두운 공간 속에서 빛나는 스크린을 바라보며 마음도 함께 맑아지는 느낌. 영화는 생각보다 훨씬 더 좋았고, 감정이 몽글몽글 피어올랐다. 친구와 나눈 대화, 웃음, 그리고 팝콘 냄새까지… 모든 게 오랜만에 느껴보는 따뜻한 순간들이었다.",
"hashTags": [
"취미",
"힐링"
]
},
{
"id": 25,
"date": "2025-05-23",
"title": "작은 쉼표 같은 하루",
"content": "바쁘게 흘러가던 일상 속, 잠시 멈춰 영화 한 편을 봤다. 극장 안 어두운 공간 속에서 빛나는 스크린을 바라보며 마음도 함께 맑아지는 느낌. 영화는 생각보다 훨씬 더 좋았고, 감정이 몽글몽글 피어올랐다. 친구와 나눈 대화, 웃음, 그리고 팝콘 냄새까지… 모든 게 오랜만에 느껴보는 따뜻한 순간들이었다.",
"hashTags": [
"취미",
"힐링"
]
}
]{
"isSuccess": false,
"code": "COMMON500",
"message": "서버 에러, 관리자에게 문의 바랍니다.",
"result": "존재하지 않는 해시태그입니다.으악"
}- 존재하지 않는 해시태그 입력 시
| 항목 | 내용 |
|---|---|
| Method | POST |
| 설명 | 코멘트 즐겨찾기 또는 즐겨찾기 취소 |
- 로컬: http://localhost:5173/api/comment/bookmark?commentId=102
- 배포: https://soulmate.o-r.kr/api/comment/bookmark?commentId=102
{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"id": 102,
"context": "으악",
"isStored": 1,
"character": "앙글이"
}
}- 즐겨찾기 되지 않은 코멘트를 즐겨찾기한 경우
{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": {
"id": 102,
"context": "으악",
"isStored": 0,
"character": "앙글이"
}
}{
"isSuccess": false,
"code": "COMMON500",
"message": "서버 에러, 관리자에게 문의 바랍니다.",
"result": "코멘트가 존재하지 않습니다. 104"
}- 존재하지 않는 코멘트인 경우
{
"isSuccess": false,
"code": "COMMON500",
"message": "서버 에러, 관리자에게 문의 바랍니다.",
"result": "사용자의 일기에 달린 코멘트가 아닙니다. 5"
}- 자신의 일기에 달린 코멘트가 아닌 경우
| 항목 | 내용 |
|---|---|
| Method | GET |
| 설명 | 캐릭터 별 자신이 즐겨찾기 한 코멘트 목록 조회 |
- 로컬: http://localhost:5173/api/comment/bookmark/get?characterId=1
- 배포: https://soulmate.o-r.kr/api/comment/bookmark/get?characterId=1
{
"isSuccess": true,
"code": "COMMON200",
"message": "성공입니다.",
"result": [
{
"id": 102,
"context": "으악",
"isStored": 1,
"character": "앙글이",
"date": "2025-06-03"
}
]
}{
"isSuccess": false,
"code": "CHARACTER4001",
"message": "해당 ID의 캐릭터가 없습니다."
}- 존재하지 않는 character id를 입력한 경우