채팅 API - Yapp-17th/Android_2_Backend GitHub Wiki

WebSocket Connection

Endpoint

  • ws://101.101.219.23:8080/ws/chat/websocket

Subscribe Topic Endpoint

채팅방 안 - Endpoint

  • /sub/chat/room/{chatRoomId}

채팅방 목록 - Endpoint

  • /sub/user/{userId}/chat/room

메시지 전송하기

Endpoint

  • /pub/v1/chat/message

Request Body

{
  "content": "hello",
  "type": "TALK",
  "senderId": 1,
  "chatRoomId": 1,
}
data description
Field Type Description Example Required
content String Message Content "hello" O
type String Message Type TALK O
senderId Long Sender ID 1 O
chatRoomId Long Chat Room ID 1 O

Response Body

✅ success response

{
  "id": 1,
  "content": "hello",
  "type": "TALK",
  "isHostRead": false,
  "isGuestRead": false,
  "chatRoomId": 1,
  "senderId" 1,
  "senderNickname": "tester",
  "createdAt": "2020-10-31T23:12:00.041295"
}
data description
Field Type Description Example
id Long Message ID 1
content String Message Content "hello"
type String Message Type "TALK"
isHostRead boolean 채팅방 호스트의 채팅 읽음 유무 true/false
isGuestRead boolean 채팅방 게스트의 채팅 읽음 유무 true/false
chatRoomId Long 채팅방 아이디 1
senderId Long 전송자 아이디 1
senderNickname String 전송자 닉네임 "tester"
createdAt Date 메시지가 보내진 시간 "2020-10-31T23:12:00.041295"

채팅방 생성하기

HTTP Method

  • POST

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/chat/room

Request Header

  • Authorization: Bearer {jwt token}

Request Body

{
  "hostId": 1,
  "boardId": 1
}
data description
Field Type Description Example
hostId Long 게시글 호스트의 ID 1
boardId Long 게시글 ID 1

Response Body

