Erişim şartları

Kullanıcılar, halihazırda erişebilecekleri içeriği (ör. mevcut abonelik içerikleri) izlemeyi veya dinlemeyi tercih eder. Google, uygulamanızın veya platformunuzda bir kullanıcının hangi içeriğe erişebileceğini biliyorsa Google, kullanıcıyı bu içeriğe yönlendirmek için daha iyi bir arama sonucu veya yanıt oluşturabilir.

Şekil 1. Erişim şartları, abonelerinizin uygulama veya platformunuzdaki içeriklere erişmesine yardımcı olur.

İçerik erişimi gereksinimlerini belirleme

Kataloğunuzdaki her içerik paketi için erişim gereksinimini tanımlamanız gerekir. Bu süreçte aşağıdaki soruları göz önünde bulundurun:

  • İçeriğe erişmek için kullanıcıların uygulamanıza veya platformunuza giriş yapması gerekir mi?
  • Kullanıcıların abone olması gerekir mi?

    Yalnızca İzleme İşlemleri:

    • Kullanıcıların harici bir servis sağlayıcıdan abonelik almaları gerekir mi?
    • Katmanlı, çoklu paket mi yoksa eklenti aboneliği mi sunuyorsunuz?
  • Yalnızca Action'ları izleme: Kullanıcıların içeriği kiralaması veya satın alması gerekir mi?

  • Erişim şartı zaman içinde değişir mi?

  • Erişim koşulu cihazın konumuna bağlı mı?

Erişim kısıtlaması türleri

İki tür erişim kısıtlaması vardır:

Ödeme duvarı türü

İçeriğe erişimi ödeme duvarı türüne göre kısıtlayabilirsiniz. Aşağıdaki tabloda farklı ödeme duvarı türleri gösterilmektedir:

Ödeme duvarı türü Örnek Kategori
Satın almanız veya giriş yapmanız gerekmez. Çıtırtı nologinrequired
Kullanıcının giriş yapmış olması gerekir ancak ücretli abonelik gerekmez. Vudu (AVOD) free
Kullanıcının etkin bir aboneliği olmalıdır. Erişim, abonelik katmanından bağımsızdır. Netflix

subscription

Kullanıcının etkin bir aboneliği olmalıdır. Erişim, abonelik katmanına bağlıdır. Hulu (eklentiler)

subscription

İçerik, satın alma işleminden sonra sınırlı bir süreliğine kullanılabilir. Vudu rental
İçerik, satın alma işleminden sonra süresiz olarak kullanılabilir. Vudu purchase
İçerik kablolu yayın aboneliğiyle kullanılabilir. HBO Go externalSubscription

İzleme İşlemleri için ödeme duvarı türü

İzleme İşlemlerinin içerik duvarı ödeme türünü belirtmek için İşlem erişim spesifikasyonundaki category özelliğini kullanın:

"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"
    }
  },
  ...
}

Dinleme İşlemleri için ödeme duvarı türü

Dinleme İşlemleri için içerik duvarı ödeme türünü belirtmek amacıyla teklif nesnesinde category özelliğini kullanın:

"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"
    }
  },
  ...
}

Coğrafi alan

İçeriğin kullanıma sunulduğu coğrafi bölgeleri belirtmeniz gerekir. Aşağıdaki özelliklerden birini veya ikisini birden kullanın:

Cihaz konumu, eligibleRegion içinde belirtilen herhangi bir bölge içindeyse ve ineligibleRegion bölgesinde belirtilen herhangi bir bölge içinde değilse kullanıcı içeriğe erişebilir.

eligibleRegion ve ineligibleRegion özellikleri aşağıdaki değerlere izin verir:

İçerik dünya genelinde sunuluyorsa eligibleRegion için aşağıdaki özel değeri kullanın:

"eligibleRegion": "EARTH",

Uygun Bölge kullanım alanları

