فید در دسترس بودن قرار ملاقات

فیدهای مربوط به در دسترس بودن قرار ملاقات را ایجاد و بارگذاری کنید

هنگام ایجاد و آپلود فیدهای مربوط به در دسترس بودن قرار ملاقات، این دستورالعمل‌ها را دنبال کنید:

  • برای فایل‌های داده‌های مربوط به دسترسی به قرار ملاقات، از مشخصات شرح داده شده در فید دسترسی به قرار ملاقات پیروی کنید. توصیه می‌کنیم برای هر آپلود از نام‌های منحصر به فرد برای فایل‌های داده‌های دسترسی به قرار ملاقات استفاده کنید. یک مهر زمانی در نام فایل قرار دهید، به عنوان مثال، appointment availability_1633621547.json .
  • در توصیفگر مجموعه فایل، فیلد name را روی appointment.availability تنظیم کنید. برای مثالی از فایل توصیفگر، به نمونه JSON مراجعه کنید. توصیه می‌کنیم برای هر آپلود از نام‌های فایل توصیفگر منحصر به فرد استفاده کنید. یک مهر زمانی در نام فایل قرار دهید، به عنوان مثال، appointment availability_1633621547.filesetdesc.json . فایل توصیفگر باید در سرور SFTP عمومی آپلود شود.
  • فیدها را هر 30 دقیقه یکبار به عنوان به‌روزرسانی کامل، به سرور عمومی SFTP آپلود کنید.
  • می‌توانید جزئیات سرور SFTP را در بخش پیکربندی > فیدها در پورتال شرکا پیدا کنید.
  • انتخاب سرورهای فید

    انتخاب سرورهای فید در پورتال شرکا
  • وضعیت مصرف خوراک را در بخش خوراک‌ها > تاریخچه در پورتال شرکا مشاهده کنید.

آپلود فیدهای افزایشی

قابلیت دسترسی به قرار ملاقات همچنین از فیدهای افزایشی پشتیبانی می‌کند و به شرکا این امکان را می‌دهد که فقط تغییرات ایجاد شده در دسترسی خود را با استفاده از آپلود فید آپلود کنند.

برای آپلود یک فید افزایشی، حداقل در یکی از بازه‌های زمانی موجود در فید خود، is_incremental: true تنظیم کنید. اگر مقدار is_incremental در برخی از فیدها روی true و در برخی دیگر روی false تنظیم شده باشد، سیستم همه آنها را به عنوان افزایشی در نظر می‌گیرد.

به‌روزرسانی‌های افزایشی عملیات زیر را ارائه می‌دهند:

بدون تغییر
برای موجودیت‌هایی که تغییری در آنها وجود ندارد، شناسه‌ی در دسترس بودن را وارد نکنید.
در دسترس بودن به‌روزرسانی
برای به‌روزرسانی یک موجودی واحد، ورودی موجودی خاص (همان availability_id ) که نیاز به اصلاح دارد را آپلود کنید و هر یک از فیلدهای انتخاب شده را تغییر دهید.
حذف موجودی
اگر یک ورودی مربوط به موجودی دیگر در دسترس نیست یا باید حذف شود، آن موجودی (همان availability_id ) را با مقدار spots_available روی ۰ آپلود کنید تا سیستم به طور خودکار آن را حذف کند. علاوه بر این، برای حذف تمام داده‌های یک تاجر/نهاد، spots_available تمام اسلات‌های موجودی آنها را روی ۰ تنظیم کنید - این کار خود تاجر/نهاد را از Availability حذف خواهد کرد.
افزودن موجودی
برای بازه‌های زمانی جدید، ورودی جدید مربوط به دسترسی را به همراه availability_id منحصر به فرد آن در آپلود فید قرار دهید. سیستم با آن مانند زمانی که در یک فید معمولی قرار می‌گیرد، رفتار می‌کند.

تعاریف

تعریف فید دسترسی به قرار ملاقات

message AppointmentAvailabilityFeed {
  repeated AppointmentAvailability data = 1;
}

تعریف در دسترس بودن قرار ملاقات

// 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;
}

ارجاعات اولیه خارجی:

نمونه های موجود در گلف

فید موجود بودن قرار ملاقات

{
  "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
      }
    }
  ]
}

فایل توصیفگر

{
  "generation_timestamp": 1663347730,
  "name": "appointment.availability",
  "data_file": [
    "appointment_availability_1663347730.json"
  ]
}