액세스 요구사항

사용자는 기존 정기 결제 콘텐츠와 같이 이미 액세스할 수 있는 콘텐츠를 시청하거나 듣는 것을 선호합니다. Google이 사용자가 앱 또는 플랫폼에서 액세스할 수 있는 콘텐츠를 알고 있으면 Google은 더 나은 검색 결과 또는 응답을 구성하여 사용자를 해당 콘텐츠로 안내할 수 있습니다.

그림 1. 액세스 요구사항은 구독자가 앱 또는 플랫폼의 콘텐츠에 액세스하는 데 도움이 됩니다.

콘텐츠 액세스 요구사항 식별

카탈로그의 각 콘텐츠 패키지에 대한 액세스 요구사항을 식별해야 합니다. 이 경우 다음 질문을 고려하세요.

  • 사용자가 콘텐츠에 액세스하려면 앱 또는 플랫폼에 로그인해야 하나요?
  • 사용자에게 구독이 필요한가요?

    시청 작업만:

    • 사용자에게 외부 서비스 제공업체의 구독이 필요한가요?
    • 계층형, 다중 패키지 또는 부가기능 정기 결제를 제공하나요?
  • 시청 작업만 해당: 사용자가 콘텐츠를 대여하거나 구매해야 하나요?

  • 액세스 요구사항은 시간이 지남에 따라 달라지나요?

  • 액세스 요구사항은 기기 위치에 따라 다르나요?

액세스 제한 유형

액세스 제한에는 두 가지 종류가 있습니다.

페이월 유형

페이월 유형별로 콘텐츠에 대한 액세스를 제한할 수 있습니다. 다음 표에는 다양한 페이월 유형이 자세히 나와 있습니다.

페이월 유형 카테고리
구매하거나 로그인하지 않아도 됩니다. Crackle nologinrequired
사용자는 로그인해야 하지만 유료 구독이 필요하지는 않습니다. Vudu (AVOD) free
사용자가 활성 상태인 정기 결제에 가입되어 있어야 합니다. 액세스 권한은 구독 등급과 무관합니다. Netflix

subscription

사용자가 활성 상태인 정기 결제에 가입되어 있어야 합니다. 액세스 권한은 구독 등급에 따라 다릅니다. Hulu (부가기능)

subscription

구매 후 일정 기간 콘텐츠를 사용할 수 있습니다. Vudu rental
구매 후 콘텐츠를 무기한 사용할 수 있습니다. Vudu purchase
이 콘텐츠는 케이블 TV를 통해 시청할 수 있습니다. HBO Go externalSubscription

시청 작업의 페이월 유형

보기 작업의 콘텐츠 페이월 유형을 지정하려면 작업 액세스 사양에서 category 속성을 사용하세요.

"potentialAction": {
  "@type":"WatchAction",
  "target": {  },
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2018-06-01T10:35:29Z",
    "availabilityEnds": "2019-05-31T10:35:29Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  },
  ...
}

듣기 작업의 페이월 유형

'듣기 작업'의 콘텐츠 페이월 유형을 지정하려면 제품 객체category 속성을 사용하세요.

"potentialAction": {
  "@type":"ListenAction",
  "target": {  },
  "expectsAcceptanceOf":{
    "@type":"Offer",
    "category":"subscription",
    "availabilityStarts": "2018-06-01T10:35:29Z",
    "availabilityEnds": "2019-05-31T10:35:29Z",
    "eligibleRegion": {
      "@type":"Country",
      "name":"US"
    }
  },
  ...
}

지리적 지역

콘텐츠를 사용할 수 있는 지역을 지정해야 합니다. 다음 속성 중 하나 또는 둘 다를 사용하세요.

기기 위치가 eligibleRegion에 지정된 지역 내에 있고 ineligibleRegion에 지정된 지역 내에 있지 않으면 사용자는 콘텐츠에 액세스할 수 있습니다.

eligibleRegionineligibleRegion 속성은 다음 값을 허용합니다.

콘텐츠를 전 세계에서 사용할 수 있는 경우 eligibleRegion에 다음과 같은 특수 값을 사용합니다.

"eligibleRegion": "EARTH",

eligibleRegion 사용 사례

