REST Resource: operators.clients.users.planStatus

資源:PlanStatus

PlanStatus 包含使用者購買的所有頂層行動服務套裝組合詳細資料。

JSON 表示法
{
  "name": string,
  "plans": [
    {
      object (Plan)
    }
  ],
  "languageCode": string,
  "expireTime": string,
  "updateTime": string,
  "title": string,
  "subscriberId": string,
  "accountInfo": {
    object (AccountInfo)
  },
  "uiCompatibility": enum (UiCompatibility),
  "notifications": [
    enum (NotificationType)
  ],
  "planInfoPerClient": {
    object (PlanInfoPerClient)
  },
  "cpidState": enum (CpidState)
}
欄位
name

string

PlanStatus 的資源名稱,格式如下:operators/{asn_id}/planStatuses/{userKey}。建立 PlanStatus 項目時,系統會忽略名稱。

plans[]

object (Plan)

這名使用者擁有的方案清單。

languageCode

string

必要欄位。BCP-47 語言代碼,例如「en-US」或「sr-Latn」。詳情請參閱 http://www.unicode.org/reports/tr35/#Unicode_locale_identifier

expireTime

string (Timestamp format)

必要欄位。共用方案群組資訊過時的時間。屆時應用程式將無法再收到 PlanStatus。到期時間必須是未來的時間。

RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

updateTime

string (Timestamp format)

必要欄位。資料方案代理程式 (DPA) 從後端系統擷取方案狀態資訊的時間。可用於判斷方案狀態資訊的更新時間,更新時間必須是過去的時間,但不能超過 30 天。

RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

title

string

使用者與電信業者簽訂的合約名稱。這會顯示在 UI 標題中。

subscriberId

string

電信系統中用於識別使用者的專屬固定 ID。

accountInfo

object (AccountInfo)

預付型使用者必須提供。使用者帳戶餘額的相關資訊。

uiCompatibility

enum (UiCompatibility)

決定是否要在使用者介面中向使用者顯示 PlanStatus。如果設為 UI_INCOMPATIBLE,PlanStatus 可用於傳送通知給使用者,但不會用於向使用者顯示方案資訊。

notifications[]

enum (NotificationType)

包含 GTAF 傳送給使用者的通知類型清單。如果呼叫端填入這個欄位,GTAF 會忽略該欄位。

planInfoPerClient

object (PlanInfoPerClient)

與特定 Google 用戶端相關的資料方案資訊。

cpidState

enum (CpidState)

與此方案狀態相關聯的 CPID 狀態。

方案

使用者的行動方案詳細資料,也就是訂閱者購買的頂層行動服務套裝組合。方案可以很簡單,例如「10 GB 行動數據,效期 30 天」,也可以定義為一組元件 (我們稱為方案模組)。舉例來說,ACME 方案 199 的說明為「2GB 資料、無限量 WhatsApp + 無限量 WeChat,以及 1GB Spotify」,包含三個方案模組。

JSON 表示法
{
  "planName": string,
  "planId": string,
  "planCategory": enum (PlanCategory),
  "expirationTime": string,
  "planModules": [
    {
      object (PlanModule)
    }
  ],
  "planState": enum (PlanState)
}
欄位
planName

string

使用者的行動方案名稱。

planId

string

必要欄位。方案 ID,用於在優惠等活動中參照方案。

planCategory

enum (PlanCategory)

預付或後付方案。

expirationTime

string (Timestamp format)

必要欄位。這項方案到期時,在大多數方案中,這應等於所有方案模組特定到期時間的最大值。如果方案會定期更新模組配額,這應該是方案的整體到期時間,也就是方案模組停止更新的時間。如果方案不會過期,請省略這個欄位。

RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

planModules[]

object (PlanModule)

詳細的方案模組 (子方案) 資訊。

planState

enum (PlanState)

使用者方案的狀態,例如有效、停用等。

PlanCategory

可能的方案類別類型。

列舉
PLAN_CATEGORY_UNSPECIFIED 未指明
PREPAID 預付方案。
POSTPAID 後付方案。

PlanModule

方案中每個資料方案模組 (或子方案) 的資訊。

JSON 表示法
{
  "coarseBalanceLevel": enum (BalanceLevel),
  "trafficCategories": [
    enum (PlanModuleTrafficCategory)
  ],
  "expirationTime": string,
  "overUsagePolicy": enum (OverUsagePolicy),
  "maxRateKbps": string,
  "description": string,
  "moduleName": string,
  "usedBytes": string,
  "planModuleState": enum (PlanState),
  "refreshPeriod": enum (RefreshPeriod),

  // Union field balance can be only one of the following:
  "byteBalance": {
    object (ByteQuota)
  },
  "timeBalance": {
    object (TimeQuota)
  }
  // End of list of possible types for union field balance.
}
欄位
coarseBalanceLevel

