Erişim şartları

Kullanıcılar, mevcut abonelik içerikleri gibi zaten erişebildikleri içerikleri izlemeyi veya dinlemeyi tercih eder. Google, kullanıcının uygulamanızda veya platformunuzda hangi içeriğe erişebileceğini bilirse 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 uygulamanızdaki veya platformunuzdaki içeriğe erişmesine yardımcı olur.

İçerik erişimi koşullarını belirleme

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

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

    Yalnızca izleme işlemleri:

    • Kullanıcıların harici bir servis sağlayıcıdan abonelik alması gerekiyor mu?
    • Katmanlı, çok paketli veya eklenti aboneliği sunuyor musunuz?
  • Yalnızca İzleme İşlemleri: Kullanıcıların içeriği kiralaması veya satın alması gerekiyor mu?

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

  • Erişim şartı cihaz 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ı ödemeli erişim türleri ayrıntılı olarak açıklanmıştır:

Ödeme duvarı türü Örnek Kategori
Satın alma veya giriş yapmanıza gerek yoktur. Crackle nologinrequired
Kullanıcının giriş yapmış olması gerekir ancak ücretli aboneliği olması 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üre boyunca kullanılabilir. Vudu rental
İçerik, satın alma işleminden sonra süresiz olarak kullanılabilir. Vudu purchase
İçerik, kablo TV aboneliğiyle kullanılabilir. HBO Go externalSubscription

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

İzleme işlemleri için içerik ödemeli erişim türünü belirtmek üzere İşlem erişim spesifikasyonunda category mülkünü 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 işlemleri için ödeme duvarı türü

Dinleme işlemleri için içerik ödemeli duvar türünü belirtmek üzere teklif nesnesinde category mülkünü 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 bölge

İçeriğin kullanılabildiği coğrafi alanları belirtmeniz gerekir. Aşağıdaki özelliklerden birini veya ikisini birden kullanın:

Cihaz konumu eligibleRegion'te belirtilen bir bölgedeyse ve ineligibleRegion'te belirtilen bir bölgede değilse kullanıcı içeriğe erişebilir.

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

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

"eligibleRegion": "EARTH",

eligibleRegion kullanım alanları

Aşağıda, eligibleRegion mülkünün kullanım alanı örnekleri verilmiştir:

  • 1. örnek: Ülkelerin listesini içeren eligibleRegion.
  • 2. Örnek: Posta kodlarının listesini içeren bir GeoShape nesnesi içeren eligibleRegion.
  • 3. Örnek: Adres sıralama bölgesi (FSA) kodlarının listesini içeren bir GeoShape nesnesi içeren eligibleRegion.
  • 4. Örnek: DMA kimliği içeren bir GeoShape nesnesi içeren eligibleRegion.
  • 5. örnek: GeoShape nesnelerinin listesini içeren eligibleRegion. Her biri bir DMA kimliği içerir.
  • 6. örnek: Posta kodları gizlenmiş ineligibleRegion.

1. Örnek

eligibleRegion ile birlikte ülke listesi:


"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 kodlarının listesini içeren bir GeoShape nesnesi içeren 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

Adres sıralama bölgesi (FSA) kodlarının listesini içeren bir GeoShape nesnesi içeren 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 nesnesi olan 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 nesnesi listesi içeren eligibleRegion. Her biri bir 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 kodları gizlenmiş 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"
    ]
  }
}

Hak tanımlayıcı