다음은 eligibleRegion 속성의 사용 사례 예입니다.

  • 예 1: 국가 목록이 포함된 eligibleRegion
  • 예 2: 우편번호 목록이 포함된 GeoShape 객체가 있는 eligibleRegion
  • 예 3: 전달 정렬 지역 (FSA) 코드 목록이 포함된 GeoShape 객체가 있는 eligibleRegion
  • 예 4: DMA ID가 포함된 GeoShape 객체가 있는 eligibleRegion
  • 예 5: GeoShape 객체 목록이 있는 eligibleRegion 각 DMA ID에는 DMA ID가 포함됩니다.
  • 예 6: 우편번호가 차단된 ineligibleRegion

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

우편번호 목록이 포함된 GeoShape 객체가 있는 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"
    ]
  }
}

eligibleRegion: FSA (전달 분류 지역) 코드 목록이 포함된 GeoShape 객체


"actionAccessibilityRequirement": {
  "@type": "ActionAccessSpecification",
  "category": "subscription",
  "requiresSubscription": {
    "@type": "MediaSubscription",
    "@id": "http://www.example.com/local_tv_network/subscription",
    "name": "Example Subscription",
    "commonTier": true
  },
  "eligibleRegion":{
    "@type": "GeoShape",
    "@id": "http://example.com/area2",
    "addressCountry": "CA",
    "postalCode": [
      "1A1",
      "K1A"
    ]
  }
}

DMA ID가 포함된 GeoShape 객체가 있는 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"
      }
    ]
  }
}

GeoShape 객체 목록이 포함된 eligibleRegion입니다. 각 DMA ID는 다음과 같습니다.


"actionAccessibilityRequirement" : {
   "@type" : "ActionAccessSpecification",
   "eligibleRegion" : [
      {
         "@id" : "http://example.com/dma/601",
         "@type" : "GeoShape",
         "addressCountry" : "US",
         "identifier" : {
            "@type" : "PropertyValue",
            "propertyID" : "DMA_ID",
            "value" : "601"
         }
      },
      {
         "@id" : "http://example.com/dma/602",
         "@type" : "GeoShape",
         "addressCountry" : "US",
         "identifier" : {
            "@type" : "PropertyValue",
            "propertyID" : "DMA_ID",
            "value" : "602"
         }
      }
   ]
}

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

사용 권한 식별자

사용 권한 식별자 entitlementId는 미디어 카탈로그의 콘텐츠 그룹에 대한 액세스를 나타내는 문자열을 참조합니다. Google에서는 사용자가 콘텐츠에 액세스할 수 있는지 확인하기 위해 다음 단계를 따릅니다.

  1. Google에서는 사용 권한 엔드포인트에 API를 호출하여 사용자의 사용 권한 식별자를 수신합니다.
  2. Google에서는 미디어 작업 피드에서 콘텐츠의 필수 사용 권한 식별자를 조회합니다.
  3. 사용자의 entitlementId를 피드의 미디어 구독 객체의 identifier 속성과 일치시킵니다. entitlementId가 하나 이상 일치하면 사용자가 콘텐츠에 액세스할 수 있다고 판단합니다.
그림 2. 사용자의 사용 권한 식별자 중 하나가 콘텐츠의 필수 사용 권한 식별자와 일치합니다.

entitlementId에는 다음 구문을 사용하는 것이 좋습니다.

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

구문 예시:

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

사용 권한 식별자 예시

MediaExampleCompany 피드는 Movie XYZexample.com:basic entitlementId가 필요하다고 지정합니다(예:

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "Movie",
  "@id": "www.example.com/movie_xyz",
  "url": "www.example.com/movie_xyz",
  "name": "Movie XYZ",
  "potentialAction": {
    "@type": "WatchAction",
    "target": [  ],
    "actionAccessibilityRequirement": {
      "@type": "ActionAccessSpecification",
      "category": "subscription",
      "requiresSubscription": {
        "@type": "MediaSubscription",
        "@id": "http://www.example.com/basic_subscription",
        "name": "Basic subscription",
        "commonTier": true
        ...
      },
      ...
    }
  },
  ...
}

일반적인 액세스 사용 사례

