The Space Web

Board API

Post-API

Curl request

$ curl 'http://localhost:8080/board?_csrf=tPiP4VynV1uIU5ilfNCs4yUmZKHZoNpPoZ2_V-eo77AHkt_9hs67gz2fMTqlZ6zBSf2Y0RFCSZnow-pimKuNMtLO3Ydl9rub' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "title" : "test1",
  "content" : "content1",
  "fileNames" : [ ],
  "categoryId" : 1
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1

1

field

Description

return value

Board Number (bno)

Request fields

Field

Type

Description

title

String

Title.

content

String

Content.

fileNames

Array

Name of attached files.

categoryId

Number

Category Id.

Read-API

Curl request

$ curl 'http://localhost:8080/board/1' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /board/{bno}
Parameter Description

bno

Number of Board.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 685

{
  "bno" : 1,
  "title" : "test",
  "content" : "content",
  "writer" : "tester",
  "writerUuid" : "testerUUID",
  "createDate" : "2025-07-08T20:09:06.190421",
  "modDate" : "2025-07-08T20:09:06.190421",
  "viewCount" : 1,
  "vote" : 0,
  "rCount" : 0,
  "fileNames" : [ ],
  "communityInfo" : {
    "id" : 1,
    "name" : "test",
    "createDate" : "2025-07-08T20:09:06.186415",
    "modDate" : "2025-07-08T20:09:06.186415",
    "description" : "test"
  },
  "categoryInfo" : {
    "id" : 1,
    "name" : "test",
    "type" : "test",
    "createDate" : "2025-07-08T20:09:06.189422",
    "modDate" : "2025-07-08T20:09:06.189422",
    "communityId" : 1
  }
}

Response fields

Field

Type

Description

bno

Number

Number of Board.

title

String

Title.

communityInfo

Object

The community information to which the post belongs.

categoryInfo

Object

The category information to which the post belongs.

content

String

Content.

writer

String

Writer ID

writerUuid

String

Writer UUID

createDate

String

Create date.

modDate

String

Modified date.

viewCount

Number

View count / def = 0.

vote

Number

Vote count / def = 0.

rCount

Number

Reply count / def = 0.

fileNames

Array

Name of attached files.

List-API

Curl request

$ curl 'http://localhost:8080/board/list?page=1&size=10&type=t&keyword=1&path=test&categoryId=1' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Query parameters

Parameter Description

page

Page number to display in the full query results.

size

Number of rows to display search results.

type

Search condition identifier.
Operation 'or' for search criteria.
t: title
c: content
w: writer
u: uuid
r: reply content

keyword

Search Keyword

path

The community to be searched for.
Operation 'and' for search criteria.

categoryId

CategoryId of Search Destinations.
Operation 'and' for search criteria.

Response fields

Field

Type

Description

page

Number

Page number to display in the full query results.

size

Number

Number of rows to display search results.

total

Number

The total number of rows of search results.

start

Number

1 if search results exist, 0 otherwise.

end

Number

Last page of total search results, total / size

prev

Boolean

True if there are more than 2 pages currently being viewed.

next

Boolean

True if page is less than end.

dtoList

Array

Search results row data.

Modify-API

Curl request

$ curl 'http://localhost:8080/board?_csrf=An4MZjjlSfgS3knn_Z-vVsVRu2CA1ChFyIm_n-bIreV7wpqtZkk1Vg-BLcs_6H6Bm7KbM6Y1lli44x9o_LqKr9X6zt0ao67M' -i -X PATCH \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "bno" : 1,
  "title" : "modify",
  "content" : "modify",
  "writer" : "testerUser",
  "categoryId" : 2,
  "fileNames" : [ ]
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request fields

Field

Type

Description

bno

Number

Number of Board.

title

String

Title.

content

String

Content.

writer

String

Writer.

categoryId

Number

Category Id.

fileNames

Array

Name of attached files.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Delete-API

Curl request