enum (BalanceLevel)

概略餘額資訊。

trafficCategories[]

enum (PlanModuleTrafficCategory)

系統會根據這份清單,針對這個方案模組收取費用。

expirationTime

string (Timestamp format)

必要欄位。規劃模組的特定到期時間。如果是配額會定期更新的方案模組,這就是下次模組更新的時間。如果方案模組不會過期,請省略這個欄位。

RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

overUsagePolicy

enum (OverUsagePolicy)

超過使用政策,例如遭到節流。

maxRateKbps

string (int64 format)

此方案模組允許的最高資料速率 (以 Kbps 為單位)。實際觀察到的資料速率介於 0 到 maxRateKbps 之間,視網路狀況而定。如果省略 maxRateKbps 或將其設為 0,表示這個方案模組不會執行任何節流作業。

description

string

必要欄位。方案模組說明,可能會向使用者顯示,應與此方案模組的市場說明相近。

moduleName

string

必要欄位。方案模組名稱。

usedBytes

string (int64 format)

使用者從這個方案模組使用的位元組總數。

planModuleState

enum (PlanState)

方案模組的狀態,例如有效、無效等。

refreshPeriod

enum (RefreshPeriod)

這個方案模組的重新整理週期,如果方案模組不會重新整理配額,則為 REFRESH_PERIOD_NONE。如果方案模組會重新整理配額,則會在每個重新整理週期執行一次。

聯集欄位 balance。必要欄位。方案模組餘額資訊,應為下列其中一項:byte_balance、time_balance、coarse_balance_level。balance 只能是下列其中一項:
byteBalance

object (ByteQuota)

以位元組為單位的方案模組餘額資訊。對於定期重新整理的模組,這個欄位代表每個重新整理週期的位元組餘額。

timeBalance

object (TimeQuota)

以時間為準的方案模組餘額資訊。對於定期更新的模組,這個欄位代表每個更新週期的時間餘額。

ByteQuota

以位元組為準的方案模組配額/餘額資訊。

JSON 表示法
{
  "quotaBytes": string,
  "remainingBytes": string
}
欄位
quotaBytes

string (int64 format)

模組配額 (以位元組為單位)。如果是無限方案,請設為 2^63 - 1 (9223372036854775807)。

remainingBytes

string (int64 format)

這是接收餘額偏低通知的必要條件。以位元組為單位的剩餘配額。

TimeQuota

以時間為準的方案模組配額/餘額資訊。

JSON 表示法
{
  "quotaMinutes": string,
  "remainingMinutes": string
}
欄位
quotaMinutes

string (int64 format)

以分鐘為單位的時間型方案模組配額,例如 180 分鐘。

remainingMinutes

string (int64 format)

以分鐘為單位的剩餘配額,適用於以時間為準的方案,例如 40 分鐘。

BalanceLevel

概略方案模組資料餘額資訊。

列舉
BALANCE_LEVEL_UNSPECIFIED 未指明
NO_PLAN 沒有數據方案。
OUT_OF_DATA 資料餘額為零。
LOW_QUOTA 數據方案餘額 (或剩餘時間) 等於或低於原始方案餘額 (或時間) 的 10% 至 25%。貨運公司可視情況決定每個包裝的確切門檻。
HIGH_QUOTA 剩餘數據用量 (或時間) 仍有原始方案用量 (或時間) 的 10% 至 25%。貨運公司可視情況決定每個包裝的確切門檻。資料餘額偏高。

PlanModuleTrafficCategory

方案模組流量類別,說明屬於特定方案模組的一組應用程式流量。

列舉
PLAN_MODULE_TRAFFIC_CATEGORY_UNSPECIFIED 未指明
GENERIC 一般,適用於所有流量。
VIDEO 所有影片流量。
VIDEO_BROWSING 影片探索 (瀏覽) 流量:指所有影片應用程式流量,但不包括影片/音訊串流部分。
VIDEO_OFFLINE 影片離線流量,也就是 VIDEO_BROWSING 和影片/音訊離線 (非串流) 流量的總和。
MUSIC 音樂應用程式流量。
GAMING 遊戲應用程式流量。
SOCIAL 社群應用程式流量。
MESSAGING 訊息應用程式流量。
APP_STORE 應用程式商店流量,例如更新或下載新應用程式。

