Skip to content

Multi-Region publishing and Geo-blocking

When publishing content, you can target multiple platforms (web, mobile, TV, set-top boxes, etc.), and each platform can have its own publish and unpublish dates for automated content scheduling. Additionally, each platform can be regionalized, allowing for automatic geo-blocking of content based on the platform’s region.

You can publish a category or asset on multiple platforms in multiple regions (not only countries). You can define download-to-go rights per platform, enabling different availability rights for different regions. For example: publishing an asset in Norway for web and mobile platforms, in Sweden for web only, and in Denmark for web, mobile, and set-top box platforms.

An asset can be published to one or more platforms and can contain publish and expire fields to control the schedule of when an asset shall be published/unpublished. All video playback calls respect the region.

A category can be published on one or more platforms and can contain publish and expire fields to control the schedule of when a category shall be published/unpublished.

To enable multi-region publishing, you need to set up the publishing regions and platforms using the Vimond API.

Example setup:
PUBLISHING REGION

NAMEDESCRIPTIONGEO EXPRESSIONLOCALES
norNorwayNOnb_NO, nn_NO
scaRest of ScandinaviaSR, DKsv_SE, da_DK
usUnited StatesUSen_US

To create a new publishing region, use the following API call:

curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/nor \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"locales": [
"nb_NO",
"nn_NO"
],
"description": "Norway",
"geoExpression": "NO"
}
'
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/sca \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"locales": [
"sv_SE",
"da_DK"
],
"description": "Rest of Scandinavia",
"geoExpression": "SR, DK"
}
'
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/us \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"locales": [
"en_US"
],
"description": "United States",
"geoExpression": "US"
}
'

Please see API reference for additional API details.

Examples of Geo Expression Formats

The geo expression is a string that accepts country codes, IP addresses, and IP ranges, and an expression can contain any number of these, as well as exclusion rules. Exclusions are indicated with a ”-” before the country code/IP address. Some examples:

"US NO IN 204.15.241.110"
"-US -CA"
"-US -CA 192.0.2.0/24"

PLATFORM

IDNAMEAPI NAMEPUBLISHING REGIONPLATFORM_GROUP
1Global webwebweb
2Web Norwayno-webnorweb
3Mobile Norwayno-mobnormob
4Web Scandinaviasca-webscaweb
5IPTV Scandinaviasca-iptvscaiptv
6USus-webusweb

To create a new platform, use the following API call:

curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/nor/platforms/no-web \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"platformGroup": "web"
}
'
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/nor/platforms/no-mob \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"platformGroup": "mob"
}
'
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/sca/platforms/sca-web \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"platformGroup": "web"
}
'
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/sca/platforms/sca-iptv \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"platformGroup": "iptv"
}
'
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/us/platforms/us-web \
--header 'accept: application/json;v=3' \
--header 'content-type: application/json;v=3' \
--data '
{
"platformGroup": "web"
}
'

Please see API reference for additional API details.

To retrieve the publishing region and platform information based on the client’s IP address and platform group, you can make the following API calls:

GET /api/platforms/:platformGroup/me

API Response

