REST Resource: inventory.partners.merchants.services.availability

Tài nguyên: Tình trạng còn hàng

Một khung giờ còn trống của dịch vụ do người bán cung cấp, cho biết thời gian và số lượng vị trí.

Biểu diễn dưới dạng JSON
{
  "startTime": string,
  "duration": string,
  "spotsTotal": string,
  "spotsOpen": string,
  "availabilityTag": string,
  "resources": {
    object (Resources)
  },
  "paymentOptionId": [
    string
  ],
  "recurrence": {
    object (Recurrence)
  },
  "scheduleException": [
    {
      object (ScheduleException)
    }
  ],
  "deposit": {
    object (Deposit)
  },
  "noShowFee": {
    object (NoShowFee)
  },
  "prepayment": {
    object (Prepayment)
  },
  "requireCreditCard": enum (RequireCreditCard),
  "ticketTypeId": [
    string
  ],
  "durationRequirement": enum (DurationRequirement),
  "schedulingRuleOverrides": {
    object (SchedulingRuleOverrides)
  },
  "confirmationMode": enum (ConfirmationMode),
  "linkoutRequiredReason": enum (LinkoutRequiredReason)
}
Trường
startTime

string (Timestamp format)

Thời gian bắt đầu của khung giờ nhận đặt hẹn.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

duration

string (Duration format)

Thời lượng của khung giờ nhận đặt hẹn

Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng "s". Ví dụ: "3.5s".

spotsTotal

string (int64 format)

Tổng số và số lượng chỗ còn trống của tình trạng còn hàng này. Ví dụ:

  • Lớp học yoga có 10 chỗ và 3 chỗ đã được đặt: availability {spotsTotal: 10, spotsOpen: 7 ...}
  • Phiên mát xa trên ghế đã được đặt hết chỗ: availability {spotsTotal: 1, spotsOpen: 0 ...}

Lưu ý: Nếu gửi yêu cầu bằng định dạng nén tình trạng còn hàng được xác định bên dưới, thì hai trường này sẽ được suy luận.

  • Sự kiện lặp lại ngụ ý spotsTotal=1spotsOpen=1.
  • ScheduleException ngụ ý spotsTotal=1spotsOpen=0.
spotsOpen

string (int64 format)

Số lượng chỗ trống.

availabilityTag

string

Một chuỗi mờ không bắt buộc để xác định khung giờ trống này. Nếu được đặt, mã này sẽ được đưa vào các yêu cầu đặt/cập nhật/huỷ cuộc hẹn.

resources

object (Resources)

Tài nguyên không bắt buộc được dùng để phân biệt khung giờ có thể đặt này với các khung giờ khác khi có nhiều nhân viên hoặc phòng tham gia vào dịch vụ.

Ví dụ: cùng một lớp Yoga có 2 người hướng dẫn:

availability { resources { staffId: "1" staffName: "Amy" }
               spotsTotal: 10 spotsOpen: 7 }
availability { resources { staffId: "2" staffName: "John" }
               spotsTotal: 5 spotsOpen: 2 }
paymentOptionId[]

string

Danh sách mã nhận dạng tham chiếu đến các lựa chọn thanh toán có thể dùng để thanh toán cho khung giờ này. Các lựa chọn thanh toán thực tế được xác định ở cấp Người bán và cũng có thể được chia sẻ giữa nhiều Người bán.

Trường này sẽ ghi đè mọi payment_option_ids được chỉ định trong thông báo dịch vụ. Tương tự, payment_option_ids được chỉ định ở đây KHÔNG bắt buộc phải có trong thông báo dịch vụ, mặc dù bạn phải xác định ở cấp Người bán.

recurrence

object (Recurrence)

Thông tin định kỳ về lịch rảnh, thể hiện nhiều thời gian bắt đầu. Một sự kiện định kỳ phải chứa các cuộc hẹn cho một ngày làm việc.

scheduleException[]

object (ScheduleException)

Thời gian không thể lên lịch cho dịch vụ này. Để hạn chế số lượng thông báo scheduleException, hãy cân nhắc việc kết hợp các trường hợp ngoại lệ liền kề.

