ราคาตามระยะเวลาในการเข้าพัก (LOS)

Travel Partner Prices API

Travel Partner Prices API มีอินเทอร์เฟซ RESTful สำหรับส่ง ราคาที่พักไปยัง Google

บริการ: travelpartnerprices.googleapis.com

หากต้องการเรียกใช้บริการนี้ เราขอแนะนำให้คุณใช้ไลบรารีของไคลเอ็นต์ที่ Google จัดหาให้ หากแอปพลิเคชันของคุณต้องใช้ไลบรารีของคุณเองเพื่อเรียกใช้บริการนี้ โปรดติดต่อผู้จัดการลูกค้าด้านเทคนิค (TAM) เพื่อขอเอกสารการค้นพบ สำหรับบริการนี้

ปลายทางบริการ

ปลายทาง บริการคือ URL ฐานที่ระบุที่อยู่เครือข่ายของบริการ API บริการหนึ่งๆ อาจมีปลายทางบริการหลายรายการ บริการนี้มีปลายทางของบริการต่อไปนี้ และ URI ทั้งหมดที่แสดงจะเกี่ยวข้องกับปลายทางของบริการนี้

https://travelpartnerprices.googleapis.com
เมธอด
ingestLosPropertyPrices POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices

อัปโหลดราคาตามระยะเวลาในการเข้าพักที่ระบุสำหรับที่พักที่ต้องการ

ต้องมีข้อความราคา LoS ที่เข้ารหัส JSON (ดูด้านล่าง) เป็นเนื้อหาข้อความ HTTP

account_id: ค่าของสตริงนี้คือค่า "รหัสบัญชี" ซึ่งแสดงอยู่ที่หน้าการตั้งค่าบัญชีใน Hotel Center

property_id: ค่าขององค์ประกอบนี้ต้องเป็นสตริงที่ตรงกับรหัสข้อมูลในฟีดข้อมูลโรงแรม

การตรวจสอบสิทธิ์ API

Travel Partner Prices API ใช้ OAuth 2.0 ในการ ตรวจสอบสิทธิ์แอปพลิเคชันเพื่อให้คุณเข้าถึง API ได้

ทำตามวิธีการตั้งค่า OAUTH 2.0 เพื่อรับการให้สิทธิ์สำหรับ Travel Partner Prices API

เมื่อสร้างโปรเจ็กต์ใหม่สำหรับ Travel Partners Prices API คุณจะต้อง เปิดใช้สิทธิ์เข้าถึงโปรเจ็กต์คอนโซล Google Cloud ใหม่ ซึ่งคล้ายกับ วิธีการที่ระบุไว้ใน Travel Partner API

โปรดดูขั้นตอนที่ระบุไว้ใน Travel Partner API และแทนที่อินสแตนซ์ทั้งหมดของ "Travel Partner API" ด้วย "Travel Partner Prices API" เพื่อเปิดใช้โปรเจ็กต์

ขอบเขตของ Travel Partner Prices API มีดังนี้ "https://travelpartnerprices.googleapis.com"

เส้นทางการอัปโหลดสำหรับ Travel Partner Prices API คือ "/travel/lodging/uploads/accounts/<account_id>/property_data"

คำขอ

ไวยากรณ์

ข้อความ LoS Prices ใช้ไวยากรณ์ต่อไปนี้

{
  "requestTime": YYYY-MM-DDTHH:mm:ss.SSSZ,
  "propertyPrices": {
    "arrivalDatePrices": [{
      "startDate": {
        "year": int
        "month": int
        "day": int
      }
      "endDate": {
        "year": int
        "month": int
        "day": int
      }
      "productPrices": [{
        "roomTypeId": "string"
        "ratePlanId": "string"
        "occupancyPrices": [{
          "adults": int
          "prices": [{
            "rateRuleId": "string"
            "currencyCode": "string"
            "rates": [night_1,night_2,...]
            "taxes": [night_1,night_2,...]
            "fees": [night_1,night_2,...]
          }]
        }]
      }]
    }]
  }
}

องค์ประกอบและแอตทริบิวต์

ข้อความราคาตามระยะเวลาในการเข้าพักมีองค์ประกอบและแอตทริบิวต์ต่อไปนี้

องค์ประกอบ จำนวนข้อผิดพลาด ประเภท คำอธิบาย
requestTime 1 string

ช่วงเวลาที่มีการส่งข้อความราคา LoS ซึ่งแสดงเป็นสตริงที่จัดรูปแบบ RFC 3339

ระบบจะประมวลผลข้อความที่ส่งพร้อมrequestTimeภายใน 24 ชั่วโมงก่อนหน้าและจะทิ้งข้อความที่ยังไม่ได้รับการประมวลผล