$ curl 'http://localhost:8080/board/1' -i -X DELETE \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '_csrf=qCViMaOhqMBeFahC6rlJJgAd7Qk4nfVXfIHJK9z-qX3y52SCnRZQU5rEmflzcMoj2JR9FWIqwGha-cJ6SuWtT7jKmhiU3lG1'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /board/{bno}
Parameter Description

bno

Number of Board.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Delete with Admin-API

Curl request

$ curl 'http://localhost:8080/board/1/admin?name=test' -i -X DELETE \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '_csrf=dpienK6YeFSoBqcmwNpKw2_hL0CRTtADcn1Dvhy_hDjr75x5QqCqqpv-HGGFNMQeofd-9w2FAiLyLbMuSk9xjivZ4VzZ3Kwd'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /board/{bno}/admin
Parameter Description

bno

Number of Board.

Query parameters

Parameter Description

name

The community name of the post.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Category API

List-API

Curl request

$ curl 'http://localhost:8080/category/list?communityId=1' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Response fields

Field

Type

Description

[].categoryId

Number

Category ID

[].categoryName

String

Category Name

[].categoryType

String

Category Type

[].communityId

Number

The community ID to which that category belongs.

Create with Admin-API

Curl request

$ curl 'http://localhost:8080/category/admin?_csrf=8qA6oE52Wz16v5NxUWH1d1lERolPbfXscDwXkrpfUNV9SxJ0l8MCkntEawlXjfVJY0zBTm9xa-t2D8HBFAl28ItsaeZFeiVE' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "name" : "test",
  "type" : "test",
  "communityId" : 1
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request fields

Field

Type

Description

name

String

Category name

type

String

Category Type

communityId

Number

The community ID to which that category will belongs.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Delete with Admin-API

Curl request

$ curl 'http://localhost:8080/category/1/admin?communityName=test' -i -X DELETE \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '_csrf=lByuUNh0U4AdrfoMpiwvR0qkO_GlV96btjMXi9ppQ007ElVCrX6XMegVYuMwncI_kwEbJC6cFsjEM-u2jlYlub9ZJixdIzAk'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /category/{categoryId}/admin
Parameter Description

categoryId

Category ID what to delete

Query parameters

Parameter Description

communityName

The community name to which that category belongs.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Community API

Get-API

Curl request

$ curl 'http://localhost:8080/community/1' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /community/{communityId}
Parameter Description

communityId

Community Id to search

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 156

{
  "id" : 1,
  "name" : "test",
  "createDate" : "2025-07-08T20:09:07.722494",
  "modDate" : "2025-07-08T20:09:07.722494",
  "description" : "test"
}

Response fields

Field

Type

Description

id

Number

Community ID

name

String

Community name

createDate

String

Created date

modDate

String

Modified date

description

String

Community description

List-API

Curl request

$ curl 'http://localhost:8080/community/list?page=0&size=0&type=n&keyword=3' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Query parameters

Parameter Description

page

0

size

0

type

n / Use n to distinguish it from other list lookup APIs.

keyword

Keywords to search for

Response fields

Field

Type

Description

page

Number

1 / This is fixed value because it will show the list all on one page.

size

Number

1000000 / This is fixed value because it will show the list all on one page. It may be different if we introduce a community cap or group-specific categorising in the future.

total

Number

Total number of search hits.

start

Number

1 / This is fixed value because it will show the list all on one page.

end

Number

1 / This is fixed value because it will show the list all on one page.

prev

Boolean

false / This is fixed value because it will show the list all on one page.

next

Boolean

false / This is fixed value because it will show the list all on one page.

dtoList

Array

List of rows of search results.

Create-API

Curl request

$ curl 'http://localhost:8080/community?nameCheck=true' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "communityName" : "test",
  "description" : "test"
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request fields

Field

Type

Description

communityName

String

Name of community

description

String

Description of community

Query parameters

Parameter Description

nameCheck

result of name check

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 156

