واجهة برمجة تطبيقات وكيل خطة البيانات

الحافز

كما هو موضّح في النظرة العامة، استنادًا إلى حالات الاستخدام التي يريد مشغّل شبكة الجوّال تقديم الدعم لها، على "هيئة حماية البيانات" تنفيذ مزيج من واجهة برمجة التطبيقات الخاصة بمشاركة خطة بيانات الجوّال من Google وواجهة برمجة تطبيقات وكيل خطة البيانات. ويوضّح هذا المستند واجهة برمجة تطبيقات وكيل خطة البيانات التي ستستخدمها Google لتحديد خطط بيانات الجوّال للمستخدم واسترداد بيانات حول هذه الخطط وخطط بيانات الشراء.

المصادقة

قبل أن يتمكّن "مدير إعلانات Google" من الاتصال، على "هيئة حماية البيانات" المصادقة على "هيئة حماية البيانات". كجزء من عملية الإعداد لتشغيل المشغّل، سنتحقّق من صلاحية شهادة طبقة المقابس الآمنة (DPA). نطلب حاليًا استخدام OAuth2 للمصادقة المتبادلة.

وصف واجهة برمجة التطبيقات

يستخدم GTAF مفتاح المستخدم، الذي يحدد مشتركًا في عامل التشغيل، عند طلب البحث في DPA لـ عامل التشغيل. عندما يُرسِل "GTAF" طلب بحث عن "هيئة حماية البيانات" نيابةً عن التطبيقات التي يمكنها الوصول إلى MSISDN، قد يستخدم "GTAF MAY" رقم MSISDN. على مستوى عالٍ، تتألف واجهة برمجة تطبيقات وكيل خطة البيانات المقترحة من المكوّنات التالية:

  1. آلية لطلب البحث عن حالة خطة بيانات المستخدمين
  2. آلية لطلب تعديل معالجة البيانات من أجل خطط خطة البيانات للمستخدم.
  3. آلية إجراء تغييرات على خطة بيانات المستخدم (مثل شراء خطة جديدة).
  4. آلية للتحقّق مما إذا كان المستخدم مؤهَّلاً لشراء خطة بيانات معيّنة.
  5. آلية من أجل GTAF لتسجيل سجلّات MSISDN في "هيئة حماية البيانات".
  6. آلية "هيئة حماية البيانات" للتحقّق مما إذا كانت "هيئة حماية البيانات" في حالة جيدة.

يشرح الجزء المتبقي من هذا المستند كل مكوّن من مكونات واجهة برمجة التطبيقات هذه. يجب أن تتم جميع الاتصالات عبر بروتوكول HTTPS (بدون شهادة طبقة المقابس الآمنة) صالحة، ما لم تتم الإشارة صراحةً إلى ذلك صراحةً. استنادًا إلى الميزات الفعلية التي يتم اعتمادها، قد يختار المشغّل تنفيذ كل مكوّنات واجهة برمجة التطبيقات هذه أو مجموعة فرعية منها.

حالة خطة بيانات الطلبات

تفاعل GTAF-DPA

تفاعل GTAF-DPA

الشكل 4. مسار الاتصال لطلب معلومات خطة بيانات المستخدم واستلامها.

يوضح الشكل 4 تدفق المكالمات المرتبط بعميل يستفسر عن حالة خطة البيانات للمستخدم، فضلاً عن معلومات أخرى عن خطة البيانات. تتم مشاركة مسار الاتصال هذا مع طلبات البيانات من واجهة برمجة التطبيقات التي يشغّلها العميل في UE.

  1. يطلب العميل حالة خطة البيانات و/أو معلومات أخرى من خلال استدعاء واجهة برمجة تطبيقات Google خاصة. يتضمّن العميل مفتاح المستخدم في الطلب إلى GTAF.
  2. تستخدم أداة GTAF مفتاح المستخدم ومعرّف العميل للاستعلام عن معامل التشغيل (DPA) في عامل التشغيل's. معرّفات البرامج المتوافقة هي mobiledataPlan وyoutube. عندما تتلقّى "هيئة حماية البيانات" مكالمة مع أحد معرّفات العملاء هذه، يجب أن تستجيب لمعلومات الخطة التي يمكن للعميل استخدامها.
  3. يعرض GTAF المعلومات المطلوبة للعميل ويخزّن معلومات الخطة مؤقتًا بواسطة GTAF حتى وقت انتهاء الصلاحية الذي تحدّده هيئة حماية البيانات.