다음은 일반적인 액세스 사용 사례입니다.

  • 무료 (로그인 필요 없음): 로그인, 구독 또는 구매 없이 콘텐츠를 이용할 수 있습니다.
  • 무료 (로그인 필요): 콘텐츠를 이용하려면 사용자가 로그인해야 하지만 정기 결제가 필요하지 않습니다.
  • 단일 등급 구독: 콘텐츠를 이용하려면 구독해야 합니다. 모든 구독자는 구독 패키지에 관계없이 영화 또는 에피소드와 같은 동일한 콘텐츠에 액세스할 수 있습니다.
  • 다층 구독: 콘텐츠를 이용하려면 구독해야 합니다. 구독자는 구독 등급에 따라 영화 또는 에피소드 등 다양한 콘텐츠에 액세스할 수 있습니다. 예를 들어 실버골드를 비교할 수 있습니다.
  • 부가기능 구독: 콘텐츠를 사용하려면 구독이 필요합니다. 구독자는 일반 구독에 프리미엄 콘텐츠를 추가할 수 있습니다.
  • 일회성 구매: 콘텐츠를 구매한 후에는 사용자가 무기한 액세스할 수 있습니다.
  • 라이브 TV: 구독 시 지역, 전국, 프리미엄 채널을 이용할 수 있습니다.
  • 서드 파티 구독: 사용자가 케이블 제공업체로 로그인해야 하는 콘텐츠입니다.

로그인 필요 없음

로그인이나 구독 없이 콘텐츠를 이용할 수 있습니다.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • categorynologinrequired로 설정합니다.
  • expectAcceptanceOf는 포함하지 마세요.

로그인 필요

콘텐츠를 이용하려면 사용자가 로그인해야 하지만 정기 결제는 필요하지 않습니다.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • categoryfree로 설정합니다.
  • expectAcceptanceOf는 포함하지 마세요.

단일 등급 정기 결제 모델에서는 서비스 제공업체에 하나의 정기 결제 등급이 있습니다. 모든 구독자는 구독 패키지에 관계없이 영화 또는 에피소드와 같은 동일한 콘텐츠에 액세스할 수 있습니다.


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

계층형 정기 결제 모델에서는 서비스 제공업체에 골드, 실버, 브론즈와 같은 여러 정기 결제 등급이 있습니다. 상위 등급 구독을 사용하는 사용자는 하위 등급 콘텐츠에 모두 액세스할 수 있습니다. 하지만 하위 등급 정기 결제를 이용하는 사용자는 상위 등급 콘텐츠에 액세스할 수 없습니다.

그림 3. 계층형 정기 결제 모델 및 사용 권한 표현

다음 상황을 살펴보세요.

  • 제인은 골드 등급을 구독합니다. 사용 권한 엔드포인트는 다음 entitlementId 식별자를 반환합니다.
    • example.com:bronze
    • example.com:silver
    • example.com:gold
  • 존은 브론즈 등급을 구독합니다. 사용 권한 엔드포인트가 다음 entitlementId를 반환합니다.
    • example.com:bronze
  • 미디어 작업 피드에는 다음 요구사항이 설명되어 있습니다.
    • 영화 A에는 example.com:bronze가 필요합니다.
    • 영화 B에는 example.com:silver가 필요합니다.

이 시나리오에서 Google은 에이미와 존의 액세스 수준을 다음과 같이 결정합니다.

  • 제인과 존 모두 영화 A에 액세스할 수 있습니다.
  • 제인은 영화 B에 액세스할 수 있지만 존은 액세스할 수 없습니다.
{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "requiresSubscription": {
      "@type": "MediaSubscription",
      "@id": "http://www.example.com/basic_subscription",
      "name": "Bronze",
      "commonTier": true
      ...
    },
    ...
  }
}

부가 채널 구독 모델에서 서비스 제공업체는 사용자가 사용 권한을 확장하고 기본 구독에 채널을 추가할 수 있도록 허용합니다. 사용자는 원하는 만큼 채널을 추가할 수 있습니다.

그림 4. 부가기능 구독 모델 및 사용 권한 표현

다음 상황을 살펴보세요.

  • 제인은 Basic 구독 외에도 PROSportz를 구독하고 있습니다. 사용 권한 엔드포인트는 다음 entitlementId 식별자를 반환합니다.
    • example.com:basic
    • example.com:pro
    • example.com:sportz
  • 존은 기본 구독만 이용하고 있습니다. 사용 권한 엔드포인트가 다음 entitlementId를 반환합니다.
    • example.com:basic
  • 미디어 작업 피드에는 다음 요구사항이 설명되어 있습니다.
    • 영화 A에는 example.com:basic가 필요합니다.
    • 영화 B에는 example.com:pro가 필요합니다.

