แรงจูงใจ
ดังที่ได้กล่าวไว้ในภาพรวม DPA ต้องใช้การผสมผสานระหว่าง Google Mobile Data Plan Sharing API และ Data Plan Agent API ทั้งนี้ขึ้นอยู่กับกรณีการใช้งานที่ผู้ให้บริการต้องการรองรับ เอกสารนี้อธิบาย Data Plan Agent API ที่ Google จะใช้ เพื่อระบุแพ็กเกจอินเทอร์เน็ตมือถือของผู้ใช้ ดึงข้อมูลเกี่ยวกับ แพ็กเกจเหล่านี้ และซื้อแพ็กเกจอินเทอร์เน็ต
การตรวจสอบสิทธิ์
ก่อนที่ GTAF จะโทรได้ DPA ต้องตรวจสอบสิทธิ์ GTAF เราจะตรวจสอบความถูกต้องของใบรับรอง SSL ของ DPA ซึ่งเป็นส่วนหนึ่งของกระบวนการเริ่มต้นใช้งานสำหรับผู้ให้บริการ ปัจจุบันเรา กำหนดให้ใช้ OAuth2 สำหรับการตรวจสอบสิทธิ์ร่วมกัน
คำอธิบาย API
GTAF ใช้คีย์ผู้ใช้ซึ่งระบุผู้ติดตามไปยังผู้ให้บริการเมื่อ ค้นหา DPA ของผู้ให้บริการ เมื่อ GTAF กำลังค้นหา DPA ในนามของ แอปพลิเคชันที่มีสิทธิ์เข้าถึง MSISDN ทาง GTAF อาจใช้ MSISDN ในระดับสูง API ตัวแทนแพ็กเกจอินเทอร์เน็ตที่เสนอประกอบด้วยคอมโพเนนต์ต่อไปนี้
- กลไกในการค้นหาสถานะแพ็กเกจอินเทอร์เน็ตของผู้ใช้
- กลไกในการค้นหา DPA สำหรับข้อเสนอแพ็กเกจอินเทอร์เน็ตสำหรับผู้ใช้
- กลไกในการเปลี่ยนแปลงแพ็กเกจอินเทอร์เน็ตของผู้ใช้ (เช่น ซื้อแพ็กเกจใหม่ เป็นต้น)
- กลไกในการยืนยันว่าผู้ใช้มีสิทธิ์ซื้อแพ็กเกจอินเทอร์เน็ต แพ็กเกจใดแพ็กเกจหนึ่งหรือไม่
- กลไกสำหรับ GTAF ในการลงทะเบียน MSISDN กับ DPA
- กลไกสำหรับ GTAF ในการยืนยันว่า DPA อยู่ในสถานะปกติ
ส่วนที่เหลือของเอกสารนี้จะอธิบายรายละเอียดเกี่ยวกับคอมโพเนนต์ API แต่ละรายการ การสื่อสารทั้งหมดต้องเกิดขึ้นผ่าน HTTPS (พร้อมใบรับรอง SSL ของ DPA ที่ถูกต้อง) เว้นแต่จะระบุไว้เป็นอย่างอื่น ผู้ให้บริการ อาจเลือกใช้คอมโพเนนต์ API ทั้งหมดหรือบางส่วน ทั้งนี้ขึ้นอยู่กับฟีเจอร์ที่รองรับจริง
การค้นหาสถานะแพ็กเกจอินเทอร์เน็ต
การโต้ตอบระหว่าง GTAF กับ DPA
รูปที่ 4 ขั้นตอนการโทรเพื่อขอและรับข้อมูลแพ็กเกจอินเทอร์เน็ตของผู้ใช้
รูปที่ 4 แสดงโฟลว์การเรียกที่เชื่อมโยงกับไคลเอ็นต์ที่สอบถามเกี่ยวกับ สถานะแพ็กเกจอินเทอร์เน็ตของผู้ใช้และข้อมูลแพ็กเกจอินเทอร์เน็ตอื่นๆ ลำดับการโทรนี้ ใช้ร่วมกันสำหรับการเรียก API ที่ไคลเอ็นต์ทริกเกอร์ใน UE
- ไคลเอ็นต์จะขอสถานะแพ็กเกจอินเทอร์เน็ตและ/หรือข้อมูลอื่นๆ โดยการเรียกใช้ Google API แบบส่วนตัว ไคลเอ็นต์จะรวมคีย์ผู้ใช้ในคำขอไปยัง GTAF
- GTAF ใช้คีย์ผู้ใช้และตัวระบุไคลเอ็นต์เพื่อค้นหา DPA ของผู้ให้บริการ ตัวระบุไคลเอ็นต์ที่รองรับคือ mobiledataplan และ youtube เมื่อ DPA ได้รับการเรียกใช้ที่มีตัวระบุไคลเอ็นต์เหล่านี้ DPA จะต้อง ตอบกลับด้วยข้อมูลแพ็กเกจที่ไคลเอ็นต์ใช้ได้
- GTAF จะส่งคืนข้อมูลที่ขอไปยังไคลเอ็นต์และแคชข้อมูลแผนโดย GTAF จนกว่าจะถึงเวลาหมดอายุที่ระบุโดย DPA
ขั้นตอนที่ 1 และ 3 ในรูปที่ 4 เป็น Google API ส่วนตัว จึงไม่มี
คำอธิบายเพิ่มเติม ขั้นตอนที่ 2 คือ API สาธารณะที่อธิบายไว้ด้านล่าง DPA ต้อง
ปฏิบัติตามส่วนหัว HTTP ของ Cache-Control: no-cache
เมื่อแสดงการเรียก API เหล่านี้
จาก GTAF
สถานะแพ็กเกจ
GTAF จะส่งคำขอ HTTP ต่อไปนี้เพื่อรับสถานะแพ็กเกจ
GET DPA_URL/{userKey}/planStatus?key_type={CPID,MSISDN}&client_id=CLIENT_ID
ระบบจะระบุไคลเอ็นต์ที่ GTAF ติดต่อ DPA ในนามของไคลเอ็นต์นั้นโดยใช้ CLIENT_ID DPA สามารถปรับแต่งการตอบกลับ GTAF ได้ ทั้งนี้ขึ้นอยู่กับข้อตกลงระหว่างไคลเอ็นต์ของ Google กับผู้ให้บริการ รูปแบบของการตอบกลับคือออบเจ็กต์ JSON ที่แสดงถึง PlanStatus
{
"plans": [{
"planName": "ACME1",
"planId": "1",
"planCategory": "PREPAID",
"expirationTime": "2017-01-29T01:00:03.14159Z", // req.
"planModules": [{
"moduleName": "Giga Plan", // req.
"trafficCategories": ["GENERIC"],
"expirationTime": "2017-01-29T01:00:03.14159Z", // req.
"overUsagePolicy": "BLOCKED",
"maxRateKbps": "1500",
"description": "1GB for a month", // req.
"coarseBalanceLevel": "HIGH_QUOTA"
}]
}],
"languageCode": "en-US", // req.
"expireTime": "2018-06-14T08:41:27-07:00", // req.
"updateTime": "2018-06-07T07:41:22-07:00", // req.
"title": "Prepaid Plan"
"planInfoPerClient": {
"youtube": {
"rateLimitedStreaming": {
"maxMediaRateKbps": 256
}
}
}
}
คำขอต้องมีส่วนหัว Accept-Language
ที่ระบุภาษา
ที่ควรใช้สำหรับสตริงที่มนุษย์อ่านได้ (เช่น คำอธิบายแพ็กเกจ)
สำหรับแพ็กเกจแบบชำระเงินภายหลัง expirationTime
ต้องเป็นวันที่เกิดการเรียกเก็บเงินตามรอบของแพ็กเกจ (เช่น
เมื่อระบบรีเฟรช/โหลดซ้ำยอดคงเหลือของข้อมูล)
โมดูลแพ็กเกจแต่ละโมดูลอาจมีหมวดหมู่การเข้าชมของโมดูลแพ็กเกจหลายรายการ (PMTCs)
เพื่อ
จำลองกรณีที่แชร์โมดูลแพ็กเกจในหลายแอป (เช่น 500 MB
สำหรับเกมและเพลง) PMTC ต่อไปนี้ได้รับการกำหนดไว้ล่วงหน้า GENERIC, VIDEO,
VIDEO_BROWSING, VIDEO_OFFLINE, MUSIC, GAMING, SOCIAL and MESSAGING.
คาดว่าผู้ให้บริการจะติดต่อทีมต่างๆ ของ Google เพื่อตกลงเกี่ยวกับชุดหมวดหมู่การเข้าชมและความหมายที่เกี่ยวข้องกับแอปพลิเคชันต่างๆ ของ Google
การค้นหาข้อเสนอแพ็กเกจ
GTAF จะส่งคำขอ HTTP ต่อไปนี้เพื่อรับข้อเสนอแพ็กเกจจากผู้ให้บริการ
GET DPA_URL/{userKey}/planOffer?key_type={CPID,MSISDN}&client_id=CLIENT_ID&context={purchaseContext}
ระบบจะระบุไคลเอ็นต์ที่ GTAF ติดต่อ DPA ในนามของไคลเอ็นต์นั้นโดยใช้ CLIENT_ID DPA สามารถปรับแต่งการตอบกลับ GTAF ได้ ทั้งนี้ขึ้นอยู่กับข้อตกลงระหว่างไคลเอ็นต์ของ Google กับผู้ให้บริการ พารามิเตอร์บริบทที่ไม่บังคับ จะระบุบริบทของแอปพลิเคชันที่ส่งคำขอ โดยปกติแล้วจะเป็น สตริงที่แอปพลิเคชันส่งไปยังผู้ให้บริการผ่าน GTAF
เนื้อหาการตอบกลับมีอินสแตนซ์ของ PlanOffer
{
"offers": [
{
"planName": "ACME Red", // req.
"planId": "turbulent1", // req.
"planDescription": "Unlimited Videos for 30 days.", // req.
"promoMessage": "Binge watch videos.",
"languageCode": "en_US", // req.
"overusagePolicy": "BLOCKED",
"cost": { // req.
"currencyCode": "INR",
"units": "300",
"nanos": 0
},
"duration": "2592000s",
"offerContext": "YouTube",
"trafficCategories": ["VIDEO"],
"quotaBytes": "9223372036850"
}
],
"expireTime": "2019-03-04T00:06:07Z" // req.
}
ลำดับของแพ็กเกจอินเทอร์เน็ตในอาร์เรย์ offers
อาจกำหนดลำดับที่แพ็กเกจอินเทอร์เน็ตจะแสดงต่อผู้ใช้
นอกจากนี้ หากแอปพลิเคชันแสดงได้เฉพาะแพ็กเกจ x เนื่องจากข้อจำกัดของ UI หรือข้อจำกัดอื่นๆ และการตอบกลับมีเฉพาะแพ็กเกจ y > x ระบบจะแสดงเฉพาะแพ็กเกจ x แรก GTAF จะแชร์แพ็กเกจสูงสุด 10 รายการเท่านั้น หากแอปพลิเคชันที่ค้นหาข้อเสนอคือ UI ของแพ็กเกจอินเทอร์เน็ตมือถือซึ่งเป็นส่วนหนึ่งของ Google Play Services ทั้งนี้เพื่อให้ผู้ใช้บริการ Google Play ได้รับประสบการณ์การใช้งานที่ดี
สตริงใน offerInfo
มีไว้เพื่อให้ผู้ใช้สามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับข้อเสนอ
รวมถึงมีวิธีเลือกไม่รับข้อเสนอเพิ่มเติมจากภายในแอปพลิเคชัน
สาเหตุที่มีช่องเหล่านี้ก็คือผู้ให้บริการบางรายไม่จำเป็นต้องได้รับความยินยอมจากผู้ใช้ปลายทางเพื่ออนุญาตการซื้อในแอป แต่จำเป็นต้องมีกลไกให้ผู้ใช้เลือกไม่ใช้ โปรดทราบว่าผู้ให้บริการต้องมีกลไกในการดำเนินการตามคำขอซื้อสำหรับข้อเสนอใดๆ ที่ขยายเวลาให้แก่ผู้ใช้ คุณสามารถสื่อสารกลไกที่ใช้เรียกเก็บเงินจากผู้ใช้สำหรับการซื้อใดๆ กับ GTAF ได้โดยใช้ตัวเลือกformOfPayment ในการตอบกลับ
คำขอต้องมีส่วนหัว Accept-Language
ที่ระบุภาษา
ที่ควรใช้สำหรับสตริงที่มนุษย์อ่านได้ (เช่น คำอธิบายแพ็กเกจ)
การซื้อแพ็กเกจอินเทอร์เน็ต
API แผนการซื้อจะกำหนดวิธีที่ GTAF ซื้อแพ็กเกจผ่าน DPA GTAF จะเริ่มธุรกรรมเพื่อซื้อแพ็กเกจอินเทอร์เน็ต 1 แพ็กเกจให้กับ DPA คำขอ ต้องมีตัวระบุธุรกรรมที่ไม่ซ้ำกัน (transactionId) เพื่อติดตามคำขอ และหลีกเลี่ยงการดำเนินการธุรกรรมที่ซ้ำกัน DPA ต้องตอบกลับด้วยการตอบกลับที่ระบุว่า สำเร็จ/ล้มเหลว
คำขอทำธุรกรรม
เมื่อได้รับคำขอจากไคลเอ็นต์แล้ว GTAF จะส่งคำขอ POST ไปยัง DPA URL ของคำขอคือ
POST DPA_URL/{userKey}/purchasePlan?key_type={CPID,MSISDN}&client_id=CLIENT_ID
โดย userKey
คือ CPID
หรือ MSISDN
เนื้อหาของคำขอคืออินสแตนซ์ของ TransactionRequest ซึ่งมีฟิลด์ต่อไปนี้
{
"planId": string, // Id of plan to be purchased. Copied from
// offers.planId field returned from a
// Upsell Offer request,
// if available. (req.).
"transactionId": string, // Unique request identifier (req.)
"offerContext": string, // Copied from from the
// offers.offerContext, if available.
// (opt.)
"callbackUrl": string // URL that the DPA can call back with response once
// it has handled the request.
}
การตอบกลับธุรกรรม
DPA จะต้องแสดงสาเหตุที่พบบ่อยของข้อผิดพลาดในกรณีที่เกิดข้อผิดพลาด นอกจากนี้ รหัสข้อผิดพลาดต่อไปนี้แสดงถึงผลลัพธ์ของธุรกรรมที่ไม่สำเร็จ
- DPA จะแสดงรหัสข้อผิดพลาด 400 BAD REQUEST ซึ่งบ่งชี้ให้ GTAF ทราบว่ารหัสแพ็กเกจที่ซื้อไม่ถูกต้อง
- DPA จะแสดงรหัสข้อผิดพลาด 402 PAYMENT REQUIRED ซึ่งระบุให้ GTAF ทราบว่า ผู้ใช้มียอดคงเหลือไม่เพียงพอที่จะทำการซื้อให้เสร็จสมบูรณ์
- DPA จะแสดงรหัสข้อผิดพลาด 409 CONFLICT ซึ่งบ่งชี้ให้ GTAF ทราบว่าแพ็กเกจ ที่จะซื้อเข้ากันไม่ได้กับผลิตภัณฑ์ที่ผู้ใช้ใช้อยู่ในปัจจุบัน ตัวอย่างเช่น หากนโยบายแพ็กเกจอินเทอร์เน็ตของผู้ให้บริการไม่อนุญาตให้ใช้แพ็กเกจแบบชำระเงินภายหลังและแบบชำระเงินล่วงหน้าร่วมกัน การพยายามซื้อแพ็กเกจแบบชำระเงินล่วงหน้าสำหรับผู้ใช้แบบชำระเงินภายหลังจะทำให้เกิดข้อผิดพลาด 409 CONFLICT
- DPA จะแสดงรหัสข้อผิดพลาด 403 FORBIDDEN ซึ่งบ่งชี้ให้ GTAF ทราบว่าธุรกรรมปัจจุบันเป็นธุรกรรมที่ซ้ำกับธุรกรรมที่ออกก่อนหน้านี้
DPA ควรแสดงสาเหตุของข้อผิดพลาดต่อไปนี้ในการตอบกลับ
- หากธุรกรรมก่อนหน้านี้ไม่สำเร็จ สาเหตุของข้อผิดพลาดจะระบุ เหตุผลที่ทำให้ไม่สำเร็จ
- หากธุรกรรมก่อนหน้าสำเร็จ ให้ใช้ DUPLICATE_TRANSACTION
- หากธุรกรรมก่อนหน้ายังอยู่ในคิว ให้ใช้ REQUEST_QUEUED
DPA จะสร้างการตอบกลับ 200-OK สำหรับธุรกรรมที่ดำเนินการสำเร็จหรือธุรกรรมที่อยู่ในคิวเท่านั้น ในกรณีของธุรกรรมที่อยู่ในคิว DPA จะต้องกรอกสถานะธุรกรรมเท่านั้นและเว้นว่างช่องอื่นๆ ในการตอบกลับ DPA ต้องโทรกลับ GTAF พร้อมการตอบกลับเมื่อมีการจัดการธุรกรรมที่คิวแล้ว เนื้อหาของการตอบกลับคืออินสแตนซ์ของ TransactionResponse ซึ่งมีรายละเอียดต่อไปนี้
{
"transactionStatus": "SUCCESS",
"purchase": {
"planId": string, // copied from request. (req.)
"transactionId": string, // copied from request. (req.)
"transactionMessage": string, // status message. (opt.)
"confirmationCode": string, // DPA-generated confirmation code
// for successful transaction. (opt.)
"planActivationTime" : string, // Time when plan will be activated,
// in timestamp format. (opt.)
},
// walletInfo is populated with the balance left in the user's account.
"walletBalance": {
"currencyCode": string, // 3-letter currency code defined in ISO 4217.
"units": string, // Whole units of the currency amount.
"nanos": number // Number of nano units of the amount.
}
}
หากไม่มี planActivationTime
GTAF จะถือว่าแพ็กเกจได้รับการเปิดใช้งานแล้ว
ความยินยอม
GTAF อาจส่งคำขอต่อไปนี้เพื่อส่งต่อค่ากําหนดความยินยอมของผู้ใช้ไปยังผู้ให้บริการ
POST DPA_URL/{userKey}/consent?key_type={CPID,MSISDN}&client_id=CLIENT_ID
โดย userKey
คือ CPID
หรือ MSISDN
เนื้อหาของคำขอคืออินสแตนซ์ของ SetConsentStatusRequest
หากทำสำเร็จ เนื้อหาการตอบกลับควรว่างเปล่า
การมีสิทธิ์
GTAF อาจส่งคำขอตรวจสอบสิทธิ์ต่อไปนี้เพื่อดูว่าผู้ใช้มีสิทธิ์ซื้อแพ็กเกจหรือไม่
GET DPA/{userKey}/Eligibility/{planId}?key_type={CPID,MSISDN}
โปรดทราบว่า planId
คือตัวระบุที่ไม่ซ้ำกันสำหรับแพ็กเกจที่ใช้ซื้อแพ็กเกจในนามของผู้ใช้ได้ (ดูการซื้อข้อมูล)
หากไม่ได้ระบุ planId
DPA จะต้องแสดงแพ็กเกจทั้งหมดที่ผู้ใช้ซื้อได้
DPA จะต้องแสดงสาเหตุที่พบบ่อยของข้อผิดพลาดในกรณีที่เกิดข้อผิดพลาด นอกจากนี้ DPA จะต้องแสดงข้อผิดพลาดในกรณีต่อไปนี้
- DPA จะแสดงรหัสข้อผิดพลาด 400 BAD REQUEST ซึ่งบ่งชี้ให้ GTAF ทราบว่า
planId
ไม่ถูกต้อง - DPA จะแสดงรหัสข้อผิดพลาด 409 CONFLICT ซึ่งบ่งชี้ว่า
planId
ไม่ เข้ากันกับแพ็กเกจอินเทอร์เน็ตของผู้ใช้
ไม่เช่นนั้น DPA จะต้องส่งการตอบกลับ 200-OK รูปแบบของ EligibilityResponse ที่สำเร็จมีดังนี้
{
"eligiblePlans":
[
{
"planId": string, // Plan identifier. Can be used to
// refer to the plan during
// offers, etc. (req.)
}
]
}
เมื่อคำขอมี planId
การตอบกลับจะมีเฉพาะแพ็กเกจนั้น
มิเช่นนั้น รายการจะรวมแพ็กเกจทั้งหมดที่ผู้ใช้มีสิทธิ์ซื้อ ในกรณีที่ planId
ว่างเปล่าและ DPA ไม่รองรับ
การแสดงรายการแพ็กเกจที่มีสิทธิ์ จะต้องแสดงข้อผิดพลาด 400 BAD REQUEST
ปลายทางการลงทะเบียน MSISDN
หากต้องการให้บริการแอปพลิเคชันที่มีสิทธิ์เข้าถึง MSISDN ทาง GTAF จะลงทะเบียน MSISDN กับ DPA GTAF จะลงทะเบียน MSISDN ก็ต่อเมื่อมีแอปพลิเคชันที่ให้บริการโดย Google Mobile Data Plan Sharing API ซึ่ง DPA จะส่งข้อมูลไปยัง GTAF โดยใช้ Google API หากต้องการลงทะเบียน MSISDN ทาง GTAF จะส่งคำขอ POST ไปยัง DPA ดังนี้
POST DPA_URL/register
เนื้อหาของคำขอจะเป็นอินสแตนซ์ของ RegistrationRequest
{
"msisdn": "<msisdn_string>"
}
หากลงทะเบียน MSISDN สำเร็จ DPA จะต้องส่งคืนการตอบกลับ 200 OK ซึ่งรวมถึง RegistrationResponse รูปแบบของ JSON คือ
{
// msisdn that was registered.
"msisdn": "<msisdn_string>",
// time after which DPA will not send updates to GTAF.
"expirationTime": string
}
จากนั้น DPA ควรส่งข้อมูลอัปเดตเกี่ยวกับแพ็กเกจอินเทอร์เน็ตของผู้ใช้ไปยัง GTAF จนกว่าจะถึงexpirationTime
หากเกิดข้อผิดพลาด ควรแสดงผล ErrorResponse ดังนี้
{
"error": "<error message>",
"cause": enum(ErrorCause)
}
ดูรายการค่าสาเหตุและรหัสสถานะ HTTP ที่เป็นไปได้ทั้งหมดสำหรับเงื่อนไขข้อผิดพลาดต่างๆ ได้ที่นี่ ในกรณีที่ได้รับคำขอลงทะเบียน MSISDN สำหรับผู้ใช้ที่ โรมมิ่งหรือผู้ที่ไม่ได้เลือกแชร์ข้อมูลแพ็กเกจอินเทอร์เน็ตกับ Google DPA จะต้องแสดงรหัสสถานะ HTTP 403
Monitoring API
กรณีการใช้งานบางอย่างกำหนดให้ GTAF ต้องตรวจสอบ DPA และตรวจหาความล้มเหลวของ DPA สำหรับกรณีการใช้งานเหล่านั้น เราได้กำหนด API การตรวจสอบไว้
คำจำกัดความของ API
API การตรวจสอบควรพร้อมใช้งานผ่านคำขอ HTTP GET ที่ URL ต่อไปนี้
DPA_URL/dpaStatus
หาก DPA และแบ็กเอนด์ทั้งหมดทำงานอย่างถูกต้อง DPA ควร ตอบกลับการค้นหานี้ด้วยรหัสสถานะ HTTP 200 และเนื้อหาการตอบกลับที่มี อินสแตนซ์ของ DpaStatus
{
"status": enum(DpaStatusEnum),
"message": "<optional human-readable status description>"
}
หาก DPA หรือแบ็กเอนด์ใดก็ตามทำงานไม่ถูกต้อง ควรตอบกลับด้วยรหัสสถานะ HTTP 500 และเนื้อความการตอบกลับที่มีอินสแตนซ์ของ DpaStatus
ลักษณะการทำงานของ DPA
เมื่อตรวจพบความล้มเหลว DPA ต้องแสดงสถานะ "ไม่พร้อมใช้งาน" สำหรับการค้นหา dpaStatus ทั้งหมด นอกจากนี้ ยังต้องหยุดส่งข้อมูลแพ็กเกจอินเทอร์เน็ตที่มีระยะเวลาแคชยาวนานด้วย โดยอาจหยุดส่งการตอบกลับที่มีระยะเวลาแคชยาวนานด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- เริ่มตั้งค่าเวลาหมดอายุของแคชแบบสั้น
- หยุดส่งข้อมูลแพ็กเกจอินเทอร์เน็ตโดยสิ้นเชิง
ลักษณะการทำงานของ GTAF
GTAF จะสำรวจ dpaStatus เป็นระยะๆ เมื่อตรวจพบว่า DPA ล้มเหลว (อิงตามการตอบกลับ "ไม่พร้อมใช้งาน") ระบบจะล้างแคชสำหรับผู้ให้บริการ
กรณีข้อผิดพลาด
ในกรณีที่เกิดข้อผิดพลาด DPA คาดว่าจะแสดงรหัสสถานะ HTTP ที่สอดคล้องกับรายการใดรายการหนึ่งต่อไปนี้
- ขณะนี้ผู้ใช้กำลังโรมมิ่งและระบบปิดใช้การค้นหา DPA สำหรับผู้ใช้รายนี้ DPA แสดงข้อผิดพลาด 403
- DPA จะแสดงรหัสข้อผิดพลาด 404 NOT_FOUND ซึ่งบ่งชี้ให้ GTAF ทราบว่าคีย์ผู้ใช้ไม่ถูกต้อง (เช่น คีย์ผู้ใช้ที่ไม่มีอยู่)
- DPA จะแสดงรหัสข้อผิดพลาด 410 GONE ซึ่งบ่งชี้ให้ GTAF ทราบว่าไคลเอ็นต์ ควรรับคีย์ผู้ใช้ใหม่หาก key_type = CPID และ CPID หมดอายุแล้ว
- DPA จะแสดงรหัสข้อผิดพลาด 501 NOT_IMPLEMENTED ซึ่งบ่งชี้ว่าไม่รองรับการเรียกนี้
- บริการไม่พร้อมใช้งานชั่วคราว DPA จะแสดงผล 503 SERVICE UNAVAILABLE พร้อมส่วนหัว Retry-After ที่ระบุเวลาที่สามารถลองส่งคำขอใหม่ได้
- DPA จะแสดงรหัสข้อผิดพลาด 500 INTERNAL SERVER ERROR สำหรับข้อผิดพลาดอื่นๆ ทั้งหมดที่ไม่ได้ระบุ
- DPA จะแสดงข้อผิดพลาด 429 TOO_MANY_REQUESTS พร้อมส่วนหัว Retry-After ซึ่งระบุว่า GTAF ส่งคำขอไปยัง DPA มากเกินไป
- DPA จะแสดงข้อผิดพลาด 409 CONFLICT ซึ่งบ่งชี้ว่าคำขอไม่สามารถ ดำเนินการให้เสร็จสมบูรณ์ได้เนื่องจากขัดแย้งกับสถานะปัจจุบันของ DPA
ในกรณีที่เกิดข้อผิดพลาดทั้งหมด เนื้อหาของการตอบกลับ HTTP ต้องมีออบเจ็กต์ JSON ที่มีข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด เนื้อหาการตอบกลับข้อผิดพลาดต้องมีอินสแตนซ์ของ ErrorResponse
{
"error": string,
"cause": enum(ErrorCause)
}
ค่า cause
ที่กำหนดไว้ในปัจจุบันจะแสดงเป็นส่วนหนึ่งของเอกสารอ้างอิง API ของ ErrorCause
ไม่เช่นนั้น DPA จะแสดงผล 200 OK โปรดทราบว่าระบบจะใช้ค่า cause
เหล่านี้
ในการตอบกลับทั้งหมด
การทำให้เป็นสากล
คำขอ GTAF ไปยัง DPA จะมีส่วนหัว Accept-Language ที่ระบุภาษาที่ควรใช้สำหรับสตริงที่มนุษย์อ่านได้ (เช่น คำอธิบายแพ็กเกจ) นอกจากนี้ การตอบกลับ DPA (PlanStatus, PlanOffers) ยังมีฟิลด์ languageCode ที่จำเป็นซึ่งมีค่าเป็นรหัสภาษา BCP-47 (เช่น "en-US") ของคำตอบ
หาก DPA ไม่รองรับภาษาที่ผู้ใช้ขอ DPA จะใช้ ภาษาเริ่มต้นและใช้ช่อง languageCode เพื่อระบุตัวเลือก