OAuth2.0 API

OAuth2.0 인증을 제공하는 Provider를 통해 사용자 로그인을 진행합니다. 현재 지원하는 Provider는 다음과 같습니다.

  • Google

  • Kakao

Table 1. JWT Token 전달 방식
Token 전달 방식

Access token

리다이렉트 URL의 Query Parameter로 전달

Refresh token

Set-Cookie를 통해 전달

로그인 성공 후에는 요청 시 전달한 redirect uri 경로로 리다이렉트되며, 이때 JWT token이 함께 전달됩니다.

구글 로그인

HTTP request

GET /oauth2/authorization/google?redirect_uri={redirect_uri} HTTP/1.1
Host: localhost:8080

Query parameters

Table 2. /oauth2/authorization/google?redirect_uri={redirect_uri}
Parameter Description

redirect_uri

로그인 성공 후 리다이렉트 되는 URL

HTTP response

HTTP/1.1 302 Found
Location: {redirect_uri}?code=ACCESS_TOKEN
Set-Cookie: refresh=REFRESH_TOKEN

카카오 로그인

HTTP request

GET /oauth2/authorization/kakao?redirect_uri={redirect_uri} HTTP/1.1
Host: localhost:8080

Query parameters

Table 3. /oauth2/authorization/kakao?redirect_uri={redirect_uri}
Parameter Description

redirect_uri

로그인 성공 후 리다이렉트 되는 URL

HTTP response

HTTP/1.1 302 Found
Location: {redirect_uri}?code=ACCESS_TOKEN
Set-Cookie: refresh=REFRESH_TOKEN

인가 API

액세스 토큰 재발급

액세스 토큰이 만료된 경우 리프레시 토큰을 이용하여 액세스 토큰을 재발급 받을 수 있습니다.

HTTP request

POST /api/v1/jwt/refresh HTTP/1.1
Authorization: Bearer OLD_ACCESS_TOKEN
Host: localhost:8080
Cookie: refresh=OLD_REFRESH_TOKEN
Content-Type: application/x-www-form-urlencoded

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 77

{
  "status" : 201,
  "data" : {
    "accessToken" : "NEW_ACCESS_TOKEN"
  }
}

Response fields

Path Type Description

status

Number

응답 상태 코드

data

Object

응답 데이터

data.accessToken

String

재발급한 액세스 토큰

사용자 API

사용자의 정보를 조회하거나 수정할 수 있습니다. HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

사용자 이름 변경

사용자의 이름을 변경합니다.

HTTP request

PUT /api/v1/user/name HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 26
Host: localhost:8080

{
  "name" : "홍길동"
}

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
Content-Length: 65

