Account(계좌,결제수단) [길재현]

특정 회원의 결제수단 목록 조회

/accounts/customers/{customerId}

paging 관련 파라미터도 줄 수있다. [주지않을시 기본값 페이지 크기 10]

HTTP Request

GET /accounts/customers/1?page=0&size=10 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 838

{
  "totalElements" : 2,
  "totalPages" : 1,
  "size" : 10,
  "content" : [ {
    "accountId" : 1,
    "customerId" : 1,
    "accountNumber" : "42750204039102",
    "bankCode" : "004",
    "createdAt" : "2024-08-08T11:05:09.0949324"
  }, {
    "accountId" : 2,
    "customerId" : 1,
    "accountNumber" : "42750204039103",
    "bankCode" : "090",
    "createdAt" : "2024-08-08T11:05:09.0949324"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : false,
    "unsorted" : false,
    "sorted" : true
  },
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : false,
      "unsorted" : false,
      "sorted" : true
    },
    "offset" : 0,
    "unpaged" : false,
    "paged" : true
  },
  "first" : true,
  "last" : true,
  "numberOfElements" : 2,
  "empty" : false
}

Response Fields

Path Type Description

content

Array

계좌 목록

content[].accountId

Number

계좌 ID

content[].customerId

Number

고객 ID

content[].accountNumber

String

계좌 번호

content[].bankCode

String

은행 코드

content[].createdAt

String

생성 일시

pageable

Object

페이지 정보

pageable.sort

Object

정렬 정보

pageable.sort.empty

Boolean

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

정렬되었는지 여부

pageable.sort.unsorted

Boolean

정렬되지 않았는지 여부

pageable.pageNumber

Number

페이지 번호

pageable.pageSize

Number

페이지 크기

pageable.offset

Number

오프셋

pageable.paged

Boolean

페이지된 여부

pageable.unpaged

Boolean

페이지되지 않은 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort

Object

정렬 정보

sort.empty

Boolean

정렬 정보가 비어있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 요소 수

first

Boolean

첫 페이지 여부

empty

Boolean

결과가 비어있는지 여부

계좌 생성

/accounts/customers/{customerId}

HTTP Request

POST /accounts/customers/1 HTTP/1.1
Content-Type: application/json
Content-Length: 65
Host: localhost:8080