OverUsagePolicy

用量超出上限政策:使用者配額用盡時會發生什麼情況。

列舉
OVER_USAGE_POLICY_UNSPECIFIED 未指明
THROTTLED 速度受到限制。
BLOCKED 連線遭到封鎖。
PAY_AS_YOU_GO 用多少付多少。

PlanState

列舉,代表使用者方案/方案模組的不同狀態。

列舉
ACTIVE 方案/方案模組處於啟用狀態,使用者可以運用模組提供的資料。
INACTIVE 方案/方案模組已停用,使用者雖然仍有該模組,但無法使用模組中的資料。如果模組只在一天中的特定時間提供資料,或是使用者已購買模組但尚未啟用,就可能發生這種情況。
EXPIRING_SOON 方案/方案模組即將到期。呼叫端應選擇適當的層級,判斷何時設定這個值。這表示方案已自動啟用。
NEWLY_ACTIVE 先前處於非啟用狀態或不存在的 Plan/PlanModule 剛啟用。這個狀態只能在啟用時間後的一小段時間內使用,否則應改用「有效」狀態。使用 NEWLY_ACTIVE 模組傳送的資料方案狀態通知應使用較短的 TTL,因為 NEWLY_ACTIVE 狀態很快就會變得不準確。
EXPIRED 方案/方案模組已過期。設定這個列舉值會觸發方案到期通知。

RefreshPeriod

代表重新整理週期,即方案模組重設的固定間隔。

列舉
REFRESH_PERIOD_NONE 沒有重新整理期限。用於方案模組非週期性時。
DAILY 方案模組每天都會重設。
MONTHLY 方案模組會在每個月重設。
BIWEEKLY 計畫模組每兩週會重設一次。
WEEKLY 每週都會重設計畫模組。

AccountInfo

預付型使用者的帳戶餘額相關資訊。

JSON 表示法
{
  "accountBalance": {
    object (Money)
  },
  "loanBalance": {
    object (Money)
  },
  "unpaidLoan": {
    object (Money)
  },
  "accountBalanceStatus": enum (AccountBalanceStatus),
  "validUntil": string,
  "payAsYouGoCharge": {
    object (Money)
  },
  "accountTopUp": {
    object (Money)
  }
}
欄位
accountBalance

object (Money)

必要欄位。使用者帳戶的剩餘帳戶餘額。

loanBalance

object (Money)

必要 (如適用)。電信業者提供貨幣貸款,並新增至使用者帳戶的剩餘帳戶餘額。如果有的話,欄位 accountBalance 不會包含這筆餘額。

unpaidLoan

object (Money)

使用者因金錢貸款而積欠電信業者的金額。

accountBalanceStatus

enum (AccountBalanceStatus)

必要欄位。顯示帳戶餘額狀態。如果 validUntil 時間與 accountBalanceStatus 欄位不符,我們會使用 accountBalanceStatus。

validUntil

string (Timestamp format)

必要欄位。帳戶餘額的有效期限。這個欄位會向使用者顯示帳戶餘額「在『

RFC3339 世界標準時間「Zulu」格式的時間戳記,精確度達奈秒單位,最多九個小數位數。例如:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

payAsYouGoCharge

object (Money)

使用者在隨用隨付狀態下使用方案所花費的金額。如果電信業者在與 GTAF 分享帳戶資訊時填入這個欄位,GTAF 會嘗試傳送通知給使用者,指出他們目前處於隨用隨付狀態。

accountTopUp

object (Money)

帳戶儲值通知必須提供這項資訊。使用者已存入帳戶餘額的金額。如果電信業者在與 GTAF 分享帳戶資訊時填入這個欄位,GTAF 會嘗試傳送通知給使用者,說明帳戶已加值。

金額

代表金額與其貨幣類型。

JSON 表示法
{
  "currencyCode": string,
  "units": string,
  "nanos": integer
}
欄位
currencyCode

string

ISO 4217 定義的貨幣代碼,由 3 個字母組成。

units

string (int64 format)

金額的整數單位。舉例來說,如果 currencyCode"USD",則 1 個單位為 1 美元。

nanos

integer

金額的十億分之一 (10^-9) 單位數量。這個值必須介於 -999,999,999 和 +999,999,999 (含) 之間。如果 units 為正值,nanos 必須為正值或零;如果 units 為零,則 nanos 可為正值、零或負值;如果 units 為負值,nanos 就必須為負值或零。例如,$-1.75 美元的表記方式為 units=-1 和 nanos=-750,000,000。

