Pengguna lebih memilih untuk menonton atau mendengarkan konten yang sudah dapat diakses, seperti konten langganan yang sudah ada. Jika Google mengetahui konten yang dapat diakses pengguna di aplikasi atau platform Anda, Google dapat membuat hasil penelusuran atau respons yang lebih baik untuk mengarahkan pengguna ke konten tersebut.
Mengidentifikasi persyaratan akses konten
Anda harus mengidentifikasi persyaratan akses untuk setiap paket konten dalam katalog Anda. Saat Anda melakukannya, pertimbangkan pertanyaan berikut:
- Apakah pengguna harus login ke aplikasi atau platform Anda untuk mengakses konten?
Apakah pengguna memerlukan langganan?
Khusus Tindakan Tonton:
- Apakah pengguna memerlukan langganan dari penyedia layanan eksternal?
- Apakah Anda menawarkan langganan bertingkat, multi-paket, atau add-on?
Khusus Tindakan Tonton: Apakah pengguna perlu menyewa atau membeli konten?
Apakah persyaratan akses berubah dari waktu ke waktu?
Apakah persyaratan akses bergantung pada lokasi perangkat?
Jenis pembatasan akses
Ada dua jenis pembatasan akses:
Jenis Penghalang konten berbayar
Anda dapat membatasi akses ke konten berdasarkan jenis penghalang konten berbayarnya. Tabel berikut menjelaskan berbagai jenis penghalang konten berbayar:
Jenis Penghalang konten berbayar | Contoh | Kategori |
---|---|---|
Tidak perlu pembelian atau login. | Gemeretak | nologinrequired |
Pengguna harus login, tetapi tidak memerlukan langganan berbayar. | Vudu | free |
Pengguna harus memiliki langganan yang aktif. Akses tidak bergantung pada tingkat langganan. | Netflix |
|
Pengguna harus memiliki langganan yang aktif. Akses bergantung pada tingkat langganan. | Hulu (add-on) |
|
Konten tersedia selama waktu yang terbatas setelah pembelian. | Vudu | rental |
Konten tersedia untuk waktu yang tidak terbatas setelah pembelian. | Vudu | purchase |
Konten tersedia melalui langganan TV kabel. | HBO Go | externalSubscription |
Jenis Penghalang konten berbayar untuk Tindakan Tonton
Untuk menentukan jenis penghalang konten berbayar untuk Watch Actions, gunakan properti
category
dalam
spesifikasi akses Tindakan:
"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"
}
},
...
}
Jenis Penghalang konten berbayar untuk Tindakan Dengarkan
Guna menentukan jenis penghalang konten berbayar untuk Tindakan Dengarkan, gunakan
properti category
dalam
objek penawaran:
"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"
}
},
...
}
Area geografis
Anda harus menentukan area geografis tempat konten tersedia. Gunakan salah satu atau kedua properti berikut:
- Properti
eligibleRegion
dari objek spesifikasi akses Tindakan. Properti ini bersifat wajib. - Properti
ineligibleRegion
dari objek spesifikasi akses Tindakan.
Pengguna dapat mengakses konten jika lokasi perangkat berada dalam region yang ditentukan dalam eligibleRegion
dan tidak berada dalam region yang ditentukan dalam ineligibleRegion
.
Properti eligibleRegion
dan ineligibleRegion
mengizinkan nilai berikut:
- Daftar
Country
,City
, danState
. - Objek
GeoShape
. Lihat bagian propertiGeoShape
untuk mengetahui persyaratan selengkapnya. - Daftar objek
GeoShape
.
Jika konten tersedia secara global, gunakan nilai khusus berikut untuk
eligibleRegion
:
"eligibleRegion": "EARTH",
Kasus penggunaan yang memenuhi syarat
Berikut adalah contoh kasus penggunaan properti eligibleRegion
:
- Contoh 1:
eligibleRegion
dengan daftar negara. - Contoh 2:
eligibleRegion
dengan objekGeoShape
yang berisi daftar kode pos. - Contoh 3:
eligibleRegion
dengan objekGeoShape
yang berisi daftar kode Forward Sortation Area (FSA). - Contoh 4:
eligibleRegion
dengan objekGeoShape
yang berisi ID DMA. - Contoh 5:
eligibleRegion
dengan daftar objekGeoShape
. Masing-masing berisi ID DMA. - Contoh 6:
ineligibleRegion
dengan kode pos yang diblokir.
Contoh 1
eligibleRegion
dengan daftar negara:
"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" } ] }
Contoh 2
eligibleRegion
dengan objek GeoShape
yang berisi daftar kode pos:
"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" ] } }
Contoh 3
eligibleRegion
dengan objek GeoShape
yang berisi daftar kode Forward Sortation Area (FSA):
"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" ] } }
Contoh 4
eligibleRegion
dengan objek GeoShape
yang berisi ID DMA:
"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" } ] } }
Contoh 5
eligibleRegion
dengan daftar objek GeoShape
.
Masing-masing berisi ID DMA:
"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" } } ] }
Contoh 6
ineligibleRegion
dengan kode pos yang diblokir:
"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 hak
ID hak, entitlementId
, mengacu pada string yang mewakili akses ke sekelompok konten dalam katalog media Anda. Untuk mengetahui apakah pengguna
memiliki akses ke konten Anda, Google melakukan langkah berikut:
- Kami melakukan panggilan API ke endpoint Hak Anda untuk menerima ID hak pengguna.
- Kami mencari ID hak konten yang diperlukan dari feed Media Actions Anda.
- Kami mencocokkan
entitlementId
pengguna dengan propertiidentifier
objek langganan media di feed Anda. Jika setidaknya satuentitlementId
cocok, kami memutuskan bahwa pengguna dapat mengakses konten tersebut.
Google merekomendasikan agar Anda menggunakan sintaksis berikut untuk entitlementId
:
<domain name> + colon (:) + <access level to content>
Contoh sintaksis:
example.com:basic
example.com:premium
example.com:sports
Contoh ID hak
Feed MediaExampleCompany menentukan bahwa Movie XYZ
memerlukan example.com:basic
entitlementId
, seperti yang ditunjukkan:
{ "@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 ... }, ... } }, ... }
Kasus penggunaan akses umum
Berikut adalah kasus penggunaan akses umum:
- Gratis (tidak perlu login): Konten tersedia tanpa login, langganan, atau pembelian.
- Gratis (wajib login): Konten mengharuskan pengguna untuk login, tetapi tidak mewajibkan langganan.
- Langganan satu tingkat: Konten memerlukan langganan. Semua pelanggan dapat mengakses konten yang sama, baik film maupun episode, terlepas dari paket langganan mereka.
- Langganan multi-tingkat: Konten memerlukan langganan. Pelanggan dapat mengakses berbagai konten, baik film atau episode, berdasarkan tingkat langganan mereka. Misalnya, Silver versus Gold.
- Langganan add-on: Konten memerlukan langganan. Pelanggan dapat menambahkan konten premium selain langganan reguler mereka.
- Pembelian satu kali: Konten dapat dibeli, setelah itu pengguna dapat mengaksesnya tanpa batas.
- TV Live: Langganan mencakup akses ke saluran lokal, nasional, dan premium.
- Langganan pihak ketiga: Konten mengharuskan pengguna untuk login dengan penyedia kabel.
Gratis (tidak perlu masuk)
Tidak perlu login
Konten tersedia tanpa login atau langganan.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Tetapkan
category
kenologinrequired
. - Jangan sertakan
expectAcceptanceOf
.
Gratis (wajib login)
Perlu login
Konten mengharuskan pengguna untuk login, tetapi tidak mewajibkan langganan.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- Tetapkan
category
kefree
. - Jangan sertakan
expectAcceptanceOf
.
Langganan satu tingkat
Dalam model langganan satu tingkat, penyedia layanan memiliki satu tingkat langganan. Semua pelanggan dapat mengakses konten yang sama, baik film maupun episode, terlepas dari paket langganan mereka.
{ "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" } } }
Langganan multi-tingkat
Dalam model langganan bertingkat, penyedia layanan memiliki beberapa tingkat langganan, seperti Gold, Silver, dan Bronze. Pengguna yang memiliki langganan tingkat atas dapat mengakses semua konten tingkat bawah. Namun, pengguna yang memiliki langganan tingkat lebih rendah tidak dapat mengakses konten tingkat atas.
Pertimbangkan skenario berikut:
- Jane berlangganan tingkat Gold. Endpoint hak Anda
menampilkan ID
entitlementId
berikut:example.com:bronze
example.com:silver
example.com:gold
- Joni berlangganan tingkat Bronze. Endpoint hak Anda
akan menampilkan
entitlementId
berikut:example.com:bronze
- Feed Media Actions Anda menjelaskan persyaratan berikut:
- Film A memerlukan
example.com:bronze
. - Film B memerlukan
example.com:silver
.
- Film A memerlukan
Dalam skenario ini, Google menentukan tingkat akses berikut untuk Jane dan John:
- Jane dan John memiliki akses ke Film A.
- Jane memiliki akses ke Film B, tetapi Joni tidak.
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
Langganan add-on
Pada model langganan add-on, penyedia layanan memungkinkan pengguna memperluas haknya dan menambahkan saluran ke langganan dasar. Pengguna dapat menambahkan saluran sebanyak yang diinginkan.
Pertimbangkan skenario berikut:
- Selain langganan Dasar, Jane memiliki PRO dan Sportz. Endpoint hak Anda menampilkan
ID
entitlementId
berikut:example.com:basic
example.com:pro
example.com:sportz
- Joni hanya memiliki langganan Dasar. Endpoint hak Anda
akan menampilkan
entitlementId
berikut:example.com:basic
- Feed Media Actions Anda menjelaskan persyaratan berikut:
- Film A memerlukan
example.com:basic
. - Film B memerlukan
example.com:pro
.
- Film A memerlukan
Dalam skenario ini, Google menentukan tingkat akses berikut untuk Jane dan John:
- Jane dan John memiliki akses ke Film A.
- Jane memiliki akses ke Film B, tetapi Joni tidak.
{ "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 } } } }
Pembelian satu kali
Beli
Konten tersedia untuk waktu yang tidak terbatas setelah pembelian.
{ "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/" } } } }
- Tetapkan
category
kepurchase
. - Sertakan
expectAcceptanceOf
dalamactionAccessibilityRequirement
untuk menunjukkan harga pembelian.
Penyewaan
Konten tersedia selama waktu yang terbatas setelah pembelian.
{ "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/" } } } }
- Tetapkan
category
kerental
. - Sertakan
expectAcceptanceOf
dalamactionAccessibilityRequirement
untuk menunjukkan harga sewa.
TV live
Di feed Media Actions, Anda dapat membatasi akses ke channel atau acara TV Live berdasarkan dua kondisi pengguna berikut:
-
Lokasi perangkat pengguna
Untuk membatasi akses ke saluran TV, tentukan area tempat pengguna dapat mengaksesnya. Kondisi ini biasanya berlaku untuk saluran TV siaran lokal.
-
Status akun pengguna
Jika akses ke saluran TV bergantung pada setelan tingkat akun pengguna, gunakan ID hak untuk mewakili pembatasan tersebut.
Kondisi ini biasanya berlaku untuk kasus penggunaan berikut:
- Paket: Saluran nasional sering disertakan dalam paket, dan pengguna memilih paket yang ingin mereka ikuti.
- Add-on: Beberapa saluran premium mengharuskan pengguna menambahkan saluran tambahan secara selektif ke langganan mereka.
- Region Olahraga Regional (RSN): RSN biasanya dikaitkan dengan lokasi "rumah" pengguna. Pengguna dapat menonton konten di RSN bahkan saat mereka bepergian di luar lokasi "rumah".
Langganan pihak ketiga
Langganan pihak ketiga
Konten tersebut tersedia untuk pelanggan dari layanan yang berbeda.
{ "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" } } }
- Tambahkan
authenticator
untuk menunjukkan bahwa layanan yang berbeda mengautentikasi pelanggan. Misalnya, HBO GO memerlukan langganan dari penyedia TV kabel.
Paket umum
Konten tingkat umum tersedia untuk semua pelanggan, terlepas dari
paket langganan mereka. Tingkat umum berlaku untuk semua konten, dengan category
dari subscription
. Untuk informasi selengkapnya tentang properti category
, periksa
bagian Jenis berbayar.
Mengapa paket tingkat umum diperlukan?
Beberapa produk Google memberikan rekomendasi TV & amp; film kepada pengguna; termasuk Google Penelusuran, Android TV, dan Asisten Google. Untuk menetapkan ekspektasi pengguna tentang biaya, Google harus memahami konten yang tersedia bagi semua pelanggan melalui penggunaan tingkat umum. Google juga harus memahami konten yang tersedia untuk pelanggan dengan paket langganan tertentu.
Google merekomendasikan judul yang tersedia di paket umum kecuali jika Anda mendukung API hak. API ini memungkinkan Google memahami judul tingkat non-umum yang dapat diakses oleh setiap pengguna tertentu.
Kapan saya harus membuat paket umum?
Paket umum yang diperlukan ketika layanan Anda menawarkan konten yang tersedia untuk semua pelanggan. Hal ini mencakup layanan yang hanya menawarkan satu paket dan layanan yang menawarkan beberapa paket atau add-on.
Penyedia yang tidak memiliki konten yang tersedia untuk semua pelanggan tidak perlu membuat paket tingkat yang sama. Contohnya adalah penyedia layanan yang menyediakan konten yang saling eksklusif di seluruh paket mereka.
Contoh umum
Berikut adalah contoh tingkat umum.
Langganan Bertingkat
Pada model langganan bertingkat, penyedia layanan memiliki beberapa tingkat langganan, seperti tingkat Gold, Silver, dan Bronze. Pengguna dengan langganan tingkat atas memiliki akses ke semua konten di tingkat yang lebih rendah. Pengguna dengan langganan yang lebih rendah tidak memiliki akses ke konten di tingkat atas. Gambar berikut adalah contoh struktur paket.
Pada contoh kode berikut, paket perunggu adalah tingkat yang umum karena semua pengguna memiliki akses ke semua konten dalam tingkat tersebut.
"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 } ],
Add-on
Pada model langganan add-on, penyedia layanan memungkinkan pengguna memperluas haknya dan menambahkan saluran ke langganan dasar. Pengguna dapat menambahkan saluran sebanyak yang mereka inginkan. Gambar berikut adalah contoh struktur paket.
Jika memiliki saluran yang tersedia untuk semua pengguna dan tidak ada biaya untuk saluran, Anda dapat menggabungkan paket tersebut dengan paket tingkat umum.
Pada contoh kode berikut, paket dasar adalah tingkat yang umum karena semua pengguna memiliki akses ke semua konten dalam paket ini.
"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 } ],
Paket dengan konten yang berpotongan
Pada model konten yang paketnya memiliki konten yang berpotongan, penyedia layanan menjual paket yang menyertakan beberapa konten dari paket lain. Gambar berikut adalah contoh struktur paket.
Pada contoh kode berikut, penyedia menawarkan tiga paket dengan beberapa konten yang bersilangan di semua paket. Dalam hal ini, paket keempat yang mewakili tingkat umum diperlukan. Daftar ini harus mencakup semua konten yang tersedia di ketiga paket.
"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 } ],
Paket tanpa konten yang berpotongan
Pada model konten ketika semua paket konten tidak bersilangan, penyedia layanan menjual paket yang tidak menyertakan konten dari paket lain. Gambar berikut adalah contoh struktur paket.
Pada contoh berikut, penyedia menawarkan tiga paket tanpa konten yang bersilangan di semua paket. Tidak diperlukan paket tingkat umum.
"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 } ],
Endpoint hak
Gunakan informasi dari bagian ini untuk menghosting endpoint HTTPS yang menampilkan hak yang terkait dengan pengguna.
Prasyarat
Sebelum memulai, pastikan layanan Anda mendukung alur OAuth 2.0 dengan Google.
Permintaan
Untuk menerima hak pengguna, Google mengirimkan permintaan yang berisi token OAuth pengguna. Endpoint Anda perlu mengidentifikasi pengguna berdasarkan token OAuth tersebut. Lihat contoh berikut:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
Tanggapan
Endpoint Anda harus menampilkan respons dengan properti berikut:
Properti | |
---|---|
subscription |
Wajib Ini adalah kolom di dalam respons root. |
subscription.type |
Wajib Properti ini dapat memiliki nilai berikut:
|
subscription.expiration_date |
Opsional Tanggal habis masa berlaku hak ini, dalam format ISO 8601, yang menyertakan zona waktu. Untuk mengetahui detail selengkapnya, lihat Tanggal habis masa berlaku. |
entitlements |
Opsional Properti root ini berisi nilai |
entitlements.entitlement |
Wajib jika akses ke katalog streaming Anda bervariasi berdasarkan jenis langganan. Properti ini berisi |
entitlements.expiration_date |
Opsional Tanggal habis masa berlaku langganan ini, dalam format ISO 8601, yang menyertakan zona waktu. Untuk mengetahui detail selengkapnya, lihat Tanggal habis masa berlaku. |
Tanggal kedaluwarsa
Ada dua properti dalam respons endpoint yang menangani tanggal habis masa berlaku: subscription.expiration_date
dan entitlements.expiration_date
. Anda
dapat menyertakan salah satunya, tetapi tidak keduanya. Langganan yang Anda gunakan bergantung pada
model langganan Anda.
Model langganan | |
---|---|
Akses ke katalog streaming Anda sama untuk semua subscriber. | Karena Anda tidak perlu menentukan properti entitlements , tentukan subscription.expiration_date . |
Akses ke katalog streaming Anda bervariasi berdasarkan detail langganan pengguna. |
Jika model langganan Anda memiliki beberapa tingkat atau add-on yang habis masa berlakunya dari waktu ke waktu, lakukan salah satu hal berikut:
|
Contoh respons
Berikut adalah contoh respons berbagai status langganan:
- Subscription aktif
- Langganan aktif dengan tanggal habis masa berlaku
- Tidak ada langganan
- Langganan aktif di beberapa tingkat atau add-on
Subscription aktif
Langganan aktif
Pengguna memiliki langganan aktif ke example.com. Dalam hal ini, semua pelanggan memiliki akses ke seluruh katalog streaming Anda terlepas dari jenis langganan mereka.
{ "subscription" : { "type": "ActiveSubscription", } }
Langganan aktif dengan tanggal habis masa berlaku
Langganan aktif dengan tanggal habis masa berlaku
Pengguna memiliki langganan aktif ke example.com, dan langganan tersebut memiliki tanggal habis masa berlaku. Dalam hal ini, semua pelanggan memiliki akses ke seluruh katalog streaming Anda, terlepas dari jenis langganan mereka.
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
Tidak ada langganan
Tidak ada langganan
Pengguna tidak memiliki langganan ke example.com.
{ "subscription" : { "type": "InactiveSubscription" } }
Langganan aktif di beberapa tingkat atau add-on
Langganan aktif ke beberapa tingkat atau add-on
Pengguna memiliki langganan example.com:premium
hingga tanggal tertentu.
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
Batas kapasitas
Google memperbarui informasi hak pengguna hingga setiap enam jam. Untuk menjalankan kueri maksimum per detik (QPS), Google akan mendistribusikan kueri ke endpoint Anda secara merata dari waktu ke waktu. Dengan demikian, Anda dapat memperkirakan QPS rata-rata yang diharapkan untuk endpoint dengan formula berikut:
Rata-rata QPS yang diharapkan = <total number of users> / 21.600 detik (6 jam x 60 menit x 60 detik)
Jika Anda mendukung pengguna dalam jumlah besar, Google dapat menyesuaikan interval 6 jam. Jika perlu, hubungi Google untuk mendiskusikan konfigurasinya.
Menghubungi Google
Jika endpoint Anda sudah siap, hubungi Google untuk memberitahukan URL endpoint.
Properti spesifikasi akses tindakan
Baca bagian Properti spesifikasi akses tindakan untuk mengetahui informasi referensi.