{
  "id" : 1,
  "name" : "test",
  "createDate" : "2025-07-08T20:09:08.299535",
  "modDate" : "2025-07-08T20:09:08.299535",
  "description" : "test"
}

Check-API

Curl request

$ curl 'http://localhost:8080/community/nameCheck?communityName=Test%20Community%201' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Query parameters

Parameter Description

communityName

Name of community to check

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 4

true

Delete-API

Curl request

$ curl 'http://localhost:8080/community/1' -i -X DELETE \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '_csrf=sZMiWzNHnKJM9__fqDPueycWyhrsh3YbDRel63zsNjU0xj4Y1aZBaVZ3_5dhwc3mmx7aSxcl53uJ5UA2P3WQ3kreDlQF8w4g'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /community/{communityId}
Parameter Description

communityId

CommunityID to delete

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

AdminGetList-API

Curl request

$ curl 'http://localhost:8080/community/list/admin' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 14

[ 1, 2, 3, 4 ]

Response fields

Field

Type

Description

[]

Array

List of CommunityID what performer has admin role.

Modify-API

Curl request

$ curl 'http://localhost:8080/community/1/modify?_csrf=2t3Pah57eISOJOx6_nE944iQsYhpAiydAQULtgfvGLseKoGFub_6XScaTLGjFd5OyVwJgeqlnLFROkmwMGFq0zeOIYkmTOS3' -i -X PATCH \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "description" : "modify"
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request fields

Field

Type

Description

description

String

Description what will change

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

File API

Upload-API

Curl request

$ curl 'http://localhost:8080/file' -i -X POST \
    -H 'Content-Type: multipart/form-data;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    -H 'X-CSRF-TOKEN: 2pQuKPlvmwPqMZ6nhdJPCjBMMXiKxv3_OZ2GX-kcpwjp8EuYu6YZEcpdrmXHBa_G4_97bwN1HBm598XSDf7gaN0rwj2Nwi3-' \
    --cookie 'JSESSIONID=example-session-id' \
    -F 'fileList=@test.png;type=image/png' \
    -F 'fileList=@test.txt;type=text/txt'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request parts

Part Description

fileList

File list to upload

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 193

[ {
  "fileId" : "1d9b713e",
  "fileName" : "test.png",
  "imageChk" : true,
  "ord" : 0
}, {
  "fileId" : "1cd30751",
  "fileName" : "test.txt",
  "imageChk" : false,
  "ord" : 0
} ]

Response fields

Field

Type

Description

[].fileId

String

Random generation identifier

[].fileName

String

File name to will upload

[].imageChk

Boolean

Whether the file is an image.

[].ord

Number

The number of files in that post when it is posted to a board.

Get-API

Curl request

$ curl 'http://localhost:8080/file/fd148be9/test.png' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /file/{fileid}/{filename}
Parameter Description

fileid

File ID to get

filename

File name to get

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: image/png;charset=UTF-8
Content-Disposition: attachment; filename="test.png"
Accept-Ranges: bytes
Content-Length: 5
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

test!

Delete-API

Curl request

$ curl 'http://localhost:8080/file/10a870d4/test.png' -i -X DELETE \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '_csrf=FoljkYFFkHrgOtu9AXKJVsb2Uzh7Urkli4YJyt5p6tdTBvwvIbxT8LQh8h_NAu6JZV-9Yv6UfgFDa9sIvr9q8u5R3LU3NM4e'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /file/{fileid}/{filename}
Parameter Description

fileid

File ID to get

filename

File name to get

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Reply API

Register-APi

Curl request

$ curl 'http://localhost:8080/board/1/reply?_csrf=ysN5vfEZHh3O7qFDnzhAGVlbFfHRwOc29kJmjwRgQxhd051Z8vZBhMZ_Kyzj3JAh-hV0KD1sOJO09tAbxnBe62JZJSBosK9p' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "replyContent" : "test",
  "tag" : "",
  "parentRno" : 0,
  "tagRno" : 0
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /board/{bno}/reply
Parameter Description