ระบบจะประมวลผลข้อความตามลำดับของ requestTime โดยไม่คำนึงถึงลำดับที่ได้รับข้อความ ตัวอย่างเช่น การอัปเดตราคาที่มี requestTime เป็น 2019-05-03T14:09:00Z ซึ่งได้รับหลังจากข้อความสำหรับแผนการเดินทางเดียวกันที่มี requestTime เป็น 2019-05-03T14:10:00Z จะถูกทิ้งเพื่อใช้ข้อความที่มีการประทับเวลาในภายหลัง

RFC 3339 กำหนดให้ใช้รูปแบบวันที่และเวลาที่ระบุอย่างครบถ้วนเป็น YYYY-MM-DDThh:mm:ss.SSZ ต้องระบุเขตเวลาเป็นhh:mmค่าชดเชยเวลาจาก UTC ที่เป็นบวกหรือลบ หรือZเป็นรูปแบบย่อของ UTC

คุณจะใส่หรือไม่ใส่เศษวินาทีก็ได้ และอาจแสดงความแม่นยำได้สูงสุดถึง ระดับนาโนวินาที ตัวอย่างเช่น 2017-01-15T01:30:15.01-08:00 จะเข้ารหัส 15.01 วินาทีหลังจาก 01:30 PST ในวันที่ 15 มกราคม 2017

propertyPrices 1 Object ราคาสำหรับที่พัก ราคาทั้งหมดภายใน propertyPrices ใช้กับพร็อพเพอร์ตี้เดียวกัน

องค์ประกอบนี้จะไม่ซ้ำกัน หากต้องการส่งราคาสำหรับที่พักหลายแห่ง คุณต้องส่งคำขอ HTTP หลายรายการ (อย่างน้อย 1 รายการต่อที่พัก)

arrivalDayPrices[] 1..n Object ราคาสำหรับวันที่เดินทางมาถึง ราคาทั้งหมดภายในarrivalDayPrices ใช้กับที่พักที่เฉพาะเจาะจง แต่มีวันที่เดินทางมาถึงต่างกัน
startDate 1 Object productPrices จะมีผลกับวันที่เดินทางมาถึงทั้งหมด ระหว่างวันที่ startDate ถึง endDate (รวมวันที่ระบุ)

หากต้องการระบุวันที่เดินทางมาถึงเพียงวันเดียว (ไม่ใช่ช่วง) ให้ ป้อนวันที่เดินทางมาถึงในทั้ง startDate และ endDate

startDate.year 1 integer ปีstartDate ต้องมีค่าระหว่าง 1 ถึง 9999
startDate.month 1 integer เดือนของปี ต้องมีค่าระหว่าง 1 ถึง 12
startDate.day 1 integer วันของเดือน ต้องมีค่าระหว่าง 1 ถึง 31 และใช้ได้สำหรับปีและเดือน
endDate 0..1 Object ระบบจะใช้ productPrices กับวันที่เดินทางมาถึงทั้งหมดระหว่างวันที่ startDate ถึง endDate ซึ่งรวมวันที่ดังกล่าวด้วย

หากต้องการระบุวันที่เดินทางมาถึงเพียงวันเดียว (ไม่ใช่ช่วง) คุณอาจละเว้น endDate ได้

endDate.year 1 integer ปีendDate ต้องมีค่าระหว่าง 1 ถึง 9999
endDate.month 1 integer เดือนของปี ต้องมีค่าระหว่าง 1 ถึง 12
endDate.day 1 integer วันของเดือน ต้องมีค่าระหว่าง 1 ถึง 31 และใช้ได้สำหรับปีและเดือน
productPrices[] 1..n Object ราคาของผลิตภัณฑ์ ราคาทั้งหมดภายใน productPrices นี้ใช้กับชุดค่าผสมพร็อพเพอร์ตี้และวันที่เดินทางมาถึงที่เฉพาะเจาะจง แต่เป็นผลิตภัณฑ์ที่แตกต่างกัน
roomTypeId 0..1 string รหัสที่ไม่ซ้ำกันสำหรับห้องพักที่ราคานี้อ้างอิงถึง ใช้รหัสนี้เพื่อจับคู่ข้อมูลแพ็กเกจห้องพักกับข้อมูลที่ส่งใน roomdata ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลเมตาของแพ็กเกจห้องพัก
ratePlanId 0..1 string รหัสที่ไม่ซ้ำกันของข้อมูลแพ็กเกจที่ราคานี้อ้างอิงถึง ใช้รหัสนี้เพื่อจับคู่ข้อมูลแพ็กเกจห้องพักกับข้อมูลที่ส่งใน packagedata ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลเมตาของแพ็กเกจห้องพัก
occupancyPrices[] 1..n Object ราคาสำหรับอัตราการเข้าพัก ราคาทั้งหมดภายใน occupancyPrices นี้ใช้กับที่พัก วันที่เดินทางมาถึง และชุดค่าผสมผลิตภัณฑ์ที่เฉพาะเจาะจง แต่ใช้กับ จำนวนผู้เข้าพักที่แตกต่างกัน
adults 1 integer จำนวนแขกสูงสุดที่จองได้ต่อห้องพัก ซึ่งรวมถึง ผู้ใหญ่และเด็ก ค่านี้จะตั้งค่าสำหรับอัตราทั้งหมดภายในฟิลด์ occupancyPrices ที่เกี่ยวข้อง และต้องเป็นจำนวนเต็มบวกตั้งแต่ 1 ถึง 99