deposit

object (Deposit)

Khoản tiền đặt cọc không bắt buộc cho lịch sử có thể đặt này. Ghi đè khoản tiền đặt cọc dịch vụ nếu bạn đã chỉ định một khoản tiền.

noShowFee

object (NoShowFee)

Phí không xuất hiện không bắt buộc đối với khoảng trống này. Ghi đè phí vắng mặt của dịch vụ nếu bạn đã chỉ định một khoản phí.

prepayment

object (Prepayment)

Không bắt buộc. Thông tin thanh toán trước không bắt buộc cho tình trạng phòng trống này.

requireCreditCard

enum (RequireCreditCard)

Cho biết liệu người dùng có phải cung cấp thẻ tín dụng để đặt chỗ cho khung giờ này hay không. Nếu bạn không đặt giá trị này, thì giá trị này sẽ được kế thừa từ cấp dịch vụ nếu bạn đặt giá trị đó ở cấp dịch vụ. (không bắt buộc)

ticketTypeId[]

string

Cho biết danh sách các loại vé được hỗ trợ cho khung giờ có thể đặt này. Nếu bạn không đặt giá trị này, tất cả các loại vé trong dịch vụ mẹ đều có sẵn cho khung giờ này. Xin lưu ý rằng bạn phải xác định các giá trị của trường này trong dịch vụ mẹ. Ví dụ:

  • Dịch vụ có 4 loại vé: TicketType {ticketTypeId: "adult_1" shortDescription: "Adult weekdays"} TicketType {ticketTypeId: "adult_2" shortDescription: "Adult weekends"} TicketType {ticketTypeId: "youth_1" shortDescription: "Youth weekdays"} TicketType {ticketTypeId: "youth_2" shortDescription: "Youth weekends"}

Để thể hiện khoảng không quảng cáo trong các ngày trong tuần: availability {ticketTypeId: "adult_1" ticketTypeId: "youth_1"...}. Để thể hiện khoảng không quảng cáo trong dịp lễ, hãy làm như sau: availability {ticketTypeId: "adult_2" ticketTypeId: "youth_2"...}.

  • Dịch vụ có 3 loại vé: TicketType {ticketTypeId: "adult" shortDescription: "Adult"} TicketType {ticketTypeId: "youth" shortDescription: "Youth"} TicketType {ticketTypeId: "senior" shortDescription: "Senior"}

Để cho biết cả 3 loại vé đều có sẵn cho khung giờ này, hãy sử dụng availability {ticketTypeId: "adult" ticketTypeId: "youth" ticketTypeId: "senior" ...} hoặc "availability {...}' (không đặt ticketTypeId trong khung giờ này).

(không bắt buộc)

durationRequirement

enum (DurationRequirement)

Yêu cầu hiển thị thời lượng và/hoặc thời gian kết thúc của các khung giờ. Trường này sẽ bị bỏ qua nếu không có khe cắm. Không được dùng trong danh mục Việc cần làm. (không bắt buộc)

schedulingRuleOverrides

object (SchedulingRuleOverrides)

Quy tắc lập lịch về tình trạng còn hàng. Nếu được điền sẵn, các trường này sẽ ghi đè mọi quy tắc lập lịch tương ứng trên SchedulingRules ở cấp dịch vụ.

confirmationMode

enum (ConfirmationMode)

Chế độ xác nhận sẽ được dùng khi đặt lịch hẹn này. Bạn phải xác nhận hoặc từ chối ngay các yêu cầu tạo lượt đặt trước cho những khoảng thời gian có chế độ xác nhận là CONFIRMATION_MODE_SYNCHRONOUS. Các yêu cầu tạo lượt đặt cho những khoảng thời gian còn trống có chế độ xác nhận là CONFIRMATION_MODE_ASYNCHRONOUS phải bị từ chối ngay lập tức hoặc được tạo ở trạng thái ĐANG CHỜ XỬ LÝ.

linkoutRequiredReason

