डेटा प्लान एजेंट API

वजह

खास जानकारी में बताया गया है कि ऑपरेटर को इस्तेमाल के जिन उदाहरणों के लिए सहायता देनी है उनके आधार पर, डीपीए को Google Mobile Data Plan Sharing API और Data Plan Agent API, दोनों को लागू करना होगा. इस दस्तावेज़ में, Data Plan Agent API के बारे में बताया गया है. Google इस एपीआई का इस्तेमाल, उपयोगकर्ता के मोबाइल डेटा प्लान की पहचान करने, इन प्लान के बारे में जानकारी पाने, और डेटा प्लान खरीदने के लिए करेगा.

पुष्टि करना

GTAF को कॉल करने से पहले, DPA को GTAF की पुष्टि करनी होगी. ऑपरेटर को शामिल करने की प्रोसेस के तहत, हम डीपीए एसएसएल सर्टिफ़िकेट की वैधता की जांच करेंगे. फ़िलहाल, हम दोनों पक्षों की पुष्टि करने के लिए OAuth2 का इस्तेमाल करना ज़रूरी मानते हैं.

एपीआई के बारे में जानकारी

GTAF, ऑपरेटर के DPA से क्वेरी करते समय उपयोगकर्ता के पासकोड का इस्तेमाल करता है. इससे ऑपरेटर के लिए, सदस्य की पहचान की जाती है. जब GTAF, MSISDN ऐक्सेस करने वाले ऐप्लिकेशन की ओर से DPA से क्वेरी कर रहा हो, तो GTAF, MSISDN का इस्तेमाल कर सकता है. बड़े लेवल पर, डेटा प्लान एजेंट एपीआई में ये कॉम्पोनेंट शामिल हैं:

  1. उपयोगकर्ता के डेटा प्लान की स्थिति के बारे में क्वेरी करने का तरीका.
  2. उपयोगकर्ता के लिए डेटा प्लान के ऑफ़र के बारे में जानने के लिए, DPA से क्वेरी करने का तरीका.
  3. उपयोगकर्ता के डेटा प्लान में बदलाव करने का तरीका (जैसे, नया प्लान खरीदना).
  4. यह पुष्टि करने का तरीका कि कोई उपयोगकर्ता किसी डेटा प्लान को खरीदने की ज़रूरी शर्तें पूरी करता है या नहीं.
  5. GTAF के लिए, DPA के साथ MSISDN रजिस्टर करने का तरीका.
  6. GTAF के लिए ऐसा तरीका जिससे यह पुष्टि की जा सके कि DPA सही स्थिति में है.

इस दस्तावेज़ के बाकी हिस्से में, एपीआई के इन कॉम्पोनेंट के बारे में ज़्यादा जानकारी दी गई है. जब तक साफ़ तौर पर न बताया जाए, तब तक सभी कम्यूनिकेशन एचटीटीपीएस पर होने चाहिए. साथ ही, इनके लिए मान्य डीपीए एसएसएल सर्टिफ़िकेट होना चाहिए. जिन सुविधाओं के लिए सहायता उपलब्ध है उनके आधार पर, ऑपरेटर इन एपीआई कॉम्पोनेंट के सभी या कुछ कॉम्पोनेंट को लागू कर सकता है.

डेटा प्लान की स्थिति के बारे में क्वेरी करना

GTAF-DPA इंटरैक्शन

GTAF-DPA इंटरैक्शन

चौथी इमेज. उपयोगकर्ता के डेटा प्लान की जानकारी का अनुरोध करने और उसे पाने के लिए कॉल फ़्लो.

