Persyaratan akses

Pengguna lebih suka menonton atau mendengarkan konten yang sudah dapat mereka akses, seperti konten langganan yang sudah ada. Jika Google tahu konten apa yang dapat akses di aplikasi atau platform Anda, Google dapat membuat hasil penelusuran yang lebih baik atau respons untuk mengarahkan pengguna ke konten tersebut.

Gambar 1. Persyaratan akses membantu pelanggan Anda konten di aplikasi atau platform Anda.

Mengidentifikasi persyaratan akses konten

Anda harus mengidentifikasi persyaratan akses untuk setiap paket konten di katalog. Saat Anda melakukannya, pertimbangkan pertanyaan-pertanyaan berikut:

  • Apakah pengguna harus login ke aplikasi atau platform Anda untuk mengakses konten?
  • Apakah pengguna memerlukan langganan?

    Hanya Tindakan Tonton:

    • Apakah pengguna memerlukan langganan dari penyedia layanan eksternal?
    • Apakah Anda menawarkan langganan bertingkat, multi-paket, atau add-on?
  • Hanya 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. Crackle nologinrequired
Pengguna harus login, tetapi tidak memerlukan langganan berbayar. Vudu (AVOD) free
Pengguna harus memiliki langganan aktif. Akses tidak bergantung pada tingkat langganan. Netflix

subscription

Pengguna harus memiliki langganan aktif. Akses bergantung pada tingkat langganan. Hulu (add-on)

subscription

Konten tersedia selama jangka waktu tertentu setelah pembelian. Vudu rental
Konten akan tersedia selama waktu yang tidak ditentukan setelah pembelian. Vudu purchase
Konten tersedia melalui langganan TV kabel. HBO Go externalSubscription

Jenis Penghalang Konten Berbayar untuk Tindakan Tonton

Guna menentukan jenis penghalang konten berbayar untuk Tindakan Menonton, gunakan category di bagian 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 category di bagian 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 wilayah geografis tempat konten tersedia. Gunakan satu atau kedua properti berikut:

Pengguna dapat mengakses konten jika lokasi perangkat berada dalam wilayah mana pun yang ditentukan di eligibleRegion dan tidak dalam region mana pun yang ditentukan di ineligibleRegion.

Properti eligibleRegion dan ineligibleRegion memungkinkan hal berikut nilai-nilai:

Jika konten tersedia secara global, gunakan nilai khusus berikut untuk eligibleRegion:

"eligibleRegion": "EARTH",

Kasus penggunaan validRegion

Berikut adalah contoh kasus penggunaan properti eligibleRegion:

  • Contoh 1: eligibleRegion dengan daftar negara.
  • Contoh 2: eligibleRegion dengan objek GeoShape yang berisi daftar kode pos.
  • Contoh 3: eligibleRegion dengan objek GeoShape yang berisi daftar kode {i>Forward Sortation Area<i} (FSA).
  • Contoh 4: eligibleRegion dengan objek GeoShape yang berisi ID DMA.
  • Contoh 5: eligibleRegion dengan daftar objek GeoShape. 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 di katalog media Anda. Untuk menentukan apakah pengguna memiliki akses ke konten Anda, Google akan melakukan langkah-langkah berikut:

  1. Kami melakukan panggilan API ke Endpoint Entitlements untuk menerima ID hak.
  2. Kami mencari ID hak yang diperlukan konten dari Media Anda Feed Tindakan.
  3. Kami mencocokkan entitlementId pengguna dengan identifier properti dari langganan media Google di feed Anda. Jika setidaknya satu entitlementId cocok, kita menentukan bahwa pengguna tersebut dapat mengakses saat ini.
Gambar 2. Salah satu ID hak pengguna cocok ID hak yang diperlukan untuk konten.

Google merekomendasikan agar Anda menggunakan sintaksis berikut untuk entitlementId:

<domain name> + colon (:) + <access level to content>

Contoh sintaks:

  • example.com:basic
  • example.com:premium
  • example.com:sports

Contoh ID hak