enum (LinkoutRequiredReason)

Không bắt buộc. Lý do bạn phải có đường liên kết bên ngoài cho vị trí này. Nếu được đặt, Tài nguyên người bán cho vị trí này phải có một LinkoutTemplate hợp lệ. (không bắt buộc)

Tài nguyên

Tài nguyên được dùng để phân biệt các khung giờ trống với nhau khi có nhiều nhân viên hoặc phòng tham gia vào dịch vụ. Nhiều khung giờ cho cùng một dịch vụ và khoảng thời gian có thể cùng tồn tại khi chúng có các tài nguyên khác nhau.

Biểu diễn dưới dạng JSON
{
  "staffId": string,
  "staffName": string,
  "roomId": string,
  "roomName": string,
  "partySize": integer,
  "roomDescription": {
    object (Text)
  }
}
Trường
staffId

string

Mã nhận dạng không bắt buộc của nhân viên cung cấp dịch vụ. Trường này xác định nhân viên trên tất cả người bán, dịch vụ và bản ghi về tình trạng còn chỗ. Giá trị này cũng cần ổn định theo thời gian để cho phép tương quan với các lượt đặt phòng trước đây. Bạn phải điền vào trường này nếu có staffName.

staffName

string

Tên không bắt buộc của nhân viên cung cấp dịch vụ. Trường này sẽ xuất hiện với người dùng đặt chỗ và phải dễ đọc, thay vì là một giá trị nhận dạng không rõ ràng. Bạn phải điền trường này nếu có staffId.

roomId

string

Mã nhận dạng không bắt buộc cho phòng nơi dịch vụ được đặt. Trường này xác định phòng trên tất cả các bản ghi về người bán, dịch vụ và tình trạng còn phòng. Giá trị này cũng cần ổn định theo thời gian để cho phép tương quan với các lượt đặt phòng trước đây. Bạn phải cung cấp trường này nếu có roomName.

roomName

string

Tên không bắt buộc của phòng nơi đặt dịch vụ. Trường này sẽ xuất hiện với người dùng đặt chỗ và phải dễ đọc, thay vì là một giá trị nhận dạng không rõ ràng. (không bắt buộc nhưng phải có nếu có roomId) Trong nhà hàng, tên phòng chỉ được dùng cho khu vực chỗ ngồi như quầy bar hoặc hiên và không được dùng cho thực đơn có giá cố định, hoạt động đặc biệt hoặc bất kỳ giá trị nào khác không phải phòng (chẳng hạn như đặt chỗ hoặc bữa tối). Bạn nên thiết lập khu vực chỗ ngồi mặc định không có phòng liên kết.

partySize

integer

Chỉ áp dụng cho mục Ăn uống: Số người có thể được phục vụ trong khung giờ này. Một nhà hàng có thể được liên kết với nhiều Slot cho cùng một thời gian, mỗi Slot chỉ định một partySize khác nhau, chẳng hạn như 2, 3 hoặc 4 người có thể đặt chỗ.

roomDescription

object (Text)

Không bắt buộc. Nội dung mô tả phòng được bản địa hoá. Nếu được đặt, bạn phải cung cấp giá trị mặc định. Bạn cũng nên cung cấp các ngôn ngữ phổ biến cho ngôn ngữ của người bán. (không bắt buộc)

Tần suất

Thông báo định kỳ là không bắt buộc, nhưng cho phép thể hiện các khung giờ có sẵn lặp lại liên tục một cách gọn gàng hơn. Chúng thường đại diện cho lịch làm việc trong ngày. Sau đó, các thông báo ScheduleException được dùng để biểu thị các khoảng thời gian đã đặt trước/không có sẵn trong ngày làm việc.