Hak tanımlayıcısı (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 hak tanımlayıcılarına erişmek için Hak uç noktanıza API çağrısı yaparız.
  2. İçeriğin gerekli yetki tanımlayıcılarını MediaActions feed'inizden ararız.
  3. Kullanıcının entitlementId değerini, feed'inizdeki medya aboneliği nesnesinin identifier mülküyle 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 hak tanımlayıcılarından biri, içeriğin gerekli hak tanımlayıcısı ile 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

Hak tanımlayıcısı örneği

MediaExampleCompany'nin feed'inde, Movie XYZ için example.com:basic entitlementId gerektiğini belirtilmiştir:

{
  "@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ı

Aşağıda, yaygın erişim kullanım alanları verilmiştir:

  • Ücretsiz (giriş gerekmez): İçerik, giriş, abonelik veya satın alma işlemi gerektirmez.
  • Ücretsiz (giriş gerekli): İçerik için kullanıcıların oturum açması gerekir ancak abonelik gerekmez.
  • Tek katmanlı abonelik: İçerik için abonelik gerekir. Abonelik paketlerinden bağımsız olarak tüm aboneler, filmler veya bölümler gibi aynı içeriklere erişebilir.
  • Çok katmanlı abonelik: İçerik için abonelik gerekir. Aboneler, abonelik katmanına göre filmlere veya bölümlere erişebilir. Örneğin, Gümüş ve Altın.
  • Ek abonelik: İçerik için abonelik gerekir. Aboneler, normal aboneliklerine premium içerik ekleyebilir.
  • Tek seferlik satın alma: İçerik satın alındıktan sonra kullanıcı süresiz olarak erişebilir.
  • Canlı TV: Abonelik, yerel, ulusal ve premium kanallara erişim imkanı sunar.
  • Üçüncü taraf aboneliği: İçerik için kullanıcının kablo sağlayıcısıyla oturum açması gerekir.

Ücretsiz (giriş yapılması gerekmez)

Giriş yapmanıza gerek yoktur

İç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 eklemeyin.

Ücretsiz (giriş gerekli)

Giriş yapılması gerekiyor

İçerik için kullanıcıların oturum açması gerekir ancak abonelik gerekmez.


{
  "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 eklemeyin.

Tek katmanlı abonelik

Tek katmanlı abonelik modelinde, servis sağlayıcının tek bir abonelik katmanı vardır. Tüm aboneler, abonelik paketlerinden bağımsız olarak filmlere veya bölümlere erişebilir.


{
  "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, hizmet sağlayıcının Gold, Silver ve Bronze gibi birden fazla abonelik katmanı vardır. Üst düzey aboneliği olan kullanıcılar, alt düzeydeki tüm içeriklere erişebilir. Ancak alt düzey aboneliği olan kullanıcılar üst düzey içeriklere erişemez.

Şekil 3. Kademeli abonelik modeli ve bu modelin ayrıcalıkları temsili.

Aşağıdaki senaryoyu değerlendirin:

  • Jale, Gold katmanına abone olur. Haklarınızın uç noktası, aşağıdaki entitlementId tanımlayıcılarını döndürür:
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • Cem, Bronz katmanına abone olur. Haklarınızın uç noktası, aşağıdaki entitlementId değerini döndürüyor:
    • example.com:bronze
  • Media Actions feed'iniz aşağıdaki şartları açıklar:
    • Film A için example.com:bronze gerekir.
    • Film B için example.com:silver gerekir.

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

  • Hem Ayşe hem de Cem Film A'ya erişebilir.
  • Ayşe, Film B'ye erişebilir ancak Can erişemez.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

Ek abonelik

Ek abonelik modelinde, hizmet sağlayıcı kullanıcıların yararlanma haklarını genişletmesine ve temel aboneliğe kanal eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir.

Şekil 4. Ek abonelik modeli ve bu modelin ayrıcalıkları temsil etme şekli.

Aşağıdaki senaryoyu değerlendirin:

  • Cansu, Basic aboneliğine ek olarak PRO ve Sportz aboneliklerine de sahiptir. Hak talebi 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ğine sahip. Haklarınızın uç noktası, aşağıdaki entitlementId değerini döndürüyor:
    • example.com:basic
  • Media Actions feed'iniz aşağıdaki şartları açıklar:
    • Film A için example.com:basic gerekir.
    • Film B için example.com:pro gerekir.

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

  • Hem Ayşe hem de Cem Film A'ya erişebilir.
  • Ayşe, Film B'ye erişebilir ancak Can erişemez.
{
  "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 alma

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 işleminin fiyatını belirtmek için expectAcceptanceOf değerini actionAccessibilityRequirement içine ekleyin.

Kiralama

İçerik, satın alma işleminden sonra sınırlı bir süre boyunca 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.
  • Kiralamanın fiyatını belirtmek için actionAccessibilityRequirement içine expectAcceptanceOf ekleyin.

Canlı TV

Medya İşlemleri feed'inde, canlı TV kanalına veya etkinliğe erişimi aşağıdaki iki kullanıcı koşuluna göre kısıtlayabilirsiniz:

  • Kullanıcının cihaz konumu

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

  • Kullanıcının hesap durumu

    Bir TV kanalına erişim, kullanıcının hesap düzeyindeki ayarına bağlıysa kısıtlamayı temsil etmek için hak tanımlayıcılar kullanın.

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

    • Paket: Ulusal kanallar genellikle paketlere dahil edilir ve kullanıcılar hangi pakete abone olmak istediklerini seçer.
    • Ek özellik: Bazı premium kanallar, kullanıcıların aboneliklerine seçtikleri ek kanalları eklemelerini 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ışındayken bile RSN'de içerik izleyebilir.

Üçüncü taraf aboneliği

Üçüncü taraf aboneliği

İçerik, farklı bir hizmetten abonelere sunulmaktadır.


{
  "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"
    }
  }
}
  • Abonelerin kimliğini farklı bir hizmetin doğruladığını belirtmek için authenticator ekleyin. Örneğin, HBO GO için kablo sağlayıcıdan abonelik alınması gerekir.

Sık kullanılan katman paketleri

Ortak katman içerikleri, abonelik paketlerinden bağımsız olarak tüm aboneler tarafından kullanılabilir. Ortak katman, subscription category sahip tüm içerikler için geçerlidir. category mülkü hakkında daha fazla bilgi için Ödeme duvarı türü bölümünü inceleyin.

Why is a common tier package required?

Google Arama, Android TV ve Google Asistan gibi birden fazla Google ürünü kullanıcılara TV ve film önerileri sunar. Google, maliyetle ilgili kullanıcı beklentilerini belirlemek için ortak katman kullanılarak tüm abonelerin hangi içeriklere erişebileceğini anlamalıdır. Google, belirli abonelik paketlerine sahip abonelerin hangi içeriklere erişebileceğini de anlamalıdır.

Google, entitlement API'yi desteklemediğiniz sürece ortak katmanda bulunan başlıkları önerir. API, Google'ın her kullanıcının erişebildiği ortak olmayan düzeydeki başlıkları anlamasını sağlar.

Ne zaman ortak katman paketi oluşturmalıyım?

Hizmetiniz tüm abonelerin erişimine açık içerikler sunuyorsa ortak katman paketi gerekir. Buna yalnızca bir paket sunan ve birden fazla paket veya eklenti sunan hizmetler dahildir.

Tüm abonelerin erişimine açık içerikleri olmayan sağlayıcıların ortak katman paketi oluşturması gerekmez. Buna örnek olarak, tüm paketlerinde birbirini hariç tutan içerikler sunan servis sağlayıcılar verilebilir.

Sık karşılaşılan katman örnekleri

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

Katmanlı Abonelik

Katmanlı abonelik modelinde, hizmet sağlayıcının Gold, Silver ve Bronze gibi birden fazla abonelik katmanı vardır. Üst katman aboneliğine sahip kullanıcılar, alt katmanlardaki tüm içeriklere erişebilir. Alt katman aboneliği olan kullanıcılar üst katmandaki içeriklere erişemez. Aşağıdaki resimde paket yapısına örnek verilmiştir.

Altın katman, Gümüş katmanın tüm içeriğini içerir. Gümüş katman da Bronz katmanın tüm içeriğini içerir.
Şekil 5. Katmanlı abonelik paketi yapısı.

Aşağıdaki kod örneğinde, tüm kullanıcılar bu katmandaki tüm içeriklere erişebildiğinden bronz paket 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

Ek abonelik modelinde, servis sağlayıcı kullanıcıların yararlanma haklarını genişletmesine ve temel aboneliğe kanal eklemesine olanak tanır. Kullanıcılar istedikleri kadar kanal ekleyebilir. Aşağıdaki resimde paket yapısına örnek verilmiştir.

Her kullanıcı Basic kanalıyla başlar ve PRO, Sportz ve Moviemax kanallarından dilediğini eklemeyi seçebilir.
Şekil 6. Eklenti abonelik paketi yapısı.

Tüm kullanıcıların erişimine açık olan ve maliyeti olmayan bir kanalınız varsa paketi ortak katman paketiyle birleştirebilirsiniz.

Aşağıdaki kod örneğinde, tüm kullanıcıların bu paketteki tüm içeriklere erişimi olduğundan temel paket ortak 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
    }
  ],

İçerikleri çakışan paketler

Paketlerin kesişen içeriklere sahip olduğu bir içerik modelinde, servis sağlayıcı diğer paketlerdeki bazı içerikleri içeren paketler satar. Aşağıdaki resim, paket yapısına örnektir.

1, 2 ve 3 numaralı paketler arasındaki çakışmaların &quot;Ortak Katman&quot; olarak etiketlendiği bir Venn şeması.
Şekil 7. Kesişen içeriklere 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. Üç pakette de bulunan 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şimi olmayan paketler

İçerik paketlerinin hiçbirinin kesişmediği bir içerik modelinde, servis sağlayıcı diğer paketlerdeki içerikleri içermeyen paketler satar. Aşağıdaki resim, paket yapısına örnektir.

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

Aşağıdaki örnekte, sağlayıcı tüm paketlerde kesişmeyen içeriklere sahip üç paket sunmaktadır. Ortak katman paketi gerekli değildir.

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

Hak talebi uç noktası

Bir kullanıcıyla ilişkili izinleri döndüren bir HTTPS uç noktası barındırmak için bu bölümdeki bilgileri kullanın.

Ön koşul

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

İstek

Google, kullanıcının haklarından yararlanmak 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:

Mülk
subscription

Zorunlu

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

subscription.type

Zorunlu

Bu özellik aşağıdaki değerleri alabilir:

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

İsteğe bağlı

Bu hakkın geçerlilik bitiş tarihi (saat dilimini de içeren ISO 8601 biçiminde). Daha fazla bilgi için Sona erme tarihleri başlıklı makaleyi inceleyin.

entitlements

İsteğe bağlı

Bu kök özellik, 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 mülk entitlementId içeriyor. Daha fazla bilgi için Hak kazanma tanımlayıcısı başlıklı makaleyi inceleyin.

entitlements.expiration_date

İsteğe bağlı

Bu aboneliğin, saat dilimini de içeren ISO 8601 biçimindeki geçerlilik bitiş tarihi. Daha fazla bilgi için Sona erme tarihleri başlıklı makaleyi inceleyin.

Geçerlilik bitiş tarihi

Uç noktası yanıtında, geçerlilik bitiş tarihleriyle ilgili iki özellik bulunur: subscription.expiration_date ve entitlements.expiration_date. Bunlardan birini veya 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 değerini belirtin.

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

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

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

Örnek yanıtlar

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

  • Etkin abonelik
  • Son kullanma tarihi olan etkin abonelik
  • Abonelik yok
  • Birden fazla katmana veya eklentiye ait etkin abonelikler

Etkin abonelik

Etkin abonelik

Bir kullanıcının example.com adresinde etkin bir aboneliği varsa bu durumda tüm aboneler, abonelik türlerinden bağımsız olarak yayın kataloğunuzun tamamına erişebilir.


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

Son kullanma tarihi olan etkin abonelik

Geçerlilik bitiş tarihi olan etkin abonelik

Bir kullanıcının example.com'da etkin bir aboneliği var ve aboneliğin geçerlilik süresi var. Bu durumda, tüm aboneler abonelik türlerinden bağımsız olarak yayın kataloğunuzun tamamına 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 katmana veya eklentiye ait etkin abonelikler

Birden fazla katmana veya eklentiye ait etkin abonelikler

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


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

Sıklık sınırı

Google, kullanıcının hak bilgileri için altı saate kadar yenileme yapar. Google, saniyedeki maksimum sorgu sayısını (QPS) eşitlemek için sorguları uç noktanıza zaman içinde eşit olarak dağıtır. Bu nedenle, uç noktanız için beklenen ortalama istek/saniye sayısını aşağıdaki formülle 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 bilgi edinmek 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.