Aşağıda, eligibleRegion özelliğinin kullanım örneği verilmiştir:

  • 1. Örnek: Ülke listesini içeren eligibleRegion.
  • 2. Örnek: Posta kodlarının listesini içeren bir GeoShape nesnesine sahip eligibleRegion.
  • 3. Örnek: İleri Sıralama Alanı (FSA) kodlarının listesini içeren bir GeoShape nesnesine sahip eligibleRegion.
  • 4. Örnek: DMA kimliği içeren bir GeoShape nesnesine sahip eligibleRegion.
  • 5. Örnek: GeoShape nesne listesini içeren eligibleRegion. Her biri TPA kimliği içerir.
  • 6. Örnek: Engellenen posta kodlarına sahip ineligibleRegion.

1. Örnek

Ülke listesini içeren 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. Örnek

Posta kodu listesini içeren GeoShape nesnesine sahip eligibleRegion:


"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. Örnek

İleri Sıralama Alanı (FSA) kodlarının listesini içeren bir GeoShape nesnesine sahip eligibleRegion:


"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. Örnek

DMA kimliği içeren bir GeoShape nesnesine sahip eligibleRegion:


"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"
      }
    ]
  }
}

Örnek 5

GeoShape nesne içeren eligibleRegion listesiyle. Her biri TPA kimliği içerir:


"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. Örnek

Posta kodu engellenen 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"
    ]
  }
}

Yararlanma hakkı tanımlayıcısı

Yararlanma hakkı kimliği (entitlementId), medya kataloğunuzdaki bir içerik grubuna erişimi temsil eden bir dizeyi ifade eder. Google, bir kullanıcının içeriğinize erişip erişemediğini belirlemek için aşağıdaki adımları uygular:

  1. Kullanıcının yararlanma tanımlayıcılarını almak için Yararlanma hakkı uç noktanıza bir API çağrısı yaparız.
  2. İçeriğin gerekli yararlanma tanımlayıcılarını Medya İşlemleri feed'inizden ararız.
  3. Bir kullanıcının entitlementId özelliğini, feed'inizdeki medya aboneliği nesnesinin identifier özelliğiyle eşleştiririz. En az bir entitlementId eşleşirse kullanıcının içeriğe erişebileceğini belirleriz.
Şekil 2. Kullanıcının yararlanma hakkı tanımlayıcılarından biri, içeriğin gereken yararlanma hakkı tanımlayıcısıyla eşleşiyor.

Google, entitlementId için aşağıdaki söz dizimini kullanmanızı önerir:

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

Söz dizimi örnekleri:

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

Yararlanma hakkı tanımlayıcı örneği

MediaExampleCompany'nin feed'i, Movie XYZ değerinin aşağıda gösterildiği gibi example.com:basic entitlementId gerektirdiğini belirtir:

{
  "@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
        ...
      },
      ...
    }
  },
  ...
}

Yaygın erişim kullanım alanları

Yaygın erişim kullanım alanları şunlardır:

  • Ücretsiz (giriş yapılması gerekmez): İçerik giriş, abonelik veya satın alma olmadan kullanılabilir.
  • Ücretsiz (giriş yapılması gerekir): İçerik, kullanıcıların giriş yapmasını gerektirir ancak abonelik gerektirmez.
  • Tek katmanlı abonelik: İçerik için abonelik gerekir. Tüm aboneler, abonelik paketlerinden bağımsız olarak film veya bölüm fark etmeksizin aynı içeriğe erişebilirler.
  • Çok katmanlı abonelik: İçerik için abonelik gerekir. Aboneler, abonelik katmanlarına göre film veya bölüm gibi farklı içeriklere erişebilirler. Örneğin, Gümüş ve Altın.
  • Eklenti aboneliği: İçerik için abonelik gerekir. Aboneler, normal aboneliklerine ek olarak premium içerikler de ekleyebilirler.
  • Tek seferlik satın alma: İçerik satın alınabilir. Sonrasında kullanıcı süresiz olarak bu içeriğe erişebilir.
  • Canlı TV: Abonelik; yerel, ulusal ve premium kanallara erişimi içerir.
  • Üçüncü taraf abonelik: İçerik, kullanıcının kablolu TV sağlayıcısıyla giriş yapmasını gerektirir.

Ücretsiz (giriş yapılması gerekmez)

Giriş yapılması gerekmiyor