Yêu cầu:

  1. Việc mở rộng các khung giờ hoặc tần suất có sẵn KHÔNG ĐƯỢC tạo ra các khung giờ giống hệt nhau. Nếu mã nhận dạng, startTime, duration và resources khớp nhau, thì các khoảng thời gian được coi là giống hệt nhau.
  2. KHÔNG kết hợp định dạng lịch rảnh tiêu chuẩn và định dạng lịch rảnh định kỳ trong các khung giờ của một dịch vụ. Lợi ích của tính năng định kỳ đối với những người bán/dịch vụ cung cấp cuộc hẹn. Định dạng tiêu chuẩn này dành cho những người bán/dịch vụ có các lớp học được lên lịch thường xuyên.
  3. Sự kiện định kỳ không được kéo dài quá 24 giờ.
Biểu diễn dưới dạng JSON
{
  "repeatUntil": string,
  "repeatEvery": string
}
Trường
repeatUntil

string (Timestamp format)

Dấu thời gian UTC tối đa (bao gồm) mà lịch có thể lặp lại cho đến.

Hãy dùng RFC 3339, trong đó dữ liệu đầu ra được tạo sẽ luôn được chuẩn hoá theo múi giờ và sử dụng 0, 3, 6 hoặc 9 chữ số thập phân. Các khoảng lệch khác ngoài "Z" cũng được chấp nhận. Ví dụ: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" hoặc "2014-10-02T15:01:23+05:30".

repeatEvery

string (Duration format)

Xác định khoảng thời gian giữa các khung giờ trống liên tiếp.

Ví dụ: Khoảng thời gian có thời lượng là 20 phút, repeatEvery là 30 phút, startTime là 9:00 và repeatUntil là 11:00 sẽ tạo ra các khung giờ từ 9:00 đến 9:20, 9:30 đến 9:50, 10:00 đến 10:20, 10:30 đến 10:50, 11:00 đến 11:20. (bắt buộc)

Thời lượng tính bằng giây, có tối đa 9 chữ số thập phân, kết thúc bằng "s". Ví dụ: "3.5s".

ScheduleException

Thông báo ScheduleException biểu thị các khoảng thời gian đã đặt/không có sẵn trong ngày làm việc, đây là những trường hợp ngoại lệ đối với mẫu định kỳ được mô tả ở trên. Khi các khung giờ được đặt, bạn nên cập nhật danh sách ngoại lệ để phản ánh các khoảng thời gian mới không còn trống. Bạn không nên sửa đổi tần suất.

Biểu diễn dưới dạng JSON
{
  "timeRange": {
    object (TimeRange)
  }
}
Trường
timeRange

object (TimeRange)

Khoảng thời gian xảy ra ngoại lệ. Mọi khung giờ được mô tả bằng quy tắc định kỳ trùng với khoảng thời gian bán mở này sẽ được coi là không có sẵn.

Ví dụ: Nếu sự kiện định kỳ chỉ định khoảng thời gian là 20 phút, repeatEvery là 30 phút, startTime là 9:00 và repeatUntil là 11:00, thì ScheduleException có timeRange là 9:45 – 11:00 sẽ khiến các khung giờ 9:30 – 9:50, 10:00 – 10:20 và 10:30 – 10:50 không có sẵn.

Xin lưu ý rằng vì phạm vi thời gian là phạm vi nửa kín nửa mở, nên khung giờ bắt đầu từ 11 giờ sáng sẽ không bị ảnh hưởng.

Trả Tiền Trước

Khoản thanh toán mà người dùng có thể phải trả khi đặt chỗ.

Biểu diễn dưới dạng JSON
{
  "priceInfo": {
    object (PriceInfo)
  }
}
Trường
priceInfo

object (PriceInfo)

Vùng chứa thông tin chi tiết về giá.

PriceInfo

Vùng chứa thông tin chi tiết về giá.

Biểu diễn dưới dạng JSON
{
  "priceType": enum (PriceType),

  // Union field price_options can be only one of the following:
  "price": {
    object (Price)
  },
  "priceRange": {
    object (PriceRange)
  }
  // End of list of possible types for union field price_options.
}
Trường
priceType

enum (PriceType)

Xác định cách áp dụng giá hoặc khoảng giá (mỗi người hoặc cố định)

Trường nhóm price_options. Các lựa chọn về giá là chỉ định giá chính xác hoặc một khoảng giá. price_options chỉ có thể là một trong những trạng thái sau:
price