bno

Board Number

Request fields

Field

Type

Description

replyContent

String

Content of reply

tag

String

The writer name of the tagged reply.

parentRno

Number

Parent comment number for this comment.

tagRno

Number

The number of comments that this comment is tagging.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

List-API

Curl request

$ curl 'http://localhost:8080/board/1/reply' -i -X GET \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /board/{bno}/reply
Parameter Description

bno

Board Number

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1342

{
  "page" : 1,
  "size" : 1000000,
  "total" : 4,
  "start" : 1,
  "end" : 1,
  "prev" : false,
  "next" : false,
  "dtoList" : [ {
    "rno" : 1,
    "replyContent" : "test1",
    "replyWriter" : "tester",
    "replyWriterUuid" : "testerUUID",
    "tag" : "",
    "replyDate" : "2025-07-08T20:09:13.958402",
    "childCount" : 0,
    "taggedCount" : 0,
    "parentRno" : 0,
    "tagRno" : 0,
    "vote" : 0
  }, {
    "rno" : 2,
    "replyContent" : "test2",
    "replyWriter" : "tester",
    "replyWriterUuid" : "testerUUID",
    "tag" : "testerUser",
    "replyDate" : "2025-07-08T20:09:13.963387",
    "childCount" : 0,
    "taggedCount" : 0,
    "parentRno" : 0,
    "tagRno" : 1,
    "vote" : 0
  }, {
    "rno" : 3,
    "replyContent" : "test2",
    "replyWriter" : "tester",
    "replyWriterUuid" : "testerUUID",
    "tag" : "",
    "replyDate" : "2025-07-08T20:09:13.966382",
    "childCount" : 0,
    "taggedCount" : 0,
    "parentRno" : 0,
    "tagRno" : 0,
    "vote" : 0
  }, {
    "rno" : 4,
    "replyContent" : "test3",
    "replyWriter" : "tester",
    "replyWriterUuid" : "testerUUID",
    "tag" : "testerUser",
    "replyDate" : "2025-07-08T20:09:13.968596",
    "childCount" : 0,
    "taggedCount" : 0,
    "parentRno" : 0,
    "tagRno" : 3,
    "vote" : 0
  } ]
}

Response fields

Field

Type

Description

total

Number

Total number of reply on this board

dtoList[].rno

Number

Reply Number

dtoList[].replyContent

String

Content of reply

dtoList[].replyWriter

String

Writer name of reply

dtoList[].replyWriterUuid

String

Writer UUID of reply

dtoList[].tag

String

The writer name of the tagged reply.

dtoList[].replyDate

String

Date of reply registered

dtoList[].childCount

Number

Count of nested reply

dtoList[].parentRno

Number

Parent comment number for this comment.

dtoList[].taggedCount

Number

Count of tagged.

dtoList[].vote

Number

Count of like

Delete-API

Curl request

$ curl 'http://localhost:8080/board/1/reply/1' -i -X DELETE \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '_csrf=3WnzbMJwRbumn7LS_iB4js38o44d-pdpte1CcvSmD6uKaluX6g-WWqNJdY6Lp4Lqmg1Mv__PjuwozqVEgI4hRpGfPZ_pD2qi'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /board/{bno}/reply/{rno}
Parameter Description

bno

Board Number

rno

Reply Number to delete

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Like API

Like-API

Curl request

$ curl 'http://localhost:8080/like?_csrf=tkVOxM5VQmhCR0kuJm6CU-t2Ccm-lRAw-LQFYrRLLKsxumio13Z28Ppld1hvIS0ZRUO2NthFJPCGoyIdmYwzW4IqFMpQiwud' -i -X PUT \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "bno" : 1,
  "rno" : 0
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request fields

Field

Type

Description

bno

Number

If perform target is Post, its number.

rno

Number

If perform target is Reply, its number.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1

1

Field

Type

Description

Body

int

If performer has no history of like to target post or reply, 1.
But, if performer has a history, -1.