İçerik giriş veya abonelik olmadan kullanılabilir.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • category değerini nologinrequired olarak ayarlayın.
  • expectAcceptanceOf özelliğini dahil etme.

Ücretsiz (giriş yapılması gerekir)

Giriş yapılması gerekli

İçerik, kullanıcıların giriş yapmasını gerektirir ancak abonelik gerektirmez.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • category değerini free olarak ayarlayın.
  • expectAcceptanceOf özelliğini dahil etme.

Tek katmanlı abonelik

Tek katmanlı abonelik modelinde, servis sağlayıcının bir abonelik katmanı vardır. Tüm aboneler, abonelik paketlerinden bağımsız olarak film veya bölüm fark etmeksizin aynı içeriğe erişebilirler.


{
  "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"
    }
  }
}

Çok katmanlı abonelik

Katmanlı abonelik modelinde servis sağlayıcıların Altın, Gümüş ve Bronz gibi birden fazla abonelik katmanı vardır. Üst katmana abone olan kullanıcılar, alt katmandaki tüm içeriklere erişebilir. Ancak, alt katman aboneliğine sahip kullanıcılar üst katman içeriğine erişemez.

Şekil 3. Katmanlı abonelik modeli ve yararlanma haklarının temsili.

Aşağıdaki senaryoyu inceleyin:

  • Jale, Altın katmana abone olur. Yararlanma hakkı uç noktanız aşağıdaki entitlementId tanımlayıcılarını döndürür:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • Can Bronz katmanına abone olur. Yararlanma hakkı uç noktanız aşağıdaki entitlementId değerini döndürür:
    • example.com:bronze
  • Medya İşlemleri feed'iniz aşağıdaki gereksinimleri açıklar:
    • A Filmi için example.com:bronze gerekiyor.
    • B Filmi için example.com:silver gerekiyor.

Bu senaryoda Google, Jale ve Can için aşağıdaki erişim düzeylerini belirler:

  • Jale ve Can A Filmine erişebilir.
  • Jale'nin B Filmi'ne erişimi var, ancak Cem'in erişimi yok.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

Eklenti aboneliği

Eklenti abonelik modelinde servis sağlayıcılar, kullanıcıların yararlanma haklarını genişletip temel aboneliğe kanal eklemelerine olanak tanır. Kullanıcılar istedikleri sayıda kanal ekleyebilir.

Şekil 4. Eklenti abonelik modeli ve kullanım haklarını temsili.

Aşağıdaki senaryoyu inceleyin:

  • Jale'nin Temel aboneliğinin yanı sıra PRO ve Sportz da vardır. Yararlanma hakkı uç noktanız aşağıdaki entitlementId tanımlayıcılarını döndürür:
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • Cem yalnızca Temel aboneliğe sahiptir. Yararlanma hakkı uç noktanız aşağıdaki entitlementId değerini döndürür:
    • example.com:basic
  • Medya İşlemleri feed'iniz aşağıdaki gereksinimleri açıklar:
    • A Filmi için example.com:basic gerekiyor.
    • B Filmi için example.com:pro gerekiyor.

Bu senaryoda Google, Jale ve Can için aşağıdaki erişim düzeylerini belirler:

  • Jale ve Can A Filmine erişebilir.
  • Jale'nin B Filmi'ne erişimi var, ancak Cem'in erişimi yok.
{
  "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
        }
    }
  }
}

Tek seferlik satın alım

Satın alma

İçerik, satın alma işleminden sonra süresiz olarak kullanılabilir.