이 시나리오에서 Google은 에이미와 존의 액세스 수준을 다음과 같이 결정합니다.

  • 제인과 존 모두 영화 A에 액세스할 수 있습니다.
  • 제인은 영화 B에 액세스할 수 있지만 존은 액세스할 수 없습니다.
{
  "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
        }
    }
  }
}

구매

구매 후 콘텐츠를 무기한 사용할 수 있습니다.


{
  "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/"
      }
    }
  }
}
  • categorypurchase로 설정합니다.
  • actionAccessibilityRequirementexpectAcceptanceOf를 포함하여 구매 가격을 나타냅니다.

대여

구매 후 일정 기간 콘텐츠를 사용할 수 있습니다.


{
  "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/"
      }
    }
  }
}
  • categoryrental로 설정합니다.
  • actionAccessibilityRequirementexpectAcceptanceOf를 포함하여 대여 가격을 나타냅니다.

미디어 작업 피드에서 다음 두 가지 사용자 조건에 따라 라이브 TV 채널 또는 이벤트에 대한 액세스를 제한할 수 있습니다.

  • 사용자의 기기 위치

    TV 채널에 대한 액세스를 제한하려면 사용자가 액세스할 수 있는 지역을 지정합니다. 이 조건은 일반적으로 지역 방송 TV 채널에 적용됩니다.

  • 사용자의 계정 상태

    TV 채널에 대한 액세스 권한이 사용자의 계정 수준 설정에 따라 달라지는 경우 사용 권한 식별자를 사용하여 제한사항을 나타냅니다.

    이 조건은 일반적으로 다음 사용 사례에 적용됩니다.

    • 번들: 국가 채널은 번들에 포함되는 경우가 많으며 사용자는 구독할 번들을 선택합니다.
    • 부가 채널: 일부 프리미엄 채널의 경우 사용자가 구독에 추가 채널을 선택적으로 추가해야 합니다.
    • 지역 스포츠 방송 네트워크 (RSN): RSN은 일반적으로 사용자의 '집' 위치와 연결됩니다. 사용자는 '집' 위치를 벗어나 여행 중일 때도 RSN에서 콘텐츠를 시청할 수 있습니다.

서드 파티 구독

구독자는 다른 서비스에서 콘텐츠를 이용할 수 있습니다.


