protos.open.ReserveCommand
새로운 예약을 생성합니다.
내원객 중복 검색 정책
요청에 포함된 내원객 정보로 기존 내원객을 검색하여, 일치하는 내원객이 있으면 해당 내원객으로 예약을 생성합니다. 일치하는 내원객이 없으면 새로운 내원객을 생성한 후 예약을 생성합니다.
중복 검색은 다음 조건들을 우선순위 순서대로 확인하며, 먼저 일치하는 조건이 있으면 해당 내원객을 사용합니다:
| 우선순위 | 검색 조건 |
|---|---|
| 1 | visitorName + visitorPhone |
| 2 | visitorPassportNumber |
| 3 | visitorSnsInfo |
| 4 | visitorEmail |
| 5 | visitorName + visitorBirthDayUtc |
참고: 각 조건은 독립적으로 검색되며, 모든 필드가 AND로 결합되지 않습니다.
내원객 이름
visitorPhone object
내원객 전화번호
국제전화 국가 번호 예: 82, 81, 1, 44 ... 참고
전화번호 예: 10123456789
예약 그룹 ID
예약 영역 ID
예약 시작 시각
예약 종료 시각
상담 필요 여부
수면 마취 필요 여부
상세 유입 경로
requestedProcedures object[]
희망 시술 목록
요청 시술 유형 (OPTION: 상품 옵션, TICKET: 시술권)
Possible values: [RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED, OPTION, TICKET]
optionConfiguration object
상품 옵션 설정 (type이 OPTION인 경우)
상품 옵션 ID
상품 옵션 이름
상품 이름
프로모션 이름
price objectrequired
가격 정보
reason object
Possible values: [RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED, GENERAL, PROMOTION, VISITOR_TYPE]
medicalService object
진료 항목
translsMap object
다국어 지원대상 필드
- title
property name* protos.Transls
translation object
Possible values: [MedicalServiceStatus_UNKNOWN, DRAFT, PUBLISHED]
configuration object
procedure object
백엔드 내부에서 검색을 위해 존재하는 필드
machines object[]
백엔드 내부에서 검색을 위해 존재하는 필드
medicines object[]
백엔드 내부에서 검색을 위해 존재하는 필드
unit object
Possible values: [UnitType_UNKNOWN, UNIT, CC, VIAL, PEN, STRING, SHOT, PAD, MINUTE, KJ, QUANTITY, DOT, J, MG, G, PULSE, BOTTLE, SYRINGE, PASS, IU, KHZ, MHZ]
Possible values: [HealthcareReimbursement_UNKNOWN, REIMBURSABLE, NON_REIMBURSABLE]
Possible values: [Taxation_UNKNOWN, TAXABLE, TAX_FREE, MIXED]
priceAmount object
ticketConfiguration object
시술권 설정 (type이 TICKET인 경우)
시술권 ID
시술권 이름
옵션 이름
medicalService object
진료 항목
translsMap object
다국어 지원대상 필드
- title
property name* protos.Transls
translation object
Possible values: [MedicalServiceStatus_UNKNOWN, DRAFT, PUBLISHED]
configuration object
procedure object
백엔드 내부에서 검색을 위해 존재하는 필드
machines object[]
백엔드 내부에서 검색을 위해 존재하는 필드
medicines object[]
백엔드 내부에서 검색을 위해 존재하는 필드
unit object
Possible values: [UnitType_UNKNOWN, UNIT, CC, VIAL, PEN, STRING, SHOT, PAD, MINUTE, KJ, QUANTITY, DOT, J, MG, G, PULSE, BOTTLE, SYRINGE, PASS, IU, KHZ, MHZ]
Possible values: [HealthcareReimbursement_UNKNOWN, REIMBURSABLE, NON_REIMBURSABLE]
Possible values: [Taxation_UNKNOWN, TAXABLE, TAX_FREE, MIXED]
priceAmount object
예약 메모
내원객 국적 예: KR, JP, CN, US ... 참고
내원객 언어 지원 목록: ko, ja, en, zh-CN, zh-yue, es, th, ru, id, ms, vi, mn, uz, nl, de, pt, etc
내원객 이메일
내원객 생년월일
visitorSnsInfo object
내원객 SNS 정보
Possible values: [etc, kakaotalk, line, instagram, whatsapp, wechat]
내원객 여권 영문명
내원객 여권 영문명
내원객 여권 번호
{
"visitorName": "string",
"visitorPhone": {
"countryCode": "string",
"phoneNumber": "string"
},
"reservationGroupId": "string",
"zoneId": "string",
"startDateTimeUtc": "2024-07-29T15:51:28.071Z",
"endDateTimeUtc": "2024-07-29T15:51:28.071Z",
"consultationRequired": true,
"sedationRequired": true,
"funnelDetail": "string",
"requestedProcedures": [
{
"type": "RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED",
"optionConfiguration": {
"optionId": "string",
"optionTitle": "string",
"productTitle": "string",
"promotionTitle": "string",
"price": {
"amount": 0,
"currency": "string",
"reason": {
"type": "RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED",
"promotionId": "string",
"visitorTypeId": "string"
}
},
"medicalService": {
"id": "string",
"title": "string",
"translsMap": {},
"status": "MedicalServiceStatus_UNKNOWN",
"deleted": true,
"configuration": {
"code": "string",
"procedure": {
"id": "string",
"name": "string",
"searchPhoneticName": "string"
},
"machines": [
{
"id": "string",
"name": "string",
"searchPhoneticName": "string"
}
],
"medicines": [
{
"id": "string",
"name": "string",
"searchPhoneticName": "string"
}
],
"unit": {
"type": "UnitType_UNKNOWN",
"value": 0
},
"healthcareReimbursement": "HealthcareReimbursement_UNKNOWN",
"taxation": "Taxation_UNKNOWN"
},
"draftedDateTimeUtc": "string",
"updatedDateTimeUtc": "string",
"priceAmount": {
"value": 0,
"currency": "string"
},
"description": "string",
"caution": "string",
"recommendedInterval": 0,
"contributionConstant": 0,
"durationTime": 0
}
},
"ticketConfiguration": {
"ticketId": "string",
"ticketTitle": "string",
"optionTitle": "string",
"medicalService": {
"id": "string",
"title": "string",
"translsMap": {},
"status": "MedicalServiceStatus_UNKNOWN",
"deleted": true,
"configuration": {
"code": "string",
"procedure": {
"id": "string",
"name": "string",
"searchPhoneticName": "string"
},
"machines": [
{
"id": "string",
"name": "string",
"searchPhoneticName": "string"
}
],
"medicines": [
{
"id": "string",
"name": "string",
"searchPhoneticName": "string"
}
],
"unit": {
"type": "UnitType_UNKNOWN",
"value": 0
},
"healthcareReimbursement": "HealthcareReimbursement_UNKNOWN",
"taxation": "Taxation_UNKNOWN"
},
"draftedDateTimeUtc": "string",
"updatedDateTimeUtc": "string",
"priceAmount": {
"value": 0,
"currency": "string"
},
"description": "string",
"caution": "string",
"recommendedInterval": 0,
"contributionConstant": 0,
"durationTime": 0
}
}
}
],
"reservationMemo": "string",
"visitorNationality": "string",
"visitorLanguage": "string",
"visitorEmail": "user@example.com",
"visitorBirthDayUtc": "2024-07-29T15:51:28.071Z",
"visitorSnsInfo": {
"snsType": "etc",
"accountId": "string"
},
"visitorPassportSurname": "string",
"visitorPassportGivenNames": "string",
"visitorPassportNumber": "string"
}