본문으로 건너뛰기

protos.open.ReserveCommand

새로운 예약을 생성합니다.

내원객 중복 검색 정책

요청에 포함된 내원객 정보로 기존 내원객을 검색하여, 일치하는 내원객이 있으면 해당 내원객으로 예약을 생성합니다. 일치하는 내원객이 없으면 새로운 내원객을 생성한 후 예약을 생성합니다.

중복 검색은 다음 조건들을 우선순위 순서대로 확인하며, 먼저 일치하는 조건이 있으면 해당 내원객을 사용합니다:

우선순위검색 조건
1visitorName + visitorPhone
2visitorPassportNumber
3visitorSnsInfo
4visitorEmail
5visitorName + visitorBirthDayUtc

참고: 각 조건은 독립적으로 검색되며, 모든 필드가 AND로 결합되지 않습니다.

visitorNamestringrequired

내원객 이름

visitorPhone object

내원객 전화번호

countryCodestringrequired

국제전화 국가 번호 예: 82, 81, 1, 44 ... 참고

phoneNumberstringrequired

전화번호 예: 10123456789

reservationGroupIdobject-idrequired

예약 그룹 ID

zoneIdobject-idrequired

예약 영역 ID

startDateTimeUtcdate-timerequired

예약 시작 시각

endDateTimeUtcdate-timerequired

예약 종료 시각

consultationRequiredboolean

상담 필요 여부

sedationRequiredboolean

수면 마취 필요 여부

funnelDetailstring

상세 유입 경로

requestedProcedures object[]

희망 시술 목록

  • Array [
  • typeenumrequired

    요청 시술 유형 (OPTION: 상품 옵션, TICKET: 시술권)

    Possible values: [RESERVATION_REQUESTED_PROCEDURE_TYPE_UNSPECIFIED, OPTION, TICKET]

    optionConfiguration object

    상품 옵션 설정 (type이 OPTION인 경우)

    optionIdstringrequired

    상품 옵션 ID

    optionTitlestringrequired

    상품 옵션 이름

    productTitlestring

    상품 이름

    promotionTitlestring

    프로모션 이름

    price objectrequired

    가격 정보

    amountint32
    currencystring
    reason object
    typeenum

    Possible values: [RESERVATION_REQUESTED_OPTION_PRICE_REASON_TYPE_UNSPECIFIED, GENERAL, PROMOTION, VISITOR_TYPE]

    promotionIdstring
    visitorTypeIdstring
    medicalService object

    진료 항목

    idstring
    titlestring
    translsMap object

    다국어 지원대상 필드

    • title
    property name* protos.Transls
    translation object
    property name*string
    statusenum

    Possible values: [MedicalServiceStatus_UNKNOWN, DRAFT, PUBLISHED]

    deletedboolean
    configuration object
    codestring
    procedure object
    idstring
    namestring
    searchPhoneticNamestring

    백엔드 내부에서 검색을 위해 존재하는 필드

    machines object[]
  • Array [
  • idstring
    namestring
    searchPhoneticNamestring

    백엔드 내부에서 검색을 위해 존재하는 필드

  • ]
  • medicines object[]
  • Array [
  • idstring
    namestring
    searchPhoneticNamestring

    백엔드 내부에서 검색을 위해 존재하는 필드

  • ]
  • unit object
    typeenum

    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]

    valueint32
    healthcareReimbursementenum

    Possible values: [HealthcareReimbursement_UNKNOWN, REIMBURSABLE, NON_REIMBURSABLE]

    taxationenum

    Possible values: [Taxation_UNKNOWN, TAXABLE, TAX_FREE, MIXED]

    draftedDateTimeUtcstring
    updatedDateTimeUtcstring
    priceAmount object
    valueint32
    currencystring
    descriptionstring
    cautionstring
    recommendedIntervalint32
    contributionConstantint32
    durationTimedouble
    ticketConfiguration object

    시술권 설정 (type이 TICKET인 경우)

    ticketIdstringrequired

    시술권 ID

    ticketTitlestringrequired

    시술권 이름

    optionTitlestringrequired

    옵션 이름

    medicalService object

    진료 항목

    idstring
    titlestring
    translsMap object

    다국어 지원대상 필드

    • title
    property name* protos.Transls
    translation object
    property name*string
    statusenum

    Possible values: [MedicalServiceStatus_UNKNOWN, DRAFT, PUBLISHED]

    deletedboolean
    configuration object
    codestring
    procedure object
    idstring
    namestring
    searchPhoneticNamestring

    백엔드 내부에서 검색을 위해 존재하는 필드

    machines object[]
  • Array [
  • idstring
    namestring
    searchPhoneticNamestring

    백엔드 내부에서 검색을 위해 존재하는 필드

  • ]
  • medicines object[]
  • Array [
  • idstring
    namestring
    searchPhoneticNamestring

    백엔드 내부에서 검색을 위해 존재하는 필드

  • ]
  • unit object
    typeenum

    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]

    valueint32
    healthcareReimbursementenum

    Possible values: [HealthcareReimbursement_UNKNOWN, REIMBURSABLE, NON_REIMBURSABLE]

    taxationenum

    Possible values: [Taxation_UNKNOWN, TAXABLE, TAX_FREE, MIXED]

    draftedDateTimeUtcstring
    updatedDateTimeUtcstring
    priceAmount object
    valueint32
    currencystring
    descriptionstring
    cautionstring
    recommendedIntervalint32
    contributionConstantint32
    durationTimedouble
  • ]
  • reservationMemostring

    예약 메모

    visitorNationalitystring

    내원객 국적 예: KR, JP, CN, US ... 참고

    visitorLanguagestring

    내원객 언어 지원 목록: ko, ja, en, zh-CN, zh-yue, es, th, ru, id, ms, vi, mn, uz, nl, de, pt, etc

    visitorEmailemail

    내원객 이메일

    visitorBirthDayUtcdate-time

    내원객 생년월일

    visitorSnsInfo object

    내원객 SNS 정보

    snsTypeenum

    Possible values: [etc, kakaotalk, line, instagram, whatsapp, wechat]

    accountIdstring
    visitorPassportSurnamestring

    내원객 여권 영문명

    visitorPassportGivenNamesstring

    내원객 여권 영문명

    visitorPassportNumberstring

    내원객 여권 번호

    protos.open.ReserveCommand
    {
    "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"
    }