{
  "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 değerini purchase olarak ayarlayın.
  • Satın alma fiyatını göstermek için actionAccessibilityRequirement özelliğine expectAcceptanceOf özelliğini ekleyin.

Kiralama

İçerik, satın alma işleminden sonra sınırlı bir süreliğine kullanılabilir.


{
  "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 değerini rental olarak ayarlayın.
  • Kiralama fiyatını belirtmek için actionAccessibilityRequirement özelliğini expectAcceptanceOf özelliğine ekleyin.

Canlı TV

Medya İşlemleri feed'inde aşağıdaki iki kullanıcı koşuluna bağlı olarak Canlı TV kanalına veya etkinliğine erişimi kısıtlayabilirsiniz:

  • Kullanıcının cihaz konumu

    TV kanalına erişimi kısıtlamak için kullanıcıların kanala erişebildiği alanı belirtin. Bu koşul genellikle yerel yayın TV kanalları için geçerlidir.

  • Kullanıcının hesap durumu

    Bir TV kanalına erişim kullanıcının hesap düzeyi ayarına bağlıysa kısıtlamayı göstermek için yararlanma tanımlayıcılarını kullanın.

    Bu durum genellikle aşağıdaki kullanım alanları için geçerlidir:

    • Paket: Ulusal kanallar genellikle paketlere dahil edilir ve kullanıcılar abone olmak istedikleri grubu seçer.
    • Eklenti: Bazı premium kanallar, kullanıcıların aboneliklerine seçerek ekstra kanallar eklemesini gerektirir.
    • Bölgesel Spor Ağı (RSN): RSN'ler genellikle kullanıcının "ev" konumuyla ilişkilendirilir. Kullanıcılar, "ev" konumlarının dışında seyahat etseler bile RSN'de içerik izleyebilirler.

Üçüncü taraf aboneliği

Üçüncü taraf abonelik

İçerik, farklı bir hizmetten abonelere sunulur.


{
  "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"
    }
  }
}
  • Farklı bir hizmetin abonelerin kimliğini doğrulayacağını belirtmek için authenticator ekleyin. Örneğin, HBO GO, kablolu yayın sağlayıcısından abonelik gerektirir.

Genel katman paketleri

Ortak katmanlı içerikler, abonelik paketlerinden bağımsız olarak tüm abonelere sunulur. Ortak katman, category öğesi subscription olan tüm içerikler için geçerlidir. category özelliği hakkında daha fazla bilgi için Ödeme duvarı türü bölümünü inceleyin.

Ortak katman paketi neden gereklidir?

Kullanıcılara Google ve Android TV ve Google Asistan'ı içeren TV ve film önerileri sunan birden çok Google ürünü vardır. Maliyetle ilgili kullanıcı beklentilerini belirlemek için Google'ın, ortak katmanı kullanarak tüm abonelerin hangi içeriği görebileceğini anlaması gerekir. Google, belirli abonelik paketlerine sahip abonelere hangi içeriklerin sunulacağını da anlamalıdır.

yararlanma API'sini desteklemediğiniz sürece Google, ortak katmanda bulunan başlıkları önerir. API, Google'ın her bir kullanıcının erişebileceği, yaygın olmayan katman başlıklarını anlamasını sağlar.

Ortak katman paketini ne zaman oluşturmalıyım?

Hizmetiniz tüm abonelere sunulan içerikler sunduğunda genel bir katman paketi gerekir. Tek bir paket sunan hizmetler ile birden fazla paket veya eklenti sunan hizmetler bu kapsama girer.

Tüm abonelere sunulan içeriğe sahip olmayan sağlayıcıların ortak bir katman paketi oluşturmasına gerek yoktur. Örneğin, tüm paketlerinde karşılıklı olarak karşılıklı içerik sağlayan servis sağlayıcılar vardır.

Genel katman örnekleri

Aşağıda ortak katmana örnekler verilmiştir.

Katlı Abonelik

Katmanlı abonelik modelinde, servis sağlayıcı Altın, Gümüş ve Bronz katman gibi birden fazla abonelik katmanına sahiptir. Üst katmana abone olan kullanıcılar, alt katmanlardaki tüm içeriklere erişebilir. Alt katmana abone olan kullanıcılar üst katmandaki içeriğe erişemez. Aşağıdaki resimde paket yapısına bir örnek verilmiştir.

Altın katmanı, Gümüş katmanının tamamını da içeren Gümüş katmanının tüm içeriğini barındırır.
Şekil 5. Katmanlı abonelik paketi yapısı.

Aşağıdaki kod örneğinde, bronz kullanıcılar tüm katmandaki tüm içeriklere erişebildiğinden ortak katmandır.

"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
    }
  ],