الخطوتين 1 و3 في الشكل 4 هما واجهات برمجة تطبيقات Google خاصة، وبالتالي لا يتم وصفهما أكثر من ذلك. الخطوة 2 هي واجهة برمجة تطبيقات عامة موضّحة في ما يلي. يجب أن تلتزم "هيئة حماية البيانات" برأس HTTP Cache-Control: no-cache عند عرض طلبات البيانات من واجهة برمجة التطبيقات هذه من GTAF.

حالة الخطة

يُصدر GTAF طلب HTTP التالي للحصول على حالة الخطة:

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

يتم تحديد العميل الذي يتواصل من أجله"هيئة حماية البيانات"نيابةً عنه باستخدام"CLIENT_ID". واستنادًا إلى الاتفاقية المُبرَمة بين عميل Google ومشغّل شبكة الجوّال (DPA)، يمكن لهيئة حماية البيانات تخصيص الاستجابة لـ 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 طلب HTTP التالي للحصول على عروض الخطط من عامل التشغيل:

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

يتم تحديد العميل الذي يتواصل من أجله"هيئة حماية البيانات"نيابةً عنه باستخدام"CLIENT_ID". واستنادًا إلى الاتفاقية المُبرَمة بين عميل Google ومشغّل شبكة الجوّال (DPA)، يمكن لهيئة حماية البيانات تخصيص الاستجابة لـ 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. ويضمن هذا الإجراء تقديم تجربة جيدة لمستخدمي "خدمات Google Play".

تهدف السلاسل في offerInfo إلى السماح للمستخدم بقراءة المزيد من المعلومات حول العرض، كما تتضمّن طريقة لإيقاف تلقّي المزيد من العروض من داخل التطبيقات. والسبب في توفّر هذه الحقول هو أن بعض عوامل التشغيل لا تحتاج إلى موافقة المستخدم للسماح بعمليات الشراء داخل التطبيق، ولكن تتطلب آلية يستطيع المستخدمون إيقافها. يجب أن تتوفّر لدى عامل التشغيل آلية لتلبية طلب شراء أي عرض تم تزويده للمستخدم. يمكن إبلاغ الآلية التي سيتم من خلالها تحصيل الرسوم من المستخدم مقابل أي عملية شراء باستخدام GTAF باستخدام formOfPayment في الاستجابة.

يجب أن يتضمّن الطلب عنوان Accept-Language يشير إلى اللغة التي يجب أن تكون بها السلاسل البشرية القابلة للقراءة (مثل أوصاف الخطة).

شراء البيانات

تحدّد واجهة برمجة تطبيقات خطة الشراء كيف يمكن لـ GTAF شراء الخطط من خلال "تعديل بنود معالجة البيانات". تُطلق "هيئة السلوك المالي" (GTAF) المعاملة لشراء خطة بيانات واحدة إلى "هيئة حماية البيانات". يجب أن يتضمّن الطلب معرّف معاملة فريدًا (transactionId) لتتبّع الطلبات وتجنّب تكرار تنفيذ المعاملات. يجب أن تردّ "هيئة حماية البيانات" باستجابة ناجحة/تعذّر إتمامها.

طلب المعاملة

بعد أن يتلقّى طلبًا من عميل، يُصدِّر GTAF طلب POST إلى "هيئة حماية البيانات". عنوان 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.
}

الردّ على المعاملة

تعرض "هيئة حماية البيانات" الأسباب الشائعة للخطأ في حال حدوث خطأ. بالإضافة إلى ذلك، تمثل رموز الأخطاء التالية نتائج فاشلة للعمليات:

  • تعرض "هيئة حماية البيانات" رمز الخطأ 400 BAD REQUEST الذي يشير إلى رمز AFAF بأنّ رقم تعريف الخطة التي تم شراؤها غير صالح.
  • تعرض "هيئة حماية البيانات" رمز الخطأ 402 PAYMENT مطلوب يشير إلى GTAF بأنّ المستخدم ليس لديه رصيد كافٍ لإكمال عملية الشراء.
  • تعرض "هيئة حماية البيانات" رمز خطأ CONFLICT 409 يشير إلى GTAF بأن الخطة التي سيتم شراؤها غير متوافقة مع تشكيلة المنتج الحالية للمستخدم. على سبيل المثال، إذا كانت سياسة خطة بيانات عامل التشغيل لا تسمح بخلط خطط الدفع المُسبق والخطط المسبقة الدفع، ستؤدي محاولة شراء خطة دفع مُسبَق لمستخدم دفع مُسبَق إلى حدوث خطأ 409 CONFLICT.
  • تعرض "هيئة حماية البيانات" رمز الخطأ FORFORDEN 403 الذي يشير إلى 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 SHALL أنه تم تفعيل الخطة.

