Google 모바일 데이터 요금제 공유 API

동기

Google 모바일 데이터 요금제 공유 API를 사용하면 운영자가 사용자 키로 식별되는 사용자의 데이터 요금제에 관한 정보를 GTAF에 전송할 수 있습니다. 이 페이지에서는 이러한 업데이트가 GTAF 및 Google 애플리케이션에 푸시될 수 있는 메커니즘을 간략하게 설명합니다. 이 API를 사용하면 현재 DPA가 Google 클라이언트에서 사용할 데이터 요금제 상태를 GTAF로 전송할 수 있습니다.

인증

GTAF에 대한 모든 데이터 요금제 공유 API 요청은 Google Cloud OAuth2 서버를 사용하여 인증해야 합니다. 요청은 DPA가 나타내는 ASN에 대해 ISP 포털에서 허용 목록에 추가된 서비스 계정으로 인증되어야 합니다. Google Cloud 서비스 계정으로 OAuth를 사용하는 방법에 관한 문서는 Google Cloud 서비스 계정용 OAuth 2.0을 참고하세요.

데이터 요금제 업데이트

현재 Google 모바일 데이터 요금제 공유 API를 사용하면 운영자가 사용자의 데이터 요금제에 관한 업데이트를 공유할 수 있습니다.

  • 데이터 요금제 상태: 사용자의 데이터 요금제의 현재 상태를 캡처합니다. 예를 들어 사용자의 데이터가 부족한 경우 운영자는 데이터 요금제 상태 업데이트를 GTAF에 푸시할 수 있으며, GTAF는 이를 사용하여 잔액 부족 알림을 사용자에게 보낼 수 있습니다.

관련 사용자 식별

DPA는 GTAF에 전송할 사용자 데이터를 결정하는 방법이 필요합니다. GTAF는 다음 사용자에 대한 업데이트를 수신해야 합니다.

  1. 활성 CPID: 활성 CPID가 있는 사용자입니다. CPID 엔드포인트에서 생성된 CPID가 유효할 때까지 DPA는 사용자의 데이터 요금제에 관한 업데이트를 전송해야 합니다(SHOULD). CPID 생성 시 Accept-Language 헤더가 설정된 경우 데이터 요금제 상태의 사람이 읽을 수 있는 문자열은 해당 언어로 되어야 합니다(MUST).
  2. 등록된 MSISDN: MSISDN에 액세스할 수 있는 애플리케이션을 제공하기 위해 GTAF는 데이터 계획 에이전트 API의 msisdn 등록 섹션에 설명된 대로 MSISDN을 DPA에 등록합니다. MSISDN이 등록되면 DPA는 등록이 만료될 때까지 사용자 데이터 요금제에 관한 업데이트를 전송해야 합니다(SHOULD).

API 설명

데이터 요금제 상태 공유

그림 3. DPA가 GTAF와 데이터 요금제 상태를 공유할 때 GTAF-DPA 상호작용

애플리케이션은 두 가지 방법으로 데이터 요금제 상태 정보를 수신할 수 있습니다.

  1. UE는 데이터 요금제 상태 정보를 위해 GTAF를 호출합니다.
    1. 운영자의 DPA는 데이터 요금제 공유 API를 사용하여 사용자의 데이터 요금제 상태를 GTAF로 푸시합니다. GTAF는 계획 상태와 연결된 사용자 키를 저장합니다.
    2. UE에서 실행되는 Google 애플리케이션이 Google 내부 API를 사용하여 데이터 요금제 상태 정보를 요청합니다. 애플리케이션은 요청에 사용자 키를 포함합니다.
    3. 애플리케이션이 캐시된 데이터 요금제 상태를 사용할 수 있는 경우 GTAF는 사용자 키를 사용하여 사용자의 데이터 요금제 상태를 조회합니다. 그러면 GTAF가 이 상태를 UE에 반환합니다.
  2. GTAF는 데이터 요금제 상태 정보를 UE에 푸시합니다.
    1. 관련된 경우, 이동통신자로부터 수신한 데이터 요금제 상태가 UE에 직접 푸시됩니다.

GTAF-DPA 상호작용

DPA는 HTTPS POST를 사용하여 클라이언트가 사용할 사용자의 기존 계획 상태 항목을 만들고 업데이트합니다. 현재 GTAF는 mobiledataplanyoutube를 유효한 클라이언트 식별자로 지원합니다. 다음은 asn 12345 및 사용자 키 abcdefyoutube 클라이언트를 위해 GTAF와 요금제 정보를 공유하는 연산자의 요청 예입니다.

POST https://mobiledataplansharing.googleapis.com/v1/operators/12345/clients/youtube/users/abcdef/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"
    }]
  }],
  "planInfoPerClient": {
    "youtube": {
      "rateLimitedStreaming": {
        "maxMediaRateKbps": 569
      }
    }
  },
  "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"
}

요청이 성공하면 GTAF는 HTTP 응답 코드 200과 푸시된 planStatus 항목을 반환합니다. 사용자에게 알림이 전송된 경우 알림 항목도 반환됩니다. GTAF에서 요청에 문제가 있음을 식별하면 400~499 범위의 HTTP 상태 코드를 반환합니다. GTAF 오류로 인해 GTAF가 요청을 완료할 수 없는 경우 GTAF는 500~599 범위의 HTTP 코드를 반환합니다. 500~599 범위의 응답을 수신하는 요청은 재시도할 수 있는 것으로 간주되며 400~499 범위의 응답을 수신하는 요청은 일반적으로 재시도할 수 없습니다.

기본 클라이언트의 계획 상태 푸시

GTAF는 사용할 수 있는 클라이언트를 지정하지 않고 계획 상태가 운영자에 의해 푸시되는 다음 호출을 계속 지원합니다. 이 경우 계획 상태가 mobiledataplan 클라이언트를 위한 것이며 운영자가 사용자에게 알림을 전송하려고 한다고 가정합니다. 요청 본문은 클라이언트별 사용 사례와 기본 클라이언트 사용 사례에서 동일합니다.

POST https://mobiledataplansharing.googleapis.com/v1/operators/12345/planStatuses?userKey=abcdef

다국어 지원

국제화를 지원하기 위해 DPA는 GTAF의 직접 요청이 없더라도 사용자가 선호하는 언어를 알아야 합니다. 이 문제를 해결하기 위해 CPID 엔드포인트에 대한 요청에는 Accept-Language 헤더가 포함될 수 있습니다(MAY). 헤더가 포함된 경우 DPA가 MDP API를 사용하여 전송하는 업데이트의 사람이 읽을 수 있는 문자열은 CPID 요청에 제공된 설정을 사용해야 합니다.