{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "externalsubscription"
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "requiresSubscription":{
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/faq",
      "name": "Example",
      "sameAs": "https://www.example.com/faq",
      "authenticator": {
        "@type": "Organization",
        "name": "TVE"
      }
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}
  • 다른 서비스에서 구독자를 인증함을 나타내려면 authenticator를 추가합니다. 예를 들어 HBO GO를 이용하려면 케이블 방송 제공업체의 정기 결제가 필요합니다.

일반적인 등급 패키지

일반 등급 콘텐츠는 구독 패키지와 관계없이 모든 구독자가 이용할 수 있습니다. 일반 등급은 subscriptioncategory가 있는 모든 콘텐츠에 적용됩니다. category 속성에 관한 자세한 내용은 Paywall 유형 섹션을 확인하세요.

공통 등급 패키지가 필요한 이유는 무엇인가요?

Google 검색, Android TV, Google 어시스턴트 등 여러 Google 제품에서 사용자에게 TV 및 영화 추천을 제공합니다. 비용에 대한 사용자의 기대치를 설정하려면 Google에서 모든 구독자가 공통 등급을 통해 이용할 수 있는 콘텐츠를 파악해야 합니다. Google은 특정 구독 패키지를 사용하는 구독자가 이용할 수 있는 콘텐츠도 파악해야 합니다.

entitlement API를 지원하지 않는 한 공통 등급에서 제공되는 타이틀을 사용하는 것이 좋습니다. 이 API를 통해 Google은 각 특정 사용자가 액세스할 수 있는 비일반 등급 타이틀을 파악할 수 있습니다.

공통 등급 패키지는 언제 만들어야 하나요?

서비스에서 모든 구독자가 이용할 수 있는 콘텐츠를 제공하는 경우 공통 등급 패키지가 필요합니다. 여기에는 하나의 패키지만 제공하는 서비스와 여러 패키지 또는 부가기능을 제공하는 서비스가 포함됩니다.

모든 구독자에게 제공되는 콘텐츠가 없는 제공업체는 공통 등급 패키지를 만들 필요가 없습니다. 모든 패키지에서 상호 배타적인 콘텐츠를 제공하는 서비스 제공업체가 한 예입니다.

일반적인 등급 예시

다음은 일반적인 등급의 예입니다.

계층형 정기 결제

계층형 정기 결제 모델에서는 서비스 제공업체에 골드, 실버, 브론즈 등 여러 정기 결제 등급이 있습니다. 상위 등급 구독 사용자는 하위 등급의 모든 콘텐츠에 액세스할 수 있습니다. 하위 등급 정기 결제를 이용하는 사용자는 상위 등급의 콘텐츠에 액세스할 수 없습니다. 다음 이미지는 패키지 구조의 예입니다.

골드 등급에는 실버 등급의 모든 콘텐츠가 포함되며, 실버 등급에는 브론즈 등급의 모든 콘텐츠가 포함됩니다.
그림 5. 계층형 정기 결제 패키지 구조

다음 코드 예에서 브론즈 패키지는 모든 사용자가 해당 등급의 모든 콘텐츠에 액세스할 수 있으므로 일반적인 등급입니다.

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

부가기능

부가 채널 구독 모델에서는 서비스 제공업체가 사용자가 사용 권한을 확장하고 기본 구독에 채널을 추가할 수 있도록 허용합니다. 사용자는 원하는 만큼 채널을 추가할 수 있습니다. 다음 이미지는 패키지 구조의 예입니다.

모든 사용자는 기본 채널로 시작하며 PRO, Sportz, Moviemax 채널을 원하는 대로 조합하여 추가할 수 있습니다.
그림 6. 부가기능 구독 패키지 구조

모든 사용자가 이용할 수 있는 채널이 있고 채널에 비용이 들지 않는 경우 패키지를 공통 등급 패키지와 병합할 수 있습니다.

다음 코드 예시에서 기본 패키지는 모든 사용자가 이 패키지의 모든 콘텐츠에 액세스할 수 있으므로 공통 등급입니다.

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

교차하는 콘텐츠가 포함된 패키지

패키지에 교차하는 콘텐츠가 있는 콘텐츠 모델에서 서비스 제공업체는 다른 패키지의 일부 콘텐츠가 포함된 패키지를 판매합니다. 다음 이미지는 패키지 구조의 예입니다.

패키지 1, 2, 3의 중첩에 &#39;공통 등급&#39;이라는 라벨이 지정된 벤 다이어그램
그림 7. 교차하는 콘텐츠가 있는 패키지 구조

다음 코드 예에서 제공업체는 일부 콘텐츠가 모든 패키지에서 교차하는 세 가지 패키지를 제공합니다. 이 경우 공통 등급을 나타내는 네 번째 패키지가 필요합니다. 세 가지 패키지에서 모두 사용할 수 있는 모든 콘텐츠를 포함해야 합니다.

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

교차하는 콘텐츠가 없는 패키지

모든 콘텐츠 패키지가 교차하지 않는 콘텐츠 모델에서 서비스 제공업체는 다른 패키지의 콘텐츠가 포함되지 않은 패키지를 판매합니다. 다음 이미지는 패키지 구조의 예입니다.

패키지 1, 2, 3은 완전히 별개입니다.
그림 8. 교차하는 콘텐츠가 없는 패키지 구조

다음 예에서 제공업체는 모든 패키지에서 교차하는 콘텐츠가 없는 세 가지 패키지를 제공합니다. 공통 등급 패키지는 필요하지 않습니다.

"requiresSubscription": [
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/1",
      "name": "Package 1",
      "sameAs": "https://www.example.com/package/1",
      "identifier": "example.com:package1",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/2",
      "name": "Package 2",
      "sameAs": "https://www.example.com/package/2",
      "identifier": "example.com:package2",
      "commonTier": false
    },
    {
      "@type": "MediaSubscription",
      "@id": "https://www.example.com/package/3",
      "name": "Package 3",
      "sameAs": "https://www.example.com/package/3",
      "identifier": "example.com:package3",
      "commonTier": false
    }
  ],

사용 권한 엔드포인트

이 섹션의 정보를 사용하여 사용자와 연결된 사용 권한을 반환하는 HTTPS 엔드포인트를 호스팅합니다.

기본 요건

시작하기 전에 서비스에서 Google과의 OAuth 2.0 흐름을 지원하는지 확인하세요.

요청

사용자의 사용 권한을 수신하기 위해 Google은 사용자의 OAuth 토큰이 포함된 요청을 전송합니다. 엔드포인트는 이 OAuth 토큰을 기반으로 사용자를 식별해야 합니다. 아래 예시를 참조하세요.

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