หมายเหตุ: ติดต่อทีมสนับสนุนเพื่อส่งอัตราการเข้าพักสำหรับผู้ใหญ่มากกว่า 4 คน

prices[] 1..n Object ราคาตามระยะเวลาในการเข้าพัก ราคาทั้งหมดภายใน prices ใช้กับ ที่พัก วันที่เดินทางมาถึง ผลิตภัณฑ์ และอัตราการเข้าพักที่เฉพาะเจาะจง
rateRuleId 0..1 string สำหรับราคาสำหรับลูกค้าที่เข้าเกณฑ์ รหัสนี้จะจับคู่ราคากับคำจำกัดความในไฟล์คำจำกัดความกฎเกี่ยวกับอัตรา จำนวนอักขระสูงสุดสำหรับช่องนี้คือ 40 ตัว
currencyCode 1 string รหัสสกุลเงิน 3 ตัวอักษรซึ่งระบุสกุลเงินที่ระบุ rates และ taxes เช่น "USD" สำหรับดอลลาร์สหรัฐ
rates[] 30 float องค์ประกอบของราคาพื้นฐานของราคาตามระยะเวลาในการเข้าพัก

หากระบุtaxesที่เกี่ยวข้อง อัตรานี้จะ ไม่รวมภาษี ราคารวมคือผลรวมของ อัตราและภาษีที่เกี่ยวข้อง

ค่าที่ดัชนี n สอดคล้องกับn+1 ระยะเวลาในการเข้าพัก

คุณต้องส่งชุด LoS ทั้งหมด 30 ราคาพร้อมกัน หากส่งน้อยกว่า 30 รายการ ระบบจะประมวลผลราคา LoS ทั้งหมดที่ระบุเป็นราคาปกติ และอัตราที่เหลือจะใช้ไม่ได้จนถึง LoS 30 หากคุณส่งมากกว่า 30 รายการ ระบบจะทิ้งราคาที่คุณส่งหลังจากราคาที่ 30

ระยะเวลาการเข้าพักที่ไม่พร้อมให้บริการควรแสดงด้วย 0

taxes[] 30 float องค์ประกอบภาษีของราคาตามระยะเวลาในการเข้าพัก

ค่าที่ดัชนี n สอดคล้องกับn+1 ระยะเวลาในการเข้าพัก

fees[] 30 float องค์ประกอบค่าธรรมเนียมของราคาตามระยะเวลาในการเข้าพัก

ค่าที่ดัชนี n สอดคล้องกับn+1 ระยะเวลาในการเข้าพัก

ตัวอย่าง

ราคาและภาษีตาม LOS

ตัวอย่างต่อไปนี้แสดงการกำหนดระยะเวลาในการเข้าพักขั้นต่ำเป็น 2 คืนสำหรับวันที่เช็คอิน 1 วัน และการกำหนดว่าไม่มีห้องว่างสำหรับวันที่เช็คอินอีกวัน หากตั้งค่า startDate ตั้งแต่วันที่ 1/9/2023 โดยไม่มี endDate แสดงว่าคุณ ระบุอัตราสำหรับวันที่เดียวและละเว้น endDate ได้

occupancyPrices อาร์เรย์ที่ตั้งค่าเป็น 2 ช่วยให้คุณตั้งราคาที่แตกต่างกัน สำหรับอัตราการเข้าพักที่แตกต่างกันได้ ดังนั้นจึงไม่มีห้องว่างในวันที่ 09/04/23 rates

taxesอาร์เรย์ที่แสดงจะคำนวณเป็น 10% ของอัตรา

fees อาร์เรย์ที่แสดงจะใช้ค่าธรรมเนียมการทำความสะอาด $50 ต่อการเข้าพัก

หากวันที่เช็คอินทั้งหมดไม่ว่าง เช่น 9/3/2023 คุณต้อง ส่งวันที่อย่างชัดเจน และละเว้น rates, taxes และ productPrices เพื่อ ระบุว่าวันที่ที่ขอไม่ว่าง

{
  "requestTime": "2023-08-10T12:15:222",
  "propertyPrices": {
    "arrivalDatePrices": [
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 1
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 3
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

เนื้อหาการตอบกลับ

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

การแสดง JSON
        {
          "name": "string"
        }
        
ช่อง
name ชื่อทรัพยากรของ PropertyPrices ที่แก้ไข มีรูปแบบดังนี้
accounts/{account}/properties/{property}