Eklentiler

Eklenti abonelik modelinde, servis sağlayıcı kullanıcıların yararlanma haklarını genişletip temel aboneliğe abone olmalarına olanak tanır. Kullanıcılar istedikleri sayıda kanal ekleyebilir. Aşağıdaki yapı, paket yapısının bir örneğidir.

Her kullanıcı Temel kanalla başlar ve PRO, Sportz ve Moviemax kanallarının herhangi bir kombinasyonunu eklemeyi tercih edebilir.
Şekil 6. Eklentilerin abonelik paketi yapısı.

Tüm kullanıcıların kullanabileceği bir kanalınız varsa ve kanal için ücret ödemeniz gerekmiyorsa paketi, ortak katman paketiyle birleştirebilirsiniz.

Aşağıdaki kod örneğinde, tüm kullanıcılar bu paketteki tüm içeriklere erişebildiğinden temel paket yaygın katmandır.

"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
    }
  ],

Kesişen içeriğe sahip paketler

Paketlerde kesişen içeriklerin yer aldığı içerik modellerinde servis sağlayıcılar, diğer paketlerdeki bazı içerikleri barındıran paketler satarlar. Aşağıdaki görsel, paket yapısına örnektir.

1., 2. ve 3. Paketler arasındaki çakışmanın &quot;Common Tier&quot; olarak etiketlendiği Venn şeması.
Şekil 7. Kesişen içeriğe sahip paket yapısı.

Aşağıdaki kod örneğinde, sağlayıcı bazı içeriklerin tüm paketlerde kesiştiği üç paket sunmaktadır. Bu durumda, ortak katmanı temsil eden dördüncü bir paket gerekir. Üç paketin tamamında mevcut olan tüm içerikleri içermelidir.

"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
    }
  ],

Kesişen içeriğe sahip olmayan paketler

Tüm içerik paketlerinin kesişmediği içerik modellerinde bir servis sağlayıcı, diğer paketlerdeki hiçbir içeriği içermeyen paketler satar. Aşağıdaki görsel, paket yapısına örnektir.

1., 2. ve 3. paketler tamamen ayrıdır.
Şekil 8. Kesişen içerik bulunmayan paket yapısı.

Aşağıdaki örnekte sağlayıcı, hiçbir paketle kesişmeyen içerik içermeyen üç paket sunmaktadır. Ortak katman paketi gerekmez.

"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
    }
  ],

Yararlanma hakkı uç noktası

Bu bölümdeki bilgilerden yararlanarak, kullanıcıyla ilişkili yararlanma haklarını döndüren bir HTTPS uç noktası barındırabilirsiniz.

Ön koşul

Başlamadan önce hizmetinizin Google ile OAuth 2.0 akışını desteklediğini doğrulayın.

İstek

Google, bir kullanıcının yararlanma haklarını almak için kullanıcının OAuth jetonunu içeren bir istek gönderir. Uç noktanızın kullanıcıyı bu OAuth jetonuna göre tanımlaması gerekir. Aşağıdaki örneğe bakın:

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

Yanıt

Uç noktanızın aşağıdaki özelliklere sahip bir yanıt döndürmesi gerekir:

Özellik
subscription

Zorunlu

Bu, kök yanıtın içindeki bir alandır.

subscription.type

Zorunlu

Bu özellik aşağıdaki değerlere sahip olabilir:

  • ActiveSubscription: Kullanıcının sağlayıcı için etkin bir aboneliği vardır.
  • ActiveTrial: Kullanıcının sağlayıcı için etkin bir denemesi vardır.
  • InactiveSubscription: Kullanıcının etkin bir aboneliği veya etkin deneme sürümü yoktur.
subscription.expiration_date

İsteğe bağlı

Bu yararlanma hakkının, saat dilimini içeren ISO 8601 biçiminde belirtilen son kullanma tarihi. Daha ayrıntılı bilgi için Son kullanma tarihleri bölümüne bakın.

entitlements

İsteğe bağlı

Bu kök mülk, kullanıcının sahip olduğu entitlementId değerlerini içerir.

entitlements.entitlement