चौथे फ़िगर में, कॉल फ़्लो दिखाया गया है. इसमें क्लाइंट, उपयोगकर्ता के डेटा प्लान की स्थिति और अन्य डेटा प्लान की जानकारी के बारे में क्वेरी करता है. यह कॉल फ़्लो, यूई पर क्लाइंट की ओर से ट्रिगर किए गए एपीआई कॉल के लिए शेयर किया जाता है.

  1. क्लाइंट, Google के निजी एपीआई को कॉल करके, डेटा प्लान की स्थिति और/या अन्य जानकारी का अनुरोध करता है. क्लाइंट, GTAF को किए गए अनुरोध में उपयोगकर्ता कुंजी शामिल करता है.
  2. GTAF, ऑपरेटर के DPA से क्वेरी करने के लिए उपयोगकर्ता कुंजी और क्लाइंट आइडेंटिफ़ायर का इस्तेमाल करता है. mobiledataplan और youtube, क्लाइंट आइडेंटिफ़ायर के तौर पर इस्तेमाल किए जा सकते हैं. जब डीपीए को इनमें से किसी क्लाइंट आइडेंटिफ़ायर के साथ कॉल मिलता है, तो उसे प्लान की ऐसी जानकारी देनी होगी जिसका इस्तेमाल क्लाइंट कर सके.
  3. GTAF, क्लाइंट को मांगी गई जानकारी देता है. साथ ही, प्लान की जानकारी को GTAF तब तक कैश मेमोरी में सेव रखता है, जब तक DPA की ओर से तय की गई समयसीमा खत्म नहीं हो जाती.

आंकड़े 4 में दिए गए पहले और तीसरे चरण में, Google के निजी एपीआई का इस्तेमाल किया जाता है. इसलिए, इनके बारे में ज़्यादा जानकारी नहीं दी गई है. दूसरा चरण, एक सार्वजनिक एपीआई है. इसके बारे में यहां बताया गया है. GTAF से इन एपीआई कॉल को पूरा करते समय, डीपीए को Cache-Control: no-cache एचटीटीपी हेडर का पालन करना होगा.

प्लान की स्थिति

GTAF, प्लान की स्थिति पाने के लिए यह एचटीटीपी अनुरोध करता है:

GET DPA_URL/{userKey}/planStatus?key_type={CPID,MSISDN}&client_id=CLIENT_ID

जिस क्लाइंट की ओर से GTAF, DPA से संपर्क कर रहा है उसकी पहचान CLIENT_ID का इस्तेमाल करके की जाती है. Google क्लाइंट और कैरियर के बीच हुए समझौते के आधार पर, डीपीए, GTAF को मिलने वाले जवाब को पसंद के मुताबिक बना सकता है. जवाब का फ़ॉर्मैट, 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 एमबी). यहां दिए गए पीएमटीसी पहले से तय किए गए हैं: GENERIC, VIDEO, VIDEO_BROWSING, VIDEO_OFFLINE, MUSIC, GAMING, SOCIAL and MESSAGING. यह उम्मीद की जाती है कि ऑपरेटर, Google की अलग-अलग टीमों से संपर्क करेंगे, ताकि वे ट्रैफ़िक कैटगरी और उनके सिमैंटिक के उस सेट पर सहमत हो सकें जो Google के अलग-अलग ऐप्लिकेशन के लिए काम का है.

प्लान के ऑफ़र के बारे में क्वेरी करना

GTAF, ऑपरेटर से प्लान के ऑफ़र पाने के लिए यह एचटीटीपी अनुरोध भेजता है:

GET DPA_URL/{userKey}/planOffer?key_type={CPID,MSISDN}&client_id=CLIENT_ID&context={purchaseContext}

जिस क्लाइंट की ओर से GTAF, DPA से संपर्क कर रहा है उसकी पहचान CLIENT_ID का इस्तेमाल करके की जाती है. Google क्लाइंट और कैरियर के बीच हुए समझौते के आधार पर, डीपीए, GTAF को मिलने वाले जवाब को पसंद के मुताबिक बना सकता है. कॉन्टेक्स्ट पैरामीटर (ज़रूरी नहीं) से, ऐप्लिकेशन के उस कॉन्टेक्स्ट के बारे में जानकारी मिलती है जिसमें अनुरोध किया गया है. आम तौर पर, यह एक ऐसी स्ट्रिंग होती है जिसे ऐप्लिकेशन, 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 प्लान दिखा सकता है और जवाब में y > x प्लान शामिल हैं, तो सिर्फ़ पहले x प्लान दिखाए जाएंगे. अगर ऑफ़र के लिए क्वेरी करने वाला ऐप्लिकेशन, मोबाइल डेटा प्लान का यूज़र इंटरफ़ेस (यूआई) है, तो GTAF सिर्फ़ 10 प्लान शेयर करता है. यह यूआई, Google Play services का हिस्सा है. इससे Google Play Services के उपयोगकर्ताओं को बेहतर अनुभव मिलता है.

