API ตัวแทนแพ็กเกจข้อมูล

แรงจูงใจ

ดังที่ได้กล่าวไว้ในภาพรวม ว่า DPA ต้องนํา API การแชร์แพ็กเกจอินเทอร์เน็ตมือถือของ Google ร่วมกับ Agent ของ Data Plan ออก ทั้งนี้ขึ้นอยู่กับกรณีการใช้งานที่โอเปอเรเตอร์ต้องการรองรับ เอกสารนี้อธิบาย Data Plan Agent API ที่ Google จะใช้เพื่อระบุแพ็กเกจอินเทอร์เน็ตมือถือของผู้ใช้ ดึงข้อมูลเกี่ยวกับแพ็กเกจเหล่านี้ และซื้อแพ็กเกจอินเทอร์เน็ต

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

ก่อนที่ GTAF จะโทรได้ DPA จะต้องตรวจสอบสิทธิ์ GTAF เราจะตรวจสอบความถูกต้องของใบรับรอง SSL ของ DPA ซึ่งเป็นส่วนหนึ่งของกระบวนการเริ่มต้นใช้งาน ปัจจุบันเรากําหนดให้ใช้ OAuth2 สําหรับการตรวจสอบสิทธิ์ร่วมกัน

คําอธิบาย API

GTAF ใช้คีย์ผู้ใช้ ซึ่งจะระบุผู้สมัครใช้บริการให้กับโอเปอเรเตอร์เมื่อดู DPA ของผู้ให้บริการ เมื่อ GTAF ค้นหา DPA ในนามของแอปพลิเคชันที่มีสิทธิ์เข้าถึง MSISDN แล้ว GTAF MAY จะใช้ MSISDN API ของ Data Plan Agent ในระดับสูงจะประกอบด้วยคอมโพเนนต์ต่อไปนี้

  1. กลไกการค้นหาสถานะแพ็กเกจข้อมูลผู้ใช้
  2. กลไกในการค้นหา DPA สําหรับข้อเสนอของแพ็กเกจอินเทอร์เน็ตสําหรับผู้ใช้
  3. กลไกการเปลี่ยนแปลงแผนข้อมูลของผู้ใช้ (เช่น ซื้อแผนใหม่)
  4. กลไกเพื่อยืนยันว่าผู้ใช้ซื้อแพ็กเกจข้อมูลหนึ่งๆ ได้หรือไม่
  5. กลไกของ GTAF เพื่อจดทะเบียน MSISDN กับ DPA
  6. กลไกของ GTAF เพื่อยืนยันว่า DPA อยู่ในสถานะที่ดีหรือไม่

ส่วนที่เหลือของเอกสารนี้จะอธิบายเกี่ยวกับแต่ละองค์ประกอบ API เหล่านี้ การสื่อสารทั้งหมดต้องเกิดขึ้นผ่าน HTTPS (พร้อมใบรับรอง DPA SSL ที่ถูกต้อง) เว้นแต่จะระบุไว้เป็นอื่นอย่างชัดแจ้ง โอเปอเรเตอร์อาจเลือกใช้งานคอมโพเนนต์ API เหล่านี้บางส่วนหรือทั้งหมด ทั้งนี้ขึ้นอยู่กับฟีเจอร์ที่รองรับจริง

การค้นหาสถานะแพ็กเกจอินเทอร์เน็ต

การโต้ตอบ GTAF-DPA

การโต้ตอบ GTAF-DPA

รูปที่ 4 โฟลว์คําขอเพื่อขอและรับข้อมูลแพ็กเกจข้อมูลผู้ใช้

รูปที่ 4 แสดงขั้นตอนการโทรที่เชื่อมโยงกับไคลเอ็นต์ที่ค้นหาข้อมูลเกี่ยวกับสถานะของแพ็กเกจอินเทอร์เน็ตและข้อมูลแพ็กเกจอื่นๆ ของผู้ใช้ ระบบจะแชร์ขั้นตอนการเรียกนี้สําหรับการเรียก API ที่ไคลเอ็นต์เรียกใช้ใน UE

  1. ไคลเอ็นต์จะขอสถานะแพ็กเกจข้อมูลและ/หรือข้อมูลอื่นๆ โดยเรียกใช้ Google API ส่วนตัว ไคลเอ็นต์มีคีย์ผู้ใช้ในคําขอไปยัง GTAF
  2. GTAF ใช้คีย์ของผู้ใช้และตัวระบุไคลเอ็นต์เพื่อสืบค้น DPA ของผู้ให้บริการ ตัวระบุไคลเอ็นต์ที่รองรับคือ mobiledataplan และ youtube เมื่อ DPA รับสายด้วยหนึ่งในตัวระบุไคลเอ็นต์เหล่านี้ โปรแกรมจะต้องตอบกลับพร้อมข้อมูลแพ็กเกจที่ไคลเอ็นต์ใช้ได้
  3. GTAF จะส่งคืนข้อมูลที่ขอไปยังไคลเอ็นต์ และข้อมูลแผนจะแคชโดย GTAF จนกว่าจะถึงเวลาหมดอายุที่ DPA ระบุไว้

