ユーザーは、既存の購読コンテンツなど、すでにアクセス可能なコンテンツを視聴することを好みます。アプリやプラットフォームでユーザーがアクセスできるコンテンツを Google が把握している場合、Google は検索結果やレスポンスを改善し、ユーザーをそのコンテンツに誘導します。
コンテンツ アクセスの要件を特定する
カタログ内の各コンテンツ パッケージのアクセス要件を特定する必要があります。その際は、以下の点を考慮してください。
- ユーザーがコンテンツにアクセスするには、アプリやプラットフォームにログインする必要があるか。
有料会員登録は必要か。
動画再生アクションのみ:
- お客様は外部サービス プロバイダの有料会員登録が必要ですか?
- 階層型、マルチパッケージ、アドオンのサブスクリプションはありますか?
Watch Actions のみ: ユーザーはコンテンツをレンタルまたは購入する必要があるか。
アクセス要件は時間とともに変化するか。
アクセス要件はデバイスの場所によって異なるか?
アクセス制限のタイプ
アクセス制限には次の 2 種類があります。
ペイウォールの種類
コンテンツへのアクセスをペイウォールの種類ごとに制限できます。次の表に、ペイウォールの種類を示します。
ペイウォールの種類 | 例 | カテゴリ |
---|---|---|
購入やログインは不要です。 | クラックル | nologinrequired |
ユーザーはログインする必要がありますが、有料の定期購入は必要ありません。 | Vudu(AVOD) | free |
対象のユーザーには有効な定期購入が必要です。アクセスは定期購入階層とは関係ありません。 | Netflix |
|
対象のユーザーには有効な定期購入が必要です。アクセスは定期購入の階層によって異なります。 | Hulu(アドオン) |
|
購入後、コンテンツを一定期間利用できます。 | Vudu | rental |
購入後、コンテンツは無期限に利用できます。 | Vudu | purchase |
ケーブルテレビのコンテンツを定期購入できます。 | HBO GO | externalSubscription |
ウォッチ アクションのペイウォール タイプ
ウォッチ アクションのコンテンツ ペイウォールのタイプを指定するには、アクション アクセス仕様の category
プロパティを使用します。
"potentialAction": {
"@type":"WatchAction",
"target": { … },
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
...
}
リッスン アクションのペイウォール タイプ
リッスン アクションのコンテンツ ペイウォールのタイプを指定するには、特典オブジェクトの category
プロパティを使用します。
"potentialAction": {
"@type":"ListenAction",
"target": { … },
"expectsAcceptanceOf":{
"@type":"Offer",
"category":"subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type":"Country",
"name":"US"
}
},
...
}
地域
コンテンツを利用できる地域を指定する必要があります。次のプロパティのいずれかまたは両方を使用します。
- アクション アクセス仕様オブジェクトの
eligibleRegion
プロパティ。このプロパティは必須です。 - アクション アクセス仕様オブジェクトの
ineligibleRegion
プロパティ。
デバイスの位置情報が eligibleRegion
で指定されたリージョン内にあり、ineligibleRegion
で指定されたリージョン内にない場合、ユーザーはコンテンツにアクセスできます。
eligibleRegion
プロパティと ineligibleRegion
プロパティでは、次の値を使用できます。
Country
、City
、State
のリスト。GeoShape
オブジェクト。詳細な要件については、GeoShape
プロパティをご覧ください。GeoShape
オブジェクトのリスト。
コンテンツがグローバルに利用できる場合は、eligibleRegion
に次の特別な値を使用します。
"eligibleRegion": "EARTH",
対象地域のユースケース
eligibleRegion
プロパティのユースケースを次に示します。
- 例 1: 国のリストを含む
eligibleRegion
。 - 例 2: 郵便番号のリストを含む
GeoShape
オブジェクトを含むeligibleRegion
。 - 例 3:
eligibleRegion
(転送並べ替えエリア(FSA)コードのリストを含む)を含むGeoShape
オブジェクト。 - 例 4: DMA ID を含む
GeoShape
オブジェクトを含むeligibleRegion
。 - 例 5:
eligibleRegion
とGeoShape
オブジェクトのリスト。各列には DMA ID が含まれます。 - 例 6: 郵便番号がブロックされている
ineligibleRegion
。
例 1
eligibleRegion
は、国のリストに置き換えます。
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/north_america_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": [ { "@type": "Country", "name": "US" }, { "@type": "Country", "name": "CA" } ] }
例 2
eligibleRegion
は、郵便番号のリストを含む GeoShape
オブジェクトに置き換えます。
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
例 3
eligibleRegion
は、前方並べ替え領域(FSA)コードのリストを含む GeoShape
オブジェクトに置き換えます。
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
例 4
eligibleRegion
は、DMA ID を含む GeoShape
オブジェクトに置き換えます。
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
例 5
eligibleRegion
: GeoShape
オブジェクトのリスト。各タイプには DMA ID があります。
"actionAccessibilityRequirement" : { "@type" : "ActionAccessSpecification", "eligibleRegion" : [ { "@id" : "http://example.com/dma/601", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "601" } }, { "@id" : "http://example.com/dma/602", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "602" } } ] }
例 6
ineligibleRegion
が遮断された郵便番号:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
登録情報 ID
利用資格の識別子(entitlementId
)は、メディア カタログ内のコンテンツ グループへのアクセスを表す文字列です。ユーザーがコンテンツにアクセスできるかどうかを判断するには、Google が次の手順を行います。
- Google は Entitlements エンドポイントに対して API 呼び出しを行い、ユーザーの利用資格 ID を受け取ります。
- メディア アクション フィードから、コンテンツに必要な利用資格 ID を検索します。
- ユーザーの
entitlementId
と、フィードのメディア サブスクリプション オブジェクトのidentifier
プロパティを照合します。少なくとも 1 つのentitlementId
が一致する場合、ユーザーはコンテンツにアクセスできます。
entitlementId
には、次の構文を使用することをおすすめします。
<domain name> + colon (:) + <access level to content>
構文の例:
example.com:basic
example.com:premium
example.com:sports
利用資格 ID の例
MediaExampleCompany のフィードでは、次のように Movie XYZ
に example.com:basic
entitlementId
が必要であることが指定されています。
{ "@context": ["http://schema.org", {"@language": "en"}], "@type": "Movie", "@id": "www.example.com/movie_xyz", "url": "www.example.com/movie_xyz", "name": "Movie XYZ", "potentialAction": { "@type": "WatchAction", "target": [ … ], "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Basic subscription", "commonTier": true ... }, ... } }, ... }
一般的なアクセス ユースケース
一般的なアクセスのユースケースは次のとおりです。
- 無料(ログイン不要): ログイン、定期購入、購入なしでコンテンツを利用できます。
- 無料(ログインが必要): コンテンツを利用するにはログインが必要ですが、定期購入は必要ありません。
- 単一階層の定期購入: コンテンツの定期購入が必要です。定期購入パッケージにかかわらず、すべてのメンバーは映画やエピソードを問わず同じコンテンツにアクセスできます。
- 多層定期購入: コンテンツの定期購入が必要です。定期購入者は、サブスクリプション階層に基づいて、映画やエピソードなどさまざまなコンテンツにアクセスできます。たとえば、シルバーとゴールドの比較を表します。
- アドオン サブスクリプション: コンテンツの定期購入が必要です。定期購入者は、通常の定期購入に加えてプレミアム コンテンツを追加できます。
- 1 回だけの購入: コンテンツを購入した後、ユーザーは無期限に利用できます。
- ライブテレビ: 定期購入には、ローカル、全国、プレミアム チャンネルへのアクセス権が含まれます。
- サードパーティの定期購入: コンテンツを利用するには、ケーブル プロバイダへのログインが必要です。
無料(ログイン不要)
ログイン不要
コンテンツはログインまたはサブスクリプションなしで利用できます。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
category
をnologinrequired
に設定する。expectAcceptanceOf
は含めないでください。
無料(要ログイン)
ログインしてください
コンテンツを利用するにはログインが必要ですが、定期購入は不要です。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
category
をfree
に設定する。expectAcceptanceOf
は含めないでください。
単一階層サブスクリプション
単一階層のサブスクリプション モデルでは、サービス プロバイダには 1 つの定期購入階層があります。すべての定期購入者は、定期購入パッケージに関係なく、映画でもエピソードでも同じコンテンツにアクセスできます。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription": { "@type": "MediaSubscription", "name": "Example Package", "commonTier": true, "@id": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
多層サブスクリプション
階層型サブスクリプション モデルの場合、サービス プロバイダには、ゴールド、シルバー、ブロンズなどの複数のサブスクリプション階層があります。上位階層の定期購入を利用しているユーザーは、すべての下位コンテンツにアクセスできます。ただし、下位層の定期購入を持つユーザーは、上位層のコンテンツにアクセスできません。
次のシナリオを考えてみます。
- Jane はゴールド ティアに登録しています。利用資格エンドポイントから次の
entitlementId
識別子が返されます。example.com:bronze
example.com:silver
example.com:gold
- ジョンはブロンズ ティアに登録します。利用資格エンドポイントから次の
entitlementId
が返されます。example.com:bronze
- メディア アクション フィードでは、次の要件について説明しています。
- 映画 A には
example.com:bronze
が必要です。 - 映画 B には
example.com:silver
が必要です。
- 映画 A には
このシナリオでは、Jane と John について次のアクセスレベルが Google によって決定されます。
- Jane と John はどちらも Movie A にアクセスできます。
- Jane は Movie B にアクセスできますが、John はアクセスできません。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
アドオン サブスクリプション
アドオン サブスクリプション モデルでは、サービス プロバイダはユーザーの利用資格を拡大し、チャンネルをベース サブスクリプションに追加できます。チャンネルはいくつでも追加できます。
次のシナリオを考えてみます。
- Jane は Basic サブスクリプションに加えて PRO と Sportz を所有しています。利用資格エンドポイントは、次の
entitlementId
識別子を返します。example.com:basic
example.com:pro
example.com:sportz
- 太郎さんは基本サブスクリプションのみを持っています。利用資格エンドポイントから次の
entitlementId
が返されます。example.com:basic
- メディア アクション フィードでは、次の要件について説明しています。
- 映画 A には
example.com:basic
が必要です。 - 映画 B には
example.com:pro
が必要です。
- 映画 A には
このシナリオでは、Jane と John について次のアクセスレベルが Google によって決定されます。
- Jane と John はどちらも Movie A にアクセスできます。
- Jane は Movie B にアクセスできますが、John はアクセスできません。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" "requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false } } } }
1 回だけの購入
購入
購入後、コンテンツは無期限に利用できます。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "purchase", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
category
をpurchase
に設定する。actionAccessibilityRequirement
にexpectAcceptanceOf
を追加して、購入価格を示します。
レンタル
購入後、コンテンツを一定期間利用できます。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "rental", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
category
をrental
に設定する。actionAccessibilityRequirement
にexpectAcceptanceOf
を追加して、レンタル価格を示します。
ライブテレビ
メディア アクション フィードでは、次の 2 つのユーザー条件に基づいて、ライブテレビのチャンネルまたはイベントへのアクセスを制限できます。
-
ユーザーのデバイスの位置情報
テレビ チャンネルへのアクセスを制限するには、ユーザーがアクセスできるエリアを指定します。この条件は通常、ローカル ブロードキャスト テレビ チャンネルに適用されます。
-
ユーザーのアカウント ステータス
テレビ チャンネルへのアクセスがユーザーのアカウント単位の設定によって異なる場合は、利用資格 ID を使用して制限を表します。
この条件は通常、次のユースケースに適用されます。
- バンドル: 全国チャンネルがバンドルに含まれており、ユーザーはどのバンドルに登録するかを選択します。
- アドオン: プレミアム チャンネルによっては、定期購入にチャンネルを選択的に追加する必要があります。
- 地域スポーツ ネットワーク(RSN): RSN は通常、ユーザーの「自宅」の場所に関連付けられます。ユーザーは、居住地の外にいるときも RSN でコンテンツを視聴できます。
サードパーティ サブスクリプション
サードパーティの定期購入
登録者は別のサービスのコンテンツを利用できます。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
authenticator
を追加して、別のサービスがサブスクライバーを認証することを示します。たとえば、HBO GO を利用するには、ケーブル プロバイダのサブスクリプションが必要です。
共通ティア パッケージ
共通階層のコンテンツは、サブスクリプション パッケージに関係なく、すべてのサブスクライバーが利用できます。共通階層は、category
が subscription
であるすべてのコンテンツに適用されます。category
プロパティの詳細については、ペイウォールのタイプのセクションをご覧ください。
共通階層パッケージが必要な理由
複数の Google プロダクトを通じて、Google 検索、Android TV、Google アシスタントなど、ユーザーにおすすめのテレビや映画が提供されています。費用に関するユーザーの期待を設定するには、共通ティアを使用してすべてのサブスクライバーが利用できるコンテンツを理解する必要があります。また、特定の定期購入パッケージを利用している定期購入者が利用できるコンテンツも理解する必要があります。
利用資格 API がサポートされていない場合、Google は共通階層で利用可能なタイトルをおすすめします。API を使用すると、各ユーザーがアクセスできる階層以外のタイトルを Google に認識させることができます。
共有パッケージの作成が必要となる状況
すべてのサブスクライバーが利用できるコンテンツを提供するサービスの場合、共通階層パッケージが必要です。これには、1 つのパッケージのみを提供するサービスと、複数のパッケージまたはアドオンを提供するサービスが含まれます。
すべてのサブスクライバーが利用できるコンテンツがないプロバイダでは、共通階層パッケージを作成する必要はありません。一例として、すべてのパッケージにわたって相互に排他的なコンテンツを提供するサービス プロバイダなどが挙げられます。
一般的な階層の例
以下に、共通ティアの例を示します。
階層型サブスクリプション
階層型サブスクリプション モデルの場合、サービス プロバイダには、ゴールド、シルバー、ブロンズなどの複数の階層があります。上位階層の定期購入を持つユーザーは、下位レベルのすべてのコンテンツにアクセスできます。下位階層のサブスクリプションを持つユーザーは、上位の階層にあるコンテンツにアクセスできません。以下の画像は、パッケージ構造の例です。
次のコードサンプルでは、ブロンズ パッケージが共通の階層です。これは、すべてのユーザーがその階層内のすべてのコンテンツにアクセスできるためです。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/bronze", "name": "Bronze", "sameAs": "https://www.example.com/package/bronze", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/silver", "name": "Silver", "sameAs": "https://www.example.com/package/silver", "identifier": "example.com:silver", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/gold", "name": "Gold", "sameAs": "https://www.example.com/package/gold", "identifier": "example.com:gold", "commonTier": false } ],
アドオン
アドオン サブスクリプション モデルでは、サービス プロバイダはユーザーの利用資格を拡大し、チャンネルを基本的なサブスクリプションに追加できます。ユーザーは必要な数のチャンネルを追加できます。次の画像は、パッケージ構造の例です。
すべてのユーザーが使用できるチャンネルがあり、チャンネルに対して費用がない場合は、パッケージを共通階層パッケージと統合できます。
次のコード例では、基本パッケージが共通の階層です。これは、すべてのユーザーがこのパッケージ内のすべてのコンテンツにアクセスできるためです。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/moviemax", "name": "Moviemax", "sameAs": "https://www.example.com/package/moviemax", "identifier": "example.com:moviemax", "commonTier": false } ],
交差するコンテンツを含むパッケージ
パッケージが交差するコンテンツを持つコンテンツ モデルでは、サービス プロバイダは他のパッケージの一部のコンテンツを含むパッケージを販売します。次の画像は、パッケージ構造の例です。
次のコードサンプルでは、3 つのパッケージを提供しており、すべてのパッケージでコンテンツが交差しています。この場合、共通階層を表す 4 つ目のパッケージが必要です。3 つのパッケージ全体で利用可能なすべてのコンテンツを含める必要があります。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/common", "name": "Common Tier Package", "sameAs": "https://www.example.com/package/common", "commonTier": true } ],
コンテンツが交差していないパッケージ
すべてのコンテンツ パッケージが交差しないコンテンツ モデルでは、サービス プロバイダは他のパッケージのコンテンツを含まないパッケージを販売します。次の画像は、パッケージ構造の例です。
次の例では、プロバイダは 3 つのパッケージを提供しており、すべてのパッケージでコンテンツが交差していません。共通階層パッケージは必要ありません。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false } ],
登録情報のエンドポイント
このセクションの情報を使用して、ユーザーに関連付けられた利用資格を返す HTTPS エンドポイントをホストします。
前提条件
始める前に、サービスが Google の OAuth 2.0 フローをサポートしていることを確認してください。
リクエスト
ユーザーの利用資格を受け取るために、Google はユーザーの OAuth トークンを含むリクエストを送信します。エンドポイントでは、この OAuth トークンに基づいてユーザーを識別する必要があります。次の例をご覧ください。
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
レスポンス
エンドポイントでは、次のプロパティを指定したレスポンスを返す必要があります。
プロパティ | |
---|---|
subscription |
必須 これはルート レスポンス内のフィールドです。 |
subscription.type |
必須 このプロパティには次の値を指定できます。
|
subscription.expiration_date |
Optional この利用資格の有効期限。タイムゾーンを含む、ISO 8601 形式で指定します。詳細については、有効期限をご覧ください。 |
entitlements |
Optional このルート プロパティには、ユーザーが保持する |
entitlements.entitlement |
ストリーミング カタログへのアクセスがサブスクリプションのタイプによって異なる場合は、必須です。 このプロパティには |
entitlements.expiration_date |
Optional このサブスクリプションの有効期限。タイムゾーンを含む ISO 8601 形式で指定します。詳細については、有効期限をご覧ください。 |
有効期限
エンドポイント レスポンスには、有効期限を処理する subscription.expiration_date
と entitlements.expiration_date
の 2 つのプロパティがあります。どちらか一方を含めるか、両方を含めることはできません。どちらを使用するかは、サブスクリプション モデルによって異なります。
サブスクリプション モデル | |
---|---|
ストリーミング カタログへのアクセスは、すべてのサブスクライバーで同じです。 | entitlements プロパティを指定する必要はないため、subscription.expiration_date を指定します。 |
ストリーミング カタログへのアクセスは、ユーザーの定期購入の詳細によって異なります。 |
定期購入モデルに複数の階層やアドオンが時間の経過とともに期限切れになる場合は、次のいずれかを行います。
|
回答例
定期購入のさまざまなステータスに対するレスポンスの例を次に示します。
- 有効な定期購入
- 有効期限のある有効な定期購入
- 定期購入なし
- 複数階層またはアドオンの有効なサブスクリプション
有効な定期購入
有効な定期購入
ユーザーが example.com の定期購入を利用しています。この場合、定期購入の種類にかかわらず、すべての定期購入者はストリーミング カタログ全体にアクセスできます。
{ "subscription" : { "type": "ActiveSubscription", } }
有効期限のある有効な定期購入
有効期限のある有効な定期購入
ユーザーが example.com の有効な定期購入を利用しており、定期購入に有効期限がある場合。この場合、すべての定期購入者は、定期購入の種類にかかわらずストリーミング カタログ全体にアクセスできます。
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
定期購入なし
定期購入なし
ユーザーが example.com を定期購入していない。
{ "subscription" : { "type": "InactiveSubscription" } }
複数階層またはアドオンの有効なサブスクリプション
複数の Tier またはアドオンに対する有効な定期購入
ユーザーが特定の日付までに example.com:premium
の定期購入を利用しています。
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
レート上限
Google は、お客様の利用資格の情報を最大で 6 時間ごとに更新します。最大秒間クエリ数(QPS)を平滑化するために、Google はクエリを時系列でエンドポイントに均等に分散します。したがって、次の式を使用して、エンドポイントの予想平均 QPS を推定できます。
予想される平均 QPS = <合計ユーザー数> ÷ 21,600 秒(6 時間 × 60 分 × 60 秒)
多数のユーザーをサポートしている場合、Google は 6 時間間隔を調整できます。 必要に応じて、構成について Google にお問い合わせください。
Google に連絡する
エンドポイントの準備が整ったら、Google にエンドポイントの URL を通知してください。
アクション アクセス指定プロパティ
リファレンス情報については、アクション アクセス仕様のプロパティ セクションをご覧ください。