offerInfo में मौजूद स्ट्रिंग का मकसद, उपयोगकर्ता को ऑफ़र के बारे में ज़्यादा जानकारी देना है. साथ ही, इसमें ऐप्लिकेशन के अंदर से ज़्यादा ऑफ़र पाने से ऑप्ट-आउट करने का तरीका भी शामिल है. इन फ़ील्ड को शामिल करने की वजह यह है कि कुछ ऑपरेटर को इन-ऐप्लिकेशन खरीदारी की अनुमति देने के लिए, असली उपयोगकर्ता की सहमति की ज़रूरत नहीं होती. हालांकि, उन्हें उपयोगकर्ताओं के लिए ऑप्ट-आउट करने का तरीका उपलब्ध कराना होता है. ध्यान दें कि ऑपरेटर के पास, उपयोगकर्ता को दिए गए किसी भी ऑफ़र के लिए खरीदारी का अनुरोध पूरा करने का तरीका होना चाहिए. उपयोगकर्ता से किसी भी खरीदारी के लिए शुल्क लेने के तरीके के बारे में GTAF को बताया जा सकता है. इसके लिए, जवाब में formOfPayment विकल्प का इस्तेमाल करें.

अनुरोध में Accept-Language हेडर शामिल होना चाहिए. इससे यह पता चलता है कि आसानी से पढ़ी जा सकने वाली स्ट्रिंग (जैसे, प्लान का ब्यौरा) किस भाषा में होनी चाहिए.

डेटा प्लान खरीदना

खरीदारी प्लान एपीआई से यह तय होता है कि GTAF, DPA के ज़रिए प्लान कैसे खरीद सकता है. GTAF, DPA को एक डेटा प्लान खरीदने के लिए लेन-देन शुरू करता है. अनुरोध में, लेन-देन का यूनीक आइडेंटिफ़ायर (transactionId) शामिल होना चाहिए. इससे अनुरोधों को ट्रैक करने और लेन-देन को डुप्लीकेट तरीके से पूरा होने से रोकने में मदद मिलती है. डीपीए को जवाब में यह बताना होगा कि अनुरोध पूरा हुआ या नहीं.

लेन-देन का अनुरोध

किसी क्लाइंट से अनुरोध मिलने पर, GTAF, DPA को POST अनुरोध भेजता है. अनुरोध का यूआरएल यह है:

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.
}

लेन-देन की प्रतिक्रिया