ขั้นตอนที่ 1 และ 3 ในรูปที่ 4 คือ API ของ Google ส่วนตัวจึงไม่อธิบายเพิ่มเติม ขั้นตอนที่ 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 ทั้งนี้เพื่อให้มั่นใจว่าผู้ใช้จะได้รับประสบการณ์ที่ดีจากบริการ Google Play

สตริงใน offerInfo มีไว้เพื่ออนุญาตให้ผู้ใช้อ่านเพิ่มเติมเกี่ยวกับข้อเสนอ และมีวิธีเลือกไม่รับข้อเสนอเพิ่มเติมจากภายในแอปพลิเคชันด้วย การมีช่องเหล่านี้เกิดจากการที่ผู้ให้บริการบางรายไม่ต้องให้ผู้ใช้ปลายทางของผู้ใช้ปลายทางอนุญาตการซื้อในแอป แต่ต้องใช้กลไกให้ผู้ใช้เลือกไม่ใช้ โปรดทราบว่าโอเปอเรเตอร์ต้องมีกลไกในการดําเนินการตามคําขอซื้อสําหรับข้อเสนอทั้งหมดที่มีการขยายเวลาให้ผู้ใช้ กลไกที่จะเรียกเก็บเงินจากผู้ใช้สําหรับการซื้อทั้งหมดสามารถสื่อสารกับ GTAF ได้โดยใช้ตัวเลือก formOfPayment ในการตอบกลับ

คําขอ"จะ"มีส่วนหัว Accept-Language ซึ่งระบุภาษาของสตริงที่ผู้ใช้เข้าใจได้ (เช่น คําอธิบายแพ็กเกจ)

การซื้อข้อมูล

API แพ็กเกจการซื้อจะกําหนดวิธีที่ GTAF ซื้อแพ็กเกจผ่าน DPA ได้ GTAF จะเริ่มทําธุรกรรมเพื่อซื้อแผนข้อมูลแผน 1 แผนให้กับ DPA คําขอจะรวมถึงตัวระบุธุรกรรมที่ไม่ซ้ํากัน (transactionId) เพื่อติดตามคําขอและหลีกเลี่ยงการดําเนินการธุรกรรมที่ซ้ํากัน DPA ต้องตอบกลับด้วย ความสําเร็จ/ล้มเหลว

คําขอธุรกรรม

เมื่อ GTAF ได้รับคําขอจากไคลเอ็นต์ 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 SHALL จะแสดงผลข้อผิดพลาดที่พบบ่อยในกรณีที่เกิดข้อผิดพลาด นอกจากนี้ รหัสข้อผิดพลาดต่อไปนี้ยังแสดงผลลัพธ์การทําธุรกรรมไม่สําเร็จ

  • DPA แสดงรหัสข้อผิดพลาด 400 ป้ายคําขอ ซึ่งระบุไปยัง GTAF ว่ารหัสแพ็กเกจที่ซื้อไม่ถูกต้อง
  • DPA แสดงรหัสข้อผิดพลาด 402 สําหรับการชําระเงินที่จําเป็น ซึ่งระบุให้ GTAF ทราบว่าผู้ใช้มียอดคงเหลือไม่เพียงพอสําหรับการซื้อ
  • DPA แสดงรหัสข้อผิดพลาด 409 CONFLICT แก่ GTAF ว่าแพ็กเกจที่ซื้อนั้นเข้ากันไม่ได้กับส่วนผสมผลิตภัณฑ์ปัจจุบันของผู้ใช้ ตัวอย่างเช่น หากนโยบายแผนข้อมูลผู้ให้บริการไม่อนุญาตให้ใช้แผนแบบชําระล่วงหน้าและแบบชําระเงินล่วงหน้าร่วมกัน การพยายามซื้อแพ็กเกจแบบชําระเงินล่วงหน้าสําหรับผู้ใช้แบบชําระเงินภายหลังจะทําให้เกิดข้อผิดพลาด 409
  • DPA ส่งคืนรหัสข้อผิดพลาด 403 FORBIDDEN แก่ GTAF ว่าธุรกรรมปัจจุบันเป็นรายการซ้ําจากธุรกรรมที่ออกก่อนหน้านี้ DPA ควรส่งข้อผิดพลาดต่อไปนี้ในการตอบกลับ
    • หากธุรกรรมก่อนหน้าล้มเหลว ข้อผิดพลาดจะแสดงสาเหตุของความล้มเหลว
    • หากธุรกรรมก่อนหน้านี้เสร็จสมบูรณ์ DUPLICATE_TRANSACTION
    • หากธุรกรรมก่อนหน้านี้ยังคงอยู่ในคิว REQUEST_QUEUED

