인증/인가 API

인증/인가 관련 API입니다.

사용자 등록

사용자를 등록합니다. 고객 인증 코드가 필요합니다.

HTTP request

POST /api/v1/auth/register HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 139
Host: localhost:8080

{
  "authCode" : "test_code",
  "email" : "test@gmail.com",
  "password" : "test1234!",
  "name" : "홍길동",
  "phone" : "01011111111"
}

Request fields

Path Type Description

authCode

String

고객 인증 코드 (* required)

email

String

이메일 (* required)

password

String

비밀번호 (* required)

name

String

이름 (* required)

phone

String

전화번호 (* required)

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: 78

{
  "code" : 200,
  "message" : "사용자 등록이 성공하였습니다."
}

로그인

이메일과 비밀번호를 통해 로그인을 합니다. 성공 시 액세스 토큰과 리프레시 토큰을 쿠키로 반환합니다.

HTTP request

POST /api/v1/auth/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 60
Host: localhost:8080

{
  "email" : "test@gmail.com",
  "password" : "test1234!"
}

Request fields

Path Type Description

email

String

이메일 (* required)

password

String

비밀번호 (* required)

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: access=ACCESS_TOKEN
Set-Cookie: refresh=REFRESH_TOKEN
Content-Type: application/json;charset=UTF-8
Content-Length: 74

{
    "code": 200,
    "message": "로그인이 성공하였습니다."
}

로그아웃

로그아웃을 합니다. 액세스 토큰과 리프레시 토큰 쿠키를 삭제합니다.

HTTP request

POST /api/v1/auth/logout HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

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: 74

{
  "code" : 200,
  "message" : "로그아웃이 성공하였습니다."
}

토큰 재발급

액세스 토큰과 리프레시 토큰을 재발급을 합니다. 리프레시 토큰이 필요합니다.

HTTP request

POST /api/v1/auth/reissue HTTP/1.1
Host: localhost:8080
Cookie: refresh=REFRESH_TOKEN
Content-Type: application/x-www-form-urlencoded

Request cookies

Name Description

refresh

리프레시 토큰

HTTP response

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Set-Cookie: access=ACCESS_TOKEN
Set-Cookie: refresh=REFRESH_TOKEN
Content-Type: application/json;charset=UTF-8
Content-Length: 74

{
    "code": 200,
    "message": "토큰 재발급이 성공하였습니다."
}

이메일 중복 체크

이미 존재하는 이메일인지 검사합니다.

HTTP request

POST /api/v1/auth/email/duplication HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 32
Host: localhost:8080

{
  "email" : "test@gmail.com"
}

Request fields

Path Type Description

email

String

이메일 (* required)

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

{
  "code" : 200,
  "message" : "사용 가능한 이메일입니다."
}

이메일 인증 코드 전송

이메일 인증 코드를 전송합니다. 인증 코드의 유효 기간은 3분입니다.

HTTP request

POST /api/v1/auth/email/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 32
Host: localhost:8080

{
  "email" : "test@gmail.com"
}

Request fields

Path Type Description

email

String

이메일 (* required)

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: 80

{
  "code" : 200,
  "message" : "이메일 인증코드가 전송되었습다"
}

이메일 인증

이메일 인증을 합니다. 인증 코드의 유효 기간은 3분입니다.

HTTP request

PUT /api/v1/auth/email/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 51
Host: localhost:8080

{
  "email" : "test@gmail.com",
  "code" : 123123
}

Request fields

Path Type Description

email

String

이메일 (* required)

code

Number

코드 (* required)

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: 78

{
  "code" : 200,
  "message" : "이메일 인증이 성공하였습니다."
}

전화번호 인증 코드 전송

전화번호 인증 코드를 전송합니다. 인증 코드의 유효 기간은 3분입니다.

HTTP request

POST /api/v1/auth/phone/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 29
Host: localhost:8080

{
  "phone" : "01011111111"
}

Request fields

Path Type Description

phone

String

전화번호 (* required)

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: 87

{
  "code" : 200,
  "message" : "전화번호 인증코드가 전송되었습니다."
}

전화번호 인증

전화번호 인증을 합니다. 인증 코드의 유효 기간은 3분입니다.

HTTP request

PUT /api/v1/auth/phone/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 48
Host: localhost:8080

{
  "phone" : "01012341234",
  "code" : 123123
}

Request fields

Path Type Description

phone

String

전화번호 (* required)

code

Number

코드 (* required)

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: 81

{
  "code" : 200,
  "message" : "전화번호 인증이 성공하였습니다."
}

이메일 찾기

이메일 찾기입니다.

HTTP request

GET /api/v1/auth/email HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 72
Host: localhost:8080

{
  "name" : "홍길동",
  "phone" : "01012341234",
  "code" : 123123
}

Request fields

Path Type Description

name

String

이름 (* required)

phone

String

전화번호 (* required)

code

Number

인증 코드 (* required)

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: 127