{
"platformGroup": "web",
"publishingRegion": "us",
"locales": [
"en_US"
],
"name": "us-web"
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<platform>
<name>us-web</name>
<publishingRegion>us</publishingRegion>
<platformGroup>web</platformGroup>
<locales>
<locale>en_US</locale>
</locales>
</platform>

To get a list of valid platforms for the client’s IP address

GET /api/platforms/me

API Response

[
{
"platformGroup": "web",
"publishingRegion": "us",
"locales": [
"en_US"
],
"name": "us-web"
}
]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<collection>
<platform>
<name>us-web</name>
<publishingRegion>us</publishingRegion>
<platformGroup>web</platformGroup>
<locales>
<locale>en_US</locale>
</locales>
</platform>
</collection>

To get the publishing region for the client’s IP address

GET /api/regions/me

API Response

{
"description": "United States",
"locales": [
"en_US"
],
"name": "us"
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<region>
<name>us</name>
<description>USA</description>
<locales>
<locale>en_US</locale>
</locales>
</region>

Vimond utilizes the MaxMind open-source geolocation database for geo-blocking features. You can apply geo-blocking rules to assets, categories, and platforms to restrict access based on country codes or IP address ranges.

More advanced features such as blocking VPN users from accessing your content are available from Maxmind for additional license fees.

Geo-filtering can also be applied to VIA Monetize and product packages, enabling different business models in different geographical regions.

When an end-user client device requests a URL for playing back an asset, various factors are considered before providing the correct URL:

  • Authorization: Does the user have access to the requested asset?
  • Geo-restriction: Does the asset have any geo-restrictions that prevent the end-user from watching it?
  • Format: In which format should the streaming URL be?
  • Location: Which CDN or data center is closest to the end-user?
  • Fallback: Is the content available at the closest data center, or should fallback servers/CDNs be used?
  • Security tokens: Can security tokens be added to the URL for CDN or playout server authentication?
  • Device registration: Is device tracking required for this user on this content?

To enable geo-restrictions, you can enable geo-blocking at the platform or category level.

Geoblocking enabled on a platform level is automatically part of the publishing rules for categories and assets and not something that must be maintained separately on each asset. Further, it’s easier to make a change to the geo expression, since the change only needs to be made in one place, instead of on every asset or category node.

Note that this setup also allows to geo-block some platforms but not others. If multiple regions are used, there should be one device-platform defined per region, i.e. web-uk, web-us, and they should both have platformGroup:'web'. This allows the API to resolve the correct region-platform based on the device the user is coming in from. The client can then ask “I’m a tablet and here’s my IP - what’s my region?”. ref API reference

This is necessary in cases where there should only be one domain, yet multiple regions, i.e. www.myservice.com instead of www.myservice.uk and www.myservice.us.

The steps to enable geo-block by platform are as follows.

  1. Create a new region (if needed)
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/us \
--header 'Accept: application/json;v=3' \
--header 'Content-Type: application/json;v=3' \
--data '
{
"description": "USA",
"geoExpression": "US",
"rank": 1
}
'

Please see API reference for additional API details.

See examples of Geo Expressions below.

  1. Connect the Geo Region to the relevant Platforms, example connect the us region to the web platform group.
curl --request PUT \
--url https://<tenant>.rest-api.<region>.vmnd.tv/api/admin/regions/us/platforms/web \
--header 'Accept: application/json;v=3' \
--header 'Content-Type: application/json;v=3' \
--data '
{
"platformGroup": "web"
}
'

Please see API reference for additional API details.

These steps enable you to set up multi-region publishing, platform targeting, and geo-blocking in the Vimond platform, ensuring that your content is accessible based on regions and platforms while applying geo-restrictions when necessary.

You can also associate publishing regions with individual categories and assets on a per-platform basis. The geo-blocking rules are resolved in the following order:

[block:parameters] { “data”: { “h-0”: “Location”, “h-1”: “Description”, “0-0”: “1. Asset”, “0-1”: “Each asset can specify the permitted region for each platform individually. This overrides any publishing regions on the category or platform level. \n \nAPI reference”, “1-0”: “2. Category”, “1-1”: “Each category can specify the permitted publishing region for each platform individually. This overrides any publishing regions on the platform level, as well as the legacy category setting. \n \nAPI reference”, “2-0”: “3. Geo-expression on category”, “2-1”: “Deprecated / Legacy method - specify permitted geo expression on a category that will apply for the category on all platforms. This should be replaced by using publishing region configuration for individual platforms on a category.”, “3-0”: “4. Platform”, “3-1”: “Each publishing platform can specify the permitted publishing region and applies to all assets published on the platform unless overridden on category or asset level. \n \nAPI reference” }, “cols”: 2, “rows”: 4, “align”: [ “left”, “left” ] } [/block]

By bypassing geo-blocking, you can allow access to content for employees working outside the geo-region. Refer to the Vimond API documentation for more details on how to bypass geo-blocking.