{
  "accountNumber" : "42750204039102",
  "bankCode" : "004"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 16

success id : 100

계좌 수정

/accounts/{accountId}

HTTP Request

PUT /accounts/1 HTTP/1.1
Content-Type: application/json
Content-Length: 61
Host: localhost:8080

{
  "accountNumber" : "1234567890",
  "bankCode" : "004"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

계좌 삭제

/accounts/{accountId}

HTTP Request

DELETE /accounts/1 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

AccountAuth(계좌 검증) By SellutionPG [길재현]

실제 계좌 주인 조회

/accounts/auth/check-account

은행코드 , 계좌번호를 입력받아 Sellution-Pg 서버의 API를 이용하여 계좌주인을 조회한다.

HTTP Request

POST /accounts/auth/check-account?_csrf=1YUf6rt17J_Qz3mNIqO1aolgOnf4jbhtYwwzWwyxdJPhsmwi5OMujNlAiKv9qx-5FY6BD7gDF0_K7o1AAT5WaTmFEqTS0wgS HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 61
Host: localhost:8080

{
  "bankCode" : "004",
  "accountNumber" : "1234567890"
}

HTTP Response

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

{
  "bankHolderName" : "홍길동"
}

Response Fields

Path Type Description

bankHolderName

String

계좌 소유주 이름

Address(주소) [이재아]

특정 회원의 주소 목록 조회

/addresses/customer/{customerId}

HTTP Request

GET /addresses/customer/1 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 483

[ {
  "addressId" : 1,
  "addressName" : "집",
  "isDefaultAddress" : "Y",
  "name" : "홍길동",
  "zipcode" : "12345",
  "phoneNumber" : "01012345678",
  "streetAddress" : "서울시 강남구",
  "addressDetail" : "123-456"
}, {
  "addressId" : 2,
  "addressName" : "회사",
  "isDefaultAddress" : "N",
  "name" : "홍길동",
  "zipcode" : "67890",
  "phoneNumber" : "01087654321",
  "streetAddress" : "서울시 서초구",
  "addressDetail" : "789-012"
} ]

Response Fields

Path Type Description

[]

Array

주소 목록

[].addressId

Number

주소 ID

[].addressName

String

주소 이름

[].isDefaultAddress

String

기본 주소 여부

[].name

String

수령인 이름

[].phoneNumber

String

전화번호

[].zipcode

String

우편번호

[].streetAddress

String

도로명 주소

[].addressDetail

String

상세 주소

주소 상세 정보 조회

/addresses/{addressId}

HTTP Request

GET /addresses/1 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 238

{
  "customerId" : 1,
  "addressName" : "집",
  "name" : "홍길동",
  "phoneNumber" : "01012345678",
  "zipcode" : "12345",
  "streetAddress" : "서울시 강남구",
  "addressDetail" : "123-456",
  "isDefaultAddress" : "Y"
}

Response Fields

Path Type Description

customerId

Number

고객 ID

addressName

String

주소 이름

name

String

수령인 이름

phoneNumber

String

전화번호

zipcode

String

우편번호

streetAddress

String

도로명 주소

addressDetail

String

상세 주소

isDefaultAddress

String

기본 주소 여부

새로운 주소 생성

/addresses

HTTP Request

POST /addresses HTTP/1.1
Content-Type: application/json
Content-Length: 245
Host: localhost:8080

{
  "customerId" : 1,
  "addressName" : "새 주소",
  "name" : "홍길동",
  "phoneNumber" : "01012345678",
  "zipcode" : "12345",
  "streetAddress" : "서울시 강남구",
  "addressDetail" : "123-456",
  "isDefaultAddress" : "N"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1

1

Request Fields

Path Type Description

customerId

Number

고객 ID

addressName

String

주소 이름

name

String

수령인 이름

phoneNumber

String

전화번호

zipcode

String

우편번호

streetAddress

String

도로명 주소

addressDetail

String

상세 주소

isDefaultAddress

String

기본 주소 여부

주소 수정

/addresses/{addressId}

HTTP Request

PUT /addresses/1 HTTP/1.1
Content-Type: application/json
Content-Length: 251
Host: localhost:8080

{
  "customerId" : 1,
  "addressName" : "수정된 주소",
  "name" : "홍길동",
  "phoneNumber" : "01012345678",
  "zipcode" : "12345",
  "streetAddress" : "서울시 강남구",
  "addressDetail" : "123-456",
  "isDefaultAddress" : "Y"
}

HTTP Response

HTTP/1.1 204 No Content

Request Fields

Path Type Description

customerId

Number

고객 ID

addressName

String

주소 이름

name

String

수령인 이름

phoneNumber

String

전화번호

zipcode

String

우편번호

streetAddress

String

도로명 주소

addressDetail

String

상세 주소

isDefaultAddress

String

기본 주소 여부

주소 삭제

/addresses/{addressId}

HTTP Request

DELETE /addresses/1 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 204 No Content

Company(회사) API [이재아]

회사 URL 설정 조회

GET /url-setting/{companyId}

회사 URL 설정을 조회합니다.

Path Parameters

Table 1. /url-setting/{companyId}
Parameter Description

companyId

회사 ID

HTTP Request

GET /url-setting/1?_csrf=JBNzEMUShhx7p3OicuHjGjpkBm81gKJwCozCWk8kjtqPwpw-ECMWKfwkty5WkRaRQMzXKwtdKw4MssBdMummPisdt-i9pKUN HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 193

{
  "companyId" : 1,
  "name" : "TestCompany",
  "shopUrl" : "https://www.sellution.com/shopping/TestCompany",
  "isShopVisible" : "Y",
  "qrCodeUrl" : "https://example.com/qr-code.png"
}

Response Fields

Path Type Description

companyId

Number

회사 ID

name

String

회사명

shopUrl

String

쇼핑몰 URL

isShopVisible

String

쇼핑몰 공개 여부

qrCodeUrl

String

QR 코드 URL

회사 URL 설정 업데이트

PUT /url-setting

회사 URL 설정을 업데이트합니다.

HTTP Request

PUT /url-setting?_csrf=2s3_jnVhaRYH_lP4B2ILZZipZqT0_RfB_zSCqwf_0_O_MirD4vrIuhBQWiEqxzLOZU8_UqueS8aWzS7sxwKzyTPL58eOV0v1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 79
Host: localhost:8080

{
  "companyId" : 1,
  "name" : "UpdatedCompany",
  "isShopVisible" : "N"
}

Request Fields

Path Type Description

companyId

Number

회사 ID

name

String

회사명

isShopVisible

String

쇼핑몰 공개 여부

HTTP Response

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

회사 디스플레이 설정 조회

GET /display-setting/{companyId}

회사 디스플레이 설정을 조회합니다.

Path Parameters

Table 2. /display-setting/{companyId}
Parameter Description

companyId

회사 ID

HTTP Request

GET /display-setting/1?_csrf=wOhorbaa_Pe0oLxX-MrGwkIS3M-mX2scoXhkRrshVK0me1eqpt5fyYb7z8-ZwYo1z-fy8SQq8faSOV4xlR5Xdt5FZchAH2fP HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 363

{
  "companyId" : 1,
  "displayName" : "TestDisplay",
  "logoImageUrl" : "logo.jpg",
  "promotionImageUrls" : [ "promo1.jpg", "promo2.jpg" ],
  "serviceType" : "BOTH",
  "themeColor" : "#FFFFFF",
  "mainPromotion1Title" : "Promo 1",
  "mainPromotion1Content" : "Content 1",
  "mainPromotion2Title" : "Promo 2",
  "mainPromotion2Content" : "Content 2"
}

Response Fields

Path Type Description

companyId

Number

회사 ID

displayName

String

디스플레이 이름

logoImageUrl

String

로고 이미지 URL

promotionImageUrls

Array

프로모션 이미지 URL 목록

serviceType

String

서비스 타입

themeColor

String

테마 색상

mainPromotion1Title

String

메인 프로모션 1 제목

mainPromotion1Content

String

메인 프로모션 1 내용

mainPromotion2Title

String

메인 프로모션 2 제목

mainPromotion2Content

String

메인 프로모션 2 내용

회사 디스플레이 설정 생성

POST /display-setting

회사 디스플레이 설정을 생성합니다.

HTTP Request

POST /display-setting HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=logoFile; filename=logo.jpg
Content-Type: image/jpeg

logo content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=promotionFiles; filename=promo1.jpg
Content-Type: image/jpeg

promo1 content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=request
Content-Type: application/json

{"companyId":1,"displayName":"NewDisplay","logoImageUrl":null,"promotionImageUrls":null,"themeColor":"#FFFFFF","mainPromotion1Title":"Promo1","mainPromotion1Content":"Content1","mainPromotion2Title":"Promo2","mainPromotion2Content":"Content2"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request Parts

Part Description

logoFile

로고 파일

promotionFiles

프로모션 이미지 파일

request

회사 디스플레이 설정 정보

Request Part Fields

Path Type Description

companyId

Number

회사 ID

displayName

String

디스플레이 이름

logoImageUrl

String

로고 이미지 URL

promotionImageUrls

Array

프로모션 이미지 URL 목록

themeColor

String

테마 색상

mainPromotion1Title

String

메인 프로모션 1 제목

mainPromotion1Content

String

메인 프로모션 1 내용

mainPromotion2Title

String

메인 프로모션 2 제목

mainPromotion2Content

String

메인 프로모션 2 내용

HTTP Response

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

회사 디스플레이 설정 업데이트

PUT /display-setting

회사 디스플레이 설정을 업데이트합니다.

HTTP Request

PUT /display-setting HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

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

{"companyId":1,"displayName":"UpdatedDisplay","logoImageUrl":null,"promotionImageUrls":null,"themeColor":null,"mainPromotion1Title":null,"mainPromotion1Content":null,"mainPromotion2Title":null,"mainPromotion2Content":null}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=logoFile; filename=logo.jpg
Content-Type: image/jpeg

logo content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=promotionFiles; filename=promo1.jpg
Content-Type: image/jpeg

promo1 content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Request Parts

Part Description

request

업데이트 요청 DTO

logoFile

로고 파일

promotionFiles

프로모션 이미지 파일

HTTP Response

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

회사 판매 설정 조회

GET /sale-setting/{companyId}

회사 판매 설정을 조회합니다.

Path Parameters

Table 3. /sale-setting/{companyId}
Parameter Description

companyId

회사 ID

HTTP Request

GET /sale-setting/1?_csrf=eKpwEzONVDWffN8V2rfrbi4__Q1MaY7714JX9VaajuBasLXjT88WcQbuMVSySLwk6prfC0gL0DV4WOjW77pmxW-svdVvgtPa HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 287

{
  "companyId" : 1,
  "serviceType" : "BOTH",
  "sellType" : "ALL",
  "subscriptionType" : "MONTH",
  "categoryIds" : null,
  "productIds" : null,
  "minDeliveryCount" : null,
  "maxDeliveryCount" : null,
  "monthValues" : null,
  "weekValues" : null,
  "dayValues" : null
}

회사 판매 설정 생성

POST /sale-setting

회사 판매 설정을 생성합니다.

HTTP Request

POST /sale-setting?_csrf=UfkehSMZh-GGixPaZaTOgsJm_oZETLqtF_X38saqvU8zA30pMMAotxorvoOr6nC5BIn64_NU0-R9fNiAcc2Vl_7MjisLYE8b HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 305
Host: localhost:8080

{
  "companyId" : 1,
  "serviceType" : "BOTH",
  "sellType" : "ALL",
  "categories" : null,
  "products" : null,
  "subscriptionType" : "MONTH",
  "minDeliveryCount" : 5,
  "maxDeliveryCount" : 10,
  "dayOptions" : [ "MON", "TUE" ],
  "weekOptions" : [ 1, 2 ],
  "monthOptions" : [ 1, 2, 3 ]
}

Request Fields

Path Type Description

companyId

Number

회사 ID

serviceType

String

서비스 타입

sellType

String

판매 타입

subscriptionType

String

구독 타입

minDeliveryCount

Number

최소 배송 횟수

maxDeliveryCount

Number

최대 배송 횟수

monthOptions

Array

월 옵션

weekOptions

Array

주 옵션

dayOptions

Array

요일 옵션

categories

Array

카테고리 ID 목록

products

Array

상품 ID 목록

HTTP Response

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

회사 판매 설정 업데이트

PUT /sale-setting

회사 판매 설정을 업데이트합니다.

HTTP Request

PUT /sale-setting?_csrf=0UT_IuQOt_syJAevmJxoVrMy8IzcBMRuTKj87VPMoHMGyr-K6HPJF9dohMofEj7O-bFcZocL3e2_ZaJDLZrI1Wb_lEEy-Iez HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 305
Host: localhost:8080

{
  "companyId" : 1,
  "serviceType" : "BOTH",
  "sellType" : "ALL",
  "categories" : null,
  "products" : null,
  "subscriptionType" : "MONTH",
  "minDeliveryCount" : 5,
  "maxDeliveryCount" : 10,
  "dayOptions" : [ "MON", "TUE" ],
  "weekOptions" : [ 1, 2 ],
  "monthOptions" : [ 1, 2, 3 ]
}

Request Fields

Path Type Description

companyId

Number

회사 ID

serviceType

String

서비스 타입

sellType

String

판매 타입

subscriptionType

String

구독 타입

minDeliveryCount

Number

최소 배송 횟수

maxDeliveryCount

Number

최대 배송 횟수

monthOptions

Array

월 옵션

weekOptions

Array

주 옵션

dayOptions

Array

요일 옵션

categories

Array

카테고리 ID 목록

products

Array

상품 ID 목록

HTTP Response

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

회사 정보 조회

GET /shopping-find-companyId/{companyName}

회사 정보를 조회합니다.

Path Parameters

Table 4. /shopping-find-companyId/{companyName}
Parameter Description

companyName

회사명

HTTP Request

GET /shopping-find-companyId/TestCompany?_csrf=D60mVc-ZonlfMwigb6QaeWdTTJeP00xJ3zXO1S3PujYyp0IwachAZP6vlU1yUTqXCokuG1IxYfbs6i1k6Af-tx_43wYFxScD HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 525

{
  "data" : {
    "companyId" : 1,
    "displayName" : "TestDisplay",
    "name" : "TestCompany",
    "logoImageUrl" : "logo.jpg",
    "promotionImageUrls" : [ "promo1.jpg", "promo2.jpg" ],
    "serviceType" : "BOTH",
    "subscriptionType" : "MONTH",
    "minDeliveryCount" : 5,
    "maxDeliveryCount" : 30,
    "themeColor" : "#FFFFFF",
    "mainPromotion1Title" : "Promo 1",
    "mainPromotion1Content" : "Content 1",
    "mainPromotion2Title" : "Promo 2",
    "mainPromotion2Content" : "Content 2"
  }
}

Response Fields

Path Type Description

data.companyId

Number

회사 ID

data.name

String

회사명

data.displayName

String

디스플레이 이름

data.logoImageUrl

String

로고 이미지 URL

data.promotionImageUrls

Array

프로모션 이미지 URL 목록

data.serviceType

String

서비스 타입

data.subscriptionType

String

구독 타입

data.minDeliveryCount

Number

최소 배송 횟수

data.maxDeliveryCount

Number

최대 배송 횟수

data.themeColor

String

테마 색상

data.mainPromotion1Title

String

메인 프로모션 1 제목

data.mainPromotion1Content

String

메인 프로모션 1 내용

data.mainPromotion2Title

String

메인 프로모션 2 제목

data.mainPromotion2Content

String

메인 프로모션 2 내용

Category(카테고리) [이재아]

카테고리 목록 조회

/categories

HTTP Request

GET /categories?companyId=1&isVisible=Y&page=0&size=10&_csrf=nu6bBE950KszithZYiktAXQ_ZLQ9h4a4jFL6yMnjjTQcSMWd-9mpZXoctZwevb5uBAQZOEAJSY0O5bGVvWTL-_rTtFZ4LPak HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 408

{
  "totalElements" : 1,
  "totalPages" : 1,
  "size" : 1,
  "content" : [ {
    "categoryId" : 1,
    "name" : "Test Category",
    "productCount" : 5,
    "isVisible" : "Y"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : "INSTANCE",
  "first" : true,
  "last" : true,
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content[]

Array

카테고리 목록

content[].categoryId

Number

카테고리 ID

content[].name

String

카테고리 이름

content[].isVisible

String

표시 여부

content[].productCount

Number

제품 수

pageable

String

페이지 정보

totalElements

Number

전체 요소 수

totalPages

Number

전체 페이지 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort.empty

Boolean

정렬이 비어 있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 요소 수

first

Boolean

첫 페이지 여부

empty

Boolean

빈 페이지 여부

카테고리 상세 조회

/categories/{categoryId}

HTTP Request

GET /categories/1?_csrf=n2Bjj_XK_5NJ047vSHitBg_c_lF1y_998nKaYzVJUJSlDm2L-llVusz5mqJktbzccVWZMD_v02hD-sxQl0upBlEqYqedb1m5 HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 98

{
  "categoryId" : 1,
  "name" : "Test Category",
  "productCount" : 5,
  "isVisible" : "Y"
}
Response Fields
Path Type Description

categoryId

Number

카테고리 ID

name

String

카테고리 이름

isVisible

String

표시 여부

productCount

Number

제품 수

카테고리 이름 중복 확인

/categories/check

HTTP Request

GET /categories/check?name=Test+Category&_csrf=z2ajQxQUGcaGX3lwPEMCSa5rnI_kFSTQENCNJB8MoV-3xMCS_lObc3Ilf6erZkhEX242fplTsbbUIhH9KOLsQSlolm3Uoveh HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 4

true

카테고리 생성

/categories

HTTP Request

POST /categories?_csrf=LQkb6xgsHpgWzsdUbHfkpcGXhGZmA2qrq-FK4QoHBUcz_2gLTz8v23sUfK079qFjWlrQkqSvqV8EMFqGztMp1TwzNX4Cmwpt HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 51
Host: localhost:8080

{
  "companyId" : 1,
  "name" : "New Category"
}

HTTP Response

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

카테고리 수정

/categories/{categoryId}

HTTP Request

PUT /categories/1?_csrf=x7chYuLMGkzUotYkITR175ztBTyCbNu9FZLOYrjMu3gr_DJioYIWW9CueSr5keYSRxlBiqrcKAW6W7iQIKOqUN743ksdmlED HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 51
Host: localhost:8080

{
  "companyId" : 1,
  "name" : "New Category"
}

HTTP Response

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

카테고리 삭제

/categories/{categoryId}

HTTP Request

DELETE /categories/1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: localhost:8080
Content-Length: 102

_csrf=nga73n89fprhN_jiDTbNHgZUEzGCVB0JXaMZZ8QSFMc8k-Ugpmfdv0oLS_jMAM_WORv5LWNjPgnnY34ka5EhUqBzdfQE9oQW

HTTP Response

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

Category (카테고리) - 회원화면 [김현주]

사업체 Id로 isVisble이 Y인 카테고리 조회

/categories/company/{companyId}

HTTP Request

GET /categories/company/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 104

[ {
  "categoryId" : 1,
  "name" : "category1"
}, {
  "categoryId" : 2,
  "name" : "category2"
} ]

Response Fields

Path Type Description

[].categoryId

Number

카테고리 ID

[].name

String

카테고리 이름

Easy Pwd (간편비밀번호) [길재현]

간편비밀번호 등록,재등록

/easy-pwd/customer/{customerId}

HTTP Request

POST /easy-pwd/customer/1?_csrf=tQ2yONQTfnCp6O6Q4MprIox8iSbAZgS-Lxcky0RYMC0R5he-h27RDOQmTkaEjNygg-dfFLpEpB_3AmGTHXMS-XQ9UR4i0CCG HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 29
Host: localhost:8080

{
  "password" : "123456"
}

HTTP Response

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

success

간편비밀번호 검증

/customer/{customerId}/verify

HTTP Request

POST /easy-pwd/customer/1/verify?_csrf=slxiWzuVMkO1Vw1b368cZwarb38I7cyhLjt2Wpm-fDtFW4NkhWQBP1qtU3aYMTk-u4IoBDTPQh5r2viMHAlBOfzaGQp3OLNc HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 29
Host: localhost:8080

{
  "password" : "123456"
}

HTTP Response

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

success

해당 회원이 간편비밀번호 있는지 확인

/customer/{customerId}/check

HTTP Request

GET /easy-pwd/customer/1/check?_csrf=3m4HJ_FOeV_otFke0lUQiXzO1SAwTyuet1Zc4TLVWPeZ7nmfuggyFsB2T2zF0jgu43gk7xr_-EEFeEmzgDJt0ADta8GpjRuo HTTP/1.1
Host: localhost:8080

HTTP Response

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

true

Order(주문) [길재현]

고객의 주문 목록 조회

/orders/customers/{customerId}

HTTP Request

GET /orders/customers/1?page=0&size=10 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1693

{
  "totalElements" : 1,
  "totalPages" : 1,
  "size" : 1,
  "content" : [ {
    "customer" : {
      "id" : 1,
      "name" : "길길",
      "phoneNumber" : "010-1234-5678"
    },
    "address" : {
      "id" : 1,
      "address" : "공릉",
      "name" : "길길",
      "zipcode" : "12345",
      "addressDetail" : "아파트",
      "phoneNumber" : "010-1234-5678",
      "isDefaultAddress" : "Y",
      "addressName" : "집",
      "createdAt" : "2024-08-08T11:05:32.8975586"
    },
    "orderCode" : "123456",
    "orderId" : 1,
    "accountId" : null,
    "type" : "ONETIME",
    "status" : "APPROVED",
    "deliveryStatus" : "IN_PROGRESS",
    "perPrice" : 20000,
    "totalPrice" : 100000,
    "deliveryStartDate" : "2024-08-08",
    "nextDeliveryDate" : "2024-08-09",
    "deliveryEndDate" : "2024-08-15",
    "totalDeliveryCount" : 5,
    "remainingDeliveryCount" : 2,
    "orderedProductList" : [ {
      "productId" : 1,
      "productName" : "Product A",
      "count" : 2,
      "discountRate" : 10,
      "price" : 50000,
      "productImageList" : null
    } ],
    "orderCreatedAt" : "2024-08-08T11:05:32.8975586",
    "selectedDayList" : [ "MON", "WED" ],
    "selectedWeekOption" : 1,
    "selectedMonthOption" : 1,
    "couponEventId" : null,
    "couponName" : null,
    "couponDiscountRate" : null,
    "paymentCount" : null,
    "nextPaymentDate" : null,
    "thisMonthDeliveryCount" : null
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : "INSTANCE",
  "first" : true,
  "last" : true,
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content[]

Array

주문 목록

content[].orderId

Number

주문 ID

content[].customer.id

Number

고객 ID

content[].customer.name

String

고객 이름

content[].customer.phoneNumber

String

고객 전화번호

content[].address.id

Number

주소 ID

content[].address.address

String

주소

content[].address.name

String

수령인 이름

content[].accountId

Number

계정 ID

content[].paymentCount

Number

결제 횟수

content[].nextPaymentDate

String

다음 결제일

content[].thisMonthDeliveryCount

Number

이번 달 배송 횟수

content[].address.zipcode

String

우편번호

content[].address.addressDetail

String

상세주소

content[].address.phoneNumber

String

전화번호

content[].address.isDefaultAddress

String

기본 주소 여부

content[].address.addressName

String

주소 별칭

content[].address.createdAt

String

주소 생성일

content[].orderCode

String

주문 코드

content[].type

String

주문 유형

content[].status

String

주문 상태

content[].deliveryStatus

String

배송 상태

content[].perPrice

Number

1회 배송 가격

content[].totalPrice

Number

총 가격

content[].deliveryStartDate

String

배송 시작일

content[].nextDeliveryDate

String

다음 배송일

content[].deliveryEndDate

String

배송 종료일

content[].totalDeliveryCount

Number

총 배송 횟수

content[].remainingDeliveryCount

Number

남은 배송 횟수

content[].orderedProductList[]

Array

주문된 상품 목록

content[].orderedProductList[].productId

Number

주문된 상품 ID

content[].orderedProductList[].productName

String

주문된 상품 이름

content[].orderedProductList[].count

Number

주문된 상품 수량

content[].orderedProductList[].discountRate

Number

할인율

content[].orderedProductList[].price

Number

주문된 상품 가격

content[].orderedProductList[].productImageList

Array

상품 이미지 목록

content[].orderCreatedAt

String

주문 생성일

content[].selectedDayList[]

Array

선택된 요일 목록

content[].selectedWeekOption

Number

선택된 주 옵션

content[].selectedMonthOption

Number

선택된 월 옵션

content[].couponEventId

Number

쿠폰이벤트 ID

content[].couponName

String

쿠폰 이름

content[].couponDiscountRate

Number

쿠폰 할인율

pageable

String

페이지 정보

totalElements

Number

총 주문 수

totalPages

Number

총 페이지 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort.empty

Boolean

정렬이 비어 있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 주문 수

first

Boolean

첫 페이지 여부

empty

Boolean

주문 목록이 비어있는지 여부

회사의 주문 목록 조회

/orders/company/{companyId}

HTTP Request

GET /orders/company/1?page=0&size=10 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1693

{
  "totalElements" : 1,
  "totalPages" : 1,
  "size" : 1,
  "content" : [ {
    "customer" : {
      "id" : 1,
      "name" : "길길",
      "phoneNumber" : "010-1234-5678"
    },
    "address" : {
      "id" : 1,
      "address" : "공릉",
      "name" : "길길",
      "zipcode" : "12345",
      "addressDetail" : "아파트",
      "phoneNumber" : "010-1234-5678",
      "isDefaultAddress" : "Y",
      "addressName" : "집",
      "createdAt" : "2024-08-08T11:05:32.8285585"
    },
    "orderCode" : "123456",
    "orderId" : 1,
    "accountId" : null,
    "type" : "ONETIME",
    "status" : "APPROVED",
    "deliveryStatus" : "IN_PROGRESS",
    "perPrice" : 10000,
    "totalPrice" : 100000,
    "deliveryStartDate" : "2024-08-08",
    "nextDeliveryDate" : "2024-08-09",
    "deliveryEndDate" : "2024-08-15",
    "totalDeliveryCount" : 5,
    "remainingDeliveryCount" : 2,
    "orderedProductList" : [ {
      "productId" : 1,
      "productName" : "Product A",
      "count" : 2,
      "discountRate" : 10,
      "price" : 50000,
      "productImageList" : null
    } ],
    "orderCreatedAt" : "2024-08-08T11:05:32.8285585",
    "selectedDayList" : [ "MON", "WED" ],
    "selectedWeekOption" : 1,
    "selectedMonthOption" : 1,
    "couponEventId" : null,
    "couponName" : null,
    "couponDiscountRate" : null,
    "paymentCount" : null,
    "nextPaymentDate" : null,
    "thisMonthDeliveryCount" : null
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : "INSTANCE",
  "first" : true,
  "last" : true,
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content

Array

주문 목록

content[].orderId

Number

주문 ID

content[].customer

Object

고객 정보

content[].customer.id

Number

고객 ID

content[].accountId

Number

계정 ID

content[].paymentCount

Number

결제 횟수

content[].nextPaymentDate

String

다음 결제일

content[].thisMonthDeliveryCount

Number

이번 달 배송 횟수

content[].customer.name

String

고객 이름

content[].customer.phoneNumber

String

고객 전화번호

content[].address

Object

주소 정보

content[].address.id

Number

주소 ID

content[].address.address

String

주소

content[].address.name

String

수령인 이름

content[].address.zipcode

String

우편번호

content[].address.addressDetail

String

상세 주소

content[].address.phoneNumber

String

전화번호

content[].address.isDefaultAddress

String

기본 주소 여부

content[].address.addressName

String

주소 별칭

content[].address.createdAt

String

주소 생성일

content[].orderCode

String

주문 코드

content[].type

String

주문 유형

content[].status

String

주문 상태

content[].deliveryStatus

String

배송 상태

content[].perPrice

Number

1회 배송 가격

content[].totalPrice

Number

총 가격

content[].deliveryStartDate

String

배송 시작일

content[].nextDeliveryDate

String

다음 배송일

content[].deliveryEndDate

String

배송 종료일

content[].totalDeliveryCount

Number

총 배송 횟수

content[].remainingDeliveryCount

Number

남은 배송 횟수

content[].orderedProductList

Array

주문된 상품 목록

content[].orderedProductList[].productId

Number

상품 ID

content[].orderedProductList[].productName

String

상품 이름

content[].orderedProductList[].count

Number

상품 수량

content[].orderedProductList[].price

Number

상품 가격

content[].orderedProductList[].discountRate

Number

할인율

content[].orderedProductList[].productImageList

Array

상품 이미지 목록

content[].orderCreatedAt

String

주문 생성일

content[].selectedDayList

Array

선택된 요일 목록

content[].selectedWeekOption

Number

선택된 주 옵션

content[].selectedMonthOption

Number

선택된 월 옵션

content[].couponEventId

Number

쿠폰이벤트 ID

content[].couponName

String

쿠폰 이름

content[].couponDiscountRate

Number

쿠폰 할인율

pageable

String

페이지 정보

totalElements

Number

총 주문 수

totalPages

Number

총 페이지 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort

Object

정렬 정보

sort.empty

Boolean

정렬이 비어 있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 주문 수

first

Boolean

첫 페이지 여부

empty

Boolean

주문 목록이 비어있는지 여부

주문 생성

/orders/customers/{customerId}

HTTP Request

POST /orders/customers/1 HTTP/1.1
Content-Type: application/json
Content-Length: 390
Host: localhost:8080

{
  "companyId" : 1,
  "addressId" : 1,
  "accountId" : 1,
  "eventId" : 1,
  "monthOptionValue" : null,
  "weekOptionValue" : null,
  "orderType" : "ONETIME",
  "totalDeliveryCount" : null,
  "deliveryStartDate" : "2024-08-11",
  "orderedProducts" : [ {
    "productId" : 1,
    "count" : 2,
    "discountRate" : 10,
    "price" : 1000
  } ],
  "dayValueTypeList" : null
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 39

success, 생성된 주문 아이디 : 1

주문 취소

/orders/{orderId}/cancel

HTTP Request

POST /orders/1/cancel HTTP/1.1
Content-Type: application/json
Content-Length: 44
Host: localhost:8080

{
  "customerId" : 1,
  "accountId" : 1
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

주문 수동 승인

/orders/{orderId}/approve

HTTP Request

POST /orders/1/approve HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

주문 자동 승인 토글

/orders/auto-approve-toggle/company/{companyId}

HTTP Request

POST /orders/auto-approve-toggle/company/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

주문 상세 조회

/orders/{orderId}

HTTP Request

GET /orders/1 HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1313

{
  "customer" : {
    "id" : 1,
    "name" : "Test Customer",
    "phoneNumber" : "010-1234-5678"
  },
  "address" : {
    "id" : 1,
    "address" : "Test Address",
    "name" : "Test Name",
    "zipcode" : "12345",
    "addressDetail" : "Test Detail",
    "phoneNumber" : "010-1234-5678",
    "isDefaultAddress" : "Y",
    "addressName" : "Home",
    "createdAt" : "2024-08-08T11:05:32.9605602"
  },
  "orderCode" : "123456",
  "orderId" : 1,
  "accountId" : null,
  "type" : "ONETIME",
  "status" : "APPROVED",
  "deliveryStatus" : "IN_PROGRESS",
  "perPrice" : 20000,
  "totalPrice" : 100000,
  "deliveryStartDate" : "2024-08-08",
  "nextDeliveryDate" : "2024-08-09",
  "deliveryEndDate" : "2024-08-15",
  "totalDeliveryCount" : 1,
  "remainingDeliveryCount" : 1,
  "orderedProductList" : [ {
    "productId" : 1,
    "productName" : "Test Product",
    "count" : 2,
    "discountRate" : 10,
    "price" : 50000,
    "productImageList" : null
  } ],
  "orderCreatedAt" : "2024-08-08T11:05:32.9605602",
  "selectedDayList" : null,
  "selectedWeekOption" : null,
  "selectedMonthOption" : null,
  "couponEventId" : null,
  "couponName" : null,
  "couponDiscountRate" : null,
  "paymentCount" : null,
  "nextPaymentDate" : null,
  "thisMonthDeliveryCount" : null
}

정기주문(월 단위) 가격 관련 정보 조회

/orders/month/calculate-price

HTTP Request

POST /orders/month/calculate-price HTTP/1.1
Content-Type: application/json
Content-Length: 158
Host: localhost:8080

{
  "selectedDays" : [ "MON", "WED", "FRI" ],
  "weekOptionValue" : 2,
  "monthOptionValue" : null,
  "perPrice" : 10000,
  "startDate" : "2024-08-08"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 196

{
  "thisMonthDeliveryCount" : 8,
  "thisMonthPrice" : 80000,
  "totalDeliveryCount" : 24,
  "totalPrice" : 240000,
  "deliveryNextDate" : "2024-08-09",
  "deliveryEndDate" : "2024-10-08"
}

Response Fields

Path Type Description

thisMonthDeliveryCount

Number

이번 달 배송 횟수

thisMonthPrice

Number

이번 달 가격

totalDeliveryCount

Number

총 배송 횟수

totalPrice

Number

총 가격

deliveryNextDate

String

다음 배송일

deliveryEndDate

String

배송 종료일

정기주문(횟수 단위) 가격 관련 정보 조회

/orders/count/info

HTTP Request

POST /orders/count/info HTTP/1.1
Content-Type: application/json
Content-Length: 151
Host: localhost:8080

{
  "selectedDays" : [ "TUE", "THU" ],
  "weekOptionValue" : 1,
  "monthOptionValue" : null,
  "perPrice" : 15000,
  "startDate" : "2024-08-08"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 196

{
  "thisMonthDeliveryCount" : 6,
  "thisMonthPrice" : 90000,
  "totalDeliveryCount" : 18,
  "totalPrice" : 270000,
  "deliveryNextDate" : "2024-08-10",
  "deliveryEndDate" : "2024-11-08"
}

Response Fields

Path Type Description

thisMonthDeliveryCount

Number

이번 달 배송 횟수

thisMonthPrice

Number

이번 달 가격

totalDeliveryCount

Number

총 배송 횟수

totalPrice

Number

총 가격

deliveryNextDate

String

다음 배송일

deliveryEndDate

String

배송 종료일

주문한 상품들 재고 체크

/orders/{orderId}/enough-stock

HTTP Request

POST /orders/count/info HTTP/1.1
Content-Type: application/json
Content-Length: 151
Host: localhost:8080

{
  "selectedDays" : [ "TUE", "THU" ],
  "weekOptionValue" : 1,
  "monthOptionValue" : null,
  "perPrice" : 15000,
  "startDate" : "2024-08-08"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 196

{
  "thisMonthDeliveryCount" : 6,
  "thisMonthPrice" : 90000,
  "totalDeliveryCount" : 18,
  "totalPrice" : 270000,
  "deliveryNextDate" : "2024-08-10",
  "deliveryEndDate" : "2024-11-08"
}

Response Fields

Path Type Description

thisMonthDeliveryCount

Number

이번 달 배송 횟수

thisMonthPrice

Number

이번 달 가격

totalDeliveryCount

Number

총 배송 횟수

totalPrice

Number

총 가격

deliveryNextDate

String

다음 배송일

deliveryEndDate

String

배송 종료일

승인되지않은 주문 수 조회

/orders/company/{companyId}/unapproved-count

HTTP Request

GET /orders/company/1/unapproved-count HTTP/1.1
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1

5

Payment(결제내역) [길재현]

해당 회사 결제내역 조회

/payment-histories/company/{companyId}

HTTP Request

GET /payment-histories/company/1?page=0&size=10&orderCode=ORDER123&userName=John&startDate=2023-01-01&endDate=2023-12-31&status=COMPLETE HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 585

{
  "totalElements" : 1,
  "totalPages" : 1,
  "size" : 1,
  "content" : [ {
    "paymentHistoryId" : 1,
    "customerId" : 100,
    "orderCode" : "ORDER123",
    "userName" : "John Doe",
    "price" : 10000,
    "remainingPayCount" : 3,
    "totalCountForPayment" : 5,
    "paymentDate" : "2024-08-08T11:05:34.0055762",
    "status" : "COMPLETE"
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : "INSTANCE",
  "first" : true,
  "last" : true,
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content[]

Array

결제 내역 목록

content[].paymentHistoryId

Number

결제 내역 ID

content[].customerId

Number

고객 ID

content[].orderCode

String

주문 코드

content[].userName

String

사용자 이름

content[].price

Number

결제 금액

content[].remainingPayCount

Number

남은 결제 횟수

content[].totalCountForPayment

Number

총 결제해야 하는 횟수

content[].paymentDate

String

결제 일시

content[].status

String

결제 상태

pageable

String

페이지 정보

totalElements

Number

총 결제 내역 수

totalPages

Number

총 페이지 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort

Object

정렬 정보

sort.empty

Boolean

정렬이 비어 있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 결제 내역 수

first

Boolean

첫 페이지 여부

empty

Boolean

결제 내역이 비어있는지 여부

해당 주문 결제내역 조회

/payment-histories/orders/{orderId}

HTTP Request

GET /payment-histories/orders/1?page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 730

{
  "totalElements" : 1,
  "totalPages" : 1,
  "size" : 1,
  "content" : [ {
    "paymentHistoryId" : 1,
    "price" : 10000,
    "remainingPayCount" : 3,
    "totalCountForPayment" : 5,
    "paymentDate" : "2024-08-08T11:05:34.0415751",
    "status" : "COMPLETE",
    "accountNumber" : "1234-5678-9012-3456",
    "orderType" : "ONETIME",
    "thisSubMonthStartDate" : "2024-08-08",
    "thisSubMonthEndDate" : "2024-09-08",
    "deliveryPerPrice" : 2000,
    "thisMonthDeliveryCount" : 4
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : "INSTANCE",
  "first" : true,
  "last" : true,
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content[]

Array

결제 내역 상세 목록

content[].paymentHistoryId

Number

결제 내역 ID

content[].price

Number

결제 금액

content[].remainingPayCount

Number

남은 결제 횟수

content[].totalCountForPayment

Number

총 결제해야 하는 횟수

content[].paymentDate

String

결제 일시

content[].status

String

결제 상태

content[].accountNumber

String

계좌 번호

content[].orderType

String

주문 타입

content[].thisSubMonthStartDate

String

이번 구독 월 시작일

content[].thisSubMonthEndDate

String

이번 구독 월 종료일

content[].deliveryPerPrice

Number

배송당 가격

content[].thisMonthDeliveryCount

Number

이번 달 배송 횟수

pageable

String

페이지 정보

totalElements

Number

총 결제 내역 상세 수

totalPages

Number

총 페이지 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort

Object

정렬 정보

sort.empty

Boolean

정렬이 비어 있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 결제 내역 상세 수

first

Boolean

첫 페이지 여부

empty

Boolean

결제 내역 상세가 비어있는지 여부

Product(상품) [이재아]

상품 목록 조회

/products

HTTP Request

GET /products?companyId=1&page=0&size=10&deliveryType=%EC%A0%84%EC%B2%B4&isDiscount=%EC%A0%84%EC%B2%B4&categoryName=%EC%A0%84%EC%B2%B4&isVisible=%EC%A0%84%EC%B2%B4&productName= HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 843

{
  "totalElements" : 1,
  "totalPages" : 1,
  "size" : 10,
  "content" : [ {
    "productId" : 1,
    "code" : 1,
    "thumbnailImage" : "thumbnail.jpg",
    "name" : "Product Name",
    "categoryName" : null,
    "isVisible" : null,
    "cost" : 0,
    "stock" : 0,
    "deliveryType" : null,
    "previousMonthSales" : 0,
    "isDiscount" : null,
    "discountRate" : 0,
    "discountedPrice" : 0
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "unsorted" : true,
      "sorted" : false
    },
    "offset" : 0,
    "unpaged" : false,
    "paged" : true
  },
  "first" : true,
  "last" : true,
  "numberOfElements" : 1,
  "empty" : false
}

Response Fields

Path Type Description

content

Array

상품 목록

content[].productId

Number

상품 ID

content[].code

Number

상품 코드

content[].name

String

상품 이름

content[].thumbnailImage

String

썸네일 이미지

content[].categoryName

String

카테고리 이름

content[].isVisible

String

노출 여부

content[].cost

Number

가격

content[].stock

Number

재고

content[].deliveryType

String

배송 타입

content[].previousMonthSales

Number

이전 달 판매량

content[].isDiscount

String

할인 여부

content[].discountRate

Number

할인율

content[].discountedPrice

Number

할인된 가격

pageable

Object

페이지 정보

pageable.sort

Object

정렬 정보

pageable.sort.empty

Boolean

정렬 정보가 비어있는지 여부

pageable.sort.sorted

Boolean

정렬되었는지 여부

pageable.sort.unsorted

Boolean

정렬되지 않았는지 여부

pageable.offset

Number

오프셋

pageable.pageNumber

Number

페이지 번호

pageable.pageSize

Number

페이지 크기

pageable.paged

Boolean

페이지된 여부

pageable.unpaged

Boolean

페이지되지 않은 여부

totalPages

Number

전체 페이지 수

totalElements

Number

전체 요소 수

last

Boolean

마지막 페이지 여부

size

Number

페이지 크기

number

Number

현재 페이지 번호

sort

Object

정렬 정보

sort.empty

Boolean

정렬 정보가 비어있는지 여부

sort.sorted

Boolean

정렬되었는지 여부

sort.unsorted

Boolean

정렬되지 않았는지 여부

numberOfElements

Number

현재 페이지의 요소 수

first

Boolean

첫 페이지 여부

empty

Boolean

결과가 비어있는지 여부

상품 상세 조회

/products/{productId}

HTTP Request

GET /products/1?companyId=1 HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 549

{
  "productId" : 0,
  "code" : 1,
  "name" : "Product Name",
  "categoryName" : "Category",
  "productInformation" : "Product Information",
  "detailImages" : [ "detail1.jpg", "detail2.jpg" ],
  "cost" : 10000,
  "isDiscount" : "N",
  "discountStartDate" : null,
  "discountEndDate" : null,
  "discountRate" : 0,
  "discountedPrice" : 10000,
  "thumbnailImage" : "thumbnail.jpg",
  "listImages" : [ "list1.jpg", "list2.jpg" ],
  "isVisible" : "Y",
  "deliveryType" : "SUBSCRIPTION",
  "stock" : 100,
  "previousMonthSales" : 10
}
Response Fields
Path Type Description

productId

Number

상품 ID

code

Number

상품 코드

name

String

상품 이름

categoryName

String

카테고리 이름

productInformation

String

상품 정보

detailImages

Array

상세 이미지

cost

Number

가격

isDiscount

String

할인 여부

discountStartDate

String

할인 시작일

discountEndDate

String

할인 종료일

discountRate

Number

할인율

discountedPrice

Number

할인된 가격

thumbnailImage

String

썸네일 이미지

listImages

Array

리스트 이미지

isVisible

String

노출 여부

deliveryType

String

배송 타입

stock

Number

재고

previousMonthSales

Number

이전 달 판매량

상품 생성

/products

HTTP Request

POST /products HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

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

{"companyId":1,"name":"Product Name","categoryName":"Category","productInformation":"Product Information","detailImages":["detail1.jpg","detail2.jpg"],"cost":10000,"isDiscount":"N","discountStartDate":null,"discountEndDate":null,"discountRate":0,"thumbnailImage":"thumbnail.jpg","listImages":["list1.jpg","list2.jpg"],"deliveryType":"SUBSCRIPTION","stock":100,"isVisible":"Y"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=thumbnailImage; filename=thumbnail.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=listImages; filename=list1.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=listImages; filename=list2.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=detailImages; filename=detail1.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=detailImages; filename=detail2.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

HTTP Response

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

상품 수정

/products/{productId}

HTTP Request

PUT /products/1 HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: localhost:8080

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

{"companyId":1,"name":"Product Name","categoryName":"Category","productInformation":"Product Information","detailImages":["detail1.jpg","detail2.jpg"],"cost":10000,"isDiscount":"N","discountStartDate":null,"discountEndDate":null,"discountRate":0,"thumbnailImage":"thumbnail.jpg","listImages":["list1.jpg","list2.jpg"],"deliveryType":"SUBSCRIPTION","stock":100,"isVisible":"Y"}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=thumbnailImage; filename=thumbnail.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=listImages; filename=list1.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=listImages; filename=list2.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=detailImages; filename=detail1.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=detailImages; filename=detail2.jpg
Content-Type: image/jpeg

image content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

HTTP Response

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

상품 삭제

/products/{productId}

HTTP Request

DELETE /products/1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: localhost:8080
Content-Length: 102

_csrf=jJr8sdZg0nsa2JKt6EYU7lFItJskmk8nqGilq1TlNCRfoN7I6qrFgeJTsUI34aGb22sg2WQumfkXqCoKkQ6SnDHSBUdrluj_

HTTP Response

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

Product (상품) - 회원화면 [ 김현주 ]

사업체별 상품 목록 조회

/products/company/{companyId}

HTTP Request

GET /products/company/1?deliveryType=ONETIME&page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1065

{
  "totalElements" : 2,
  "totalPages" : 1,
  "size" : 10,
  "content" : [ {
    "productId" : 1,
    "name" : "product1",
    "categoryName" : "category1",
    "deliveryType" : "ONETIME",
    "cost" : 1000,
    "isDiscount" : "N",
    "discountRate" : 0,
    "discountedPrice" : 1000,
    "thumbnailImage" : "thumbnail1",
    "stock" : 100
  }, {
    "productId" : 2,
    "name" : "product2",
    "categoryName" : "category2",
    "deliveryType" : "ONETIME",
    "cost" : 2000,
    "isDiscount" : "Y",
    "discountRate" : 10,
    "discountedPrice" : 1800,
    "thumbnailImage" : "thumbnail2",
    "stock" : 200
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "unsorted" : true,
      "sorted" : false
    },
    "offset" : 0,
    "unpaged" : false,
    "paged" : true
  },
  "first" : true,
  "last" : true,
  "numberOfElements" : 2,
  "empty" : false
}

Response Fields

Path Type Description

content[].productId

Number

상품 ID

content[].name

String

상품 이름

content[].categoryName

String

카테고리 이름

content[].deliveryType

String

배송 타입

content[].cost

Number

가격

content[].isDiscount

String

할인 여부

content[].discountRate

Number

할인율

content[].discountedPrice

Number

할인된 가격

content[].thumbnailImage

String

썸네일 이미지 URL

content[].stock

Number

재고

사업체별 상품 목록 조회 (카테고리 필터링)

/products/company/{companyId}?categoryId={categoryId}

HTTP Request

GET /products/company/1?deliveryType=ONETIME&categoryId=2&page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1065

{
  "totalElements" : 2,
  "totalPages" : 1,
  "size" : 10,
  "content" : [ {
    "productId" : 1,
    "name" : "product1",
    "categoryName" : "category1",
    "deliveryType" : "ONETIME",
    "cost" : 1000,
    "isDiscount" : "N",
    "discountRate" : 0,
    "discountedPrice" : 1000,
    "thumbnailImage" : "thumbnail1",
    "stock" : 100
  }, {
    "productId" : 2,
    "name" : "product2",
    "categoryName" : "category2",
    "deliveryType" : "ONETIME",
    "cost" : 2000,
    "isDiscount" : "Y",
    "discountRate" : 10,
    "discountedPrice" : 1800,
    "thumbnailImage" : "thumbnail2",
    "stock" : 200
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "unsorted" : true,
      "sorted" : false
    },
    "offset" : 0,
    "unpaged" : false,
    "paged" : true
  },
  "first" : true,
  "last" : true,
  "numberOfElements" : 2,
  "empty" : false
}

Response Fields

Path Type Description

content[].productId

Number

상품 ID

content[].name

String

상품 이름

content[].categoryName

String

카테고리 이름

content[].deliveryType

String

배송 타입

content[].cost

Number

가격

content[].isDiscount

String

할인 여부

content[].discountRate

Number

할인율

content[].discountedPrice

Number

할인된 가격

content[].thumbnailImage

String

썸네일 이미지 URL

content[].stock

Number

재고

ContractCompany(계약 회사) [김준석]

계약 사업체 등록

/contract-company/register

계약 사업체를 등록한다.

HTTP Request

POST /contract-company/register?_csrf=WBsaRZN8jpw5vCyDGHMjirFQwEdAFQmdXLhTGYPwy-BLAY3faCopd_JNuf0U2Bm0fF4X6IFp7X90LW2wa4s2IeXJ8tl9YLi5 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 174
Host: localhost:8080

{
  "contractCompanyName" : "Test Company",
  "businessRegistrationNumber" : "123-45-67890",
  "contractAuthId" : "testauth",
  "contractAuthPassword" : "Password123!"
}

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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 16

{
  "id" : 1
}

Request Fields

Path Type Description

contractCompanyName

String

계약 사업체 이름

businessRegistrationNumber

String

사업자 등록 번호

contractAuthId

String

계약 인증 ID

contractAuthPassword

String

계약 인증 비밀번호

Response Fields

Path Type Description

id

Number

생성된 계약 사업체 ID

계약 사업체 인증

/contract-company/authenticate

계약 사업체를 인증한다.

HTTP Request

POST /contract-company/authenticate?_csrf=JGnFePl11PCIGqN7FDS2x0xXrYYJ-0BM9oiYZ6XWJoQMTLfUQlCmHs9M5sSlKJRJJBmCoX40gL45zHZhx7ygVsflFuZqf9Xg HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 81
Host: localhost:8080

{
  "contractAuthId" : "testauth",
  "contractAuthPassword" : "Password123!"
}

HTTP Response

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

{
  "companyId" : 1,
  "contractCompanyName" : "Test Company",
  "businessRegistrationNumber" : "123-45-67890"
}

Request Fields

Path Type Description

contractAuthId

String

계약 인증 ID

contractAuthPassword

String

계약 인증 비밀번호

Response Fields

Path Type Description

companyId

Number

회사 ID

contractCompanyName

String

계약 사업체 이름

businessRegistrationNumber

String

사업자 등록 번호

Client(고객) [김준석]

고객 회원가입

POST /clients/signup

고객 회원가입을 수행합니다.

HTTP Request

POST /clients/signup?_csrf=cRJnofBtKl7qdEteKi0QTQTGyVjZ595MK7jSQ0d2fwbh-9d1QidTkcBZGWzHEXhsGAAkdD305GC91OthE962cCRDSDbQzO4W HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 166
Host: localhost:8080

{
  "companyId" : 1,
  "username" : "testuser",
  "password" : "Password123!",
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "permissions" : [ ]
}

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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 16

{
  "id" : 1
}

Request Fields

Path Type Description

companyId

Number

회사 ID

username

String

사용자명

password

String

비밀번호

name

String

이름

phoneNumber

String

전화번호

permissions

Array

권한 목록

Response Fields

Path Type Description

id

Number

생성된 고객 ID

고객 아이디 중복 확인

POST /clients/duplicate-check-id

고객 아이디의 중복 여부를 확인합니다.

HTTP Request

POST /clients/duplicate-check-id?_csrf=aOKMv7nqIk_Sgkq06HAkxwKG1_J4VkyndWW3dXoV_Od7JagmWtPoj4jZG37_u3KM210QozW--pBNYSiKRwCGQU53ztBJFZFD HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 31
Host: localhost:8080

{
  "username" : "testuser"
}

HTTP Response

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

{
  "available" : true
}

Request Fields

Path Type Description

username

String

확인할 사용자명

Response Fields

Path Type Description

available

Boolean

사용 가능 여부

회원가입 SMS 인증번호 전송

POST /clients/signup/verify-code/send

회원가입을 위한 SMS 인증번호를 전송합니다.

HTTP Request

POST /clients/signup/verify-code/send?_csrf=792wm1oXpRE-7tUKqUSP9jn9s5v1wP0jcIXFvEeeXE4enbc41uuG-WJ2kicT2ew5zGm7wA2bnvmWpcwORrykiCamaC8ur4Re HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 57
Host: localhost:8080

{
  "companyId" : 1,
  "phoneNumber" : "01012345678"
}

HTTP Response

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

true

Request Fields

Path Type Description

companyId

Number

회사 ID

phoneNumber

String

전화번호

회원가입 SMS 인증번호 확인

POST /clients/signup/verify-code

회원가입을 위해 전송된 SMS 인증번호를 확인합니다.

HTTP Request

POST /clients/signup/verify-code?_csrf=gfepUsWcYP2alAkZ4U54ozm4btexRnP3nXL1UoVV_H2iLacr5MDIM6CsUc23pWov12NMxguKQ7bXckTaqUSWarFizBjAHp5N HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 110
Host: localhost:8080

{
  "companyId" : 1,
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "authNumber" : "123456"
}

HTTP Response

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

true

Request Fields

Path Type Description

companyId

Number

회사 ID

name

String

이름

phoneNumber

String

전화번호

authNumber

String

인증번호

현재 고객 정보 조회

GET /clients/me

현재 로그인한 고객의 정보를 조회합니다.

HTTP Request

GET /clients/me?_csrf=kR5HY72ac74q6uHBULa1csrYYOl_C8OTkEOPVX8uxn5ssSiCqSxwUYWjEokHi9GgZpuBQ6zuTYsbM6C-pHO5YR0c8kdahE7k HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 193

{
  "data" : {
    "id" : 1,
    "companyId" : 1,
    "name" : "Test User",
    "userRole" : "ROLE_CLIENT",
    "contractCompanyName" : "Test Company",
    "isAutoApproved" : "Y"
  }
}

Response Fields

Path Type Description

data.id

Number

고객 ID

data.companyId

Number

회사 ID

data.name

String

이름

data.userRole

String

사용자 역할

data.contractCompanyName

String

계약 회사명

data.isAutoApproved

String

자동 승인 여부

고객 아이디 찾기

POST /clients/find-id

고객의 아이디를 찾습니다.

HTTP Request

POST /clients/find-id?_csrf=vDi_CA7AKGY3jxHku0fOZczatKlb2EFvpxsdZK1q1qTHgPvn31yNbT70TVMavSeCimr6Ufnimchsu3BClit_U51c5JWksJmE HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 90
Host: localhost:8080

{
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "authNumber" : "123456"
}

HTTP Response

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

{
  "username" : "testuser"
}

Request Fields

Path Type Description

name

String

이름

phoneNumber

String

전화번호

authNumber

String

인증번호

Response Fields

Path Type Description

username

String

찾은 사용자명

고객 아이디 찾기 SMS 인증번호 요청

POST /clients/find-id/send

고객 아이디 찾기를 위한 SMS 인증번호를 요청합니다.

HTTP Request

POST /clients/find-id/send?_csrf=bAkk3FJ0wtrGgWYZ-TAATuVncuEwfv7lMVvyilFouHI8Omh0Dm8QuWUXp-zruQcomx00eoBSX4AAR8zIVGiRvWVbjkYNCgpG HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 62
Host: localhost:8080

{
  "name" : "Test User",
  "phoneNumber" : "01012345678"
}

HTTP Response

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

{
  "success" : "인증 번호가 성공적으로 발송되었습니다."
}

Request Fields

Path Type Description

name

String

이름

phoneNumber

String

전화번호

Response Fields

Path Type Description

success

String

성공 메시지

고객 비밀번호 찾기

POST /clients/find-password

고객의 비밀번호를 찾습니다.

HTTP Request

POST /clients/find-password?_csrf=ECbYjsAFY-Ys0BhuAdbbEN1P07jVHfDaRM_5SYegnW8wIcdfJ0S9t6U9VIQB5yhaZPvvJ-4s_oHkLJT3dPbNKreRpA5WGfQ5 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 118
Host: localhost:8080

{
  "username" : "testuser",
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "authNumber" : "123456"
}

HTTP Response

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

{
  "token" : "resetToken"
}

Request Fields

Path Type Description

username

String

사용자명

name

String

이름

phoneNumber

String

전화번호

authNumber

String

인증번호

Response Fields

Path Type Description

token

String

비밀번호 재설정 토큰

고객 비밀번호 찾기 SMS 인증번호 요청

POST /clients/find-password/send

고객 비밀번호 찾기를 위한 SMS 인증번호를 요청합니다.

HTTP Request

POST /clients/find-password/send?_csrf=wb7zfxl7wppJaAVQchZN3vtDYLc17z-GtUN8BPJfPfUX23SC992RR3sdp6xkXzQzFDt5vMkiTY9TjF6rg3cZMJc5DZFy6kW7 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 90
Host: localhost:8080

{
  "username" : "testuser",
  "name" : "Test User",
  "phoneNumber" : "01012345678"
}

HTTP Response

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

{
  "success" : "인증 번호가 성공적으로 발송되었습니다."
}

Request Fields

Path Type Description

username

String

사용자명

name

String

이름

phoneNumber

String

전화번호

Response Fields

Path Type Description

success

String

성공 메시지

고객 비밀번호 변경

POST /clients/change-password

고객의 비밀번호를 변경합니다.

HTTP Request

POST /clients/change-password?_csrf=ZNG1q8BhAOJmVgfn00vb-QKpwm61fPw9dmb7aw2vUxmrmOxdV7DUk_lUMdBLbjLS5GbvzWee71aBSsQQQ1LJWDvOYyqa_tll HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 68
Host: localhost:8080

{
  "token" : "resetToken",
  "newPassword" : "NewPassword123!"
}

HTTP Response

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

{
  "success" : "비밀번호가 성공적으로 변경되었습니다."
}

Request Fields

Path Type Description

token

String

비밀번호 재설정 토큰

newPassword

String

새 비밀번호

Response Fields

Path Type Description

success

String

성공 메시지

Customer(회원) [김준석]

회원 회원가입

POST /api/customers/signup 회원 회원가입을 수행합니다.

HTTP Request

POST /api/customers/signup?_csrf=e2QaGjWCjAInri1Jt7XilJj-35_u1HuZBuzWZTTRTvgcH4K0SgF_flSz6DMKmkgq0ZjWramb8qbc4x20Ytm1AwDjfMAufLrX HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 142
Host: localhost:8080

{
  "companyId" : 1,
  "username" : "testuser",
  "password" : "password123!",
  "name" : "Test User",
  "phoneNumber" : "01012345678"
}

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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 16

{
  "id" : 1
}

Request Fields

Path Type Description

companyId

Number

회사 ID

username

String

사용자명

password

String

비밀번호

name

String

이름

phoneNumber

String

전화번호

Response Fields

Path Type Description

id

Number

생성된 회원 ID

회원 아이디 중복 확인

POST /api/customers/duplicate-check-id 회원 아이디의 중복 여부를 확인합니다.

HTTP Request

POST /api/customers/duplicate-check-id?_csrf=-3_N80U6dtlgDmAZze1jKpabrZ7WvxmJYcQxT3tchmUqPTRPnxv-xH1YFe1NaFV69cBXEqf6gP_h2SikWPUDKUJpsVZMCwV9 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 51
Host: localhost:8080

{
  "username" : "testuser",
  "companyId" : 1
}

HTTP Response

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

{
  "available" : true
}

Request Fields

Path Type Description

companyId

Number

회사 ID

username

String

확인할 사용자명

Response Fields

Path Type Description

available

Boolean

사용 가능 여부

회원가입 SMS 인증번호 전송

POST /api/customers/signup/verify-code/send

회원가입을 위한 SMS 인증번호를 전송합니다.

HTTP Request

POST /api/customers/signup/verify-code/send?_csrf=hcwI3YTnXd-KJxHf-JqO6mH_PC4cutiCtyViWUqoeVOo9agz56gw5bLRO7ynHnK7nre6i1jKEUwrg-2v1RBTbiycTGKYxJpW HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 57
Host: localhost:8080

{
  "companyId" : 1,
  "phoneNumber" : "01012345678"
}

HTTP Response

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

true

Request Fields

Path Type Description

companyId

Number

회사 ID

phoneNumber

String

전화번호

회원가입 SMS 인증번호 확인

POST /api/customers/signup/verify-code

회원가입을 위해 전송된 SMS 인증번호를 확인합니다.

HTTP Request

POST /api/customers/signup/verify-code?_csrf=qNJXb231YE6bD9coG3Br7EXvoo1TW2jPTFFH2yAFnjNH6IN_zLE1C1iRVH22PeMZLF1f3ifYj7VgOVrieTN160Rg_wZz2bdP HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 110
Host: localhost:8080

{
  "companyId" : 1,
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "authNumber" : "123456"
}

HTTP Response

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

true

Request Fields

Path Type Description

companyId

Number

회사 ID

name

String

이름

phoneNumber

String

전화번호

authNumber

String

인증번호

현재 회원 정보 조회

GET /api/customers/me 현재 로그인한 회원의 정보를 조회합니다.

HTTP Request

GET /api/customers/me?_csrf=5HAKF1DOurulDtB_ofEG_n9tWXkADGzmKDPOa4Kr0uh1mnyE1kg4dWCo29iIOOdKldwyyxkJdBhhPFrLH1CtWLPI5dsR-US9 HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 118

{
  "data" : {
    "id" : 1,
    "companyId" : 1,
    "name" : "Test User",
    "customerType" : "NORMAL"
  }
}

Response Fields

Path Type Description

data.id

Number

회원 ID

data.companyId

Number

회사 ID

data.name

String

이름

data.customerType

String

회원 유형

회원 아이디 찾기

POST /api/customers/find-id

회원의 아이디를 찾습니다.

HTTP Request

POST /api/customers/find-id?_csrf=rilroHw4d69XKpuwnAOoQHT_zI7yD4FWGcEdiddUR7AGko3RyEpSw0wJT8l6HqLVqy6ccBKd4eyUP7Z7LPIqvLE1cocyor20 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 110
Host: localhost:8080

{
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "authNumber" : "123456",
  "companyId" : 1
}

HTTP Response

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

{
  "username" : "testuser"
}

Request Fields

Path Type Description

companyId

Number

회사 ID

name

String

이름

phoneNumber

String

전화번호

authNumber

String

인증번호

Response Fields

Path Type Description

username

String

찾은 사용자명

회원 아이디 찾기 SMS 인증번호 요청

POST /api/customers/find-id/send

회원 아이디 찾기를 위한 SMS 인증번호를 요청합니다.

HTTP Request

POST /api/customers/find-id/send?_csrf=gpkHNUXNUlXhuHjqp-VOcVbWhaO2aezk5EcRaDJ-n8t2zM8es6piUXz0Y2XMih3SlMh6QzDmqMGEDNTJhiN1WABM-vhA9Pws HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 82
Host: localhost:8080

{
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "companyId" : 1
}

HTTP Response

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

{
  "success" : "인증 번호가 성공적으로 발송되었습니다."
}

Request Fields

Path Type Description

companyId

Number

회사 ID

name

String

이름

phoneNumber

String

전화번호

Response Fields

Path Type Description

success

String

성공 메시지

회원 비밀번호 찾기

POST /api/customers/find-password

회원의 비밀번호를 찾습니다.

HTTP Request

POST /api/customers/find-password?_csrf=32p2ypMI7Xqvz5NnbNnL9-YWqQ8UJP_K4mCGpepXMY1xFiTe6lNF-vdt3kiC-aRUCvT_kYMihDcjEsvnh1aznd9nBe5GIRy4 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 138
Host: localhost:8080

{
  "username" : "testuser",
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "authNumber" : "123456",
  "companyId" : 1
}

HTTP Response

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

{
  "token" : "token123"
}

Request Fields

Path Type Description

companyId

Number

회사 ID

username

String

사용자명

name

String

이름

phoneNumber

String

전화번호

authNumber

String

인증번호

Response Fields

Path Type Description

token

String

비밀번호 재설정 토큰

회원 비밀번호 찾기 SMS 인증번호 요청

POST /api/customers/find-password/send

회원 비밀번호 찾기를 위한 SMS 인증번호를 요청합니다.

HTTP Request

POST /api/customers/find-password/send?_csrf=D3rvhbQw8iM2pNr4tJLzOJjzO3h1cwnaO6X_GG_NwnZdblpjPE7Xt4VTkBAbnO-eh7_HXKzDFhpBFWz3DJOdew70o0VlXT8F HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 110
Host: localhost:8080

{
  "username" : "testuser",
  "name" : "Test User",
  "phoneNumber" : "01012345678",
  "companyId" : 1
}

HTTP Response

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

{
  "success" : "인증 번호가 성공적으로 발송되었습니다."
}

Request Fields

Path Type Description

companyId

Number

회사 ID

username

String

사용자명

name

String

이름

phoneNumber

String

전화번호

Response Fields

Path Type Description

success

String

성공 메시지

회원 비밀번호 변경

POST /api/customers/change-password

회원의 비밀번호를 변경합니다.

HTTP Request

POST /api/customers/change-password?_csrf=RQR2ksIn0PV0lJg_qxqYP55b9qFS0vco24pEjGJohcwHYEJ9fTBOovEUsZZZ9v1dyTesCa8625g35cMF4r4m6VtZsq03WSAc HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 66
Host: localhost:8080

{
  "token" : "token123",
  "newPassword" : "newPassword123!"
}

HTTP Response

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

{
  "success" : "비밀번호가 성공적으로 변경되었습니다."
}

Request Fields

Path Type Description

token

String

비밀번호 재설정 토큰

newPassword

String

새 비밀번호

Response Fields

Path Type Description

success

String

성공 메시지

회원 등록

POST /api/customers/self

회원을 등록합니다.

HTTP Request

POST /api/customers/self?_csrf=4oUjMaE2CqRcMg2wOIs0W_9RvmzjiHjgylxVqXGxZIWP2vIzg-MQAcNVP5RxVjvUXaYAa5plk1WFu0nNrDhkkBOBVua76cQB HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 70
Host: localhost:8080

{
  "customerName" : "Test User",
  "phoneNumber" : "01012345678"
}

HTTP Response

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

{
  "customerId" : 1,
  "customerUsername" : "testuser",
  "customerName" : "Test User",
  "customerPhoneNumber" : "01012345678",
  "customerCreatedAt" : "2023-06-01",
  "customerType" : "NEW",
  "latestDeliveryDate" : null
}

Request Fields

Path Type Description

customerName

String

회원 이름

phoneNumber

String

전화번호

Response Fields

Path Type Description

customerId

Number

회원 ID

customerUsername

String

사용자명

customerName

String

회원 이름

customerPhoneNumber

String

전화번호

customerCreatedAt

String

생성일

customerType

String

회원 유형

latestDeliveryDate

Null

최근 배송일

회원 정보 조회

GET /api/customers/{id}

특정 회원의 정보를 조회합니다.

HTTP Request

GET /api/customers/1?_csrf=-8r92wCEuZTFUp-i69beiIxtUhRtreywRu_LfHKDFADn1NPazfKf42GwjfDoYKaUivvq6e1Ufy1cn4idctr-GEOzJTLe5ePi HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 236

{
  "customerId" : 1,
  "customerUsername" : "testuser",
  "customerName" : "Test User",
  "customerPhoneNumber" : "01012345678",
  "customerCreatedAt" : "2023-06-01",
  "customerType" : "NORMAL",
  "latestDeliveryDate" : null
}

Path Parameters

Table 5. /api/customers/{id}
Parameter Description

id

회원 ID

Response Fields

Path Type Description

customerId

Number

회원 ID

customerUsername

String

사용자명

customerName

String

회원 이름

customerPhoneNumber

String

전화번호

customerCreatedAt

String

생성일

customerType

String

회원 유형

latestDeliveryDate

Null

최근 배송일

회원 정보 수정

PUT /api/customers/{id}

특정 회원의 정보를 수정합니다. === HTTP Request

PUT /api/customers/1?_csrf=dHYIpAXTR5ZdzRdScleISQ22A4OdxyfUYq5PlOQsYgHtJnrGEUU9xWTlc6Fw_HRmQ3q8eTWALruppRf5Vpd39odJBDHcHk-i HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 73
Host: localhost:8080

{
  "customerName" : "Updated User",
  "phoneNumber" : "01087654321"
}

HTTP Response

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

success

Path Parameters

Table 6. /api/customers/{id}
Parameter Description

id

회원 ID

Request Fields

Path Type Description

customerName

String

수정할 회원 이름

phoneNumber

String

수정할 전화번호

Customer(회원) - 회원화면 [이재아]

마이페이지 회원 정보 조회

GET /api/customers/mypage/{id}

마이페이지에서 회원의 정보를 조회합니다.

HTTP Request

GET /api/customers/mypage/1?_csrf=GJTYQEx2L8shLLkXx5yjMYf9btiPAI-W13sidwp3qmJ6aSgcfaXpdygUGq4MT44hobGXBb-fQ7q-Nrq7sUwVEjhEz1tOXRsr HTTP/1.1
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
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 58

{
  "name" : "Test User",
  "customerType" : "NORMAL"
}

Path Parameters

Table 7. /api/customers/mypage/{id}
Parameter Description

id

회원 ID

Response Fields

Path Type Description

name

String

회원 이름

customerType

String

회원 유형

인증 코드 전송

POST /api/customers/{id}/send-auth-code

특정 회원에게 인증 코드를 전송합니다.

HTTP Request

POST /api/customers/1/send-auth-code?_csrf=i2zMe9_2X8oDaNu8SV8vYwRt2LgIHjtsqVhXHGMeyywc6D-W6V_6GL3Hav4uCuKNKnIbUWdZ9YEwJwtByGllLlAp_B9-iVqm HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 83
Host: localhost:8080

{
  "customerId" : 1,
  "name" : "Test User",
  "phoneNumber" : "01012345678"
}

HTTP Response

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

Path Parameters

Table 8. /api/customers/{id}/send-auth-code
Parameter Description

id

회원 ID

Request Fields

Path Type Description

customerId

Number

회원 ID

name

String

회원 이름

phoneNumber

String

전화번호

인증 코드 확인

POST /api/customers/{id}/verify-auth-code

특정 회원의 인증 코드를 확인합니다.

HTTP Request

POST /api/customers/1/verify-auth-code?_csrf=nT2B9wknNVAY-iR0V27K0YodOzawq9TccMo5YWldAHvJ9viTqgvikjEUVjM1whcQYkP-5LMoFlSDm-XxQvIIUlg_ZBivxcz3 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 50
Host: localhost:8080

{
  "customerId" : 1,
  "authCode" : "123456"
}

HTTP Response

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

Path Parameters

Table 9. /api/customers/{id}/verify-auth-code
Parameter Description

id

회원 ID

Request Fields

Path Type Description

customerId

Number

회원 ID

authCode

String

인증 코드

Cart(장바구니) [ 김현주 ]

장바구니 목록 조회

/api/cart/{cartType}

HTTP Request

GET /api/cart/ONETIME HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 611

[ {
  "productId" : 1,
  "name" : "Product 1",
  "categoryName" : "Category 1",
  "deliveryType" : "ONETIME",
  "cost" : 1000,
  "quantity" : 2,
  "isDiscount" : "Y",
  "discountRate" : 10,
  "discountedPrice" : 900,
  "thumbnailImage" : "image1.jpg",
  "stock" : 50,
  "isVisible" : "Y"
}, {
  "productId" : 2,
  "name" : "Product 2",
  "categoryName" : "Category 2",
  "deliveryType" : "SUBSCRIPTION",
  "cost" : 2000,
  "quantity" : 1,
  "isDiscount" : "Y",
  "discountRate" : 0,
  "discountedPrice" : 2000,
  "thumbnailImage" : "image2.jpg",
  "stock" : 30,
  "isVisible" : "Y"
} ]

Response Fields

Path Type Description

[].productId

Number

상품 ID

[].name

String

상품 이름

[].categoryName

String

카테고리 이름

[].deliveryType

String

배송 유형

[].cost

Number

상품 가격

[].quantity

Number

상품 수량

[].isDiscount

String

할인 여부

[].discountRate

Number

할인율

[].discountedPrice

Number

할인된 가격

[].thumbnailImage

String

썸네일 이미지

[].stock

Number

재고

[].isVisible

String

노출 여부

장바구니에 상품 추가

/api/cart/add/{cartType}

HTTP Request

POST /api/cart/add/ONETIME?productId=1&quantity=2 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

장바구니에서 상품 제거

/api/cart/remove/{cartType}/{productId}

HTTP Request

DELETE /api/cart/remove/ONETIME/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

장바구니 전체 삭제

/api/cart/clear/{cartType}

HTTP Request

POST /api/cart/clear/ONETIME HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

장바구니 상품 수량 증가

/api/cart/increase/{cartType}/{productId}

HTTP Request

POST /api/cart/increase/ONETIME/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

장바구니 상품 수량 감소

/api/cart/decrease/{cartType}/{productId}

HTTP Request

POST /api/cart/decrease/ONETIME/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

Event(이벤트) [ 김현주 ]

이벤트 목록 조회

/events

HTTP Request

GET /events?startDate=2024-07-22&endDate=2024-08-06&page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 994

{
  "totalElements" : 2,
  "totalPages" : 1,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "couponName" : "event1",
    "couponDiscountRate" : 10,
    "targetCustomerType" : "ALL",
    "eventStartDate" : "2024-07-22",
    "eventEndDate" : "2024-08-06",
    "state" : "ONGOING",
    "totalQuantity" : 100
  }, {
    "id" : 2,
    "couponName" : "event2",
    "couponDiscountRate" : 20,
    "targetCustomerType" : "NEW",
    "eventStartDate" : "2024-07-24",
    "eventEndDate" : "2024-08-04",
    "state" : "ONGOING",
    "totalQuantity" : 200
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "unsorted" : true,
      "sorted" : false
    },
    "offset" : 0,
    "unpaged" : false,
    "paged" : true
  },
  "first" : true,
  "last" : true,
  "numberOfElements" : 2,
  "empty" : false
}

Response Fields

Path Type Description

content[].id

Number

이벤트 ID

content[].couponName

String

쿠폰 이름

content[].couponDiscountRate

Number

쿠폰 할인율

content[].targetCustomerType

String

대상 고객 유형

content[].eventStartDate

String

이벤트 시작일

content[].eventEndDate

String

이벤트 종료일

content[].state

String

이벤트 상태

content[].totalQuantity

Number

총 수량

이벤트 상세 조회

/events/{eventId}

HTTP Request

GET /events/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 227

{
  "id" : 1,
  "couponName" : "event1",
  "couponDiscountRate" : 10,
  "targetCustomerType" : "ALL",
  "eventStartDate" : "2024-08-03",
  "eventEndDate" : "2024-08-13",
  "state" : "ONGOING",
  "totalQuantity" : 100
}

Response Fields

Path Type Description

id

Number

이벤트 ID

couponName

String

쿠폰 이름

couponDiscountRate

Number

쿠폰 할인율

targetCustomerType

String

대상 고객 유형

eventStartDate

String

이벤트 시작일

eventEndDate

String

이벤트 종료일

state

String

이벤트 상태

totalQuantity

Number

총 수량

이벤트 생성

/events

HTTP Request

POST /events HTTP/1.1
Content-Type: application/json
Content-Length: 190
Host: localhost:8080

{
  "couponName" : "event1",
  "couponDiscountRate" : 10,
  "targetCustomerType" : "ALL",
  "eventStartDate" : "2024-08-09",
  "eventEndDate" : "2024-08-18",
  "totalQuantity" : 100
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

이벤트 수정

/events/{eventId}

HTTP Request

PUT /events/1 HTTP/1.1
Content-Type: application/json
Content-Length: 71
Host: localhost:8080

{
  "couponName" : "updatedEvent",
  "eventEndDate" : "2024-08-23"
}

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

이벤트 삭제

/events/{eventId}

HTTP Request

DELETE /events/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success

진행 중인 이벤트 조회

/events/company/{companyId}

HTTP Request

GET /events/company/1 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 460

[ {
  "id" : 1,
  "couponName" : "event1",
  "couponDiscountRate" : 10,
  "targetCustomerType" : "ALL",
  "eventStartDate" : "2024-08-03",
  "eventEndDate" : "2024-08-13",
  "state" : "ONGOING",
  "totalQuantity" : 100
}, {
  "id" : 2,
  "couponName" : "event2",
  "couponDiscountRate" : 20,
  "targetCustomerType" : "NEW",
  "eventStartDate" : "2024-08-06",
  "eventEndDate" : "2024-08-10",
  "state" : "ONGOING",
  "totalQuantity" : 200
} ]

Response Fields

Path Type Description

[].id

Number

이벤트 ID

[].couponName

String

쿠폰 이름

[].couponDiscountRate

Number

쿠폰 할인율

[].targetCustomerType

String

대상 고객 유형

[].eventStartDate

String

이벤트 시작일

[].eventEndDate

String

이벤트 종료일

[].state

String

이벤트 상태

[].totalQuantity

Number

총 수량

회원 쿠폰 목록 조회

/events/coupons

HTTP Request

GET /events/coupons?page=0&size=10 HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 996

{
  "totalElements" : 2,
  "totalPages" : 1,
  "size" : 10,
  "content" : [ {
    "id" : 1,
    "couponName" : "coupon1",
    "couponDiscountRate" : 10,
    "targetCustomerType" : "ALL",
    "eventStartDate" : "2024-08-03",
    "eventEndDate" : "2024-08-13",
    "state" : "ONGOING",
    "totalQuantity" : 100
  }, {
    "id" : 2,
    "couponName" : "coupon2",
    "couponDiscountRate" : 20,
    "targetCustomerType" : "NEW",
    "eventStartDate" : "2024-08-06",
    "eventEndDate" : "2024-08-10",
    "state" : "ONGOING",
    "totalQuantity" : 200
  } ],
  "number" : 0,
  "sort" : {
    "empty" : true,
    "unsorted" : true,
    "sorted" : false
  },
  "pageable" : {
    "pageNumber" : 0,
    "pageSize" : 10,
    "sort" : {
      "empty" : true,
      "unsorted" : true,
      "sorted" : false
    },
    "offset" : 0,
    "unpaged" : false,
    "paged" : true
  },
  "first" : true,
  "last" : true,
  "numberOfElements" : 2,
  "empty" : false
}

Response Fields

Path Type Description

content[].id

Number

쿠폰 ID

content[].couponName

String

쿠폰 이름

content[].couponDiscountRate

Number

쿠폰 할인율

content[].targetCustomerType

String

대상 고객 유형

content[].eventStartDate

String

이벤트 시작일

content[].eventEndDate

String

이벤트 종료일

content[].state

String

이벤트 상태

content[].totalQuantity

Number

총 수량

쿠폰 다운로드

/events/{eventId}/coupons

HTTP Request

POST /events/1/coupons HTTP/1.1
Content-Type: application/json
Host: localhost:8080

HTTP Response

HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Content-Length: 7

success