Feed MediaExampleCompany menentukan bahwa Movie XYZ mewajibkan 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 perlu login, berlangganan, atau membeli.
  • Gratis (perlu login): konten mengharuskan pengguna untuk masuk, tetapi tidak memerlukan langganan.
  • Langganan satu tingkat: Konten memerlukan langganan. Semua pelanggan dapat mengakses konten, baik film maupun episode, terlepas dari langganannya paket.
  • Langganan multi-tingkat: konten memerlukan langganan. Pelanggan dapat mengakses berbagai konten, untuk film atau episode, berdasarkan tingkat langganannya. Misalnya, Perak versus Emas.
  • Langganan add-on: Konten memerlukan langganan. Pelanggan dapat menambahkan konten premium langganan reguler.
  • Pembelian satu kali: Konten dapat dibeli, setelah itu pengguna dapat mengaksesnya tanpa batas waktu.
  • TV Live: Langganan mencakup akses ke lokal, nasional, dan premium.
  • Langganan pihak ketiga: Konten ini mengharuskan pengguna login dengan penyedia kabel.

Gratis (tidak perlu login)

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 ke nologinrequired.
  • Jangan menyertakan expectAcceptanceOf.

Gratis (perlu login)

Wajib login

Konten mengharuskan pengguna untuk masuk tetapi tidak memerlukan langganan Anda.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • Tetapkan category ke free.
  • Jangan menyertakan expectAcceptanceOf.

Langganan satu tingkat

Dalam model langganan satu tingkat, penyedia layanan memiliki satu tingkat langganan. Semua subscriber dapat mengakses konten yang sama, baik film atau episode, terlepas dari paket langganannya.