{
  "code" : 200,
  "message" : "이메일 찾기가 성공하였습니다.",
  "data" : {
    "email" : "test@gmail.com"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data.email

String

찾은 이메일

비밀번호 찾기

비밀번호 찾기입니다.

HTTP request

PUT /api/v1/auth/password HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 118
Host: localhost:8080

{
  "email" : "test@gmail.com",
  "code" : 123123,
  "newPassword" : "test1234!",
  "newPasswordCheck" : "test1234!"
}

Request fields

Path Type Description

email

String

이메일 (* required)

code

Number

코드 (* required)

newPassword

String

새 비밀번호 (* required)

newPasswordCheck

String

새 비밀번호 확인 (* required)

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: 81

{
  "code" : 200,
  "message" : "비밀번호 찾기가 성공하였습니다."
}

사용자 API

현재 사용자 정보 조회

현재 사용자 정보를 조회합니다.

HTTP request

GET /api/v1/users/current HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Request cookies

Name Description

access

엑세스 토큰

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: 308

{
  "code" : 200,
  "message" : "현재 사용자 정보 조회가 성공하였습니다.",
  "data" : {
    "clientId" : 1,
    "clientName" : "KOSA",
    "clientPhone" : "01011112222",
    "userId" : 1,
    "userEmail" : "test@gmail.com",
    "userName" : "홍길동",
    "userPhone" : "01033334444"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.clientId

Number

고객 아이디

data.clientName

String

고객명

data.clientPhone

String

고객 전화번호

data.userId

Number

사용자 아이디

data.userEmail

String

사용자 이메일

data.userName

String

사용자명

data.userPhone

String

사용자 전화번호

상품 API

상품 관련 API입니다.

상품 생성

상품을 생성합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

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

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

{"name":"NAME","price":"10000","description":"Description"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=item.png
Content-Type: image/png

item data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request parts

Part Description

data

상품 정보

image

상품 이미지

Request part-data-fields

Path Type Description

name

String

상품명 (* required)

price

String

상품 가격 (* required)

description

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: 394

{
  "code" : 200,
  "message" : "상품이 성공적으로 생성되었습니다.",
  "data" : {
    "id" : 1,
    "name" : "Name",
    "description" : "Item Description",
    "price" : 1000,
    "imageUrl" : "http://example.com/image.jpg",
    "createdAt" : "2024-08-07T10:50:38.150372521",
    "updatedAt" : "2024-08-07T10:50:38.150383402",
    "contractCount" : 5,
    "isBasic" : true
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

상품 ID

data.name

String

상품명

data.description

String

상품 설명

data.price

Number

상품 가격

data.imageUrl

String

상품 이미지 URL

data.createdAt

String

상품 생성일

data.updatedAt

String

상품 정보 수정일

data.contractCount

Number

관련 계약수

data.isBasic

Boolean

간편동의 기본상품 여부

상품 정보 수정

상품 정보를 수정합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

PUT /api/v1/items/3 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 75
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "name" : "UPDATED",
  "price" : "100000",
  "description" : "UPDATED"
}

Path parameters

Table 1. /api/v1/items/{itemId}
Parameter Description

itemId

상품 ID

Request fields

Path Type Description

name

String

상품명 (* required)

price

String

상품 가격 (* required)

description

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: 400

{
  "code" : 200,
  "message" : "상품 정보가 성공적으로 수정되었습니다.",
  "data" : {
    "id" : 1,
    "name" : "Name",
    "description" : "Item Description",
    "price" : 1000,
    "imageUrl" : "http://example.com/image.jpg",
    "createdAt" : "2024-08-07T10:50:38.179837521",
    "updatedAt" : "2024-08-07T10:50:38.17984784",
    "contractCount" : 5,
    "isBasic" : true
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

상품 ID

data.name

String

상품명

data.description

String

상품 설명

data.price

Number

상품 가격

data.imageUrl

String

상품 이미지 URL

data.createdAt

String

상품 생성일

data.updatedAt

String

상품 정보 수정일

data.contractCount

Number

관련 계약수

data.isBasic

Boolean

간편동의 기본상품 여부

상품 이미지 수정

상품 이미지를 수정합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

PUT /api/v1/items/3/image HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

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

item data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Path parameters

Table 1. /api/v1/items/{itemId}/image
Parameter Description

itemId

상품 ID

Request parts

Part Description

image

상품 이미지

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: 404

{
  "code" : 200,
  "message" : "상품 이미지가 성공적으로 수정되었습니다.",
  "data" : {
    "id" : 1,
    "name" : "Name",
    "description" : "Item Description",
    "price" : 1000,
    "imageUrl" : "http://example.com/image.jpg",
    "createdAt" : "2024-08-07T10:50:38.106370036",
    "updatedAt" : "2024-08-07T10:50:38.106386557",
    "contractCount" : 5,
    "isBasic" : true
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

상품 ID

data.name

String

상품명

data.description

String

상품 설명

data.price

Number

상품 가격

data.imageUrl

String

상품 이미지 URL

data.createdAt

String

상품 생성일

data.updatedAt

String

상품 정보 수정일

data.contractCount

Number

관련 계약수

data.isBasic

Boolean

간편동의 기본상품 여부

상품 삭제

상품 정보를 삭제합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

DELETE /api/v1/items/3 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/items/{itemId}
Parameter Description

itemId

상품 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: 84

{
  "code" : 200,
  "message" : "상품이 성공적으로 삭제되었습니다."
}

상품 상세 조회

상품 상세 정보를 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/items/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/items/{itemId}
Parameter Description

itemId

상품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: 400

{
  "code" : 200,
  "message" : "상품 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "id" : 1,
    "name" : "Name",
    "description" : "Item Description",
    "price" : 1000,
    "imageUrl" : "http://example.com/image.jpg",
    "createdAt" : "2024-08-07T10:50:38.127909652",
    "updatedAt" : "2024-08-07T10:50:38.12791914",
    "contractCount" : 5,
    "isBasic" : true
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

상품 ID

data.name

String

상품명

data.description

String

상품 설명

data.price

Number

상품 가격

data.imageUrl

String

상품 이미지 URL

data.createdAt

String

상품 생성일

data.updatedAt

String

상품 정보 수정일

data.contractCount

Number

관련 계약수

data.isBasic

Boolean

간편동의 기본상품 여부

상품 목록 조회

상품 목록 정보를 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/items?name=Item HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

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: 1278

{
  "code" : 200,
  "message" : "상품 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "content" : [ {
      "id" : 1,
      "name" : "Item 1",
      "description" : "Item 1 Description",
      "price" : 1000,
      "imageUrl" : "http://example.com/item1.jpg",
      "createdAt" : "2024-08-07T10:50:38.062989141",
      "updatedAt" : "2024-08-07T10:50:38.062997537",
      "contractCount" : 5,
      "isBasic" : true
    }, {
      "id" : 2,
      "name" : "Item 2",
      "description" : "Item 2 Description",
      "price" : 2000,
      "imageUrl" : "http://example.com/item2.jpg",
      "createdAt" : "2024-08-07T10:50:38.063009048",
      "updatedAt" : "2024-08-07T10:50:38.063013617",
      "contractCount" : 10,
      "isBasic" : true
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 20,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "totalElements" : 2,
    "totalPages" : 1,
    "last" : true,
    "size" : 20,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "numberOfElements" : 2,
    "first" : true,
    "empty" : false
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.content

Array

페이지 상품 목록

data.content[].id

Number

상품 ID

data.content[].name

String

상품명

data.content[].description

String

상품 설명

data.content[].price

Number

상품 가격

data.content[].imageUrl

String

상품 이미지 URL

data.content[].createdAt

String

상품 생성일

data.content[].updatedAt

String

상품 정보 수정일

data.content[].contractCount

Number

관련 계약수

data.content[].isBasic

Boolean

간편동의 기본상품 여부

data.pageable

Object

페이징 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.pageable.sort.sorted

Boolean

정렬 여부

data.pageable.sort.unsorted

Boolean

정렬되지 않음 여부

data.pageable.offset

Number

페이징 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징되지 않음 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.sort.sorted

Boolean

정렬 여부

data.sort.unsorted

Boolean

정렬되지 않음 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

요소 개수

data.empty

Boolean

비어 있음 여부

회원 API

회원 관련 API입니다.

회원 생성

회원을 생성합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

POST /api/v1/members HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 120
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "name" : "kim",
  "email" : "example@example.com",
  "phone" : "01012345678",
  "description" : "Test description"
}

Request fields

Path Type Description

name

String

회원명(* required)

email

String

이메일(* required)

phone

String

전화번호(* required)

description

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: 98

{
  "code" : 200,
  "message" : "회원이 성공적으로 등록되었습니다.",
  "data" : 3
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Number

회원 번호

회원 수정

회원 정보를 수정합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

PUT /api/v1/members/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 120
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "name" : "kim",
  "email" : "example@example.com",
  "phone" : "01012345678",
  "description" : "Test description"
}

Path parameters

Table 1. /api/v1/members/{memberId}
Parameter Description

memberId

회원 ID

Request fields

Path Type Description

name

String

회원명(* required)

email

String

이메일(* required)

phone

String

전화번호(* required)

description

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: 466

{
  "code" : 200,
  "message" : "회원 정보가 성공적으로 수정되었습니다.",
  "data" : {
    "id" : 1,
    "name" : "kim",
    "email" : "example@example.com",
    "phone" : "01012345678",
    "description" : "Member Description",
    "contractCount" : 5,
    "unPaidCount" : 2,
    "totalInvoiceAmount" : 10000,
    "totalUnpaidAmount" : 2000,
    "createdAt" : "2024-08-07T10:50:38.795058818",
    "updatedAt" : "2024-08-07T10:50:38.795066813"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

회원 ID

data.name

String

회원명

data.email

String

회원 이메일

data.phone

String

회원 전화번호

data.description

String

회원 설명

data.contractCount

Number

관련 계약수

data.unPaidCount

Number

미납 계약수

data.totalInvoiceAmount

Number

총 청구 금액

data.totalUnpaidAmount

Number

총 미납 금액

data.createdAt

String

회원 생성일

data.updatedAt

String

회원 정보 수정일

회원 삭제

회원 정보를 삭제합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

DELETE /api/v1/members/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/members/{memberId}
Parameter Description

memberId

회원 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: 91

{
  "code" : 200,
  "message" : "회원 정보가 성공적으로 삭제되었습니다."
}

회원 상세 조회

회원 상세 정보를 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/members/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/members/{memberId}
Parameter Description

memberId

회원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: 463

{
  "code" : 200,
  "message" : "회원 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "id" : 1,
    "name" : "Name",
    "email" : "test@example.com",
    "phone" : "1234567890",
    "description" : "Member Description",
    "contractCount" : 5,
    "unPaidCount" : 2,
    "totalInvoiceAmount" : 10000,
    "totalUnpaidAmount" : 2000,
    "createdAt" : "2024-08-07T10:50:38.736897955",
    "updatedAt" : "2024-08-07T10:50:38.736906661"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

회원 ID

data.name

String

회원명

data.email

String

회원 이메일

data.phone

String

회원 전화번호

data.description

String

회원 설명

data.contractCount

Number

관련 계약수

data.unPaidCount

Number

미납 계약수

data.totalInvoiceAmount

Number

총 청구 금액

data.totalUnpaidAmount

Number

총 미납 금액

data.createdAt

String

회원 생성일

data.updatedAt

String

회원 정보 수정일

회원 목록 조회

회원 목록의 조회합니다

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/members?name=Member HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

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: 1426

{
  "code" : 200,
  "message" : "회원 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "content" : [ {
      "id" : 1,
      "name" : "Member 1",
      "email" : "member1@example.com",
      "phone" : "010-1234-5678",
      "description" : "Member 1 Description",
      "contractCount" : 5,
      "unPaidCount" : 2,
      "totalInvoiceAmount" : 10000,
      "totalUnpaidAmount" : 2000,
      "createdAt" : "2024-08-07T10:50:38.679595744",
      "updatedAt" : "2024-08-07T10:50:38.679621272"
    }, {
      "id" : 2,
      "name" : "Member 2",
      "email" : "member2@example.com",
      "phone" : "010-8765-4321",
      "description" : "Member 2 Description",
      "contractCount" : 10,
      "unPaidCount" : 1,
      "totalInvoiceAmount" : 20000,
      "totalUnpaidAmount" : 5000,
      "createdAt" : "2024-08-07T10:50:38.679645477",
      "updatedAt" : "2024-08-07T10:50:38.679650206"
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 20,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "totalElements" : 2,
    "totalPages" : 1,
    "last" : true,
    "size" : 20,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "numberOfElements" : 2,
    "first" : true,
    "empty" : false
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.content

Array

회원 목록

data.content[].id

Number

회원 ID

data.content[].name

String

회원명

data.content[].email

String

회원 이메일

data.content[].phone

String

회원 전화번호

data.content[].description

String

회원 설명

data.content[].contractCount

Number

관련 계약수

data.content[].unPaidCount

Number

미납된 계약수

data.content[].totalInvoiceAmount

Number

총 청구 금액

data.content[].totalUnpaidAmount

Number

총 미납 금액

data.content[].createdAt

String

회원 생성일

data.content[].updatedAt

String

회원 정보 수정일

data.pageable

Object

페이징 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.pageable.sort.sorted

Boolean

정렬 여부

data.pageable.sort.unsorted

Boolean

정렬되지 않음 여부

data.pageable.offset

Number

페이징 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징되지 않음 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.sort.sorted

Boolean

정렬 여부

data.sort.unsorted

Boolean

정렬되지 않음 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

요소 개수

data.empty

Boolean

비어 있음 여부

회원 대량 등록

엑셀 파일을 활용하여 회원 정보를 대량 등록합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

POST /api/v1/members/bulk-register HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=file; filename=member_test_success.xlsx
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

exel data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

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: 240

{
  "code" : 200,
  "message" : "계약 정보가 성공적으로 등록되었습니다.",
  "data" : [ {
    "name" : "kim",
    "email" : "example@example.com",
    "phone" : "010-1234-5678",
    "description" : "Test description"
  } ]
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Array

등록된 회원 목록

data[].name

String

회원 이름

data[].email

String

회원 이메일

data[].phone

String

회원 전화번호

data[].description

String

회원 설명

Request cookies

Name Description

access

엑세스 토큰

HTTP request

POST /api/v1/members/bulk-register HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=file; filename=member_test_success.xlsx
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

exel data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

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: 123

{
  "code" : 400,
  "message" : "유효한 파일이 아닙니다",
  "data" : [ "1행 : 중복된 이메일입니다." ]
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Array

오류 목록

계약 API

계약 관련 API입니다.

계약 생성

계약을 생성합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

POST /api/v1/contracts HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 228
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "memberId" : 1,
  "itemId" : 1,
  "itemPrice" : 10000,
  "itemAmount" : 5,
  "isSubscription" : true,
  "invoiceTypeId" : 1,
  "paymentTypeId" : 2,
  "isEasyConsent" : true,
  "contractCycle" : 10,
  "paymentDueCycle" : 15
}

Request fields

Path Type Description

memberId

Number

회원 정보(* required)

itemId

Number

상품 정보(* required)

itemPrice

Number

금액 정보(* required)

itemAmount

Number

상품 수량(* required)

isSubscription

Boolean

구독 여부(* required)

invoiceTypeId

Number

청구 타입(* required)

paymentTypeId

Number

결제 수단(* required)

isEasyConsent

Boolean

간편 동의 여부(* required)

contractCycle

Number

약정일(* required, 1~30일)

paymentDueCycle

Number

납부 기한(* required, 1~30일)

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: 105

{
  "code" : 200,
  "message" : "계약 정보가 성공적으로 등록되었습니다.",
  "data" : 0
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Number

생성된 계약ID

계약 수정

계약 정보를 수정합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

PUT /api/v1/contracts/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 167
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "itemPrice" : 10000,
  "itemAmount" : 5,
  "invoiceTypeId" : 1,
  "paymentTypeId" : 2,
  "isEasyConsent" : true,
  "contractCycle" : 10,
  "paymentDueCycle" : 15
}

Path parameters

Table 1. /api/v1/contracts/{contractId}
Parameter Description

contractId

계약 ID

Request fields

Path Type Description

itemPrice

Number

금액 정보(* required)

itemAmount

Number

상품 수량(* required)

invoiceTypeId

Number

청구 타입(* required)

paymentTypeId

Number

결제 수단(* required)

isEasyConsent

Boolean

간편 동의 여부(* required)

contractCycle

Number

약정일(* required, 1~30일)

paymentDueCycle

Number

납부 기한(* required, 1~30일)

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: 91

{
  "code" : 200,
  "message" : "계약 정보가 성공적으로 수정되었습니다."
}

계약 삭제

계약 정보를 삭제합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

DELETE /api/v1/contracts/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/contracts/{contractId}
Parameter Description

contractId

계약 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: 91

{
  "code" : 200,
  "message" : "계약 정보가 성공적으로 수정되었습니다."
}

계약 상세 조회

계약 상세 정보를 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/contracts/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/contracts/{contractId}
Parameter Description

contractId

계약 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: 889

{
  "code" : 200,
  "message" : "계약 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "id" : 1,
    "member" : {
      "id" : 1,
      "name" : "member",
      "phone" : "010-1234-5678",
      "email" : "example@example.com"
    },
    "item" : {
      "id" : 1,
      "name" : "Item",
      "price" : 1000,
      "amount" : 10
    },
    "chargeAmount" : 10000,
    "totalChargeAmount" : 100000,
    "totalUnpaidAmount" : 50000,
    "invoiceType" : {
      "id" : 1,
      "name" : "자동 청구"
    },
    "paymentType" : {
      "id" : 2,
      "name" : "실시간 CMS"
    },
    "contractCycle" : 30,
    "paymentDueCycle" : 15,
    "createdAt" : "2024-08-07T10:50:35.234203848",
    "updatedAt" : "2024-08-07T10:50:35.234224406",
    "contractStatus" : {
      "id" : 2,
      "name" : "진행"
    },
    "subscription" : true,
    "easyConsent" : true
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.id

Number

계약 ID

data.member

Object

회원 정보

data.member.id

Number

회원 ID

data.member.name

String

회원명

data.member.phone

String

회원 전화번호

data.member.email

String

회원 이메일

data.item

Object

상품 정보

data.item.id

Number

상품 ID

data.item.name

String

상품명

data.item.price

Number

상품 가격

data.item.amount

Number

상품 수량

data.chargeAmount

Number

금액 정보

data.chargeAmount

Number

금액 정보

data.subscription

Boolean

구독 여부

data.easyConsent

Boolean

간편 동의 여부

data.totalChargeAmount

Number

총 청구 금액

data.totalUnpaidAmount

Number

총 미납 금액

data.invoiceType

Object

청구 타입

data.invoiceType.id

Number

청구 타입 ID

data.invoiceType.name

String

청구 타입명

data.contractStatus

Object

계약 상태

data.contractStatus.id

Number

계약 상태 ID

data.contractStatus.name

String

계약 상태명

data.paymentType

Object

결제 수단

data.paymentType.id

Number

결제 수단 ID

data.paymentType.name

String

결제 수단명

data.contractCycle

Number

약정일

data.paymentDueCycle

Number

납부 기한

data.createdAt

String

계약 생성일

data.updatedAt

String

계약 정보 수정일

계약 목록 조회

계약 목록의 조회합니다

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/contracts?itemId=1&memberId=2&itemName=item&memberName=member&isSubscription=true&invoiceTypeId=1&contractStatusId=1&paymentTypeId=2 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

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: 1589

{
  "code" : 200,
  "message" : "계약 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "content" : [ {
      "id" : 1,
      "memberName" : "member1",
      "itemName" : "item1",
      "chargeAmount" : 10000,
      "contractCycle" : 30,
      "paymentDueCycle" : 15,
      "contractStatus" : {
        "id" : 2,
        "name" : "진행"
      },
      "invoiceType" : {
        "id" : 1,
        "name" : "자동 청구"
      },
      "paymentType" : {
        "id" : 2,
        "name" : "실시간 CMS"
      },
      "totalUnpaidCount" : 3,
      "subscription" : true
    }, {
      "id" : 1,
      "memberName" : "member2",
      "itemName" : "item2",
      "chargeAmount" : 20000,
      "contractCycle" : 30,
      "paymentDueCycle" : 15,
      "contractStatus" : {
        "id" : 2,
        "name" : "진행"
      },
      "invoiceType" : {
        "id" : 1,
        "name" : "자동 청구"
      },
      "paymentType" : {
        "id" : 2,
        "name" : "실시간 CMS"
      },
      "totalUnpaidCount" : 5,
      "subscription" : true
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 20,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "totalElements" : 2,
    "totalPages" : 1,
    "last" : true,
    "size" : 20,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "numberOfElements" : 2,
    "first" : true,
    "empty" : false
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.content

Array

페이지 계약 목록

data.content[].id

Number

계약 ID

data.content[].memberName

String

회원명

data.content[].itemName

String

상품명

data.content[].chargeAmount

Number

청구 금액

data.content[].subscription

Boolean

구독 여부

data.content[].totalUnpaidCount

Number

총 미납 횟수

data.content[].invoiceType

Object

청구 타입 정보

data.content[].invoiceType.id

Number

청구 타입 ID

data.content[].invoiceType.name

String

청구 타입명

data.content[].paymentType

Object

결제 수단 정보

data.content[].paymentType.id

Number

결제 수단 ID

data.content[].paymentType.name

String

결제 수단명

data.content[].contractStatus

Object

결제 상태

data.content[].contractStatus.id

Number

결제 상태 ID

data.content[].contractStatus.name

String

결제 상태명

data.content[].contractCycle

Number

계약 주기

data.content[].paymentDueCycle

Number

납부 기한

data.pageable

Object

페이징 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.pageable.sort.sorted

Boolean

정렬 여부

data.pageable.sort.unsorted

Boolean

정렬되지 않음 여부

data.pageable.offset

Number

페이징 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징되지 않음 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.sort.sorted

Boolean

정렬 여부

data.sort.unsorted

Boolean

정렬되지 않음 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

요소 개수

data.empty

Boolean

비어 있음 여부

계약 대량 등록

엑셀 파일을 활용하여 계약 정보를 대량 등록합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

POST /api/v1/contracts/bulk-register HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=file; filename=member_test_success.xlsx
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

exel data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

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: 358

{
  "code" : 200,
  "message" : "계약 정보가 성공적으로 등록되었습니다.",
  "data" : [ {
    "memberId" : 1,
    "itemId" : 1,
    "itemPrice" : 10000,
    "itemAmount" : 5,
    "isSubscription" : true,
    "invoiceTypeId" : 1,
    "paymentTypeId" : 2,
    "isEasyConsent" : true,
    "contractCycle" : 10,
    "paymentDueCycle" : 15
  } ]
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Array

등록된 계약 목록

data[].memberId

Number

회원 정보(* required)

data[].itemId

Number

상품 정보(* required)

data[].itemPrice

Number

금액 정보(* required)

data[].itemAmount

Number

상품 수량(* required)

data[].isSubscription

Boolean

구독 여부(* required)

data[].invoiceTypeId

Number

청구 타입(* required)

data[].paymentTypeId

Number

결제 수단(* required)

data[].isEasyConsent

Boolean

간편 동의 여부(* required)

data[].contractCycle

Number

약정일(* required, 1~30일)

data[].paymentDueCycle

Number

납부 기한(* required, 1~30일)

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: 136

{
  "code" : 400,
  "message" : "유효한 파일이 아닙니다",
  "data" : [ "1행: 회원 정보는 필수 입력값입니다." ]
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Array

실패 메시지 배열

청구 API

청구 관련 API입니다.

청구서 발송

이메일과 문자로 청구서를 발송합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/invoices/1/send HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/invoices/{invoiceId}/send
Parameter Description

invoiceId

청구 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: 87

{
  "code" : 200,
  "message" : "청구서를 성공적으로 발송하였습니다."
}

청구 생성

청구 정보를 생성합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

POST /api/v1/invoices HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 132
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "contractId" : 1,
  "paymentTypeId" : 2,
  "chargeAmount" : 10000,
  "contractDate" : "2024-08-09",
  "dueDate" : "2024-09-06"
}

Request fields

Path Type Description

contractId

Number

계약 정보(* required)

paymentTypeId

Number

결제 수단(* required)

chargeAmount

Number

금액 정보(* required)

contractDate

String

약정일(* required)

dueDate

String

결제 기한(* required)

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: 105

{
  "code" : 200,
  "message" : "청구 정보가 성공적으로 등록되었습니다.",
  "data" : 1
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Number

생성된 청구ID

청구 수정

청구 정보를 수정합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

PUT /api/v1/invoices/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 112
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "paymentTypeId" : 1,
  "chargeAmount" : 10000,
  "contractDate" : "2024-08-09",
  "dueDate" : "2024-09-06"
}

Path parameters

Table 1. /api/v1/invoices/{invoiceId}
Parameter Description

invoiceId

청구 ID

Request fields

Path Type Description

paymentTypeId

Number

결제 수단(* required)

chargeAmount

Number

금액 정보(* required)

contractDate

String

약정일(* required)

dueDate

String

결제 기한(* required)

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: 845

{
  "code" : 200,
  "message" : "청구 정보가 성공적으로 수정되었습니다.",
  "data" : {
    "contractId" : 1,
    "invoiceId" : 1,
    "paymentType" : {
      "id" : 2,
      "name" : "실시간 CMS"
    },
    "invoiceType" : {
      "id" : 1,
      "name" : "자동 청구"
    },
    "paymentStatus" : {
      "id" : 3,
      "name" : "대기"
    },
    "item" : {
      "itemId" : 1,
      "name" : "Item",
      "price" : 1000,
      "amount" : 10
    },
    "member" : {
      "memberId" : 1,
      "name" : "member",
      "email" : "example@example.com",
      "phone" : "010-1234-5678"
    },
    "chargeAmount" : 10000,
    "isSubscription" : true,
    "contractDate" : "2023-07-01T00:00:00",
    "dueDate" : "2023-07-15T00:00:00",
    "createdAt" : "2023-07-01T00:00:00",
    "updatedAt" : "2023-07-10T00:00:00"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.contractId

Number

계약 ID

data.invoiceId

Number

청구서 ID

data.paymentType

Object

결제 수단

data.paymentType.id

Number

결제 수단 ID

data.paymentType.name

String

결제 수단명

data.invoiceType

Object

청구 타입

data.invoiceType.id

Number

청구 타입 ID

data.invoiceType.name

String

청구 타입명

data.paymentStatus

Object

결제 상태

data.paymentStatus.id

Number

결제 상태 ID

data.paymentStatus.name

String

결제 상태명

data.item

Object

상품 정보

data.item.itemId

Number

상품 ID

data.item.name

String

상품명

data.item.price

Number

상품 가격

data.item.amount

Number

상품 수량

data.member

Object

회원 정보

data.member.memberId

Number

회원 ID

data.member.name

String

회원명

data.member.email

String

회원 이메일

data.member.phone

String

회원 전화번호

data.chargeAmount

Number

청구 금액

data.isSubscription

Boolean

구독 여부

data.contractDate

String

계약일

data.dueDate

String

납부 기한

data.createdAt

String

청구 생성일

data.updatedAt

String

청구 수정일

청구 삭제

청구 정보를 삭제합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

DELETE /api/v1/invoices/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/invoices/{invoiceId}
Parameter Description

invoiceId

청구 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: 91

{
  "code" : 200,
  "message" : "청구 정보가 성공적으로 삭제되었습니다."
}

청구 상세 조회

청구 정보를 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/invoices/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/invoices/{invoiceId}
Parameter Description

invoiceId

청구 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: 845

{
  "code" : 200,
  "message" : "청구 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "contractId" : 1,
    "invoiceId" : 1,
    "paymentType" : {
      "id" : 2,
      "name" : "실시간 CMS"
    },
    "invoiceType" : {
      "id" : 1,
      "name" : "자동 청구"
    },
    "paymentStatus" : {
      "id" : 3,
      "name" : "대기"
    },
    "item" : {
      "itemId" : 1,
      "name" : "Item",
      "price" : 1000,
      "amount" : 10
    },
    "member" : {
      "memberId" : 1,
      "name" : "member",
      "email" : "example@example.com",
      "phone" : "010-1234-5678"
    },
    "chargeAmount" : 10000,
    "isSubscription" : true,
    "contractDate" : "2023-07-01T00:00:00",
    "dueDate" : "2023-07-15T00:00:00",
    "createdAt" : "2023-07-01T00:00:00",
    "updatedAt" : "2023-07-10T00:00:00"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.contractId

Number

계약 ID

data.invoiceId

Number

청구서 ID

data.paymentType

Object

결제 수단

data.paymentType.id

Number

결제 수단 ID

data.paymentType.name

String

결제 수단명

data.invoiceType

Object

청구 타입

data.invoiceType.id

Number

청구 타입 ID

data.invoiceType.name

String

청구 타입명

data.paymentStatus

Object

결제 상태

data.paymentStatus.id

Number

결제 상태 ID

data.paymentStatus.name

String

결제 상태명

data.item

Object

상품 정보

data.item.itemId

Number

상품 ID

data.item.name

String

상품명

data.item.price

Number

상품 가격

data.item.amount

Number

상품 수량

data.member

Object

회원 정보

data.member.memberId

Number

회원 ID

data.member.name

String

회원명

data.member.email

String

회원 이메일

data.member.phone

String

회원 전화번호

data.chargeAmount

Number

청구 금액

data.isSubscription

Boolean

구독 여부

data.contractDate

String

계약일

data.dueDate

String

납부 기한

data.createdAt

String

청구 생성일

data.updatedAt

String

청구 수정일

청구 목록 조회

청구 정보 목록을 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/invoices?contractId=1&paymentStatusId=1&itemName=item&memberName=member&paymentTypeId=2&startContractDate=2023-07-01&endContractDate=2023-07-31&startDueDate=2023-07-01&endDueDate=2023-07-31&startCreatedAt=2023-07-01&endCreatedAt=2023-07-31 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/invoices
Parameter Description

contractId

계약 ID

itmeName

상품명

memberName

회원명

paymentStatusId

결제 상태 ID

paymentTypeId

결제 수단 ID

startContractDate

계약 시작일

endContractDate

계약 종료일

startDueDate

납부 시작일

endDueDate

납부 종료일

startCreatedAt

생성 시작일

endCreatedAt

생성 종료일

page

페이지 번호 (기본값: 0)

size

페이지 크기 (기본값: 20)

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: 1507

{
  "code" : 200,
  "message" : "청구 정보를 성공적으로 조회하였습니다.",
  "data" : {
    "content" : [ {
      "invoiceId" : 1,
      "contractId" : 1,
      "memberName" : "member1",
      "itemName" : "item1",
      "chargeAmount" : 10000,
      "paymentType" : {
        "id" : 2,
        "name" : "실시간 CMS"
      },
      "paymentStatus" : {
        "id" : 3,
        "name" : "대기"
      },
      "contractDate" : "2023-07-01T00:00:00",
      "dueDate" : "2023-07-15T00:00:00",
      "createdAt" : "2023-07-01T00:00:00"
    }, {
      "invoiceId" : 2,
      "contractId" : 2,
      "memberName" : "member2",
      "itemName" : "item2",
      "chargeAmount" : 20000,
      "paymentType" : {
        "id" : 2,
        "name" : "실시간 CMS"
      },
      "paymentStatus" : {
        "id" : 3,
        "name" : "대기"
      },
      "contractDate" : "2023-08-01T00:00:00",
      "dueDate" : "2023-08-15T00:00:00",
      "createdAt" : "2023-08-01T00:00:00"
    } ],
    "pageable" : {
      "pageNumber" : 0,
      "pageSize" : 20,
      "sort" : {
        "empty" : true,
        "sorted" : false,
        "unsorted" : true
      },
      "offset" : 0,
      "paged" : true,
      "unpaged" : false
    },
    "totalElements" : 2,
    "totalPages" : 1,
    "last" : true,
    "size" : 20,
    "number" : 0,
    "sort" : {
      "empty" : true,
      "sorted" : false,
      "unsorted" : true
    },
    "numberOfElements" : 2,
    "first" : true,
    "empty" : false
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.content

Array

페이지 청구서 목록

data.content[].invoiceId

Number

청구서 ID

data.content[].contractId

Number

계약 ID

data.content[].memberName

String

회원명

data.content[].itemName

String

상품명

data.content[].chargeAmount

Number

청구 금액

data.content[].paymentType

Object

결제 수단 정보

data.content[].paymentType.id

Number

결제 수단 ID

data.content[].paymentType.name

String

결제 수단명

data.content[].paymentStatus

Object

결제 상태 정보

data.content[].paymentStatus.id

Number

결제 상태 ID

data.content[].paymentStatus.name

String

결제 상태명

data.content[].contractDate

String

계약일

data.content[].dueDate

String

납부 기한

data.content[].createdAt

String

청구서 생성일

data.pageable

Object

페이징 정보

data.pageable.sort

Object

정렬 정보

data.pageable.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.pageable.sort.sorted

Boolean

정렬 여부

data.pageable.sort.unsorted

Boolean

정렬되지 않음 여부

data.pageable.offset

Number

페이징 오프셋

data.pageable.pageNumber

Number

페이지 번호

data.pageable.pageSize

Number

페이지 크기

data.pageable.paged

Boolean

페이징 여부

data.pageable.unpaged

Boolean

페이징되지 않음 여부

data.last

Boolean

마지막 페이지 여부

data.totalPages

Number

전체 페이지 수

data.totalElements

Number

전체 요소 수

data.size

Number

페이지 크기

data.number

Number

현재 페이지 번호

data.sort

Object

정렬 정보

data.sort.empty

Boolean

정렬 정보 비어 있음 여부

data.sort.sorted

Boolean

정렬 여부

data.sort.unsorted

Boolean

정렬되지 않음 여부

data.first

Boolean

첫 페이지 여부

data.numberOfElements

Number

요소 개수

data.empty

Boolean

비어 있음 여부

납부 API

납부 관련 API입니다.

납부 내역 취소

납부 내역을 취소합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

DELETE /api/v1/payments/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/payments/{invoiceId}
Parameter Description

invoiceId

청구 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: 91

{
  "code" : 200,
  "message" : "납부 내역이 성공적으로 취소되었습니다."
}

납부 내역 조회

납부 내역을 조회합니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/payments/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/payments/{invoiceId}
Parameter Description

invoiceId

청구 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: 312

{
  "code" : 200,
  "message" : "납부 내역을 성공적으로 조회하였습니다.",
  "data" : {
    "invoiceId" : 1,
    "payAmount" : 10000,
    "paymentMethod" : "ACCOUNT",
    "createAt" : "2024-08-07T10:50:39.498005232",
    "number" : "111111",
    "bank" : "국민",
    "owner" : "홍길동"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.invoiceId

Number

청구 ID

data.payAmount

Number

납부금

data.paymentMethod

String

납부 수단

data.createAt

String

납부일

data.number

String

계좌 번호

data.bank

String

은행명

data.owner

String

계좌주

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/payments/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/payments/{invoiceId}
Parameter Description

invoiceId

청구 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: 315

{
  "code" : 200,
  "message" : "납부 내역을 성공적으로 조회하였습니다.",
  "data" : {
    "invoiceId" : 1,
    "payAmount" : 10000,
    "paymentMethod" : "ACCOUNT",
    "createAt" : "2024-08-07T10:50:39.517267236",
    "number" : "111111",
    "company" : "삼성",
    "owner" : "홍길동"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.invoiceId

Number

청구 ID

data.payAmount

Number

납부금

data.paymentMethod

String

납부 수단

data.createAt

String

납부일

data.number

String

카드 번호

data.company

String

카드사

data.owner

String

카드 소유자명

동의 API

동의서 관련 API입니다.

동의정보 등록

동의정보를 등록합니다. 서명 이미지는 필수입니다.

HTTP request

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

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

{"owner":"홍길동","bank":"신한","number":"111222333444"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=signImage; filename=sign.png
Content-Type: image/png

consent data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request cookies

Name Description

access

엑세스 토큰 (* required)

Request parts

Part Description

data

동의 계좌 정보 (* required)

signImage

동의 서명 이미지 (* required)

Request part-data-fields

Path Type Description

owner

String

계좌 소유주 (* required)

bank

String

은행 (* required)

number

String

계좌 번호 (* required)

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: 328

{
  "code" : 200,
  "message" : "동의정보 등록이 완료되었습니다.",
  "data" : {
    "memberId" : 1,
    "owner" : "홍길동",
    "bank" : "신한",
    "number" : "111222333444",
    "signUrl" : "SIGN_URL",
    "createdAt" : "2024-08-07T10:50:32.88488847",
    "updatedAt" : "2024-08-07T10:50:32.884911764"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.memberId

Number

회원 아이디

data.owner

String

계좌 소유주

data.bank

String

은행

data.number

String

계좌번호

data.signUrl

String

서명 이미지 URL

data.createdAt

String

동의서 생성일

data.updatedAt

String

동의서 수정일

동의정보 조회

동의정보를 조회합니다.

HTTP request

GET /api/v1/consents/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Request cookies

Name Description

access

엑세스 토큰

Path parameters

Table 1. /api/v1/consents/{memberId}
Parameter Description

memberId

회원 아이디

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: 329

{
  "code" : 200,
  "message" : "동의정보 조회가 성공하였습니다.",
  "data" : {
    "memberId" : 1,
    "owner" : "홍길동",
    "bank" : "신한",
    "number" : "111222333444",
    "signUrl" : "SIGN_URL",
    "createdAt" : "2024-08-07T10:50:32.979435418",
    "updatedAt" : "2024-08-07T10:50:32.979445457"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.memberId

Number

회원 아이디

data.owner

String

계좌 소유주

data.bank

String

은행

data.number

String

계좌번호

data.signUrl

String

서명 이미지 URL

data.createdAt

String

동의서 생성일

data.updatedAt

String

동의서 수정일

동의정보 수정

상품 정보를 수정합니다.

HTTP request

PUT /api/v1/consents/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 77
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "owner" : "홍길동",
  "bank" : "신한",
  "number" : "111222333444"
}

Request cookies

Name Description

access

엑세스 토큰

Path parameters

Table 1. /api/v1/consents/{memberId}
Parameter Description

memberId

회원 아이디

Request fields

Path Type Description

owner

String

계좌 소유주 (* required)

bank

String

은행 (* required)

number

String

계좌번호 (* required)

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: 329

{
  "code" : 200,
  "message" : "동의정보 수정이 완료되었습니다.",
  "data" : {
    "memberId" : 1,
    "owner" : "홍길동",
    "bank" : "신한",
    "number" : "111222333444",
    "signUrl" : "SIGN_URL",
    "createdAt" : "2024-08-07T10:50:32.788294768",
    "updatedAt" : "2024-08-07T10:50:32.788309716"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.memberId

Number

회원 아이디

data.owner

String

계좌 소유주

data.bank

String

은행

data.number

String

계좌번호

data.signUrl

String

서명 이미지 URL

data.createdAt

String

동의서 생성일

data.updatedAt

String

동의서 수정일

동의 서명 이미지 수정

동의 서명 이미지를 수정합니다.

HTTP request

PUT /api/v1/consents/1/image HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

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

consent data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request cookies

Name Description

access

엑세스 토큰

Path parameters

Table 1. /api/v1/consents/{memberId}/image
Parameter Description

memberId

회원 아이디

Request parts

Part Description

signImage

서명 이미지

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: 330

{
  "code" : 200,
  "message" : "동의 서명 수정이 완료되었습니다.",
  "data" : {
    "memberId" : 1,
    "owner" : "홍길동",
    "bank" : "신한",
    "number" : "111222333444",
    "signUrl" : "SIGN_URL",
    "createdAt" : "2024-08-07T10:50:32.942756549",
    "updatedAt" : "2024-08-07T10:50:32.942768953"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.memberId

Number

회원 아이디

data.owner

String

계좌 소유주

data.bank

String

은행

data.number

String

계좌번호

data.signUrl

String

서명 이미지 URL

data.createdAt

String

동의서 생성일

data.updatedAt

String

동의서 수정일

동의정보 삭제

동의 정보를 삭제합니다.

HTTP request

DELETE /api/v1/consents/1 HTTP/1.1
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Request cookies

Name Description

access

엑세스 토큰

Path parameters

Table 1. /api/v1/consents/{memberId}
Parameter Description

memberId

회원 아이디

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: 81

{
  "code" : 200,
  "message" : "동의정보 삭제가 완료되었습니다."
}

설정 API

설정 관련 API입니다.

간편동의 상품설정

간편동의 기본상품을 설정합니다. 선택한 상품 중 기본이 아닌 상품은 기본으로 설정되고, 기본인 상품은 기본이 아닌 상품으로 설정됩니다.

HTTP request

PUT /api/v1/setting/easy-consent/items HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 32
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

{
  "itemIdList" : [ 1, 2, 3 ]
}

Request cookies

Name Description

access

엑세스 토큰 (* required)

Request fields

Path Type Description

itemIdList

Array

아이템 아이디 목록 (* required)

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: 89

{
  "code" : 200,
  "message" : "간편 동의 상품 설정이 완료되었습니다."
}

간편동의 API

비회원 간편동의 상품목록 조회

비회원 간편동의 상품목록을 조회합니다.

HTTP request

GET /api/v1/easy-consent/non-member/items?clientId=1 HTTP/1.1
Host: localhost:8080

Query parameters

Parameter Description

clientId

고객 아이디

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: 304

{
  "code" : 200,
  "message" : "비회원 간편동의 상품목록조회가 성공하였습니다.",
  "data" : [ {
    "id" : 1,
    "name" : "item1",
    "price" : 10000,
    "imageUrl" : "IMAGE_URL"
  }, {
    "id" : 2,
    "name" : "item2",
    "price" : 20000,
    "imageUrl" : "IMAGE_URL"
  } ]
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Array

응답 데이터

data[].id

Number

상품 ID

data[].name

String

상품명

data[].price

Number

상품 가격

data[].imageUrl

String

상품 이미지 URL

비회원 간편동의

비회원 간편동의를 합니다. 서명 이미지는 필수입니다.

HTTP request

POST /api/v1/easy-consent/non-member?clientId=1 HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

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

{"memberName":"홍길동","memberEmail":"test@gmail.com","memberPhone":"01012341234","itemId":1,"itemAmount":3,"isSubscription":true,"contractCycle":15,"accountBank":"은행","accountOwner":"홍길동","accountNumber":"1234567890"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=signImage; filename=sign.png
Content-Type: image/png

consent data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Query parameters

Parameter Description

clientId

고객 아이디

Request parts

Part Description

data

동의 정보 (* required)

signImage

동의 서명 이미지 (* required)

Request part-data-fields

Path Type Description

memberName

String

회원 이름

memberEmail

String

회원 이메일

memberPhone

String

회원 전화번호

itemId

Number

상품 아이디

itemAmount

Number

상품 수량

isSubscription

Boolean

정기 여부

contractCycle

Number

약정일 주기

accountBank

String

은행명

accountOwner

String

계좌주

accountNumber

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: 84

{
  "code" : 200,
  "message" : "비회원 간편동의가 성공하였습니다."
}

회원 간편동의 계약정보 조회

회원 간편동의 계약정보를 조회합니다.

HTTP request

GET /api/v1/easy-consent/member/contracts/1 HTTP/1.1
Host: localhost:8080

Path parameters

Table 1. /api/v1/easy-consent/member/contracts/{contractId}
Parameter Description

contractId

계약 아이디

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: 411

{
  "code" : 200,
  "message" : "회원 간편동의 계약정보 조회가 성공하였습니다.",
  "data" : {
    "contractId" : 1,
    "memberId" : 1,
    "memberName" : "홍길동",
    "memberEmail" : "test@gmail.com",
    "memberPhone" : "01012341234",
    "itemId" : 1,
    "itemName" : "item1",
    "itemAmount" : 3,
    "totalPrice" : 30000,
    "isSubscription" : true,
    "contractCycle" : 3
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.contractId

Number

계약 아이디

data.memberId

Number

회원 아이디

data.memberId

Number

회원 아이디

data.memberName

String

회원 이름

data.memberEmail

String

회원 이메일

data.memberPhone

String

회원 전화번호

data.itemId

Number

상품 아이디

data.itemName

String

상품명

data.itemAmount

Number

상품 개수

data.totalPrice

Number

총 금액

data.isSubscription

Boolean

정기 여부

data.contractCycle

Number

약정일 주기

회원 간편동의

회원 간편동의를 합니다. 서명 이미지는 필수입니다.

HTTP request

POST /api/v1/easy-consent/member?contractId=1 HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

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

{"owner":"홍길동","bank":"신한","number":"111222333444"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=signImage; filename=sign.png
Content-Type: image/png

consent data
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Query parameters

Parameter Description

contractId

계약 아이디

Request parts

Part Description

data

동의 계좌 정보 (* required)

signImage

동의 서명 이미지 (* required)

Request part-data-fields

Path Type Description

owner

String

계좌 소유주 (* required)

bank

String

은행 (* required)

number

String

계좌 번호 (* required)

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: 81

{
  "code" : 200,
  "message" : "회원 간편동의가 성공하였습니다."
}

납부자 결제 API

납부자 결제 API입니다.

카드 납부자 결제

카드로 납부자 결제를 합니다.

HTTP request

POST /api/v1/payments/payer-pay/card?invoiceId=1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 90
Host: localhost:8080

{
  "owner" : "홍길동",
  "company" : "신한카드",
  "number" : "1234123412341234"
}

Query parameters

Parameter Description

invoiceId

청구 아이디

Request fields

Path Type Description

owner

String

카드 소유주 (* required)

company

String

카드사 (* required)

number

String

카드번호 (* required)

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: 86

{
  "code" : 200,
  "message" : "납부자 결제(카드)가 성공하였습니다."
}

계좌 납부자 결제

계좌로 납부자 결제를 합니다.

HTTP request

POST /api/v1/payments/payer-pay/account?invoiceId=1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 81
Host: localhost:8080

{
  "owner" : "홍길동",
  "bank" : "신한",
  "number" : "1234123412341234"
}

Query parameters

Parameter Description

invoiceId

청구 아이디

Request fields

Path Type Description

owner

String

계좌 소유주 (* required)

bank

String

은행 (* required)

number

String

계좌번호 (* required)

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: 86

{
  "code" : 200,
  "message" : "납부자 결제(계좌)가 성공하였습니다."
}

납부자 결제 청구정보 조회

납부자 결제의 청구 정보를 조회합니다.

HTTP request

GET /api/v1/payments/payer-pay/invoices/1 HTTP/1.1
Host: localhost:8080

Path parameters

Table 1. /api/v1/payments/payer-pay/invoices/{invoiceId}
Parameter Description

invoiceId

청구 아이디

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: 397

{
  "code" : 200,
  "message" : "납부자 결제 청구정보 조회가 성공하였습니다.",
  "data" : {
    "memberName" : "홍길동",
    "memberEmail" : "test@gmail.com",
    "memberPhone" : "01012341234",
    "itemName" : "item1",
    "itemAmount" : 3,
    "totalPrice" : 30000,
    "contractDate" : "2024-08-07T10:50:39.421204268",
    "dueDate" : "2024-08-07T10:50:39.421212734"
  }
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Object

응답 데이터

data.memberName

String

회원 이름

data.memberEmail

String

회원 이메일

data.memberPhone

String

회원 전화번호

data.itemName

String

상품명

data.itemAmount

Number

상품 개수

data.totalPrice

Number

총 금액

data.contractDate

String

약정일

data.dueDate

String

결제기한

설정 API

통계 API입니다.

통계 데이터 조회

통계 데이터를 조회합니다. 년,월을 기준으로 검색할 수 있습니다.

Request cookies

Name Description

access

엑세스 토큰

HTTP request

GET /api/v1/stats/1?year=2024&month=7 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Cookie: access=ACCESS_TOKEN

Path parameters

Table 1. /api/v1/stats/{typeId}
Parameter Description

typeId

통계 타입 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: 330

{
  "code" : 200,
  "message" : "계약 정보를 성공적으로 조회하였습니다.",
  "data" : [ {
    "id" : 1,
    "date" : "2024-08-07T10:50:40.271909004",
    "totalInvoiced" : 1000,
    "totalCollected" : 500,
    "outstanding" : 500,
    "year" : 2024,
    "month" : 7,
    "week" : 31,
    "type" : "MONTHLY"
  } ]
}

Response fields

Path Type Description

code

Number

응답 코드

message

String

응답 메시지

data

Array

응답 데이터

data[].id

Number

통계 ID

data[].date

String

통계 날짜

data[].totalInvoiced

Number

총 청구 금액

data[].totalCollected

Number

총 수집 금액

data[].outstanding

Number

미수금

data[].year

Number

년도

data[].month

Number

data[].week

Number

data[].type

String

통계 타입