object (Price)

Giá của một dịch vụ hoặc một khoản phí.

priceRange

object (PriceRange)

Giới hạn trên và/hoặc giới hạn dưới của một dịch vụ hoặc một khoản phí.

PriceRange

Trình bao bọc cho một phạm vi số tiền được coi là không giới hạn, trừ phi cả hai giá trị đều được đặt. Bạn phải cung cấp ít nhất một trong hai giá trị minAmount và maxAmount.

Biểu diễn dưới dạng JSON
{
  "minPrice": {
    object (Price)
  },
  "maxPrice": {
    object (Price)
  }
}
Trường
minPrice

object (Price)

Số tiền tối thiểu.

maxPrice

object (Price)

Số tiền tối đa. Phải luôn lớn hơn minPrice.

DurationRequirement

Enum này cho biết những yêu cầu mà người dùng cần xác nhận hoặc xem thời lượng/thời gian kết thúc của các khung giờ được yêu cầu.

Enum
DURATION_REQUIREMENT_UNSPECIFIED Bạn chưa chỉ định cách xử lý thời gian kết thúc. Đây là tuỳ chọn mặc định.
DO_NOT_SHOW_DURATION Người dùng sẽ không thấy thời gian kết thúc.
MUST_SHOW_DURATION Người dùng phải nhìn thấy thời gian kết thúc trước khi có thể đặt lịch hẹn.

SchedulingRuleOverrides

Quy tắc lập lịch theo mức độ sẵn có.

Biểu diễn dưới dạng JSON
{
  "lastBookableSec": string,
  "firstBookableSec": string,
  "lastOnlineCancellableSec": string
}
Trường
lastBookableSec

string (int64 format)

Thời gian cuối cùng (tính bằng giây) mà bạn có thể đặt trước khung giờ này. Dấu thời gian này phải trước startSec của khung giờ cần được tôn trọng (nếu người dùng có thể đặt lịch sau thời gian bắt đầu, hãy sử dụng SchedulingRules.min_booking_before_end_time ở cấp dịch vụ). Nếu có, sẽ ghi đè mọi nội dung được chỉ định trong min_booking_buffer của SchedulingRules của Dịch vụ tương ứng.

firstBookableSec

string (int64 format)

Thời gian (tính bằng giây) lần đầu tiên có thể đặt trước khung giờ này. Dấu thời gian này phải trước startSec của khung giờ hoặc lastBookableSec nếu được chỉ định.

lastOnlineCancellableSec

string (int64 format)

Nếu được đặt, đây là lần cuối cùng (tính bằng giây kể từ thời gian Unix) mà bạn có thể huỷ một khung giờ nhận đặt hẹn cụ thể thông qua tính năng Đặt chỗ bằng Google. Trường này sẽ ghi đè mọi quy tắc huỷ ở cấp dịch vụ. (không bắt buộc)

ConfirmationMode

Các chế độ xác nhận được dùng khi đặt chỗ.

Enum
CONFIRMATION_MODE_UNSPECIFIED Bạn chưa chỉ định chế độ xác nhận. Xác nhận đồng bộ sẽ được giả định.
CONFIRMATION_MODE_SYNCHRONOUS Các lượt đặt phòng cho khoảng thời gian này sẽ được xác nhận đồng bộ.
CONFIRMATION_MODE_ASYNCHRONOUS Các yêu cầu đặt phòng cho lịch trống này sẽ được xác nhận không đồng bộ.

LinkoutRequiredReason

Lý do một vị trí có trải nghiệm liên kết bên ngoài.

Enum
LINKOUT_REQUIRED_REASON_UNSPECIFIED Giá trị mặc định: Không sử dụng, tương đương với không xác định.
PAYMENT_REQUIRED Bạn phải thanh toán trong nền tảng của đối tác để đặt được khung giờ.

Phương thức

replace

Thay thế Availability của Service hiện có của một người bán do trình tổng hợp đã chỉ định quản lý và trả về Service đó.