DPA SHALL จะสร้างการตอบกลับ 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 SHALL จะถือว่าแผนเปิดใช้งานแล้ว

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 SHALL จะแสดงผลข้อผิดพลาดที่พบบ่อยในกรณีที่เกิดข้อผิดพลาด นอกจากนี้ DPA SHALL จะแสดงผลข้อผิดพลาดในกรณีต่อไปนี้

  • DPA แสดงรหัสข้อผิดพลาด 400 ป้ายคําขอ ซึ่งระบุไปยัง GTAF ว่า planId ไม่ถูกต้อง
  • DPA แสดงรหัสข้อผิดพลาด 409 CONFLICT ซึ่งบ่งชี้ว่า planId เข้ากันไม่ได้กับแผนข้อมูลของผู้ใช้

ไม่เช่นนั้น DPA SHALL จะแสดงผลการตอบกลับ 200-OK รูปแบบของการมีสิทธิ์ในการตอบกลับที่ประสบความสําเร็จมีดังนี้

{
  "eligiblePlans":
  [
   {
    "planId": string,   // Plan identifier. Can be used to
                        // refer to the plan during
                        // offers, etc. (req.)
   }
  ]
}

เมื่อคําขอมี planId การตอบกลับจะรวมเฉพาะแพ็กเกจนั้น มิเช่นนั้น รายการนี้จะมีแพ็กเกจทั้งหมดที่ผู้ใช้มีสิทธิ์ซื้อ ในกรณีที่ planId ว่างเปล่าและ DPA ไม่สนับสนุนการแสดงรายการแพ็กเกจที่มีสิทธิ์ ต้องแสดงข้อผิดพลาด 400 คําขอคําขอ

ปลายทางการลงทะเบียน MSISDN

GTAF จะลงทะเบียน MSISDN ด้วย DPA เพื่อให้บริการแอปพลิเคชันที่มีสิทธิ์เข้าถึง MSISDN GTAF จะลงทะเบียน MSISDN เฉพาะเมื่อแอปพลิเคชันที่ให้บริการโดย API การแชร์แพ็กเกจอินเทอร์เน็ตมือถือของ Google เท่านั้น ซึ่ง DPA ส่งข้อมูลไปยัง GTAF โดยใช้ Google API GTAF จะส่งคําขอ POST ไปยัง DPA เพื่อจดทะเบียน MSISDN

POST DPA_URL/ลงทะเบียน

เนื้อหาของคําขอจะเป็นอินสแตนซ์ของ RegistrationRequest

{
  "msisdn": "<msisdn_string>"
}

หากการจดทะเบียน MSISDN สําเร็จ DPA จะต้องตอบกลับคําขอ 200 โอเค รวมถึง การจดทะเบียนResponse รูปแบบของ JSON คือ

{
  // msisdn that was registered.
  "msisdn": "<msisdn_string>",
  // time after which DPA will not send updates to GTAF.
  "expirationTime": string
}

จากนั้น DPA ควรส่งการอัปเดตข้อมูลเกี่ยวกับแพ็กเกจข้อมูลของผู้ใช้ไปยัง GTAF จนกว่าจะผ่านวันที่หมดอายุ

หากเกิดข้อผิดพลาดขึ้น ระบบจะแสดง ErrorResponse ตามตัวอย่างด้านล่าง

{
    "error": "<error message>",
    "cause": enum(ErrorCause)
}