{
  "status" : 200,
  "message" : "회원 이름 수정 성공"
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

사용자 탈퇴

사용자의 탈퇴를 진행합니다. 요청이 완료된 사용자는 더 이상 로그인할 수 없습니다.

HTTP request

DELETE /api/v1/user HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 58

{
  "status" : 200,
  "message" : "회원 탈퇴 성공"
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

성별 정보 조회

사용자의 성별 정보를 조회합니다. 값은 MALE, FEMALE 중 하나입니다. 값이 없는 경우 404 Not Found 에러가 발생합니다.

HTTP request

GET /api/v1/user/gender HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 60

{
  "status" : 200,
  "data" : {
    "gender" : "MALE"
  }
}

Response fields

Path Type Description

status

Number

응답 상태 코드

data.gender

String

성별 정보

성별 정보 업데이트

사용자의 성별 정보를 추가하거나 수정합니다. 성별은 MALE, FEMALE 중 하나입니다.

HTTP request

POST /api/v1/user/gender HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Accept: application/json
Content-Length: 23
Host: localhost:8080

{
  "gender" : "MALE"
}

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
Content-Length: 72

{
  "status" : 200,
  "message" : "회원 성별 정보 등록 성공"
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

프로필 이미지 조회

사용자의 프로필 이미지를 조회합니다. 응답 데이터의 URL은 사용자의 이미지 경로를 나타냅니다. 해당 URL에 GET 요청을 보내면 이미지를 다운로드할 수 있습니다.

HTTP request

GET /api/v1/user/profile HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 88

{
  "status" : 200,
  "data" : {
    "url" : "https://image.storage.com/profile/1"
  }
}

Response fields

Path Type Description

status

Number

응답 상태 코드

data.url

String

프로필 이미지 URL

프로필 이미지 업데이트

사용자의 프로필 이미지를 업데이트합니다. 이미지는 multipart/form-data 형식으로 전송해야 하며 image 필드에 이미지를 포함시켜야 합니다. 요청 성공 시 AWS S3에 업로드된 이미지의 URL을 응답 데이터로 반환합니다.

HTTP request

POST /api/v1/user/profile HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer ACCESS_TOKEN
Accept: application/json
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=image.png
Content-Type: image/png

image data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 88

{
  "status" : 201,
  "data" : {
    "url" : "https://image.storage.com/profile/1"
  }
}

Response fields

Path Type Description

status

Number

응답 상태 코드

data.url

String

사용자 프로필 이미지 URL

결혼 API

결혼을 등록하고 관련된 정보를 조회, 수정하는 API를 제공합니다. 결혼 정보는 결혼일과 결혼 예산으로 구성되어 있습니다.

결혼 등록

온보딩 과정에서 결혼을 등록합니다. 결혼 준비중인지에 대한 여부와 결혼일을 전달해야 합니다. 기본적으로 결혼 예산은 0원으로 설정됩니다.

HTTP request

POST /api/v1/wedding HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 55
Host: localhost:8080

{
  "weddingDay" : "2033-03-25",
  "preparing" : true
}

Request fields

Path Type Description

weddingDay

String

결혼일

preparing

Boolean

결혼 준비중 여부

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 58

{
  "status" : 201,
  "message" : "결혼 등록 성공"
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

결혼일 조회

사용자의 결혼일을 조회합니다.

HTTP request

GET /api/v1/wedding/day HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 135

{
  "status" : 200,
  "message" : "결혼일 조회 성공",
  "data" : {
    "weddingDay" : "2033-03-25",
    "preparing" : true
  }
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

data.weddingDay

String

결혼일

data.preparing

Boolean

결혼 준비중 여부

결혼일 수정

사용자의 결혼일을 수정합니다.

HTTP request

PUT /api/v1/wedding/day HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 55
Host: localhost:8080

{
  "weddingDay" : "2033-03-25",
  "preparing" : true
}

Request fields

Path Type Description

weddingDay

String

결혼일

preparing

Boolean

결혼 준비중 여부

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
Content-Length: 61

{
  "status" : 200,
  "message" : "결혼일 수정 성공"
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

결혼 예산 조회

사용자의 결혼 예산을 조회합니다.

HTTP request

GET /api/v1/wedding/budget HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 106

{
  "status" : 200,
  "message" : "결혼 예산 조회 성공",
  "data" : {
    "budget" : 1000000
  }
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

data.budget

Number

결혼 예산

결혼 예산 수정

사용자의 결혼 예산을 수정합니다.

HTTP request

PUT /api/v1/wedding/budget HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 24
Host: localhost:8080

{
  "budget" : 1000000
}

Request fields

Path Type Description

budget

Number

결혼 예산

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
Content-Length: 65

{
  "status" : 200,
  "message" : "결혼 예산 수정 성공"
}

Response fields

Path Type Description

status

Number

응답 상태 코드

message

String

응답 메시지

체크리스트 API

사용자 체크리스트 조회 및 온보딩 체크리스트 사전 등록이 가능합니다. 이를 위해서는 HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

체크리스트 조회 (서브 아이템 포함)

사용자의 전체 체크리스트를 조회할 수 있습니다.

요청 시 query 값은 true로 설정합니다.

사용자가 등록한 체크리스트 아이템과 체크리스트 서브 아이템 목록 전체를 조회할 수 있습니다.

응답 데이터는 체크리스트 아이템 일정 날짜 (checkDate) 에 맞추어 오름차순으로 정렬된 데이터이며, 일정 날짜가 입력되지 않은 데이터가 제일 앞쪽에 위치합니다.

HTTP request

GET /api/v1/checklist?subitem=true HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Query parameters

Parameter Description

subitem

서브아이템 조회 여부

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
Content-Length: 454

{
  "status" : 200,
  "data" : [ {
    "checklistItem" : {
      "id" : 1,
      "title" : "title",
      "checkDate" : "2023-04-18",
      "startTime" : "01:01:01",
      "endTime" : "12:11:14",
      "place" : "place",
      "memo" : "memo"
    },
    "checklistSubItems" : [ {
      "id" : 1,
      "contents" : "contents 1",
      "isChecked" : false
    }, {
      "id" : 2,
      "contents" : "contents 2",
      "isChecked" : false
    } ]
  } ]
}

Response fields-data

Path Type Description

checklistItem.id

Number

체크리스트 아이템 아이디

checklistItem.title

String

체크리스트 아이템 제목

checklistItem.checkDate

String

체크리스트 아이템 일정 날짜

checklistItem.startTime

String

체크리스트 아이템 일정 시작 시간

checklistItem.endTime

String

체크리스트 아이템 일정 종료 시간

checklistItem.place

String

체크리스트 아이템 일정 장소

checklistItem.memo

String

체크리스트 아이템 메모

checklistSubItems[].id

Number

체크리스트 서브 아이템 아이디

checklistSubItems[].contents

String

체크리스트 서브 아이템 내용

checklistSubItems[].isChecked

Boolean

체크리스트 서브 아이템 체크 여부

체크리스트 조회 (서브 아이템 미포함)

사용자의 전체 체크리스트를 조회할 수 있습니다. (서브 아이템 미포함)

요청 시 query 값은 false로 설정합니다.

사용자가 등록한 체크리스트 아이템 목록 전체를 조회할 수 있습니다.

응답 데이터는 체크리스트 아이템 일정 날짜 (checkDate) 에 맞추어 오름차순으로 정렬된 데이터이며, 일정 날짜가 입력되지 않은 데이터가 제일 앞쪽에 위치합니다.

HTTP request

GET /api/v1/checklist?subitem=false HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Query parameters

Parameter Description

subitem

서브아이템 조회 여부

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
Content-Length: 212

{
  "status" : 200,
  "data" : [ {
    "id" : 1,
    "title" : "title",
    "checkDate" : "2023-04-18",
    "startTime" : "01:01:01",
    "endTime" : "12:11:14",
    "place" : "place",
    "memo" : "memo"
  } ]
}

Response fields-data

Path Type Description

id

Number

체크리스트 아이템 아이디

title

String

체크리스트 아이템 제목

checkDate

String

체크리스트 아이템 일정 날짜

startTime

String

체크리스트 아이템 일정 시작 시간

endTime

String

체크리스트 아이템 일정 종료 시간

place

String

체크리스트 아이템 일정 장소

memo

String

체크리스트 아이템 메모

온보딩 체크리스트 사전 등록

온보딩 페이지에서 아직 진행하지 않은 일정에 대해 체크리스트 사전 등록이 가능합니다. 진행하지 않은 일정에 대해서는 아래에 정의된 String 값으로 요청을 보내야 합니다.

  • 상견례 MEETING

  • 예식장 WEDDING_HALL

  • 신혼여행 HONEYMOON

  • 스튜디오 STUDIO

  • 드레스 DRESS

  • 메이크업 MAKEUP

  • 예물 WEDDING_GIFT

HTTP request

POST /api/v1/checklist/pre-check HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 53
Host: localhost:8080

{
  "preChecklistItems" : [ "MAKEUP", "HONEYMOON" ]
}

Request fields

Path Type Description

preChecklistItems

Array

선택되지 않은 사전 등록 아이템 리스트

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 192

{
  "status" : 201,
  "message" : "온보딩 체크리스트 등록 성공",
  "data" : [ {
    "id" : 1,
    "title" : "메이크업"
  }, {
    "id" : 2,
    "title" : "신혼여행"
  } ]
}

Response fields-data

Path Type Description

id

Number

등록된 체크리스트 아이템 아이디

title

String

등록된 체크리스트 아이템 제목

체크리스트 아이템 API

체크리스트 아이템 등록, 수정, 삭제, 조회가 가능합니다. 관련된 모든 요청에서 사용자 정보 식별을 위해 HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

체크리스트 아이템 등록

체크리스트 아이템 등록이 가능하며 필요한 경우 체크리스트 서브 아이템과 한꺼번에 등록할 수도 있습니다.

체크리스트 아이템의 title을 제외한 나머지 정보는 필수 값이 아닙니다.

HTTP request

POST /api/v1/checklist/item HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 287
Host: localhost:8080

{
  "checklistItem" : {
    "title" : "title",
    "checkDate" : "2020-10-10",
    "startTime" : "10:10:10",
    "endTime" : "12:12:12",
    "place" : "place",
    "memo" : "memo"
  },
  "checklistSubItems" : [ {
    "contents" : "contents 1"
  }, {
    "contents" : "contents 2"
  } ]
}

Request fields

Path Type Description

checklistItem.title

String

등록할 체크리스트 아이템 제목 (* required)

checklistItem.checkDate

String

등록할 체크리스트 아이템 일정 날짜

checklistItem.startTime

String

등록할 체크리스트 아이템 일정 시작 시간

checklistItem.endTime

String

등록할 체크리스트 아이템 일정 종료 시간

checklistItem.place

String

등록할 체크리스트 아이템 일정 장소

checklistItem.memo

String

등록할 체크리스트 아이템 메모

checklistSubItems[].contents

String

등록할 체크리스트 서브 아이템 내용

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 507

{
  "status" : 201,
  "message" : "체크리스트 아이템 등록 성공",
  "data" : {
    "checklistItem" : {
      "id" : 1,
      "title" : "title",
      "checkDate" : "2020-10-10",
      "startTime" : "10:10:10",
      "endTime" : "12:12:12",
      "place" : "place",
      "memo" : "memo"
    },
    "checklistSubItems" : [ {
      "id" : 1,
      "contents" : "contents 1",
      "isChecked" : false
    }, {
      "id" : 2,
      "contents" : "contents 2",
      "isChecked" : false
    } ]
  }
}

Response fields-data

Path Type Description

checklistItem.id

Number

등록된 체크리스트 아이템 아이디

checklistItem.title

String

등록된 체크리스트 아이템 제목

checklistItem.checkDate

String

등록된 체크리스트 아이템 일정 날짜

checklistItem.startTime

String

등록된 체크리스트 아이템 일정 시작 시간

checklistItem.endTime

String

등록된 체크리스트 아이템 일정 종료 시간

checklistItem.place

String

등록된 체크리스트 아이템 일정 장소

checklistItem.memo

String

등록된 체크리스트 아이템 메모

checklistSubItems[].id

Number

등록된 체크리스트 서브 아이템 아이디

checklistSubItems[].contents

String

등록된 체크리스트 서브 아이템 내용

checklistSubItems[].isChecked

Boolean

등록된 체크리스트 서브 아이템 체크 여부

체크리스트 아이템 상세 조회

체크리스트 아이템 항목에 대한 상세 조회가 가능하며, 연결되어 있는 체크리스트 서브 아이템의 정보도 함께 응답 데이터에 포함됩니다.

HTTP request

GET /api/v1/checklist/item/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/checklist/item/{item-id}
Parameter Description

item-id

체크리스트 아이템 아이디

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
Content-Length: 450

{
  "status" : 200,
  "data" : {
    "checklistItem" : {
      "id" : 1,
      "title" : "title",
      "checkDate" : "2020-10-10",
      "startTime" : "10:10:10",
      "endTime" : "12:12:12",
      "place" : "place",
      "memo" : "memo"
    },
    "checklistSubItems" : [ {
      "id" : 1,
      "contents" : "contents 1",
      "isChecked" : false
    }, {
      "id" : 2,
      "contents" : "contents 2",
      "isChecked" : false
    } ]
  }
}

Response fields-data

Path Type Description

checklistItem.id

Number

체크리스트 아이템 아이디

checklistItem.title

String

체크리스트 아이템 제목

checklistItem.checkDate

String

체크리스트 아이템 일정 날짜

checklistItem.startTime

String

체크리스트 아이템 일정 시작 시간

checklistItem.endTime

String

체크리스트 아이템 일정 종료 시간

checklistItem.place

String

체크리스트 아이템 일정 장소

checklistItem.memo

String

체크리스트 아이템 메모

checklistSubItems[].id

Number

체크리스트 서브 아이템 아이디

checklistSubItems[].contents

String

체크리스트 서브 아이템 내용

checklistSubItems[].isChecked

Boolean

체크리스트 서브 아이템 체크 여부

체크리스트 아이템 수정

체크리스트 아이템 및 연결되어 있는 체크리스트 서브 아이템의 수정이 가능합니다. PUT 메소드를 사용하기 때문에 수정을 원하는 체크리스트 아이템 및 서브 아이템의 전체 데이터를 모두 포함하여 요청해야 합니다.

HTTP request

PUT /api/v1/checklist/item/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 365
Host: localhost:8080

{
  "checklistItem" : {
    "title" : "title",
    "checkDate" : "2020-10-10",
    "startTime" : "10:10:10",
    "endTime" : "12:12:12",
    "place" : "place",
    "memo" : "memo"
  },
  "checklistSubItems" : [ {
    "id" : 1,
    "contents" : "contents 1",
    "isChecked" : false
  }, {
    "id" : 2,
    "contents" : "contents 2",
    "isChecked" : false
  } ]
}

Path parameters

Table 4. /api/v1/checklist/item/{item-id}
Parameter Description

item-id

체크리스트 아이템 아이디

Request fields

Path Type Description

checklistItem.title

String

수정할 체크리스트 아이템 제목

checklistItem.checkDate

String

수정할 체크리스트 아이템 일정 날짜

checklistItem.startTime

String

수정할 체크리스트 아이템 일정 시작 시간

checklistItem.endTime

String

수정할 체크리스트 아이템 일정 종료 시간

checklistItem.place

String

수정할 체크리스트 아이템 일정 장소

checklistItem.memo

String

수정할 체크리스트 아이템 메모

checklistSubItems[].id

Number

수정할 체크리스트 서브 아이템 아이디

checklistSubItems[].contents

String

수정할 체크리스트 서브 아이템 내용

checklistSubItems[].isChecked

Boolean

수정할 체크리스트 서브 아이템 체크 여부

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
Content-Length: 507

{
  "status" : 200,
  "message" : "체크리스트 아이템 수정 성공",
  "data" : {
    "checklistItem" : {
      "id" : 1,
      "title" : "title",
      "checkDate" : "2020-10-10",
      "startTime" : "10:10:10",
      "endTime" : "12:12:12",
      "place" : "place",
      "memo" : "memo"
    },
    "checklistSubItems" : [ {
      "id" : 1,
      "contents" : "contents 1",
      "isChecked" : false
    }, {
      "id" : 2,
      "contents" : "contents 2",
      "isChecked" : false
    } ]
  }
}

Response fields-data

Path Type Description

checklistItem.id

Number

수정된 체크리스트 아이템 아이디

checklistItem.title

String

수정된 체크리스트 아이템 제목

checklistItem.checkDate

String

수정된 체크리스트 아이템 일정 날짜

checklistItem.startTime

String

수정된 체크리스트 아이템 일정 시작 시간

checklistItem.endTime

String

수정된 체크리스트 아이템 일정 종료 시간

checklistItem.place

String

수정된 체크리스트 아이템 일정 장소

checklistItem.memo

String

수정된 체크리스트 아이템 메모

checklistSubItems[].id

Number

수정된 체크리스트 서브 아이템 아이디

checklistSubItems[].contents

String

수정된 체크리스트 서브 아이템 내용

checklistSubItems[].isChecked

Boolean

수정된 체크리스트 서브 아이템 체크 여부

체크리스트 아이템 삭제

체크리스트 아이템 삭제가 가능합니다. 체크리스트 아이템을 삭제할 경우 연결되어 있는 서브 아이템도 함께 삭제됩니다.

HTTP request

DELETE /api/v1/checklist/item/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/checklist/item/{item-id}
Parameter Description

item-id

체크리스트 아이템 아이디

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
Content-Length: 77

{
  "status" : 200,
  "message" : "체크리스트 아이템 삭제 성공"
}

체크리스트 서브 아이템 API

체크리스트 서브 아이템 등록, 체크 여부 수정, 삭제가 가능합니다. 관련된 모든 요청에서 사용자 정보 식별을 위해 HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

체크리스트 서브 아이템 등록

체크리스트 서브 아이템 등록이 가능합니다. 서브 아이템 등록 시 체크 여부는 false로 등록됩니다.

HTTP request

POST /api/v1/checklist/item/1/sub-item HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 66
Host: localhost:8080

{
  "id" : null,
  "contents" : "contents",
  "isChecked" : null
}

Path parameters

Table 4. /api/v1/checklist/item/{item-id}/sub-item
Parameter Description

item-id

체크리스트 아이템 아이디

Request fields

Path Type Description

contents

String

등록할 체크리스트 서브 아이템 내용 (* required)

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 168

{
  "status" : 201,
  "message" : "체크리스트 서브아이템 등록 성공",
  "data" : {
    "id" : 1,
    "contents" : "contents",
    "isChecked" : false
  }
}

Response fields-data

Path Type Description

id

Number

등록된 체크리스트 서브 아이템 아이디

contents

String

등록된 체크리스트 서브 아이템 내용

isChecked

Boolean

등록된 체크리스트 서브 아이템 체크 여부

체크리스트 서브 아이템 체크 여부 수정

체크리스트 서브 아이템 체크 여부 수정이 가능합니다. 요청 성공 시 수정된 서브 아이템의 정보가 반환됩니다.

HTTP request

PUT /api/v1/checklist/item/1/sub-item/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 25
Host: localhost:8080

{
  "isChecked" : false
}

Path parameters

Table 4. /api/v1/checklist/item/{item-id}/sub-item/{sub-item-id}
Parameter Description

item-id

체크리스트 아이템 아이디

sub-item-id

체크리스트 서브 아이템 아이디

Request fields

Path Type Description

isChecked

Boolean

수정할 체크리스트 서브 아이템 체크 여부

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
Content-Length: 168

{
  "status" : 200,
  "message" : "체크리스트 서브아이템 수정 성공",
  "data" : {
    "id" : 1,
    "contents" : "contents",
    "isChecked" : false
  }
}

Response fields-data

Path Type Description

id

Number

수정된 체크리스트 서브 아이템 아이디

contents

String

수정된 체크리스트 서브 아이템 내용

isChecked

Boolean

수정된 체크리스트 서브 아이템 체크 여부

체크리스트 서브 아이템 삭제

체크리스트 서브 아이템 삭제가 가능합니다.

HTTP request

DELETE /api/v1/checklist/item/1/sub-item/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/checklist/item/{item-id}/sub-item/{sub-item-id}
Parameter Description

item-id

체크리스트 아이템 아이디

sub-item-id

체크리스트 서브 아이템 아이디

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
Content-Length: 83

{
  "status" : 200,
  "message" : "체크리스트 서브아이템 삭제 성공"
}

예산 API

예산 조회

현재 남아있는 예산 조회가 가능합니다. 사용자 정보 식별을 위해 HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

HTTP request

GET /api/v1/budget HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 62

{
  "status" : 200,
  "data" : {
    "budget" : 20000000
  }
}

Response fields-data

Path Type Description

budget

Number

현재 남아있는 예산

거래 내역 API

사용자 거래 내역 등록, 조회, 삭제, 수정이 가능합니다. 이를 위해서는 HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

거래 내역 상세 조회

거래 내역 상세 내용을 조회할 수 있습니다.

HTTP request

GET /api/v1/transaction/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/transaction/{transaction-id}
Parameter Description

transaction-id

거래 내역 아이디

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
Content-Length: 332

{
  "status" : 200,
  "data" : {
    "id" : 1,
    "title" : "test title",
    "agency" : "test agency",
    "transactionDate" : "2023-04-18",
    "payment" : -1000000,
    "balance" : 2000000,
    "paymentType" : "CARD",
    "accountHolder" : "좋은 웨딩홀",
    "accountNumber" : "123-123-1234",
    "memo" : "test memo"
  }
}

Response fields-data

Path Type Description

id

Number

거래 내역 아이디

title

String

제목

agency

String

계약 업체

transactionDate

String

계약 날짜

payment

Number

계약금

balance

Number

잔금

paymentType

String

거래 구분

accountHolder

String

예금주

accountNumber

String

계좌 번호

memo

String

메모

거래 내역 전체 리스트 조회

사용자의 전체 거래 내역 리스트를 조회할 수 있습니다. 거래 일자 순으로 정렬된 데이터가 전달됩니다.

HTTP request

GET /api/v1/transaction HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 379

{
  "status" : 200,
  "data" : [ {
    "id" : 1,
    "title" : "test title1",
    "agency" : "test agency1",
    "transactionDate" : "2023-04-18",
    "payment" : -1000000,
    "paymentType" : "CARD"
  }, {
    "id" : 2,
    "title" : "test title2",
    "agency" : "test agency2",
    "transactionDate" : "2023-04-18",
    "payment" : -2000000,
    "paymentType" : "CASH"
  } ]
}

Response fields-data

Path Type Description

id

Number

거래 내역 아이디

title

String

제목

agency

String

계약 업체

transactionDate

String

계약 날짜

payment

Number

계약금

paymentType

String

거래 구분 (CARD / CASH)

거래 내역 등록

거래 내역 등록이 가능합니다. 거래 구분 데이터는 CARDCASH 만 가능합니다.

HTTP request

POST /api/v1/transaction HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 265
Host: localhost:8080

{
  "title" : "test title",
  "agency" : "test agency",
  "transactionDate" : "2023-04-18",
  "payment" : -1000000,
  "balance" : 2000000,
  "paymentType" : "CARD",
  "accountHolder" : "좋은 웨딩홀",
  "accountNumber" : "123-123-1234",
  "memo" : "test memo"
}

Request fields

Path Type Description

title

String

제목 (* required)

agency

String

계약 업체 (* required)

transactionDate

String

계약 날짜 (* required)

payment

Number

계약금 (* required)

balance

Number

잔금

paymentType

String

거래 구분 (* required)

accountHolder

String

예금주

accountNumber

String

계좌 번호

memo

String

메모

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 373

{
  "status" : 201,
  "message" : "예산표 등록 성공",
  "data" : {
    "id" : 1,
    "title" : "test title",
    "agency" : "test agency",
    "transactionDate" : "2023-04-18",
    "payment" : -1000000,
    "balance" : 2000000,
    "paymentType" : "CARD",
    "accountHolder" : "좋은 웨딩홀",
    "accountNumber" : "123-123-1234",
    "memo" : "test memo"
  }
}

Response fields-data

Path Type Description

id

Number

등록된 거래 내역 아이디

title

String

제목

agency

String

계약 업체

transactionDate

String

계약 날짜

payment

Number

계약금

balance

Number

잔금

paymentType

String

거래 구분

accountHolder

String

예금주

accountNumber

String

계좌 번호

memo

String

메모

거래 내역 수정

거래 내역 수정이 가능합니다.

PUT 메소드를 사용하기 때문에 수정을 원하는 거래 내역의 전체 데이터를 모두 포함하여 요청해야 합니다.

HTTP request

PUT /api/v1/transaction/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 265
Host: localhost:8080

{
  "title" : "test title",
  "agency" : "test agency",
  "transactionDate" : "2023-04-18",
  "payment" : -1000000,
  "balance" : 2000000,
  "paymentType" : "CARD",
  "accountHolder" : "좋은 웨딩홀",
  "accountNumber" : "123-123-1234",
  "memo" : "test memo"
}

Path parameters

Table 4. /api/v1/transaction/{transaction-id}
Parameter Description

transaction-id

수정할 거래 내역 아이디

Request fields

Path Type Description

title

String

제목

agency

String

계약 업체

transactionDate

String

계약 날짜

payment

Number

계약금

balance

Number

잔금

paymentType

String

거래 구분

accountHolder

String

예금주

accountNumber

String

계좌 번호

memo

String

메모

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
Content-Length: 332

{
  "status" : 200,
  "data" : {
    "id" : 1,
    "title" : "test title",
    "agency" : "test agency",
    "transactionDate" : "2023-04-18",
    "payment" : -1000000,
    "balance" : 2000000,
    "paymentType" : "CARD",
    "accountHolder" : "좋은 웨딩홀",
    "accountNumber" : "123-123-1234",
    "memo" : "test memo"
  }
}

Response fields-data

Path Type Description

id

Number

수정된 거래 내역 아이디

title

String

제목

agency

String

계약 업체

transactionDate

String

계약 날짜

payment

Number

계약금

balance

Number

잔금

paymentType

String

거래 구분

accountHolder

String

예금주

accountNumber

String

계좌 번호

memo

String

메모

거래 내역 삭제

거래 내역 삭제가 가능합니다.

HTTP request

DELETE /api/v1/transaction/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/transaction/{transaction-id}
Parameter Description

transaction-id

삭제할 거래 내역 아이디

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
Content-Length: 61

{
  "status" : 200,
  "message" : "예산표 삭제 성공"
}

계약서 API

계약서 등록, 수정, 삭제, 조회가 가능합니다. 관련된 모든 요청에서 사용자 정보 식별을 위해 HeaderAuthorization에 사용자의 액세스 토큰을 포함시켜야 합니다.

계약서 상세 조회

계약서 상세 조회가 가능합니다.

HTTP request

GET /api/v1/contract/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/contract/{contract-id}
Parameter Description

contract-id

계약서 아이디

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
Content-Length: 254

{
  "status" : 200,
  "data" : {
    "id" : 1,
    "title" : "test_title",
    "contents" : "test_contents",
    "contractDate" : "2023-04-18",
    "contractStatus" : "VERBAL",
    "file" : "https://storage.com/contract/1",
    "memo" : "test_memo"
  }
}

Response fields-data

Path Type Description

id

Number

계약서 아이디

title

String

계약서 제목

contents

String

계약 내용

contractDate

String

계약 날짜

contractStatus

String

계약 상태

file

String

계약서 파일 url

memo

String

메모

계약서 리스트 조회

사용자가 등록한 계약서 리스트 조회가 가능합니다. 계약 날짜 순으로 정렬된 데이터가 전달됩니다.

HTTP request

GET /api/v1/contract HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

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
Content-Length: 275

{
  "status" : 200,
  "data" : [ {
    "id" : 1,
    "title" : "test_title",
    "contractDate" : "2023-04-18",
    "contractStatus" : "IN_PROGRESS"
  }, {
    "id" : 2,
    "title" : "test_title2",
    "contractDate" : "2023-04-18",
    "contractStatus" : "COMPLETE"
  } ]
}

Response fields-data

Path Type Description

id

Number

계약서 아이디

title

String

계약서 제목

contractDate

String

계약 날짜

contractStatus

String

계약 상태

계약서 등록

계약서 파일과 내용 등록이 가능합니다.

계약 상태는 다음 4가지 값만 등록 가능합니다.

  • 계약 완료: COMPLETE

  • 계약 중: IN_PROGRESS

  • 구두 계약: VERBAL

  • 가계약: PROVISIONAL

multipart/form-datafiledata를 포함하여 요청을 보내야 합니다.

HTTP request

POST /api/v1/contract HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=file; filename=contract.png
Content-Type: contract/png

contract data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=data; filename=contract
Content-Type: application/json

{"title":"test_title","contents":"test_contents","contractDate":"2023-04-18","contractStatus":"VERBAL","memo":"test_memo"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request parts

Part Description

file

계약서 파일

data

계약서 전체 내용

Request part-data-fields

Path Type Description

title

String

계약서 제목 (* required)

contents

String

계약 내용 (* required)

contractDate

String

계약 날짜 (* required)

contractStatus

String

계약 상태 (* required)

memo

String

메모

HTTP response

HTTP/1.1 201 Created
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
Content-Length: 295

{
  "status" : 201,
  "message" : "계약서 등록 성공",
  "data" : {
    "id" : 1,
    "title" : "test_title",
    "contents" : "test_contents",
    "contractDate" : "2023-04-18",
    "contractStatus" : "VERBAL",
    "file" : "https://storage.com/contract/1",
    "memo" : "test_memo"
  }
}

Response fields-data

Path Type Description

id

Number

등록된 계약서 아이디

title

String

계약서 제목

contents

String

계약 내용

contractDate

String

계약 날짜

contractStatus

String

계약 상태

file

String

계약서 파일 url

memo

String

메모

계약서 파일 수정

계약서에 들어가는 파일을 수정할 수 있습니다. 파일 수정은 multipart/form-data 사용을 위해 POST 방식을 이용합니다.

HTTP request

POST /api/v1/contract/1 HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=file; filename=contract.png
Content-Type: contract/png

contract data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Path parameters

Table 4. /api/v1/contract/{contract-id}
Parameter Description

contract-id

계약서 아이디

Request parts

Part Description

file

수정할 계약서 파일

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
Content-Length: 302

{
  "status" : 200,
  "message" : "계약서 파일 수정 성공",
  "data" : {
    "id" : 1,
    "title" : "test_title",
    "contents" : "test_contents",
    "contractDate" : "2023-04-18",
    "contractStatus" : "VERBAL",
    "file" : "https://storage.com/contract/1",
    "memo" : "test_memo"
  }
}

Response fields-data

Path Type Description

id

Number

계약서 아이디

title

String

계약서 제목

contents

String

계약 내용

contractDate

String

계약 날짜

contractStatus

String

계약 상태

file

String

계약서 파일 url

memo

String

메모

계약서 내용 수정

파일을 제외한 계약서 내용에 대한 수정이 가능합니다. PUT 메소드를 사용하기 때문에 수정을 원하는 계약서의 전체 데이터(파일 정보 제외)를 모두 포함하여 요청해야 합니다.

HTTP request

PUT /api/v1/contract/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer ACCESS_TOKEN
Content-Length: 148
Host: localhost:8080

{
  "title" : "test_title",
  "contents" : "test_contents",
  "contractDate" : "2023-04-18",
  "contractStatus" : "VERBAL",
  "memo" : "test_memo"
}

Path parameters

Table 4. /api/v1/contract/{contract-id}
Parameter Description

contract-id

계약서 아이디

Request fields

Path Type Description

title

String

계약서 제목

contents

String

계약 내용

contractDate

String

계약 날짜

contractStatus

String

계약 상태

memo

String

메모

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
Content-Length: 302

{
  "status" : 200,
  "message" : "계약서 내용 수정 성공",
  "data" : {
    "id" : 1,
    "title" : "test_title",
    "contents" : "test_contents",
    "contractDate" : "2023-04-18",
    "contractStatus" : "VERBAL",
    "file" : "https://storage.com/contract/1",
    "memo" : "test_memo"
  }
}

Response fields-data

Path Type Description

id

Number

수정된 계약서 아이디

title

String

계약서 제목

contents

String

계약 내용

contractDate

String

계약 날짜

contractStatus

String

계약 상태

file

String

계약서 파일 url

memo

String

메모

계약서 삭제

계약서 삭제가 가능하며, AWS S3 Storage에 저장되어 있는 계약서 파일도 함께 삭제됩니다.

HTTP request

DELETE /api/v1/contract/1 HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Host: localhost:8080

Path parameters

Table 4. /api/v1/contract/{contract-id}
Parameter Description

contract-id

계약서 아이디

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
Content-Length: 61

{
  "status" : 200,
  "message" : "계약서 삭제 성공"
}