✅ success response

  • 성공적으로 채팅방 생성한 경우
{
    "transactionTime": "2020-12-03T23:09:57.574623",
    "status": 201,
    "responseType": "SUCCESS",
    "data": {
        "id": 9,
        "hostId": 1,
        "guestId": 2,
        "boardId": 18,
        "opponentNickname": "소연",
        "status": "ACTIVE",
        "createdAt": "2020-12-03T23:09:57.477422",
        "lastMessage": {
            "id": -1,
            "content": "",
            "type": "",
            "realTimeUpdateType": "",
            "isHostRead": false,
            "isGuestRead": false,
            "messageId": -1,
            "chatRoomId": -1,
            "senderId": -1,
            "senderNickname": "",
            "createdAt": "2020-12-03T23:09:57.574606"
        },
        "unreadMessages": -1
    }
}
  • 이미 채팅방이 존재할 경우
{
    "transactionTime": "2020-12-03T23:02:14.716689",
    "status": 200,
    "responseType": "CHATROOM_ALREADY_CREATED",
    "data": {
        "id": 2,
        "hostId": 1,
        "guestId": 2,
        "boardId": 1,
        "opponentNickname": "소연",
        "status": "ACTIVE",
        "createdAt": "2020-12-03T17:38:19.405002",
        "lastMessage": {
            "id": -1,
            "content": "",
            "type": "",
            "realTimeUpdateType": "",
            "isHostRead": false,
            "isGuestRead": false,
            "messageId": -1,
            "chatRoomId": -1,
            "senderId": -1,
            "senderNickname": "",
            "createdAt": "2020-12-03T23:02:14.716672"
        },
        "unreadMessages": -1
    }
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200 / 201
responseType String 응답 타입 "SUCCESS"
data.id Long 채팅방 ID 1
data.hostId Long 호스트 ID 1
data.guestId Long 게스트 ID 1
data.boardId Long 게시글 ID 1
data.status String 채팅방 상태 "ACTIVE"
data.createdAt Date 채팅방 개설 시간 "2020-10-24T06:35:07.828776"

🚫 error response

{
    "status":{{Integer}},
    "success": {{Boolean}},
    "responseType": {{String}},
    "message": {{String}}
}
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 채팅방 개설을 시도하는 사용자가 데이터베이스에 없을 경우 / 해당 hostId를 가진 사용자가 없는 경우
400 false "BOARD_NOT_FOUND" "게시글을 찾을 수 없습니다" 해당 boardId를 가진 게시글이 없는 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

채팅방 나가기

HTTP Method

  • DELETE

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/chat/room/{chatRoomId}

Request Header

  • Authorization: Bearer {jwt token}

ResponseBody

✅ success response

{
    "transactionTime": "2020-11-06T10:17:20.692338",
    "status": 200,
    "responseType": "SUCCESS",
    "message": "성공적으로 API를 호출했습니다"
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
message String 응답 메시지 "성공적으로 API를 호출했습니다"
  • 실시간 웹소켓 메시지
{
  "id": -1,
  "content": "",
  "type": "",
  "realTimeUpdateType": "USER_EXITED",
  "isHostRead": false,
  "isGuestRead": false,
  "messageId": -1,
  "chatRoomId": -1,
  "senderId": -1,
  "senderNickname": "",
  "createdAt": "2020-10-24T06:35:07.828776"
}

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 채팅방 나가기를 시도하는 사용자가 데이터베이스에 없을 경우
400 false "CHATROOM_NOT_FOUND" "채팅방을 찾을 수 없습니다" 해당 chatRoomId를 가진 채팅방이 없는 경우
400 false "ALREADY_EXITED" "이 사용자는 이미 이 채팅방을 나갔습니다" 해당 채팅방을 이미 나간 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

채팅방 목록 가져오기

HTTP Method

  • GET

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/chat/room

Request Header

  • Authorization: Bearer {jwt token}

Response Body

✅ success response

  • 채팅방이 없는 경우
{
    "transactionTime": "2020-11-22T23:31:45.041932",
    "status": 200,
    "responseType": "SUCCESS",
    "data": []
}
  • 채팅방이 있는 경우
{
    "transactionTime": "2020-11-06T14:10:40.482581",
    "status": 200,
    "responseType": "SUCCESS",
    "data": [
        {
            "id": 1,
            "hostId": 1,
            "guestId": 2,
            "boardId": 1,
            "opponentNickname": "tester",
            "status": "ACTIVE",
            "createdAt": "2020-11-06T14:07:55",
            "lastMessage": {
                "id": 1,
                "content": "반갑습니다. 안전하고 쾌적한 활동을 위해 운동플래닛 이용규칙을 꼭 읽어주세요!",
                "type": "BOT_MESSAGE",
                "isHostRead": false,
                "isGuestRead": false,
                "senderId": -9,
                "senderNickname": "운동 플래닛 챗봇",
                "createdAt": "2020-11-06T14:07:56"
            },
            "unreadMessages": 1
        }
    ]
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
data List 채팅방 목록 [{...}]
data.id Long 채팅방 ID 1
data.hostId Long 호스트 ID 1
data.guestId Long 게스트 ID 1
data.boardId Long 게시글 ID 1
data.opponentNickname String 상대방 닉네임 "tester"
data.status String 채팅방 상태 "ACTIVE"
data.createdAt Date 채팅방 개설 시간 "2020-10-24T06:35:07.828776"
data.unreadMessages Long 안읽은 메시지 개수 1
data.lastMessage Object 채팅방의 마지막 메시지 null/Object
data.lastMessage.id Long 채팅방의 마지막 메시지의 ID 1
data.lastMessage.content String 채팅방의 마지막 메시지 내용 "hello"
data.lastMessage.type String 채팅방의 마지막 메시지의 타입 "TALK"
data.lastMessage.senderId Long 채팅방의 마지막 메시지의 전송자 ID 1
data.lastMessage.senderNickname String 채팅방의 마지막 메시지의 전송자 닉네임 "tester"
data.lastMessage.createdAt Date 채팅방의 마지막 메시지의 전송 시간 "2020-10-24T06:35:07.828776"
data.lastMessage.isHostRead boolean 채팅방의 마지막 메시지의 호스트 읽음 유무 false/true
data.lastMessage.isGuestRead boolean 채팅방의 마지막 메시지의 게스트 읽음 유무 false/true

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 채팅방 목록 조회를 시도하는 사용자가 데이터베이스에 없을 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

채팅방의 모든 메시지 가져오기

HTTP Method

  • GET

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/chat/room/{chatRoomId}/message

Request Header

  • Authorization: Bearer {jwt token}

Response Body

✅ success response

{
    "transactionTime": "2020-12-03T23:18:29.155308",
    "status": 200,
    "responseType": "SUCCESS",
    "firstUnreadMessageId": 0,
    "boardTitle": "북한산 등산하실분 급구해여",
    "isHostExited": false,
    "isGuestExited": false,
    "appliedStatus": "PENDING",
    "data": [
        {
            "id": 75,
            "content": "반갑습니다. 안전하고 쾌적한 활동을 위해 운동플래닛 이용규칙을 꼭 읽어주세요!",
            "type": "BOT_NOTICE",
            "realTimeUpdateType": "MESSAGE_READ",
            "isHostRead": true,
            "isGuestRead": true,
            "messageId": 0,
            "chatRoomId": 9,
            "senderId": -9,
            "senderNickname": "운동 플래닛 챗봇",
            "createdAt": "2020-12-03T23:09:59.35186"
        },
        {
            "id": 76,
            "content": "yyy",
            "type": "TALK",
            "realTimeUpdateType": "MESSAGE_READ",
            "isHostRead": true,
            "isGuestRead": true,
            "messageId": 1,
            "chatRoomId": 9,
            "senderId": 1,
            "senderNickname": "소연",
            "createdAt": "2020-12-03T23:15:37.880665"
        }
    ]
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
firstUnreadMessageId Long 안읽은 첫 메시지의 ID 1
boardTitle String 게시글 제목 "yapp-17th"
appliedStatus String 게스트 승인 상태 PENDING, APPLIED, APPROVED
data List 채팅방 메시지 리스트 [{...}]
data.id Long 메시지 ID 1
data.content String 메시지 내용 "hello"
data.type String 메시지 타입 "TALK", "BOT_MESSAGE", "PROFILE"
data.messageId Long 채팅방별 메시지 ID 1(0 부터 시작)
data.chatRoomId Long 채팅방 ID 1
data.senderId Long 메시지 전송자 ID 1
data.senderNickname String 메시지 전송자 닉네임 "tester"
data.createdAt Date 메시지 전송 시간 "2020-10-24T06:35:07.828776"
data.isHostRead boolean 메시지의 호스트 읽음 유무 false/true
data.isGuestRead boolean 메시지의 게스트 읽음 유무 false/true

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 채팅방 메시지 조회를 시도하는 사용자가 데이터베이스에 없을 경우
400 false "CHATROOM_NOT_FOUND" "채팅방을 찾을 수 없습니다" 해당 chatRoomId를 가진 채팅방이 없는 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

게시글 신청하기

HTTP Method

  • POST

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/board/{boardId}/apply

Request Header

  • Authorization: Bearer {jwt token}

Request Body

{
    "chatRoomId": 1
}
data description
Field Type Description Example Required
chatRoomId Long 채팅방 ID 1 O

ResponseBody

✅ success response

{
    "transactionTime": "2020-11-06T10:17:20.692338",
    "status": 200,
    "responseType": "SUCCESS",
    "message": "성공적으로 API를 호출했습니다"
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
message String 응답 메시지 "성공적으로 API를 호출했습니다"
  • 실시간 버튼 업데이트용 웹소켓 메시지
{
  "id": -1,
  "content": "",
  "type": "",
  "realTimeUpdateType": APPLIED,
  "isHostRead": false,
  "isGuestRead": false,
  "messageId": -1,
  "chatRoomId": -1,
  "senderId": -1,
  "senderNickname": "",
  "createdAt": "2020-10-24T06:35:07.828776"
}

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 게시글 신청을 시도하는 사용자가 데이터베이스에 없을 경우
400 false "CHATROOM_NOT_FOUND" "채팅방을 찾을 수 없습니다" 해당 chatRoomId를 가진 채팅방이 없는 경우
400 false "BOARD_NOT_FOUND" "게시글을 찾을 수 없습니다" 해당 boardId를 가진 게시글이 없는 경우
400 false "CANNOT_APPLY" "신청을 할 수 없는 게시글입니다" 해당 게시글이 완료 혹은 취소가 된 경우 OR 호스트 혹은 게스트가 방을 나간 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

신청한 사용자 승인하기

HTTP Method

  • POST

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/board/{boardId}/approve

Request Header

  • Authorization: Bearer {jwt token}

Request Body

{
    "chatRoomId": 1,
    "guestId": 2
}
data description
Field Type Description Example Required
chatRoomId Long 채팅방 ID 1 O
guestId Long 게스트 ID 1 O

ResponseBody

✅ success response

{
    "transactionTime": "2020-11-06T10:17:20.692338",
    "status": 200,
    "responseType": "SUCCESS",
    "message": "성공적으로 API를 호출했습니다"
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
message String 응답 메시지 "성공적으로 API를 호출했습니다"
  • 실시간 버튼 업데이트용 웹소켓 메시지
{
  "id": -1,
  "content": "",
  "type": "",
  "realTimeUpdateType": APPROVED,
  "isHostRead": false,
  "isGuestRead": false,
  "messageId": -1,
  "chatRoomId": -1,
  "senderId": -1,
  "senderNickname": "",
  "createdAt": "2020-10-24T06:35:07.828776"
}

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 호스트가 없는 경우 OR 게스트가 없는 경우
400 false "CHATROOM_NOT_FOUND" "채팅방을 찾을 수 없습니다" 해당 chatRoomId를 가진 채팅방이 없는 경우
400 false "BOARD_NOT_FOUND" "게시글을 찾을 수 없습니다" 해당 boardId를 가진 게시글이 없는 경우
400 false "CANNOT_APPROVE" "승인을 할 수 없는 게시글입니다" 해당 게시글이 완료 혹은 취소가 된 경우 OR 호스트 혹은 게스트가 방을 나간 경우
400 false "WRONG_CHATROOM_HOST" "이 사용자는 채팅방의 호스트가 아닙니다" 승인을 요청하는 사용자가 해당 채팅방의 호스트가 아닌 경우
400 false "WRONG_CHATROOM_GUEST" "이 사용자는 채팅방의 게스트가 아닙니다" 승인을 받으려는 사용자가 해당 채팅방의 게스트가 아닌 경우
400 false "GUEST_APPLY_NOT_FOUND" "게스트가 아직 신청하지 않았습니다" 게스트가 아직 신청을 하지 않은 경우
400 false "ALREADY_APPROVED" "이 사용자는 이미 승인받은 상태입니다" 게스트가 이미 승은을 받은 경우
400 false "NO_SPACE_TO_APPLY" "더 이상 승인을 해줄 자리가 없습니다" 자리가 꽉 차서 더이상 승인을 해주지 못하는 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

승인된 신청자 취소하기

HTTP Method

  • DELETE

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/board/{boardId}/approve

Request Header

  • Authorization: Bearer {jwt token}

Request Body

{
    "chatRoomId": 1,
    "guestId": 2
}
data description
Field Type Description Example Required
chatRoomId Long 채팅방 ID 1 O
guestId Long 게스트 ID 1 O

ResponseBody

✅ success response

{
    "transactionTime": "2020-11-06T10:17:20.692338",
    "status": 200,
    "responseType": "SUCCESS",
    "message": "성공적으로 API를 호출했습니다"
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
message String 응답 메시지 "성공적으로 API를 호출했습니다"
  • 실시간 버튼 업데이트용 웹소켓 메시지
{
  "id": -1,
  "content": "",
  "type": "",
  "realTimeUpdateType": DISAPPROVED,
  "isHostRead": false,
  "isGuestRead": false,
  "messageId": -1,
  "chatRoomId": -1,
  "senderId": -1,
  "senderNickname": "",
  "createdAt": "2020-10-24T06:35:07.828776"
}

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 호스트가 없는 경우 OR 게스트가 없는 경우
400 false "CHATROOM_NOT_FOUND" "채팅방을 찾을 수 없습니다" 해당 chatRoomId를 가진 채팅방이 없는 경우
400 false "BOARD_NOT_FOUND" "게시글을 찾을 수 없습니다" 해당 boardId를 가진 게시글이 없는 경우
400 false "CANNOT_DISAPPROVE" "거절을 할 수 없는 게시글입니다" 해당 게시글이 완료 혹은 취소가 된 경우 OR 호스트 혹은 게스트가 방을 나간 경우
400 false "WRONG_CHATROOM_HOST" "이 사용자는 채팅방의 호스트가 아닙니다" 승인을 요청하는 사용자가 해당 채팅방의 호스트가 아닌 경우
400 false "WRONG_CHATROOM_GUEST" "이 사용자는 채팅방의 게스트가 아닙니다" 승인을 받으려는 사용자가 해당 채팅방의 게스트가 아닌 경우
400 false "IS_NOT_APPROVED" "이 사용자는 승인 상태가 아닙니다" 승인되지 않은 사용자인경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

채팅 메시지 읽음 처리

HTTP Method

  • PUT

Endpoint

  • http://101.101.219.23/api/chatting-service/v1/chat/room/{chatRoomId}/message/{messageId}

Request Param

  • chatRoomId: 채팅방의 고유 아이디
  • messageId: 메시지의 고유 아이디(messageId가 아니라 id입니다)

Request Header

  • Authorization: Bearer {jwt token}

Response Body

✅ success response

{
    "transactionTime": "2020-12-03T23:22:03.174355",
    "status": 200,
    "responseType": "SUCCESS",
    "message": "성공적으로 API를 호출했습니다",
    "data": {
        "id": 1,
        "content": "반갑습니다. 안전하고 쾌적한 활동을 위해 운동플래닛 이용규칙을 꼭 읽어주세요!",
        "type": "BOT_NOTICE",
        "realTimeUpdateType": "MESSAGE_READ",
        "isHostRead": false,
        "isGuestRead": true,
        "messageId": 0,
        "chatRoomId": 1,
        "senderId": -9,
        "senderNickname": "운동 플래닛 챗봇",
        "createdAt": "2020-12-03T16:25:50.104428"
    }
}
data description
Field Type Description Example
transactionTime Date 서버 요청 시간 "2020-10-24T06:35:07.828776"
status Integer 응답 상태코드 200
responseType String 응답 타입 "SUCCESS"
message String 응답 메시지 "성공적으로 API를 호출했습니다"
data Object 업데이트된 메시지 객체

🚫 error response

  {
      "status":{{Integer}},
      "success": {{Boolean}},
      "responseType": {{String}},
      "message": {{String}}
  }
data description
Field Type Description Example Required
status integer HTTP STATUS CODE 500 O
success boolean 성공 여부 false O
responseType String 오류 실패 타입 "USER_NOT_FOUND" O
message String 오류 실패 메세지 "사용자를 찾을 수 없습니다" O
status success responseType message 상황
401 false "INACTIVE_USER_FAIL" "회원 가입이 필요합니다." 탈퇴한 사용자가 게시판 작성을 시도했을 경우
403 false "SUSPENDED_USER_FAIL" "신고로 정지된 사용자입니다." 정지된 사용자가 게시판 작성을 시도했을 경우
400 false "USER_NOT_FOUND" "사용자를 찾을 수 없습니다" 요청을 보낸 사용자가 없는 경우
400 false "CHATROOM_NOT_FOUND" "채팅방을 찾을 수 없습니다" 해당 chatRoomId를 가진 채팅방이 없는 경우
400 false "MESSAGE_NOT_FOUND" "메시지를 찾을 수 없습니다" 해당 messageId를 가진 메시지가 없는 경우
400 false "INVALID_METHOD" "메소드 유형이 잘못 되었습니다." POST가 아닌 다른 메소드로 요청한 경우
500 false "INTERNAL_SERVER_ERROR" "서버 내부 오류" 서버 내부 오류

채팅 메시지 읽음 처리 (Bulk Update using WebSocket)

Endpoint

  • ws://101.101.219.23:8080/pub/v1/chat/message/update

Request Body

{
  "content": "[1,2,3,4,5]",
  "type": "UPDATE",
  "senderId": 1,
  "chatRoomId": 1
}

content 안에는 message_id가 아니라 id입니다.

data description
Field Type Description Example
content String 읽음 처리를 할 메시지들의 ID 리스트 "[1,2,3]"
type String 메시지 타입 "UPDATE"
senderId Long 전송자 ID 1
chatRoomId Long 채팅방 ID 1
⚠️ **GitHub.com Fallback** ⚠️