गड़बड़ी होने पर, डीपीए को गड़बड़ी की सामान्य वजहें बतानी होंगी. इसके अलावा, लेन-देन पूरा न होने पर ये गड़बड़ी कोड दिखते हैं:

  • डेटा प्रोसेसिंग समझौते (डीपीए) के तहत काम करने वाली कंपनी, GTAF को 400 BAD REQUEST गड़बड़ी कोड भेजती है. इससे GTAF को पता चलता है कि खरीदा गया प्लान आईडी अमान्य है.
  • डेटा प्रोसेसिंग समझौते (डीपीए) के तहत, 402 PAYMENT REQUIRED गड़बड़ी कोड मिलता है. इससे GTAF को पता चलता है कि उपयोगकर्ता के पास खरीदारी पूरी करने के लिए ज़रूरी बैलेंस नहीं है.
  • डीपीए, 409 CONFLICT गड़बड़ी कोड दिखाता है. इससे GTAF को पता चलता है कि खरीदा जाने वाला प्लान, उपयोगकर्ता के मौजूदा प्रॉडक्ट मिक्स के साथ काम नहीं करता. उदाहरण के लिए, अगर ऑपरेटर के डेटा प्लान से जुड़ी नीति के तहत, पोस्टपेड और प्रीपेड प्लान को एक साथ इस्तेमाल करने की अनुमति नहीं है, तो पोस्टपेड प्लान इस्तेमाल करने वाले व्यक्ति के लिए प्रीपेड प्लान खरीदने की कोशिश करने पर, 409 CONFLICT गड़बड़ी दिखेगी.
  • डेटा प्रोसेसिंग समझौते (डीपीए) के तहत, 403 FORBIDDEN गड़बड़ी कोड मिलता है. इससे GTAF को पता चलता है कि मौजूदा लेन-देन, पहले किए गए लेन-देन का डुप्लीकेट है. डेटा प्रोसेसिंग समझौते (डीपीए) के तहत, इन वजहों से गड़बड़ी हुई है:
    • अगर पिछला लेन-देन पूरा नहीं हुआ था, तो गड़बड़ी की वजह बताने वाला कोड.
    • अगर पिछला लेन-देन पूरा हो गया है, तो DUPLICATE_TRANSACTION.
    • अगर पिछला लेन-देन अब भी कतार में है, तो REQUEST_QUEUED.

डेटा प्रोसेसिंग ऐप्लिकेशन (डीपीए), लेन-देन पूरा होने या कतार में लगे लेन-देन के लिए ही 200-OK रिस्पॉन्स जनरेट करेगा. अगर लेन-देन को कतार में रखा गया है, तो डीपीए को सिर्फ़ लेन-देन की स्थिति भरनी होगी. साथ ही, जवाब में अन्य फ़ील्ड खाली छोड़ने होंगे. जब कोई कतार में मौजूद लेन-देन पूरा हो जाता है, तो डीपीए को 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 नहीं दिया गया है, तो डीपीए को उस उपयोगकर्ता के लिए उपलब्ध सभी प्लान दिखाने होंगे.

गड़बड़ी होने पर, डीपीए को गड़बड़ी की सामान्य वजहें बतानी होंगी. इसके अलावा, इन गड़बड़ियों के मामलों में डीपीए को गड़बड़ी का मैसेज दिखाना होगा:

  • डीपीए, 400 BAD REQUEST गड़बड़ी कोड दिखाता है. इससे GTAF को पता चलता है कि planId अमान्य है.
  • डीपीए, 409 CONFLICT गड़बड़ी कोड दिखाता है. इससे पता चलता है कि planId, उपयोगकर्ता के डेटा प्लान के साथ काम नहीं करता.

इसके अलावा, डीपीए को 200-OK जवाब देना होगा. अनुरोध स्वीकार किए जाने पर, EligibilityResponse का फ़ॉर्मैट यह होता है:

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

अनुरोध में planId शामिल होने पर, जवाब में सिर्फ़ वही प्लान शामिल होता है. इसके अलावा, सूची में वे सभी प्लान शामिल होते हैं जिन्हें उपयोगकर्ता खरीद सकता है. अगर planId खाली है और डीपीए, ज़रूरी शर्तें पूरी करने वाले प्लान की सूची दिखाने की सुविधा के साथ काम नहीं करता है, तो उसे 400 BAD REQUEST वाली गड़बड़ी का मैसेज दिखाना होगा.

एमएसआईएसडीएन रजिस्ट्रेशन एंडपॉइंट

जिन ऐप्लिकेशन के पास MSISDN का ऐक्सेस है उन्हें सेवा देने के लिए, GTAF, MSISDN को DPA के साथ रजिस्टर करेगा. GTAF, MSISDN को सिर्फ़ तब रजिस्टर करता है, जब Google Mobile Data Plan Sharing API से ऐप्लिकेशन उपलब्ध कराए जाते हैं. इसमें DPA, Google API का इस्तेमाल करके GTAF को जानकारी भेजता है. एमएसआईएसडीएन रजिस्टर करने के लिए, GTAF, DPA को यह POST अनुरोध भेजेगा:

POST DPA_URL/register

अनुरोध का मुख्य हिस्सा, RegistrationRequest का एक इंस्टेंस होगा.

{
  "msisdn": "<msisdn_string>"
}

अगर एमएसआईएसडीएन का रजिस्ट्रेशन हो जाता है, तो डीपीए को 200 OK जवाब देना होगा. इसमें RegistrationResponse शामिल होना चाहिए. JSON का फ़ॉर्मैट यह है:

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

इसके बाद, डीपीए को उपयोगकर्ता के डेटा प्लान के बारे में अपडेट, GTAF को तब तक भेजने चाहिए, जब तक expirationTime खत्म नहीं हो जाता.

गड़बड़ी होने पर, ErrorResponse को वापस भेजा जाना चाहिए:

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

गड़बड़ी की अलग-अलग स्थितियों के लिए, वजह की संभावित वैल्यू और एचटीटीपी स्टेटस कोड की पूरी सूची यहां उपलब्ध है. खास तौर पर, अगर किसी ऐसे उपयोगकर्ता के लिए एमएसआईएसडीएन रजिस्ट्रेशन का अनुरोध मिलता है जो रोमिंग में है या जिसने Google के साथ डेटा प्लान की जानकारी शेयर करने का विकल्प नहीं चुना है, तो डीपीए को एचटीटीपी स्टेटस कोड 403 दिखाना होगा.

Monitoring API

कुछ इस्तेमाल के मामलों में, GTAF को DPA की निगरानी करने और DPA से जुड़ी गड़बड़ियों का पता लगाने की ज़रूरत होती है. इस्तेमाल के उन उदाहरणों के लिए, हमने मॉनिटरिंग एपीआई तय किया है.

एपीआई की परिभाषा

निगरानी करने वाला एपीआई, एचटीटीपी GET अनुरोध के ज़रिए इस यूआरएल पर उपलब्ध होना चाहिए:

DPA_URL/dpaStatus

अगर डीपीए और उसके सभी बैकएंड सही तरीके से काम कर रहे हैं, तो डीपीए को इस क्वेरी का जवाब एचटीटीपी स्टेटस कोड 200 के साथ देना चाहिए. साथ ही, जवाब के मुख्य हिस्से में DpaStatus का इंस्टेंस होना चाहिए.

{
    "status": enum(DpaStatusEnum),
    "message": "<optional human-readable status description>"
}

अगर डीपीए या उसका कोई भी बैकएंड सही तरीके से काम नहीं कर रहा है, तो उसे एचटीटीपी स्टेटस कोड 500 और रिस्पॉन्स बॉडी के साथ जवाब देना चाहिए. रिस्पॉन्स बॉडी में DpaStatus का एक इंस्टेंस होना चाहिए.

डीपीए के काम करने का तरीका

अगर कोई गड़बड़ी मिलती है, तो डीपीए को dpaStatus की सभी क्वेरी के लिए "UNAVAILABLE" स्टेटस दिखाना होगा. इसके अलावा, इसे लंबे समय तक कैश मेमोरी में सेव रहने वाले डेटा प्लान की जानकारी भेजना बंद करना होगा. यह दो तरीकों से, लंबे समय तक कैश मेमोरी में रखे गए जवाबों को भेजना बंद कर सकता है:

  1. कैश मेमोरी के खत्म होने का समय कम सेट करना शुरू करें.
  2. डेटा प्लान की जानकारी भेजना पूरी तरह से बंद कर दें.

GTAF के काम करने का तरीका

GTAF, dpaStatus को समय-समय पर पोल करेगा. जब इसे डीपीए के काम न करने का पता चलता है (यह "UNAVAILABLE" जवाब के आधार पर होता है), तो यह ऑपरेटर के लिए अपनी कैश मेमोरी मिटा देगा.