قد يُصدر GTAF MAY الطلب التالي لتمرير تفضيل موافقة المستخدم إلى مشغّل شبكة الجوّال.

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 غير صالح.
  • تعرض "هيئة حماية البيانات" رمز خطأ CONFLICT 409 يشير إلى أن planId غير متوافق مع خطة بيانات المستخدم.

بخلاف ذلك، ستعرض "تعديل بنود معالجة البيانات" استجابة 200-OK. في ما يلي تنسيق UsageResponse الناجح:

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

عندما يتضمّن الطلب planId، تتضمّن الاستجابة هذه الخطة فقط. بخلاف ذلك، تتضمن القائمة جميع الخطط التي يكون المستخدم مؤهلاً للشراء. في حال كان planId فارغًا ولا تتيح"هيئة حماية البيانات"عرض قائمة الخطط المؤهّلة، يجب أن تعرض رسالة الخطأ 400 BAD REQUEST (طلب الطلب غير صالح).

نقطة نهاية تسجيل MSISDN

لعرض التطبيقات التي يمكنها الوصول إلى MSISDN، سيسجّل GTAF معرّف MSISDN مع "هيئة حماية البيانات". لا تسجّل أداة AFAF MSISDN إلا عند توفّر تطبيقات واجهة برمجة تطبيقات مشاركة خطة بيانات الجوّال من Google، حيث ترسل هيئة حماية البيانات المعلومات إلى GTAF باستخدام واجهة برمجة تطبيقات Google. لتسجيل MSISDN، ستقدِّم GTAF طلب POST إلى "هيئة حماية البيانات":

POST DPA_URL/التسجيل

وسيظهر نص الطلب في صورة RegistrationRequest.

{
  "msisdn": "<msisdn_string>"
}

إذا تم تسجيل رقم MSISDN بنجاح، يجب أن تعرض "هيئة حماية البيانات" استجابة 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)
}

ويمكنك الاطّلاع هنا على القائمة الكاملة للقيم السبب المحتملة ورموز حالة HTTP لمختلف حالات الخطأ. وعلى وجه الخصوص، إذا تم استلام طلب تسجيل MSISDN لمستخدم يتجوّل أو لم يختَر مشاركة معلومات خطة البيانات مع Google، يجب أن تعرض "هيئة حماية البيانات" رمز حالة HTTP 403.

واجهة برمجة التطبيقات لمراقبة التطبيقات

وتتطلب بعض حالات الاستخدام من "هيئة حماية البيانات" (DAF) مراقبة "هيئة حماية البيانات" ورصد حالات تعذّر "تعديل بنود معالجة البيانات". بالنسبة إلى حالات الاستخدام هذه، حدّدنا واجهة برمجة تطبيقات للمراقبة.

تعريف واجهة برمجة التطبيقات

من المفترض أن تكون واجهة برمجة تطبيقات المراقبة متاحة من خلال طلب HTTP GET على عنوان URL التالي:

DPA_URL/dpaStatus

إذا كانت"هيئة حماية البيانات"وجميع خلفياتها الخلفية تعمل بشكل صحيح، يجب أن تستجيب"تعديل بنود معالجة البيانات"لطلب البحث هذا مع رمز الحالة HTTP 200 ونص الاستجابة الذي يحتوي على نسخة افتراضية من DpaStatus.

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

إذا كانت "هيئة حماية البيانات" أو أيًا من الخلفية الخلفية لا تعمل بشكل صحيح، يجب أن تستجيب برمز حالة HTTP 500 ونص الاستجابة الذي يشتمل على مثال DpaStatus.

سلوك هيئة حماية البيانات

