Randevu müsaitliği feed'leri oluşturma ve yükleme
Randevu kullanılabilirliği feed'leri oluşturup yüklerken şu talimatları uygulayın:
- Randevu stok durumu veri dosyaları için randevu stok durumu feed'inde açıklanan spesifikasyona uyun. Her yükleme için benzersiz randevu uygunluğu verileri dosya adları kullanmanızı öneririz.
Dosya adına zaman damgası ekleyin (ör.
appointment availability_1633621547.json). - Dosya grubu tanımlayıcısında
namealanınıappointment.availabilityolarak ayarlayın. Açıklama dosyası örneği için JSON örneği bölümüne bakın. Her yükleme için benzersiz açıklayıcı dosya adları kullanmanızı öneririz. Dosya adına zaman damgası ekleyin (ör.appointment availability_1633621547.filesetdesc.json). Açıklama dosyası, genel SFTP sunucusuna yüklenmelidir. - Feed'leri 30 dakikada bir genel SFTP sunucusuna tam yenileme olarak yükleyin.
- SFTP sunucusu ayrıntılarını İş Ortağı Portalı'nın Yapılandırma > Feed'ler bölümünde bulabilirsiniz.
- Feed aktarım durumunu İş Ortağı Portalı'nın Feed'ler > Geçmiş bölümünde görüntüleyin.
Ek feed'ler yükleme
Randevu kullanılabilirliği, ek feed'leri de destekler. Bu sayede iş ortakları, feed yükleme özelliğini kullanarak yalnızca kullanılabilirliklerinde yapılan değişiklikleri yükleyebilir.
Ek feed yüklemek için feed'inizdeki stok durumu yuvalarından en az birinde is_incremental: true değerini ayarlayın. Feed'lerin bazılarında is_incremental değeri true, bazılarında ise false olarak ayarlanmışsa sistem bunların hepsini artımlı olarak değerlendirir.
Artımlı güncellemeler aşağıdaki işlemleri sunar:
- Değişiklik Yok
- Değişiklik olmayan öğeler için stok durumu kimliğini eklemeyin.
- Stok durumunu güncelleme
- Tek bir müsaitlik durumunu güncellemek için değiştirilmesi gereken müsaitlik durumu girişini (aynı
availability_id) yükleyin ve seçilen alanlardan herhangi birini değiştirin. - Müsaitlik durumunu silme
- Bir stok durumu girişi artık mevcut değilse veya silinmesi gerekiyorsa bu stok durumunu (aynı
availability_id)spots_available0 olarak ayarlanmış şekilde yükleyin. Sistem, bu girişi otomatik olarak siler. Ayrıca, bir satıcıya / tüzel kişiye ait tüm verileri kaldırmak için tüm uygunluk zaman aralıklarınıspots_available0 olarak ayarlayın. Bu işlem, satıcıyı / tüzel kişiyi Uygunluk'tan kaldırır. - Müsaitlik Durumu Ekleme
- Yeni müsaitlik zaman aralıkları için feed yüklemesine, benzersiz yeni
availability_idile birlikte yeni müsaitlik girişini ekleyin. Sistem, bu bilgiyi normal bir feed'e dahil edilmiş gibi değerlendirir.
Tanımlar
AppointmentAvailabilityFeed Tanımı
message AppointmentAvailabilityFeed { repeated AppointmentAvailability data = 1; }
AppointmentAvailability Tanımı
// This represents the availability data for a bookable service provided by a // merchant. // For example, it can be a haircut/nail manicure service for a beauty salon or // a massage service for a spa. // The availability feed should be a list of this message. message AppointmentAvailability { // An opaque string generated by the partner that identifies a service time // slot. Must be unique across all entities and service time slots. // Strongly recommended to only include URL-safe characters. // Required. string availability_id = 1; // An opaque string generated by the partner that identifies an Entity. // Must be unique across all entities. // Strongly recommended to only include URL-safe characters. // Required. string entity_id = 2; // An opaque string of ASCII characters from an aggregator partner which // uniquely identifies the Service (haircut, nail manicure, massage). // Strongly recommended to only include URL-safe characters. // Required. string service_id = 3; // The name of the service provider. For example, the name of the // hairdresser or the spa staff member. // Optional. string provider = 12; // Timestamp of when this availability slot starts in UTC. // Given in seconds since the unix epoch. // For example, 1735714800 seconds for 1 Jan 2025, 07:00:00 (UTC). // Required. int64 start_time_sec = 4; // The minimum number of minutes in advance before the start time that this // availability slot can be booked. // For example, if the start time is 10:00 AM and the min_advance_minutes is // 60, then the latest time this slot can be booked is 9:00 AM on the day of // the appointment. // If not set, it is assumed to be 0, meaning the slot can be booked at any // time before the start time. // Optional. int32 min_advance_minutes = 13; // Number of total spots and available spots of this booking availability. // Required. int32 spots_total = 5; // Required. int32 spots_available = 6; // The minimum number of spots that should be booked for this availability. // For example, a user has to book at least 2 spots for a time slot sometimes. // If set, spots_minimum_book should be less or equal to spots_available. // Optional. int32 spots_minimum_book = 7; // Link of this booking availability. Users will be redirected to partner // website to continue booking after clicking this link. // Required. string booking_link = 8; // Base price per person. // Required. google.type.Money base_price = 9; // Fee per person. // Required. google.type.Money fee_price = 10; // Whether the feed is incremental or not. // By default it is false, meaning the Availability feed will override the // previous data for the same entity_id. // If this is set to be true, the Availability feed will be proceeded as // incremental updates for the same entity_id. // 1) If it is a new availability_id, the entry is added. // 2) If it is an existing availability_id and the spots_available is 0, // the entry is removed. // 3) If it is an existing availability_id and the spots_available is not // 0, the entry is updated. bool is_incremental = 11; }
Harici proto referansları:
Golf stok durumu feed'leri örnekleri
Randevu Müsaitliği Feed'i
{ "data": [ { "availability_id": "availability_id_1", "entity_id": "entity_id_1", "service_id": "service_id_1", "start_time_sec": 1728257400, "spots_total": 4, "spots_available": 4, "spots_minimum_book": 2, "booking_link": "https://www.googleappointments.com/a_link_direct_to_booking_page", "base_price": { "currency_code": "USD", "units": 80, "nanos": 0 }, "fee_price": { "currency_code": "USD", "units": 1, "nanos": 750000000 } }, { "availability_id": "availability_id_2", "entity_id": "entity_id_2", "service_id": "service_id_2", "start_time_sec": 1728259200, "spots_total": 4, "spots_available": 4, "spots_minimum_book": 2, "booking_link": "https://googlegolfappointments.com/a_link_direct_to_booking_page", "base_price": { "currency_code": "USD", "units": 80, "nanos": 0 }, "fee_price" : { "currency_code": "USD", "units": 2, "nanos": 850000000 } } ] }
Tanımlayıcı Dosyası
{ "generation_timestamp": 1663347730, "name": "appointment.availability", "data_file": [ "appointment_availability_1663347730.json" ] }