User API

Register-API

Curl request

$ curl 'http://localhost:8080/user?checkid=true' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -d '{
  "id" : "AAAAAA",
  "name" : "AAAAAA",
  "email" : "AAAA@AAAA.AAA",
  "password" : "password",
  "introduce" : "Nice to meet you",
  "signature" : "\uD83D\uDE0A"
}'

Request fields

Field

Type

Description

id

String

ID to register

name

String

Nickname to register

email

String

Email to register

password

String

password to register

introduce

String

introduce

signature

String

An emoji to express oneself

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Check-API

Curl request

$ curl 'http://localhost:8080/user/checkid?id=testerID' -i -X GET

Query parameters

Parameter Description

id

The ID to check.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 4

true

Field

Type

Description

Body

boolean

If that ID already exists, false, otherwise true.

GetUserInfo-API

Curl request

$ curl 'http://localhost:8080/user/info' -i -X GET

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 81

{
  "uuid" : "testerUUID",
  "name" : "tester",
  "roles" : [ "ROLE_USER" ]
}

Response fields

Field

Type

Description

uuid

String

UUID of login user

name

String

Nickname of login user

roles

Array

Roles(in community) of login user

GetMyPage-API

Curl request

$ curl 'http://localhost:8080/user/testerUUID/mypage' -i -X GET \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /user/{uuid}/mypage
Parameter Description

uuid

The UUID of the target to search.

Request headers

Name Description

_csrf

CSRF Token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 167

{
  "signature" : "\uD83D\uDE0A",
  "name" : "tester",
  "uuid" : "testerUUID",
  "introduce" : "Nice to meet you",
  "joinedOn" : "2025-07-08T20:09:15.321986"
}

Response fields

Field

Type

Description

signature

String

The signature emoji of the target user.

name

String

The nickname of the target user.

uuid

String

The UUID of the target user.

introduce

String

The target user’s self-introduction.

joinedOn

String

The date the user joined.

ModifyMyPage-API

Curl request

$ curl 'http://localhost:8080/user/myinfo?_csrf=oq_CuxBlcFFzsiSafGk2ANytZ6qWtEzqmE1Q_prhV223gbJukpbyiHJRSTJegEaiGkQCY-nOSpOn1XnHoXU0zqzXZFqO5YIM' -i -X PATCH \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "signature" : "",
  "name" : "modified",
  "introduce" : ""
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request headers

Name Description

_csrf

CSRF Token

Request body

{
  "signature" : "",
  "name" : "modified",
  "introduce" : ""
}

Request fields

Field

Type

Description

name

String

Nickname to update

introduce

String

Self-introduce to modify

signature

String

An emoji to modify.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Friendship API

Accept-API

Curl request

$ curl 'http://localhost:8080/friend/1' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie(Requesting user)

Path parameters

Table 1. /friend/{fid}
Parameter Description

fid

Id of the requested friendship.

Request headers

Name Description

_csrf

CSRF Token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Block-API

Curl request

$ curl 'http://localhost:8080/friend/block?toUserUuid=friendUUID' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie(Requesting user)

Request headers

Name Description

_csrf

CSRF Token

Query parameters

Parameter Description

toUserUuid

UUID of the target user.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Memo-API

Curl request

$ curl 'http://localhost:8080/friend/1/memo?memo=memo' -i -X PUT \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie(Requesting user)

Path parameters

Table 1. /friend/{fid}/memo
Parameter Description

fid

Id of the target friendship.

Request headers

Name Description

_csrf

CSRF Token

Query parameters

Parameter Description

memo

content of memo.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Request-API

Curl request

$ curl 'http://localhost:8080/friend?toUserUuid=friendUUID' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie(Requesting user)

Request headers

Name Description

_csrf

CSRF Token

Query parameters

Parameter Description

toUserUuid

UUID of the target user.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

The Space Chat

Room API

Create-API

Curl request