في حال رصد حالة تعذُّر، يجب أن تعرض "هيئة حماية البيانات" الحالة ""UNAVAILABLE" لجميع طلبات بحث dpaStatus. بالإضافة إلى ذلك، يجب أن يتوقف إرسال معلومات خطة البيانات مع فترات تخزين مؤقتة طويلة. وقد يتوقف عن إرسال الردود التي تتضمن فترات طويلة من ذاكرة التخزين المؤقت بإحدى الطريقتين التاليتين:

  1. ابدأ في تحديد أوقات انتهاء صلاحية لذاكرة التخزين المؤقت القصيرة.
  2. توقّف عن إرسال معلومات خطة البيانات بالكامل.

سلوك إطار عمل Google Play (GTAF)

ستقيّم "أداة مزامنة دليل Google Cloud" أداة dpaStatus بشكل دوري. وعند رصد عدم اكتمال تعديل معالجة البيانات (استنادًا إلى الاستجابة &quot، وتوقّف الاستجابة وعدم توفّرها)، سيتم محو ذاكرة التخزين المؤقت للمعامل.

حالات الخطأ

في حال حدوث خطأ، من المتوقّع أن تعرض "هيئة حماية البيانات" رمز حالة HTTP يتوافق مع أحد الحالات التالية:

  • المستخدم في وضع التجوال حاليًا وإيقاف طلب تعديل معالجة البيانات لهذا المستخدم. تعرض "هيئة حماية البيانات" الخطأ 403.
  • تعرض "هيئة حماية البيانات" رمز الخطأ NOT_FOUND الذي يشير إلى 404 يشير إلى GTAF بأن مفتاح المستخدم غير صالح (أي مفتاح المستخدم غير موجود).
  • تعرض "هيئة حماية البيانات" رمز خطأ GONE 410 يشير إلى GTAF بأنّ على العميل الحصول على مفتاح مستخدم جديد في حال كان key_type = CPID وانتهت صلاحية CPID.
  • تعرض "هيئة حماية البيانات" رمز الخطأ NOT_IMPLEMENTED 501 الذي يشير إلى أنّه لا يوفّر هذه المكالمة.
  • الخدمة غير متاحة مؤقتًا. تعرض "تعديل بنود معالجة البيانات" خدمة 503 غير متوفّرة مع عنوان إعادة المحاولة الذي يشير إلى الوقت الذي يمكن فيه محاولة طلب جديد.
  • تعرض "هيئة حماية البيانات" رمز الخطأ 500 INTERNAL server ERROR لكل الأخطاء الأخرى غير المحدّدة.
  • تعرض "هيئة حماية البيانات" الخطأ 429 TOO_MANY_REQUEST باستخدام العنوان "إعادة المحاولة" مشيرًا إلى أنّ "GTAF" يرسل عددًا كبيرًا جدًا من الطلبات إلى "تعديل معالجة البيانات".
  • تعرض "هيئة حماية البيانات" رسالة الخطأ 409 CONFLICT التي تشير إلى أنّه لا يمكن إكمال الطلب بسبب تعارض مع الحالة الراهنة لهيئة حماية البيانات.

في جميع حالات الخطأ، يجب أن يشتمل نص استجابة HTTP على كائن JSON مع مزيد من المعلومات حول الخطأ. يجب أن يحتوي نص استجابة الخطأ على نسخة افتراضية من ErrorResponse.

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

يتم إدراج قيم cause المحدّدة حاليًا كجزء من مرجع واجهة برمجة التطبيقات Errorالسبب.

بخلاف ذلك، تعرض "تعديل بنود معالجة البيانات" 200 OK. نلاحظ أن قيم cause هذه تُستخدَم لجميع الردود.

التوافق مع أسواق عالمية

تتضمّن طلبات "إطار عمل الشفافية والموافقة" (DAF) إلى "هيئة حماية البيانات" عنوان قبول اللغة يشير إلى اللغة التي يجب أن تكون فيها السلاسل المقروئة للبشر (مثل أوصاف الخطة). إضافةً إلى ذلك، تتضمّن استجابات هيئة حماية البيانات (PlanStatus وPlanOffers) حقل اللغة مطلوبًا وتكون قيمته رمز اللغة BCP-47 (مثل "en-US").

في حال لم تكن "هيئة حماية البيانات" متوافقة مع اللغة التي طلبها المستخدم، يمكنه استخدام لغة تلقائية واستخدام حقلlanguageCode للإشارة إلى اختياره.