Akış kataloğunuza erişim abonelik türüne göre değişiyorsa zorunludur.

Bu tesis, entitlementId içeriyor. Daha fazla bilgi için Yararlanma hakkı tanımlayıcısı bölümüne bakın.

entitlements.expiration_date

İsteğe bağlı

Saat dilimini içeren ISO 8601 biçiminde bu aboneliğin son kullanma tarihi. Daha ayrıntılı bilgi için Son kullanma tarihleri bölümüne bakın.

Geçerlilik bitiş tarihi

Uç nokta yanıtında son kullanma tarihleriyle ilgilenen iki özellik vardır: subscription.expiration_date ve entitlements.expiration_date. Bu yöntemlerden birini veya ikisini birden ekleyebilirsiniz ama ikisini birden dahil edemezsiniz. Hangisini kullanacağınız, abonelik modelinize bağlıdır.

Abonelik modeli
Akış kataloğunuza erişim tüm aboneler için aynıdır. entitlements özelliğini belirtmeniz gerekmediğinden subscription.expiration_date özelliğini belirtin.

Akış kataloğunuza erişim, kullanıcı aboneliğinin ayrıntılarına göre değişir.

Abonelik modelinizin zaman içinde süresi dolan birden fazla katmanı veya eklentisi varsa aşağıdakilerden birini yapın:

  • Tüm entitlements.entitlement değerlerinin süresi aynı anda doluyorsa subscription.expiration_date değerini belirtin.
  • Bazı entitlements.entitlement değerlerinin süresi farklı zamanlarda doluyorsa entitlements.expiration_date değerini belirtin.

Örnek yanıtlar

Aşağıda farklı abonelik durumlarıyla ilgili örnek yanıtlar verilmiştir:

  • Etkin abonelik
  • Geçerlilik bitiş tarihi olan etkin abonelik
  • Abonelik yok
  • Birden fazla katman veya eklenti için etkin abonelikler

Etkin abonelik

Etkin abonelik

Kullanıcının etkin bir example.com aboneliği vardır. Bu durumda, tüm aboneler abonelik türlerinden bağımsız olarak, akış kataloğunuzun tamamına erişebilir.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
}

Geçerlilik bitiş tarihi olan etkin abonelik

Son kullanma tarihi olan etkin abonelik

Kullanıcının etkin bir example.com aboneliğinin olması ve aboneliğin sona erme tarihinin olması. Bu durumda tüm aboneler, abonelik türlerinden bağımsız olarak tüm akış kataloğunuza erişebilir.


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

Abonelik yok

Abonelik yok

Kullanıcının example.com aboneliği yoktur.


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

Birden fazla katman veya eklenti için etkin abonelikler

Birden çok katman veya eklenti için etkin abonelikler

Bir kullanıcının belirli bir tarihe kadar example.com:premium aboneliği var.


{
  "subscription" : {
    "type": "ActiveSubscription",
  }
  "entitlements": [
    {
      "entitlement": "example.com:premium",
      "expiration": "2019-11-10T10:00:00Z"
    }
  ]
}

Sıklık sınırlaması

Google, kullanıcının yararlanma hakkı bilgilerini altı saatte bir yeniler. Saniyedeki maksimum sorgu sayısını (QPS) pürüzsüzleştirmek için Google, sorguları zamanla uç noktanıza eşit olarak dağıtır. Bu şekilde, aşağıdaki formülü kullanarak uç noktanız için beklenen ortalama QPS değerini tahmin edebilirsiniz:

Beklenen ortalama QPS = <toplam kullanıcı sayısı> / 21.600 saniye (6 saat x 60 dakika x 60 saniye)

Çok sayıda kullanıcıyı destekliyorsanız Google, 6 saatlik aralığı ayarlayabilir. Gerekirse yapılandırma hakkında görüşmek için Google ile iletişime geçin.

Google ile bağlantı kurun

Uç noktanız hazır olduğunda uç noktanın URL'sini bildirmek için Google ile iletişime geçin.

İşlem erişim spesifikasyonu özellikleri

Referans bilgileri için işlem erişim spesifikasyonu özellikleri bölümüne bakın.