-```json
-{
- "isCanceled": true
-}
-```
-
-응답 데이터 타입 및 예시:
-
-
-```ts
-type ResponseValue = true // 거래 내역 완료/취소 및 해제 처리 상태
-```
-
-### 제품 추가
-
-- 관리자 전용 API입니다.
-- 파일(사진)은 Base64로 요청해야 합니다.
-- 제품 썸네일 사진은 1MB 이하여야 합니다.
-- 제품 상세 사진은 4MB 이하여야 합니다.
-- 제품 할인율(`discountRate`)은 제품 가격과 직접 관계가 없는 단순 메모 속성입니다.
-- 제품 할인율은 `0`~`99` 사이 숫자를 입력하세요. 만약 할인율이 '20%'인 경우, `20`으로 입력해야 합니다.
-- 제품 할인율을 입력하지 않으면, `0`으로 적용됩니다.
-
-```js
-// 할인 전 가격을 계산!
-const priceBeforeDiscount = price * 100 / (100 - discountRate)
-```
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products
- \ -X 'POST'
- \ -H 'masterKey: true'
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- title: string // 제품 이름 (필수!)
- price: number // 제품 가격 (필수!)
- description: string // 제품 상세 설명 (필수!)
- tags?: string[] // 제품 태그
- thumbnailBase64?: string // 제품 썸네일(대표) 사진(base64) - jpg, jpeg, webp, png, gif, svg
- photoBase64?: string // 제품 상세 사진(base64) - jpg, jpeg, webp, png, gif, svg
- discountRate?: number // 제품 할인율
-}
-```
+이메일: admin@bul4jo.com
+비밀번호: 1q2w3e4r
-```json
-{
- "title": "MacBook Pro 16",
- "price": 3360000,
- "description": "역대 가장 강력한 MacBook Pro가 등장했습니다. 최초의 프로용 Apple Silicon인 M1 Pro 또는 M1 Max 칩을 탑재해 쏜살같이 빠른 속도는 물론, 획기적인 성능과 놀라운 배터리 사용 시간을 자랑하죠. 여기에 시선을 사로잡는 Liquid Retina XDR 디스플레이, Mac 노트북 사상 최고의 카메라 및 오디오 그리고 더할 나위 없이 다양한 포트까지. 기존 그 어떤 카테고리에도 속하지 않는 노트북. 새로운 MacBook Pro는 그야말로 야수입니다.",
- "tags": [
- "가전",
- "노트북",
- "컴퓨터"
- ],
- "thumbnailBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...(생략)"
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-interface ResponseValue { // 추가한 제품의 상세 내용
- id: string // 제품 ID
- title: string // 제품 이름
- price: number // 제품 가격
- description: string // 제품 상세 설명
- tags: string[] // 제품 태그
- thumbnail: string | null // 제품 썸네일 이미지(URL)
- photo: string | null // 제품 상세 이미지(URL)
- isSoldOut: boolean // 제품 매진 여부
- discountRate: number // 제품 할인율
-}
-```
-
-```json
-{
- "id": "nbqtQvEivYwEXTDet7YM",
- "title": "MacBook Pro 16",
- "price": 3360000,
- "description": "역대 가장 강력한 MacBook Pro가 등장했습니다. 최초의 프로용 Apple Silicon인 M1 Pro 또는 M1 Max 칩을 탑재해 쏜살같이 빠른 속도는 물론, 획기적인 성능과 놀라운 배터리 사용 시간을 자랑하죠. 여기에 시선을 사로잡는 Liquid Retina XDR 디스플레이, Mac 노트북 사상 최고의 카메라 및 오디오 그리고 더할 나위 없이 다양한 포트까지. 기존 그 어떤 카테고리에도 속하지 않는 노트북. 새로운 MacBook Pro는 그야말로 야수입니다.",
- "tags": [
- "가전",
- "노트북",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vIKMk_jy4Yv195256.png",
- "photo": "https://storage.googleapis.com/heropy-api/voihKb3NLGcv195257.png",
- "isSoldOut": false,
- "discountRate": 0
-}
-```
-
-### 제품 수정
-
-- 관리자 전용 API입니다.
-- 사용자의 구매 내역 확인을 위해, 제품을 실제로는 삭제하지 않고 매진(Sold Out) 처리해야 합니다.
-- 매진은 다시 해제할 수 있습니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/:productId
- \ -X 'PUT'
- \ -H 'masterKey: true'
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- title?: string // 제품 이름
- price?: number // 제품 가격
- description?: string // 제품 상세 설명
- tags?: string[] // 제품 태그
- thumbnailBase64?: string // 제품 썸네일(대표) 사진(base64) - jpg, jpeg, webp, png, gif, svg
- photoBase64?: string // 제품 상세 사진(base64) - jpg, jpeg, webp, png, gif, svg
- isSoldOut?: boolean // 제품 매진 여부
- discountRate?: number // 제품 할인율
-}
-```
-
-```json
-{
- "price": 1500
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-interface ResponseValue { // 수정한 제품의 상세 내용
- id: string // 제품 ID
- title: string // 제품 이름
- price: number // 제품 가격
- description: string // 제품 상세 설명
- tags: string[] // 제품 태그
- thumbnail: string | null // 제품 썸네일 이미지(URL)
- photo: string | null // 제품 상세 이미지(URL)
- isSoldOut: boolean // 제품 매진 여부
- discountRate: number // 제품 할인율
-}
-```
-
-```json
-{
- "id": "nbqtQvEivYwEXTDet7YM",
- "title": "MacBook Pro 16",
- "price": 1500,
- "description": "역대 가장 강력한 MacBook Pro가 등장했습니다. 최초의 프로용 Apple Silicon인 M1 Pro 또는 M1 Max 칩을 탑재해 쏜살같이 빠른 속도는 물론, 획기적인 성능과 놀라운 배터리 사용 시간을 자랑하죠. 여기에 시선을 사로잡는 Liquid Retina XDR 디스플레이, Mac 노트북 사상 최고의 카메라 및 오디오 그리고 더할 나위 없이 다양한 포트까지. 기존 그 어떤 카테고리에도 속하지 않는 노트북. 새로운 MacBook Pro는 그야말로 야수입니다.",
- "tags": [
- "가전",
- "노트북",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vIKMk_jy4Yv195256.png",
- "photo": "https://storage.googleapis.com/heropy-api/voihKb3NLGcv195257.png",
- "isSoldOut": false,
- "discountRate": 0
-}
-```
-
-### 제품 삭제
-
-- 관리자 전용 API입니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/:productId
- \ -X 'DELETE'
- \ -H 'masterKey: true'
-```
-
-요청 데이터 타입 및 예시:
-
-- 없음
-
-응답 데이터 타입 및 예시:
-
-```ts
-type ResponseValue = true // 제품 삭제 처리 상태
-```
-
-### 단일 제품 상세 조회
-
-- 공용 API입니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/:productId
- \ -X 'GET'
-```
-
-요청 데이터 타입 및 예시:
-
-- 없음
-
-응답 데이터 타입 및 예시:
-
-```ts
-interface ResponseValue { // 제품의 상세 내용
- id: string // 제품 ID
- title: string // 제품 이름
- price: number // 제품 가격
- description: string // 제품 상세 설명
- tags: string[] // 제품 태그
- thumbnail: string | null // 제품 썸네일 이미지(URL)
- photo: string | null // 제품 상세 이미지(URL)
- isSoldOut: boolean // 제품 매진 여부
- reservations: Reservation[] // 제품의 모든 예약 정보 목록
- discountRate: number // 제품 할인율
-}
-
-interface Reservation {
- start: string // 예약 시작 시간
- end: string // 예약 종료 시간
- isCanceled: boolean // 예약 취소 여부
- isExpired: boolean // 예약 만료 여부
-}
-```
-
-```json
-{
- "id": "nbqtQvEivYwEXTDet7YM",
- "title": "MacBook Pro 16",
- "price": 3360000,
- "description": "역대 가장 강력한 MacBook Pro가 등장했습니다. 최초의 프로용 Apple Silicon인 M1 Pro 또는 M1 Max 칩을 탑재해 쏜살같이 빠른 속도는 물론, 획기적인 성능과 놀라운 배터리 사용 시간을 자랑하죠. 여기에 시선을 사로잡는 Liquid Retina XDR 디스플레이, Mac 노트북 사상 최고의 카메라 및 오디오 그리고 더할 나위 없이 다양한 포트까지. 기존 그 어떤 카테고리에도 속하지 않는 노트북. 새로운 MacBook Pro는 그야말로 야수입니다.",
- "tags": [
- "가전",
- "노트북",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vIKMk_jy4Yv195256.png",
- "photo": "https://storage.googleapis.com/heropy-api/voihKb3NLGcv195257.png",
- "isSoldOut": false,
- "reservations": [],
- "discountRate": 0
-}
-```
-
-예약 정보(`reservation`)가 있는 경우:
-
-```json
-{
- "reservations": [
- {
- "reservation": {
- "start": "2021-11-12T06:00:00.000Z",
- "end": "2021-11-12T07:00:00.000Z",
- "isCanceled": false,
- "isExpired": true
- }
- }
- ]
-}
-```
-
-### 제품 검색
-
-- 사용자 전용 API입니다.
-- 제품 이름과 태그를 동시에 검색할 수 있고, 'And'(검색한 이름과 태그 모두 포함된 제품) 조건으로 결과를 반환합니다.
-- 제품 이름과 태그 모두 포함하지 않으면, 모든 제품의 결과를 반환합니다.
-- 제품의 기본 정보만 반환합니다.
-- 매진된 제품은 검색되지 않습니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/search
- \ -X 'POST'
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- searchText?: string // 검색할 제품 이름
- searchTags?: string[] // 검색할 제품 태그
-}
-```
-
-```json
-{
- "searchText": "삼성전자",
- "searchTags": ["가전"]
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-type ResponseValue = Product[] // 관리하는 모든 제품의 목록
-
-interface Product { // 제품 정보
- id: string // 제품 ID
- title: string // 제품 이름
- price: number // 제품 가격
- description: string // 제품 설명(최대 100자)
- tags: string[] // 제품 태그
- thumbnail: string | null // 제품 썸네일 이미지(URL)
- discountRate: number // 제품 할인율
-}
-```
-
-```json
-[
- {
- "id": "cFmeC7aY5KjZbBAdJE9y",
- "title": "삼성전자 스마트모니터 M7 S43AM700",
- "price": 639000,
- "description": "107.9cm(43인치) / 와이드(16:9) / 평면 / VA / 3840 x 2160(4K UHD) / 픽셀피치: 0.2451mm / 8ms(GTG) / 300cd / 5,00",
- "tags": [
- "가전",
- "모니터",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vBAK4MQdH5v195712.png",
- "discountRate": 0
- }
-]
-```
-
-### 제품 거래(구매) 신청
-
-- 사용자 전용 API입니다.
-- 거래(구매) 신청시 연결된 계좌에서 결제됩니다.
-- 결제할 계좌(ID)를 꼭 선택해야 합니다.(`계좌 목록 및 잔액 조회` API를 사용하세요)
-- 선택한 계좌의 잔액보다 결제 금액이 크면 결제가 처리되지 않습니다.(에러 반환)
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/buy
- \ -X 'POST'
- \ -H 'Authorization: Bearer
'
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- productId: string // 거래할 제품 ID (필수!)
- accountId: string // 결제할 사용자 계좌 ID (필수!)
- reservation?: { // 예약 정보(예약 시스템을 사용하는 경우만 필요)
- start: string // 예약 시작 시간(ISO)
- end: string // 예약 종료 시간(ISO)
- }
-}
-```
-
-```js
-const isoString = new Date().toISOString()
-```
-
-```json
-{
- "productId": "nbqtQvEivYwEXTDet7YM",
- "accountId": "Mq2KKHk8vlmr6Xkg58Fa",
- "reservation": {
- "start": "2021-11-12T06:00:00.000Z",
- "end": "2021-11-12T07:00:00.000Z"
- }
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-type ResponseValue = true // 거래 신청 처리 여부
-```
-
-### 제품 거래(구매) 취소
-
-- 사용자 전용 API입니다.
-- '거래 취소'시 결제한 사용자 계좌로 금액이 환불됩니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/cancel
- \ -X 'POST'
- \ -H 'Authorization: Bearer '
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- detailId: string // 취소할 제품의 거래 내역 ID
-}
-```
-
-```json
-{
- "detailId": "dMhfxyrAupQP18OYmywy"
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-type ResponseValue = true // 거래 취소 처리 여부
-```
-
-### 제품 거래(구매) 확정
-
-- 사용자 전용 API입니다.
-- '거래(구매) 확정' 후에는 '거래 취소'를 할 수 없습니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/ok
- \ -X 'POST'
- \ -H 'Authorization: Bearer '
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- detailId: string // 거래(구매) 확정할 제품의 거래 내역 ID
-}
-```
-
-```json
-{
- "detailId": "dMhfxyrAupQP18OYmywy"
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-type ResponseValue = true // 거래(구매) 확정 처리 여부
-```
-
-### 제품 전체 거래(구매) 내역
-
-- 사용자 전용 API입니다.
-- 거래 내역의 기본 정보만 포함됩니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/transactions/details
- \ -X 'GET'
- \ -H 'Authorization: Bearer '
-```
-
-요청 데이터 타입 및 예시:
-
-- 없음
-
-응답 데이터 타입 및 예시:
-
-```ts
-type RequestValue = TransactionDetail[] // 모든 거래 내역의 목록
-
-interface TransactionDetail { // 거래 내역 정보
- detailId: string // 거래 내역 ID
- product: { // 거래한 제품 정보
- productId: string
- title: string
- price: number
- description: string
- tags: string[]
- thumbnail: string | null
- discountRate: number // 제품 할인율
- }
- reservation: Reservation | null // 거래한 제품의 예약 정보
- timePaid: string // 제품을 거래한 시간
- isCanceled: boolean // 거래 취소 여부
- done: boolean // 거래 완료 여부
-}
-
-interface Reservation {
- start: string // 예약 시작 시간
- end: string // 예약 종료 시간
- isCanceled: boolean // 예약 취소 여부
- isExpired: boolean // 예약 만료 여부
-}
-```
-
-```json
-[
- {
- "detailId": "9jAoagzrZBkSWI5NctEB",
- "product": {
- "productId": "nbqtQvEivYwEXTDet7YM",
- "title": "MacBook Pro 16",
- "price": 3360000,
- "description": "역대 가장 강력한 MacBook Pro가 등장했습니다. 최초의 프로용 Apple Silicon인 M1 Pro 또는 M1 Max 칩을 탑재해 쏜살같이 빠른 속도는 물론, 획기적인 성",
- "tags": [
- "가전",
- "노트북",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vIKMk_jy4Yv195256.png",
- "discountRate": 0
- },
- "reservation": null,
- "timePaid": "2021-11-07T20:17:32.112Z",
- "isCanceled": true,
- "done": false
- },
- {
- "detailId": "dMhfxyrAupQP18OYmywy",
- "product": {
- "productId": "cFmeC7aY5KjZbBAdJE9y",
- "title": "삼성전자 스마트모니터 M7 S43AM700",
- "price": 639000,
- "description": "107.9cm(43인치) / 와이드(16:9) / 평면 / VA / 3840 x 2160(4K UHD) / 픽셀피치: 0.2451mm / 8ms(GTG) / 300cd / 5,00",
- "tags": [
- "가전",
- "모니터",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vBAK4MQdH5v195712.png",
- "discountRate": 0
- },
- "reservation": {
- "start": "2021-11-12T06:00:00.000Z",
- "end": "2021-11-12T07:00:00.000Z",
- "isCanceled": false,
- "isExpired": true
- },
- "timePaid": "2021-11-07T20:01:49.100Z",
- "isCanceled": false,
- "done": true
- }
-]
-```
-
-### 단일 제품 상세 거래(구매) 내역
-
-- 사용자 전용 API입니다.
-
-```curl
-curl https://asia-northeast3-heropy-api.cloudfunctions.net/api/products/transactions/detail
- \ -X 'POST'
- \ -H 'Authorization: Bearer '
-```
-
-요청 데이터 타입 및 예시:
-
-```ts
-interface RequestBody {
- detailId: string // 상세 내용을 확인할 거래(구매) 내역 ID
-}
-```
-
-```json
-{
- "detailId": "dMhfxyrAupQP18OYmywy"
-}
-```
-
-응답 데이터 타입 및 예시:
-
-```ts
-interface TransactionDetail { // 상세 거래 정보
- detailId: string // 거래 내역 ID
- account: { // 거래한 사용자의 계좌 정보
- bankName: string
- bankCode: string
- accountNumber: string
- }
- product: { // 거래한 제품 정보
- productId: string
- title: string
- price: number
- description: string
- tags: string[]
- thumbnail: string | null
- photo: string | null
- discountRate: number // 제품 할인율
- }
- reservation: Reservation | null // 거래한 제품의 예약 정보
- timePaid: string // 제품을 거래한 시간
- isCanceled: boolean // 거래 취소 여부
- done: boolean // 거래 완료 여부
-}
-
-interface Reservation {
- start: string // 예약 시작 시간
- end: string // 예약 종료 시간
- isCanceled: boolean // 예약 취소 여부
- isExpired: boolean // 예약 만료 여부
-}
-```
-
-```json
-{
- "detailId": "dMhfxyrAupQP18OYmywy",
- "account": {
- "bankName": "KB국민은행",
- "bankCode": "004",
- "accountNumber": "123-XX-XXXX-XXX"
- },
- "product": {
- "productId": "cFmeC7aY5KjZbBAdJE9y",
- "title": "삼성전자 스마트모니터 M7 S43AM700",
- "price": 639000,
- "description": "107.9cm(43인치) / 와이드(16:9) / 평면 / VA / 3840 x 2160(4K UHD) / 픽셀피치: 0.2451mm / 8ms(GTG) / 300cd / 5,000:1 / 최대 주사율: 60Hz / HDMI 2.0 / USB Type-C / 플리커 프리 / 블루라이트 차단 / 게임모드 지원 / 스피커 / 리모컨 / USB허브 / Wi-Fi(무선) / 스마트TV / 블루투스 / 틸트(상하) / 200 x 200mm / HDR / HDR10 / 10.6kg 기획전 차세대 게임 라이프 PS5 매력분석 관련기사 큐소닉, 43인치 4K UHD 스마트 모니터 ‘삼성전자 M7 S43AM700’ 출시 및 할인 행사 사용기 삼성 스마트모니터 m7 s43am700",
- "tags": [
- "가전",
- "모니터",
- "컴퓨터"
- ],
- "thumbnail": "https://storage.googleapis.com/heropy-api/vBAK4MQdH5v195712.png",
- "photo": "https://storage.googleapis.com/heropy-api/vVLP-ox_zSDv195712.jpg",
- "discountRate": 0
- },
- "reservation": null,
- "timePaid": "2021-11-07T20:01:49.100Z",
- "isCanceled": false,
- "done": true
-}
-```
+
+