गड़बड़ी के मामले

गड़बड़ी होने पर, डीपीए को इनमें से किसी एक से जुड़ा एचटीटीपी स्टेटस कोड दिखाना चाहिए:

  • उपयोगकर्ता फ़िलहाल रोमिंग में है और इस उपयोगकर्ता के लिए डीपीए क्वेरी बंद है. डेटा प्रोसेसिंग समझौते (डीपीए) में 403 गड़बड़ी दिखती है.
  • डीपीए, 404 NOT_FOUND गड़बड़ी कोड दिखाता है.इससे GTAF को पता चलता है कि user key अमान्य है. इसका मतलब है कि user key मौजूद नहीं है.
  • डीपीए, 410 GONE गड़बड़ी कोड दिखाता है. इससे GTAF को पता चलता है कि अगर key_type = CPID है और CPID की समयसीमा खत्म हो गई है, तो क्लाइंट को नई user key मिलनी चाहिए.
  • डीपीए, 501 NOT_IMPLEMENTED गड़बड़ी कोड दिखाता है. इसका मतलब है कि यह कॉल काम नहीं करता.
  • यह सेवा कुछ समय के लिए उपलब्ध नहीं है. डीपीए, 503 SERVICE UNAVAILABLE गड़बड़ी कोड दिखाता है. साथ ही, Retry-After हेडर दिखाता है, जिससे यह पता चलता है कि नया अनुरोध कब किया जा सकता है.
  • डेटा प्रोसेसिंग समझौता (डीपीए), अन्य सभी गड़बड़ियों के लिए 500 INTERNAL SERVER ERROR गड़बड़ी कोड दिखाता है.
  • डीपीए, Retry-After हेडर के साथ 429 TOO_MANY_REQUESTS गड़बड़ी दिखाता है. इससे पता चलता है कि GTAF, डीपीए को बहुत ज़्यादा अनुरोध भेज रहा है.
  • डीपीए, 409 CONFLICT गड़बड़ी दिखाता है. इससे पता चलता है कि डीपीए की मौजूदा स्थिति की वजह से, अनुरोध पूरा नहीं किया जा सकता.

गड़बड़ी के सभी मामलों में, एचटीटीपी रिस्पॉन्स के मुख्य हिस्से में एक JSON ऑब्जेक्ट शामिल होना चाहिए. इसमें गड़बड़ी के बारे में ज़्यादा जानकारी दी गई हो. गड़बड़ी के जवाब के मुख्य हिस्से में, ErrorResponse का एक इंस्टेंस होना चाहिए.

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

फ़िलहाल, तय की गई cause वैल्यू, ErrorCause एपीआई के रेफ़रंस में दी गई हैं.

ऐसा न होने पर, DPA 200 OK दिखाता है. हमारा ध्यान इस बात पर गया है कि इन cause वैल्यू का इस्तेमाल, सभी जवाबों के लिए किया जाता है.

इंटरनैशनलाइजेशन

GTAF, डीपीए से अनुरोध करते समय Accept-Language हेडर शामिल करता है. इससे यह पता चलता है कि आसानी से पढ़ी जा सकने वाली स्ट्रिंग (जैसे, प्लान के ब्यौरे) किस भाषा में होनी चाहिए. इसके अलावा, DPA के जवाबों (PlanStatus, PlanOffers) में, भाषा कोड वाला ज़रूरी फ़ील्ड शामिल होता है.इसकी वैल्यू, BCP-47 भाषा कोड होती है. उदाहरण के लिए, "en-US") के हिसाब से जवाब दें.

अगर डीपीए, उपयोगकर्ता की चुनी गई भाषा के साथ काम नहीं करता है, तो वह डिफ़ॉल्ट भाषा का इस्तेमाल कर सकता है. साथ ही, भाषा चुनने के लिए languageCode फ़ील्ड का इस्तेमाल कर सकता है.