AccountBalanceStatus

使用者錢包的狀態。

列舉
VALID 使用者帳戶餘額有效,可用於購物。
INVALID 使用者帳戶餘額無效,必須變更帳戶才能使用。

UiCompatibility

列舉,表示是否可向使用者顯示共用的 PlanStatus。

列舉
UI_COMPATIBILITY_UNSPECIFIED 根據預設,我們會假設 PlanStatus 與 UI 相容。
UI_COMPATIBLE 表示整個 PlanStatus 與 UI 相容,且可向使用者顯示方案資訊。
UI_INCOMPATIBLE 表示 PlanStatus 與 UI 不相容。這些欄位可用於傳送通知給使用者,但無法向使用者顯示方案資訊。

NotificationType

傳送給行動數據方案設定使用者的通知類型。

列舉
NOTIFICATION_UNDEFINED 不明的通知類型
NOTIFICATION_LOW_BALANCE_WARNING 餘額偏低警告通知
NOTIFICATION_DATA_EXPIRATION_WARNING 通知使用者數據方案即將到期
NOTIFICATION_OUT_OF_DATA 通知使用者流量不足
NOTIFICATION_PLAN_ACTIVATION 通知:使用者購買的方案現已啟用
NOTIFICATION_PAY_AS_YOU_GO 通知使用者目前處於隨用隨付狀態,因此需要支付數據費用。
NOTIFICATION_ACCOUNT_TOP_UP 通知使用者帳戶餘額已加值。
NOTIFICATION_DATA_EXPIRED 通知使用者數據方案已過期的訊息。

PlanInfoPerClient

與特定 Google 用戶端相關的資料方案資訊。

JSON 表示法
{
  "youtube": {
    object (YouTube)
  },
  "androidSystemInfo": {
    object (AndroidSystemInfo)
  }
}
欄位
youtube

object (YouTube)

YouTube 相關方案資訊。

androidSystemInfo

object (AndroidSystemInfo)

與 Android 系統相關的方案資訊。

YouTube

與 YouTube 相關的數據方案資訊。

JSON 表示法
{
  "rateLimitedStreaming": {
    object (RateLimitedStreaming)
  }
}
欄位
rateLimitedStreaming

object (RateLimitedStreaming)

YouTube 方案感知串流 (PAS) 功能,可限制影片的傳輸位元率。

RateLimitedStreaming

資料方案資訊,可讓 YouTube 提升受速率限制的串流使用者體驗。

JSON 表示法
{
  "maxMediaRateKbps": integer
}
欄位
maxMediaRateKbps

integer

YouTube 為這位使用者支援的位元率,以 kbps 為單位 (每秒 1000 位元)。

AndroidSystemInfo

與整個 Android 系統相關的數據方案資訊。

JSON 表示法
{
  "cellularInfo": [
    {
      object (CellularInfo)
    }
  ]
}
欄位
cellularInfo[]

object (CellularInfo)

各連線類型的行動網路資訊。舉例來說,每種連線類型 (例如 4G、5G 等) 都會有一則 cellularInfo 訊息。

CellularInfo

方案為使用者提供的行動網路連線相關資訊。

JSON 表示法
{
  "connectionType": enum (ConnectionType),
  "meteredness": enum (Meteredness)
}
欄位
connectionType

enum (ConnectionType)

電信業者提供給使用者的連線類型。

meteredness

enum (Meteredness)

使用者方案的計量狀態。

ConnectionType

連線類型:2G、3G、4G

列舉
CONNECTION_TYPE_UNSPECIFIED 未指明
CONNECTION_2_G 2G.
CONNECTION_3_G 3G。
CONNECTION_4_G 4G。
CONNECTION_5_G 5G。
CONNECTION_ALL 所有音樂。

具自動計量功能

使用者擁有的方案類型

列舉
METEREDNESS_UNSPECIFIED GTAF 不知道使用者方案的計量狀態。
METEREDNESS_UNMETERED 使用者採用無限量方案。
METEREDNESS_METERED 使用者採用用量計費方案。

CpidState

代表 CPID 狀態的電信業者列舉。

列舉
CPID_STATE_UNSPECIFIED 未指定 CPID 狀態。系統會將其視為有效的 CPID。
CPID_INVALIDATED CPID 會失效,用戶端應從 CPID 端點擷取新的 CPID。

方法

create

行動網路業者 (以專屬自治系統編號 (ASN) 識別) 可為使用者新增 PlanStatus 項目,供特定用戶端使用。