응답

엔드포인트는 다음 속성을 가진 응답을 반환해야 합니다.

속성
subscription

필수

루트 응답 내의 필드입니다.

subscription.type

필수

이 속성은 다음 값을 가질 수 있습니다.

  • ActiveSubscription: 사용자가 공급업체를 활발하게 구독하고 있습니다.
  • ActiveTrial: 사용자에게 공급업체의 활성 무료 체험이 있습니다.
  • InactiveSubscription: 사용자에게 활성 상태의 정기 결제 또는 활성 상태의 무료 체험이 없습니다.
subscription.expiration_date

선택사항

이 사용 권한의 만료일로, 시간대가 포함된 ISO 8601 형식입니다. 자세한 내용은 만료일을 참고하세요.

entitlements

선택사항

이 루트 속성에는 사용자가 보유한 entitlementId 값이 포함됩니다.

entitlements.entitlement

스트리밍 카탈로그에 대한 액세스 권한이 구독 유형에 따라 달라지는 경우 필수입니다.

이 속성에는 entitlementId가 포함됩니다. 자세한 내용은 사용 권한 식별자를 참고하세요.

entitlements.expiration_date

선택사항

이 정기 결제의 만료일로, 시간대가 포함된 ISO 8601 형식입니다. 자세한 내용은 만료일을 참고하세요.

만료일

만료일을 처리하는 엔드포인트 응답에는 두 가지 속성(subscription.expiration_dateentitlements.expiration_date)이 있습니다. 둘 중 하나만 포함하거나 둘 다 포함할 수는 없습니다. 어떤 방법을 선택할지는 구독 모델에 따라 다릅니다.

구독 모델
모든 구독자에게 스트리밍 카탈로그에 대한 액세스 권한이 동일하게 적용됩니다. entitlements 속성을 지정할 필요가 없으므로 subscription.expiration_date을 지정합니다.

스트리밍 카탈로그에 대한 액세스 권한은 사용자의 구독 세부정보에 따라 다릅니다.

구독 모델에 시간이 지남에 따라 만료되는 여러 등급 또는 부가기능이 있는 경우 다음 중 하나를 실행합니다.

  • 모든 entitlements.entitlement 값이 동시에 만료되는 경우 subscription.expiration_date를 지정합니다.
  • 일부 entitlements.entitlement 값이 다른 시점에 만료되는 경우 entitlements.expiration_date을 지정합니다.

응답 예

다음은 다양한 정기 결제 상태의 응답 예입니다.

  • 사용 중인 구독
  • 만료일이 있는 활성 구독
  • 구독 없음
  • 여러 등급 또는 부가기능에 대한 활성 정기 결제

활성 구독

사용자가 example.com을 정기 결제 중입니다. 이 경우 모든 정기 결제 사용자는 정기 결제 유형과 관계없이 전체 스트리밍 카탈로그에 액세스할 수 있습니다.


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

만료일이 있는 활성 정기 결제

사용자가 example.com을 정기 결제 중이며 정기 결제에 만료일이 있습니다. 이 경우 모든 구독자는 구독 유형과 관계없이 전체 스트리밍 카탈로그에 액세스할 수 있습니다.


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

구독 없음

사용자가 example.com을 구독하지 않습니다.


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

여러 등급 또는 부가기능에 대한 활성 정기 결제

사용자가 특정 날짜까지 example.com:premium를 구독하고 있습니다.


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

비율 제한

Google은 최대 6시간마다 사용자의 사용 권한 정보를 새로고침합니다. 최대 초당 쿼리 수 (QPS)를 원활하게 처리하기 위해 Google은 시간 경과에 따라 쿼리를 엔드포인트에 균등하게 분산합니다. 따라서 다음 수식을 사용하여 엔드포인트의 예상 평균 QPS를 추정할 수 있습니다.

예상 평균 QPS = <총 사용자 수>/21,600초 (6시간 x 60분 x 60초)

대규모 사용자를 지원하는 경우 Google에서 6시간 간격을 조정할 수 있습니다. 필요한 경우 Google에 문의하여 구성을 논의하세요.

Google에 문의

엔드포인트가 준비되면 Google에 문의하여 엔드포인트의 URL을 알립니다.

작업 액세스 사양 속성

참조 정보는 작업 액세스 사양 속성 섹션을 참고하세요.