{
  "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 Perunggu. Pengguna yang memiliki langganan tingkat atas dapat mengakses semua konten tingkat rendah. Namun, pengguna yang memiliki tingkat lebih rendah langganan tidak dapat mengakses konten tingkat atas.

Gambar 3. Model langganan bertingkat dan representasi atas hak.

Pertimbangkan skenario berikut:

  • Jani berlangganan tingkat Gold. Hak Anda endpoint menampilkan ID entitlementId berikut:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • John berlangganan tingkat Bronze. Hak Anda endpoint akan menampilkan entitlementId berikut:
    • example.com:bronze
  • Feed Tindakan Media Anda menjelaskan persyaratan berikut:
    • Film A memerlukan example.com:bronze.
    • Film B memerlukan example.com:silver.

Dalam skenario ini, Google menentukan tingkat akses berikut untuk Jenar dan John:

  • Jani dan Joni memiliki akses ke Film A.
  • Jani 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

Dalam model langganan {i>add-on<i}, penyedia layanan memungkinkan pengguna untuk memperluas hak mereka dan menambahkan channel ke langganan dasar. Pengguna dapat menambahkan channel sebanyak yang mereka inginkan.

Gambar 4. Model langganan add-on dan representasi atas hak.

Pertimbangkan skenario berikut:

  • Jane memiliki PRO dan Sportz selain Dasar. Endpoint hak Anda menampilkan ID entitlementId berikut:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • Joni hanya memiliki langganan Basic. Hak Anda endpoint akan menampilkan entitlementId berikut:
    • example.com:basic
  • Feed Tindakan Media Anda menjelaskan persyaratan berikut:
    • Film A memerlukan example.com:basic.
    • Film B memerlukan example.com:pro.

Dalam skenario ini, Google menentukan tingkat akses berikut untuk Jenar dan John:

  • Jani dan Joni memiliki akses ke Film A.
  • Jani 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

Pembelian

Konten akan tersedia selama waktu yang tidak ditentukan 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 ke purchase.
  • Sertakan expectAcceptanceOf dalam actionAccessibilityRequirement untuk menunjukkan harga pembelian.

Rental

Konten tersedia selama jangka waktu tertentu 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 ke rental.
  • Sertakan expectAcceptanceOf dalam actionAccessibilityRequirement untuk menunjukkan harga penyewaan.

TV live

Di feed Tindakan Media, Anda dapat membatasi akses ke TV Live channel atau peristiwa berdasarkan dua kondisi pengguna berikut:

  • Lokasi perangkat pengguna

    Untuk membatasi akses ke saluran TV, tentukan area tempat pengguna memiliki akses ke sana. Kondisi ini biasanya berlaku untuk siaran lokal, di saluran TV.

  • Status akun pengguna

    Jika akses ke saluran TV bergantung pada setelan tingkat akun pengguna, penggunaan ID hak untuk mewakili pembatasan.

    Kondisi ini biasanya berlaku untuk kasus penggunaan berikut:

    • Paket: Saluran nasional sering disertakan dalam paket, dan pengguna memilih paket mana yang ingin mereka berlangganan.
    • Add-on: Beberapa saluran premium mengharuskan pengguna untuk menambahkan saluran tambahan ke langganannya secara selektif.
    • Regional Sports Network (RSN): RSN biasanya yang terkait dengan "rumah" pengguna lokasi HTTP/HTTPS. Pengguna dapat menonton konten di RSN meskipun mereka bepergian ke luar "rumah" lokasi HTTP/HTTPS.

Langganan pihak ketiga

Langganan pihak ketiga

Konten 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 mengotentikasi pelanggan. Misalnya, HBO GO memerlukan berlangganan dari penyedia layanan TV kabel.

Paket tingkat umum

Konten tingkat umum tersedia untuk semua pelanggan, terlepas dari paket langganan. Tingkat umum berlaku untuk semua konten dengan category dari subscription. Untuk informasi selengkapnya tentang properti category, periksa Bagian Jenis penghalang konten berbayar.

Mengapa paket tingkat umum diperlukan?

Beberapa produk Google menyediakan TV & rekomendasi film kepada pengguna; ingin mencakup Google Penelusuran, Android TV, dan Asisten Google. Untuk menyetel pengguna ekspektasi biaya, Google harus memahami konten yang tersedia pelanggan melalui penggunaan tingkat umum. Google juga harus memahami apa konten tersedia untuk pelanggan dengan paket langganan tertentu.

Google merekomendasikan judul yang tersedia di tingkat umum, kecuali jika Anda mendukung entitlement API. API ini memungkinkan Google memahami judul tingkat tidak umum dan dapat diakses pengguna.

Kapan saya harus membuat paket tingkat umum?

Paket tingkat umum diperlukan saat layanan Anda menawarkan konten yang tersedia untuk semua pelanggan. Ini mencakup layanan yang hanya menawarkan satu paket dan layanan yang menawarkan beberapa paket atau {i>add-on<i}.

Penyedia yang tidak memiliki konten yang tersedia untuk semua pelanggan tidak perlu membuat paket tingkat umum. Contohnya adalah penyedia layanan yang menyediakan layanan eksklusif konten di semua paket mereka.

Contoh tingkat umum

Berikut adalah contoh tingkat umum.

Langganan Bertingkat

Pada model langganan bertingkat, penyedia layanan memiliki beberapa beberapa tingkat, seperti tingkat Emas, Perak, dan Perunggu. Pengguna dengan tingkat atas memiliki akses ke semua konten di tingkat yang lebih rendah. Pengguna dengan langganan tingkat bawah tidak memiliki akses ke konten di bagian atas tingkat atas. Gambar berikut adalah contoh struktur paket.

Tingkat Gold berisi semua konten di tingkat Silver, yang
            itu sendiri berisi semua tingkat Bronze.
Gambar 5. Struktur paket langganan bertingkat.

Dalam contoh kode berikut, paket perunggu adalah tingkat 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

Dalam model langganan add-on, penyedia layanan memungkinkan pengguna memperluas hak mereka dan menambahkan channel ke langganan dasar. Pengguna dapat menambahkan sebagai channel sebanyak yang mereka inginkan. Gambar berikut adalah contoh paket karena ada berbagai struktur penetapan harga.

Setiap pengguna memulai dengan saluran Dasar, dan mereka dapat memilih untuk
            kombinasi apa pun dari saluran PRO, Sportz, dan Moviemax.
Gambar 6. Struktur paket langganan add-on.

Jika Anda memiliki saluran yang tersedia untuk semua pengguna dan tidak ada biaya untuk , Anda dapat menggabungkan paket dengan paket tingkat umum.

Dalam contoh kode berikut, paket dasar adalah tingkat 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

Dalam model konten di mana paket memiliki konten yang berpotongan, sebuah layanan penyedia menjual paket yang menyertakan beberapa konten dari paket lain. Tujuan gambar berikut adalah contoh struktur paket.

Diagram Venn di mana tumpang tindih antara Paket 1, 2, dan 3 adalah
            berlabel &#39;{i>Common Tier<i}&#39; (Tingkatan Umum).
Gambar 7. Struktur paket dengan konten yang berpotongan.

Dalam contoh kode berikut, penyedia menawarkan tiga paket di mana beberapa konten berpotongan di semua paket. Dalam hal ini, paket keempat yang mewakili tingkat umum diperlukan. Harus menyertakan semua konten 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

Dalam model konten di mana semua paket konten tidak berpotongan, penyedia menjual paket yang tidak menyertakan konten dari paket lain. Tujuan gambar berikut adalah contoh struktur paket.

Paket 1, 2 dan 3 benar-benar terpisah.
Gambar 8. Struktur paket tanpa berpotongan konten.

Pada contoh berikut, penyedia menawarkan tiga paket tanpa konten berpotongan 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 OAuth tersebut sebelumnya yang benar. Lihat contoh berikut:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>

Respons

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:

  • ActiveSubscription: Pengguna memiliki langganan aktif kepada penyedia.
  • ActiveTrial: Pengguna memiliki uji coba aktif selama penyedia layanan.
  • InactiveSubscription: Pengguna tidak memiliki akun aktif langganan atau uji coba aktif.
subscription.expiration_date

Opsional

Tanggal habis masa berlaku hak ini, dalam Format ISO 8601, yang mencakup zona waktu. Untuk detail selengkapnya, lihat Tanggal habis masa berlaku.

entitlements

Opsional

Properti root ini berisi nilai entitlementId yang pembekuan pengguna.

entitlements.entitlement

Wajib jika akses ke katalog streaming Anda bervariasi berdasarkan jenis langganan.

Properti ini berisi entitlementId. Untuk selengkapnya informasi, lihat ID hak.

entitlements.expiration_date

Opsional

Tanggal habis masa berlaku langganan ini, dalam Format ISO 8601, yang mencakup zona waktu. Untuk detail selengkapnya, lihat Tanggal habis masa berlaku.

Tanggal kedaluwarsa

Ada dua properti dalam respons endpoint yang berhubungan dengan masa berlaku tanggal: subscription.expiration_date dan entitlements.expiration_date. Anda dapat menyertakan salah satunya atau tidak keduanya, tetapi tidak keduanya. Yang Anda gunakan bergantung pada model langganan Anda.

Model langganan
Akses ke katalog streaming Anda sama untuk semua subscriber. Karena Anda tidak perlu menentukan 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 seiring waktu, lakukan salah satu hal berikut:

  • Jika semua nilai entitlements.entitlement habis masa berlakunya pada secara bersamaan, tentukan subscription.expiration_date.
  • Jika beberapa nilai entitlements.entitlement berakhir pada waktu yang berbeda, tentukan entitlements.expiration_date.

Contoh respons

Berikut adalah contoh respons dari berbagai status langganan:

  • Langganan aktif
  • Langganan aktif dengan tanggal habis masa berlaku
  • Tanpa langganan
  • Langganan aktif ke beberapa tingkat atau add-on

Langganan aktif

Langganan aktif

Pengguna memiliki langganan aktif example.com. Di sini 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 memiliki tanggal habis masa berlaku. Dalam hal ini, semua pelanggan memiliki akses ke seluruh katalog streaming Anda, terlepas dari langganan mereka .


{
  "subscription" : {
    "type": "ActiveSubscription",
    "expiration_date": "2019-11-10T10:00:00Z"
  }
}

Tanpa langganan

Tanpa langganan

Pengguna tidak memiliki langganan ke example.com.


{
  "subscription" : {
    "type": "InactiveSubscription"
  }
}

Langganan aktif ke 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. Kepada memperlancar kueri per detik (QPS) maksimum, Google mendistribusikan kueri ke endpoint secara merata dari waktu ke waktu. Dengan demikian, Anda dapat memperkirakan rata-rata QPS untuk endpoint Anda dengan formula berikut:

QPS rata-rata yang diharapkan = <total jumlah pengguna> / 21.600 detik (6 jam x 60 menit x 60 detik)

Jika Anda mendukung banyak pengguna, Google dapat menyesuaikan interval 6 jam. Jika perlu, hubungi Google untuk mendiskusikan konfigurasi.

Hubungi Google

Jika endpoint Anda sudah siap, hubungi Google untuk memberi tahu URL endpoint tersebut.

Properti spesifikasi akses tindakan

Lihat bagian properti spesifikasi akses tindakan untuk referensi tidak akurat atau tidak sesuai.