$ curl 'http://localhost:8080/chat/room?_csrf=-zCkpr-n6BAs8SY1Led63RdRi1rzWaFErHo-LapajlxSFVeByFSSk9vFiSUBk0MFTspO5C43pjiVOJRpnB9YSMlovm1gcW62' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "name" : "Test Room",
  "description" : "Test",
  "members" : [ ]
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request headers

Name Description

_csrf

CSRF Token

Request body

{
  "name" : "Test Room",
  "description" : "Test",
  "members" : [ ]
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 385

{
  "roomId" : 1,
  "name" : "Test Room",
  "manager" : {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "Test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:02.4476555",
  "modifiedAt" : "2025-07-08T20:09:02.4476555"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Delegate-API

Curl request

$ curl 'http://localhost:8080/chat/room/1/manager?targetUuid=testerUUID3' -i -X PUT \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/{rid}/manager
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

Query parameters

Parameter Description

targetUuid

Target to delegate manager.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 844

{
  "roomId" : 1,
  "name" : "Test Room",
  "manager" : {
    "uuid" : "testerUUID3",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "Test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID1",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID2",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID5",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID3",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID4",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:04.435389",
  "modifiedAt" : "2025-07-08T20:09:04.435389"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Get My Rooms-API

Curl request

$ curl 'http://localhost:8080/chat/room/my' -i -X GET \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Request headers

Name Description

_csrf

CSRF Token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 131

[ {
  "rid" : 1,
  "name" : "Test Room",
  "lastSentMessage" : "Add later",
  "lastSentAt" : "2025-07-08T20:09:02.0218928"
} ]

Response fields

Field

Type

Description

[].rid

Number

Room ID

[].name

String

Room name

[].lastSentMessage

String

Last sent message

[].lastSentAt

String

Time of last sent message

Get Room-API

Curl request

$ curl 'http://localhost:8080/chat/room/1' -i -X GET \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/{rid}
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 383

{
  "roomId" : 1,
  "name" : "Test Room",
  "manager" : {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "Test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:03.355078",
  "modifiedAt" : "2025-07-08T20:09:03.355078"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Invite-API

Curl request

$ curl 'http://localhost:8080/chat/room/1/members?_csrf=RE7U0We7y_Qon8sygSRXEkkJe_qtd4fqV_5AGsG6QLgIvuzidXy1t1La88IFqfsD4wljKig7VsOfTrHHMp9wI_iCI947i4-A' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "members" : [ "testerUUID1", "testerUUID2", "testerUUID3", "testerUUID4", "testerUUID5" ]
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/{rid}/members
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

Request body

{
  "members" : [ "testerUUID1", "testerUUID2", "testerUUID3", "testerUUID4", "testerUUID5" ]
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 843

{
  "roomId" : 1,
  "name" : "Test Room",
  "manager" : {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "Test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID1",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID2",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID5",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID3",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID4",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:02.724394",
  "modifiedAt" : "2025-07-08T20:09:02.724394"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Join-API

Curl request

$ curl 'http://localhost:8080/chat/room/1/members/me' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/{rid}/members/me
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 477

{
  "roomId" : 1,
  "name" : "testRoom",
  "manager" : {
    "uuid" : "testerUUID2",
    "name" : "tester2",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID2",
    "name" : "tester2",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:03.607461",
  "modifiedAt" : "2025-07-08T20:09:03.607461"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Kick-API

Curl request

$ curl 'http://localhost:8080/chat/room/1/members?targetUuid=testerUUID3' -i -X DELETE \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/{rid}/members
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

Query parameters

Parameter Description

targetUuid

Target to kick.

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 751

{
  "roomId" : 1,
  "name" : "Test Room",
  "manager" : {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "Test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID1",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID2",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID5",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  }, {
    "uuid" : "testerUUID4",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:03.913096",
  "modifiedAt" : "2025-07-08T20:09:03.913096"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Quit-API

Curl request

$ curl 'http://localhost:8080/chat/room/1/members/me' -i -X DELETE \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/{rid}/members/me
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY

Update-API

Curl request

$ curl 'http://localhost:8080/chat/room/update/1?_csrf=_DXaUdQN6AYkr9FBtIu511RctG5Gon5o1kEuqy7Uv-VAEPg3zgbuMLA12GQJneh51qaN5zFkmVdylkpFt3VPzha3htEkIsEO' -i -X PUT \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H '_csrf: dummyCsrfToken' \
    --cookie 'JSESSIONID=example-session-id' \
    -d '{
  "name" : "Update Change",
  "description" : "Update test"
}'

Request cookies

Name Description

JSESSIONID

Authenticated user session ID cookie

Path parameters

Table 1. /chat/room/update/{rid}
Parameter Description

rid

Room ID

Request headers

Name Description

_csrf

CSRF Token

Request body

{
  "name" : "Update Change",
  "description" : "Update test"
}

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 395

{
  "roomId" : 1,
  "name" : "Update Change",
  "manager" : {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  },
  "description" : "Update test",
  "members" : [ {
    "uuid" : "testerUUID",
    "name" : "tester",
    "roles" : [ "ROLE_USER" ]
  } ],
  "createdAt" : "2025-07-08T20:09:03.081583",
  "modifiedAt" : "2025-07-08T20:09:03.1000841"
}

Response fields

Field

Type

Description

roomId

Number

Room ID

name

String

Room name

manager

Object

Room manager

description

String

Room description

members

Array

Joined members

createdAt

String

Created time

modifiedAt

String

Last modified time

Message API

Message api

This document outlines the WebSocket API for chat messaging.

1. Send Message

Sends a message to a specific chat room.

1.1. WebSocket Endpoint

  • Destination: /app/chat/send

  • Subscription: /topic/chat/room/{roomId}

1.2. Request Body

The client sends a message object to the /app/chat/send destination.

Table 1. Request Payload (MessageDTOs.Text)
Field Type Description

roomId

Long

The ID of the room to send the message to.

content

String

The text content of the message.

Example Request
{
  "roomId": 1,
  "content": "Hello!"
}

1.3. Response Body

Subscribers to /topic/chat/room/{roomId} will receive a ChatMessage object.

Table 2. Response Payload (ChatMessage)
Field Type Description

messageId

Long

Unique identifier for the message within the room.

roomId

Long

The ID of the room where the message was sent.

sender

String

The UUID of the user who sent the message.

content

String

The content of the message.

type

MessageType

The type of the message (e.g., TEXT, IMAGE).

sentAt

LocalDateTime

The timestamp when the message was sent.

Example Response
{
  "messageId": 123,
  "roomId": 1,
  "sender": "testerUUID",
  "content": "Hello!",
  "type": "TEXT",
  "sentAt": "2025-07-08T10:30:00"
}

2. Get Recent Messages

Retrieves the most recent messages from a chat room. This is a user-specific request.

2.1. WebSocket Endpoint

  • Destination: /app/chat/recent

  • Subscription: /user/queue/chat/room/{roomId}

2.2. Request Body

The client sends the roomId as the payload to the /app/chat/recent destination.

Table 3. Request Payload
Field Type Description

roomId

Long

The ID of the room from which to fetch recent messages.

Example Request
1

2.3. Response Body

The server sends a list of ChatMessage objects to the user’s private queue at /user/queue/chat/room/{roomId}.

Response Payload (List<ChatMessage>)

A list containing ChatMessage objects. See the ChatMessage structure in section 1.3.

Example Response
[
  {
    "messageId": 30,
    "roomId": 1,
    "sender": "testerUUID",
    "content": "test: 30",
    "type": "TEXT",
    "sentAt": "2025-07-08T11:00:00"
  },
  {
    "messageId": 31,
    "roomId": 1,
    "sender": "testerUUID",
    "content": "test: 31",
    "type": "TEXT",
    "sentAt": "2025-07-08T11:00:05"
  }
]