ดูรายการค่าสาเหตุและรหัสสถานะ HTTP ที่เป็นไปได้สําหรับเงื่อนไขข้อผิดพลาดต่างๆ ได้ที่นี่ โดยเฉพาะในกรณีที่ได้รับคําขอการลงทะเบียน MSISDN สําหรับผู้ใช้ที่โรมมิ่ง หรือไม่ได้เลือกแชร์ข้อมูลแพ็กเกจข้อมูลกับ Google จะต้องส่งคืนรหัสสถานะ 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 จะต้องส่งคืนสถานะ "UNAVAILABLE" สําหรับการค้นหา dpaStatus ทั้งหมด นอกจากนี้ แอปจะต้องหยุดส่งข้อมูลแพ็กเกจข้อมูลที่มีระยะเวลาแคชนานด้วย การดําเนินการนี้อาจหยุดส่งการตอบกลับที่มีระยะเวลาแคชนานด้วย 1 ใน 2 วิธีต่อไปนี้

  1. เริ่มตั้งค่าเวลาหมดอายุของแคชสั้นๆ
  2. หยุดส่งข้อมูลแผนข้อมูลทั้งหมด

ลักษณะการทํางานของ GTAF

GTAF จะสํารวจ dpaStatus เป็นระยะ เมื่อตรวจพบ DPA ที่ล้มเหลว (ตามการตอบสนอง "UNAVAILABLE") เซิร์ฟเวอร์จะล้างแคชของโอเปอเรเตอร์

กรณีข้อผิดพลาด

ในกรณีที่เกิดข้อผิดพลาด เราคาดว่า DPA จะแสดงรหัสสถานะ HTTP ที่ตรงกับรายการใดรายการหนึ่งต่อไปนี้

  • ขณะนี้ผู้ใช้กําลังโรมมิ่งและปิดใช้คําค้นหา DPA สําหรับผู้ใช้รายนี้ DPA แสดงข้อผิดพลาด 403
  • DPA แสดงรหัสข้อผิดพลาด 404 NOT_FOUND ซึ่งระบุกับ GTAF ว่าคีย์ผู้ใช้ไม่ถูกต้อง (กล่าวคือ ไม่มีคีย์ผู้ใช้อยู่)
  • DPA ส่งคืนรหัสข้อผิดพลาด 410 GONE ซึ่งระบุไปยัง GTAF ว่าไคลเอ็นต์ควรได้รับคีย์ผู้ใช้ใหม่หาก key_type = CPID และ CPID หมดอายุแล้ว
  • DPA แสดงรหัสข้อผิดพลาด 501 NOT_IMPLATEDED ซึ่งระบุว่าไม่รองรับการโทรนี้
  • ไม่สามารถใช้บริการได้ชั่วคราว DPA แสดงบริการ 503 ที่ไม่พร้อมใช้งานพร้อมส่วนหัว "ลองอีกครั้งหลังจาก" ซึ่งระบุว่าจะแสดงคําขอใหม่ได้เมื่อใด
  • DPA แสดงรหัสข้อผิดพลาด 500 เซิร์ฟเวอร์ภายในสําหรับข้อผิดพลาดอื่นๆ ทั้งหมดที่ไม่ได้ระบุไว้
  • DPA แสดงข้อผิดพลาด 429 TOO_MANY_REQUESTS โดยส่วนหัว "ลองอีกครั้ง" บ่งชี้ว่า GTAF ส่งคําขอไปยัง DPA มากเกินไป
  • DPA แสดงข้อผิดพลาด 409 CONFLICT ซึ่งระบุว่ามีการดําเนินการตามคําขอไม่ได้เนื่องจากมีความขัดแย้งกับสถานะปัจจุบันของ DPA

ในกรณีข้อผิดพลาดทั้งหมด เนื้อหาของการตอบกลับ HTTP ต้องมีออบเจ็กต์ JSON ที่มีข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด เนื้อหาการตอบกลับข้อผิดพลาดต้องมีอินสแตนซ์ของ ErrorResponse

{
  "error": string,
  "cause": enum(ErrorCause)
}

ค่า cause ที่กําหนดในปัจจุบันเป็นส่วนหนึ่งของการอ้างอิง API ErrorCause

ไม่เช่นนั้น DPA จะแสดงค่า 200 OK เราพบว่าค่า cause เหล่านี้ใช้สําหรับคําตอบทั้งหมด

การก้าวสู่ระดับสากล

คําขอ GTAF ที่ส่งไปยัง DPA จะมีส่วนหัว Allow-Language ซึ่งระบุภาษาที่สตริงที่ผู้ใช้อ่านได้ (เช่น คําอธิบายแผน) นอกจากนี้ การตอบสนองของ DPA (PlanStatus, PlanOffers) จะรวมช่อง languageCode ที่จําเป็นซึ่งมีค่าเป็นรหัสภาษา BCP-47 (เช่น "en-US") ของคําตอบ

หาก DPA ไม่สนับสนุนภาษาที่ผู้ใช้ขอ จะใช้ภาษาเริ่มต้นและใช้ช่อง LanguageCode ในการระบุตัวเลือกได้