API active de diffusion de séries d'annonces pour l'insertion dynamique d'annonces

L'API Dynamic Ad Insertion vous permet de demander et de suivre les diffusions en direct avec insertion dynamique d'annonces.

Service : dai.google.com

Tous les URI sont relatifs à https://dai.google.com.

Méthode : stream

Méthodes
stream POST /ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset_key}/stream

Enregistre une session de diffusion en direct avec l'insertion dynamique de séries d'annonces.

Requête HTTP

POST https://dai.google.com/ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset_key}/stream

Paramètres de chemin

Paramètres
network_code string

Code de réseau Google Ad Manager de l'éditeur.

custom_asset_key string

Identifiant personnalisé associé à cet événement dans Google Ad Manager.

Corps de la requête

Le corps de la requête est de type application/x-www-form-urlencoded et contient les paramètres suivants:

Paramètres
Paramètres de ciblage DFP Facultatif Paramètres de ciblage supplémentaires
Remplacer les paramètres de flux Facultatif Remplacez les valeurs par défaut d'un paramètre de création de flux.
Authentification HMAC Facultatif S'authentifier à l'aide d'un jeton basé sur HMAC

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient un nouvel objet Stream.

Open Measurement

L'API DAI contient des informations pour la validation Open Measurement dans le champ Verifications. Ce champ contient un ou plusieurs éléments Verification qui répertorient les ressources et les métadonnées requises pour exécuter le code de mesure tiers afin de vérifier la lecture de la création. Seule la fonctionnalité JavaScriptResource est prise en charge. Pour en savoir plus, consultez le site de l'IAB Tech Lab et la spécification VAST 4.1.

Méthode : segment de série d'annonces

Méthodes
pod segment GET /linear/pods/v1/seg/network/{network_code}/custom_asset/{custom_asset_key}/{pod_identifier}/profile/{profile_name}/{segment_number}.{segment_format}

Crée un flux d'insertion dynamique d'annonces pour l'ID d'événement donné.

Requête HTTP

GET https://dai.google.com/linear/pods/v1/seg/network/{network_code}/custom_asset/{custom_asset_key}/{pod_identifier}/profile/{profile_name}/{segment_number}.{segment_format}

Paramètres de chemin

Paramètres
network_code string

Code de réseau Google Ad Manager de l'éditeur.

custom_asset_key string

Identifiant personnalisé associé à cet événement dans Google Ad Manager.

pod_identifier

Les formats suivants sont acceptés :

pod/{integer}

Identifiant numérique de la coupure publicitaire en cours. Les ID de séries d'annonces sont attribués de manière incrémentielle pour chaque événement de coupure publicitaire, à partir de 1.

ad_break_id/{string}

Identifiant de chaîne de la coupure publicitaire en cours.

profile_name string

Nom du profil d'encodage DAI (insertion dynamique d'annonces) Google Ad Manager demandé. Le profil d'encodage doit être l'un des profils d'encodage configurés pour l'événement sélectionné.

segment_number integer

Indice du segment demandé dans la série d'annonces actuelle, à partir de zéro.

segment_format string

Extension de fichier associée au format de segment demandé. Les extensions acceptées sont les suivantes : ts, mp4, vtt, aac, ac3 ou eac3.

Paramètres de requête

Paramètres
stream_id obligatoire string

ID de flux de la session de l'utilisateur actuel. Cette valeur est renvoyée par une requête réussie au point de terminaison stream.

sd required1 integer

Durée du segment demandé, en millisecondes.

so facultatif

Décalage du segment demandé dans la série d'annonces, en millisecondes. Si vous omettez le paramètre so, il sera calculé en multipliant la durée du segment par le numéro du segment.

pd obligatoire2 integer

Durée de la série d'annonces, en millisecondes.

auth-token obligatoire string

Jeton HMAC signé et encodé au format URL pour le bloc d'annonces actuel.

last facultatif boolean

Indique le dernier segment de la coupure publicitaire. Omettre ce paramètre pour tous les autres segments.

scte35 facultatif string

Signal SCTE-35 encodé en base64 pour cette coupure publicitaire.

cust_params facultatif string

Ensemble de paires clé-valeur utilisé pour le ciblage des campagnes Ad Manager. Ces paires doivent être représentées sous la forme d'une chaîne de requête codée en URL.

Exemple :
Paramètres
  • section = sports
  • page = golf,tennis
Request URL ...&cust_params=section%3Dsports%26page%3Dgolf%2Ctennis...

Notes de bas de page

  1. sd n'est pas obligatoire pour les segments d'initialisation.
  2. pd n'est pas obligatoire pour les événements avec des coupures publicitaires sans durée activées.

Exemple

GET https://dai.google.com/linear/pods/v1/seg/network/sandbox_dev/custom_asset/podserving-segredirect-custom-key/ad_break_id/adbreak-2/profile/8b8888cf79ad43f0800482ffc035a1ac_ts_a/1.ts?so=0&sd=10000&pd=30000&stream_id=8e19cbc6-850b-404c-99d7-860aa4a674cb:TEST

GET https://dai.google.com/linear/pods/v1/seg/network/sandbox_dev/custom_asset/podserving-segredirect-custom-key/pod/2/profile/8b8888cf79ad43f0800482ffc035a1ac_ts_a/1.ts?so=0&sd=10000&pd=30000&stream_id=8e19cbc6-850b-404c-99d7-860aa4a674cb:TEST

Corps de la réponse

Si la requête aboutit, le corps de la réponse sera un segment de flux lisible correspondant au format et aux paramètres spécifiés dans la requête.

Méthode : fichier manifeste de la série d'annonces HLS

Récupère un fichier manifeste de pod publicitaire HLS d'un flux en direct prêt à être chargé et lu par un lecteur vidéo client.

Méthodes
GET GET /linear/pods/v1/hls/network/{network_code}/custom_asset/{custom_asset}/pod/{pod_id}.m3u8;

API permettant de récupérer une playlist multivariante HLS pour une série d'annonces.

Requête HTTP

GET https://dai.google.com/linear/pods/v1/hls/network/{network_code}/custom_asset/{custom_asset_key}/pod/{pod_id}.m3u8?stream_id={stream_id}&pd={pod_duration}

Paramètres de chemin

Paramètres
network_code string

Code de réseau Google Ad Manager de l'éditeur.

custom_asset_key string

Identifiant personnalisé associé à cet événement dans Google Ad Manager

pod_id integer

Identifiant numérique de la coupure publicitaire en cours. Les ID de séries d'annonces sont attribués de manière incrémentielle pour chaque événement de coupure publicitaire, à partir de 1.

Paramètres de requête

Paramètres
stream_id Obligatoire string

ID de flux de la session de l'utilisateur actuel. Cette valeur est renvoyée par une requête réussie au point de terminaison stream.

pd Obligatoire integer

Durée de la série d'annonces, en millisecondes.

scte35 facultatif string

Signal SCTE-35 encodé en base64 pour cette coupure publicitaire.

cust_params facultatif string

Ensemble de paires clé-valeur utilisé pour le ciblage des campagnes Ad Manager. Ces paires doivent être représentées sous la forme d'une chaîne de requête codée en URL.

Exemple :
Paramètres
  • section = sports
  • page = golf,tennis
Request URL ...&cust_params=section%3Dsports%26page%3Dgolf%2Ctennis...

Corps de la réponse

Si la requête aboutit, le corps de la réponse est une playlist multivariante HLS.

Méthode : fichier manifeste de la série d'annonces DASH

Récupère le fichier manifeste d'une série d'annonces MPEG-DASH associée à une diffusion en direct et prêt à être chargé et lu par un lecteur vidéo client.

Méthodes
GET GET /linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset}/stream/{stream_id}/pod/{pod_id}/manifest.mpd

API permettant de récupérer une playlist mpd MPEG-DASH pour une série d'annonces.

Requête HTTP

GET https://dai.google.com/linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset_key}/stream/{stream_id}/pod/{pod_id}/manifest.mpd?pd={pod_duration}

Paramètres de chemin

Paramètres
network_code string

Code de réseau Google Ad Manager de l'éditeur.

custom_asset_key string

Identifiant personnalisé associé à cet événement dans Google Ad Manager

stream_id string

ID de flux de la session de l'utilisateur actuel. Cette valeur est renvoyée par une requête réussie au point de terminaison stream.

pod_id integer

Identifiant numérique de la coupure publicitaire en cours. Les ID de séries d'annonces sont attribués de manière incrémentielle pour chaque événement de coupure publicitaire, à partir de 1.

Paramètres de requête

Paramètres
pd Obligatoire integer

Durée de la série d'annonces, en millisecondes.

scte35 facultatif string

Signal SCTE-35 encodé en base64 pour cette coupure publicitaire.

cust_params facultatif string

Ensemble de paires clé-valeur utilisé pour le ciblage des campagnes Ad Manager. Ces paires doivent être représentées sous la forme d'une chaîne de requête codée en URL.

Exemple :
Paramètres
  • section = sports
  • page = golf,tennis
Request URL ...&cust_params=section%3Dsports%26page%3Dgolf%2Ctennis...

Corps de la réponse

Si la requête aboutit, le corps de la réponse est une playlist mpd MPEG-DASH.

Méthode : modèle de période de pod DASH

Méthodes
pods GET /linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset_key}/pods.json

Demande un modèle de période DASH à Google Ad Manager. Ce modèle contient des macros que vous devez renseigner avec vos paramètres de flux. Une fois ces macros renseignées, le modèle devient votre période de coupure publicitaire et peut être intégré à votre fichier manifeste DASH.

Requête HTTP

GET https://dai.google.com/linear/pods/v1/dash/network/{network_code}/custom_asset/{custom_asset_key}/pods.json

Paramètres de chemin

Paramètres
network_code string

Code de réseau Google Ad Manager de l'éditeur.

custom_asset_key string

Identifiant personnalisé associé à cet événement dans Google Ad Manager.

Paramètres de requête

Paramètres
stream_id obligatoire string

ID de flux de la session de l'utilisateur actuel. Cette valeur est renvoyée par une requête réussie au point de terminaison stream.

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient un nouvel objet PodTemplateResponse.

Méthode : validation des médias

Après avoir rencontré un identifiant de contenu multimédia publicitaire pendant la lecture, envoyez immédiatement une requête à l'aide de l'URL de validation des contenus multimédias media_verification_url obtenue à partir du point de terminaison stream ci-dessus. Ces requêtes ne sont pas nécessaires pour les flux de balisage côté serveur, où le serveur lance la validation des médias.

Les requêtes adressées au point de terminaison media verification sont idempotentes.

Méthodes
media verification GET /{media_verification_url}/{ad_media_id}

Informe l'API d'un événement de validation de contenu multimédia.

Requête HTTP

GET https://{media-verification-url}/{ad-media-id}

Corps de la réponse

media verification renvoie les réponses suivantes :

  • HTTP/1.1 204 No Content si la validation des médias réussit et que tous les pings sont envoyés.
  • HTTP/1.1 404 Not Found si la requête ne peut pas valider le contenu multimédia en raison d'un format d'URL incorrect ou d'une expiration.
  • HTTP/1.1 404 Not Found si une demande de validation précédente pour cet ID a abouti.
  • HTTP/1.1 409 Conflict si une autre requête envoie déjà des pings à ce moment-là.

ID des éléments multimédias de l'annonce

Les identifiants multimédias des annonces seront encodés dans un canal de métadonnées distinct : métadonnées temporelles pour le flux de transport HLS ou emsg pour les fichiers MP4. Les identifiants de médias publicitaires commencent toujours par la chaîne google_.

L'intégralité du contenu textuel de l'entrée de métadonnées doit être ajoutée à l'URL de vérification des annonces avant d'effectuer chaque demande de validation d'annonce.

Méthode: metadata

Le point de terminaison des métadonnées à metadata_url renvoie des informations utilisées pour créer une UI d'annonce. Le point de terminaison des métadonnées n'est pas disponible pour les flux de balisage côté serveur, où le serveur est chargé de lancer la validation du média publicitaire.

Méthodes
metadata GET /{metadata_url}/{ad-media-id}

GET /{metadata_url}

Récupère les informations sur les métadonnées des annonces.

Requête HTTP

GET https://{metadata_url}/{ad-media-id}

GET https://{metadata_url}

Corps de la réponse

Si la requête aboutit, la réponse renvoie une instance de PodMetadata.

Analyser les métadonnées

Les métadonnées comportent trois sections distinctes: tags, ads et l'annonce breaks. Le point d'entrée dans les données est la section tags. À partir de là, itérez les balises et recherchez la première entrée dont le nom est un préfixe de l'ID multimédia de l'annonce trouvé dans le flux vidéo. Par exemple, vous pouvez avoir un ID de support publicitaire semblable à celui-ci :

google_1234567890

Vous trouverez ensuite un objet de tag nommé google_12345. Dans ce cas, il correspond à votre identifiant de contenu publicitaire. Une fois que vous avez trouvé l'objet de préfixe de média publicitaire approprié, vous pouvez rechercher les ID d'annonce, les ID de coupure publicitaire et le type d'événement. Les ID d'annonce sont ensuite utilisés pour indexer les objets ads, et les ID de coupure publicitaire sont utilisés pour indexer les objets breaks.

Données de réponse

Flux

Le flux permet d'afficher une liste de ressources pour un flux nouvellement créé au format JSON.
Représentation JSON
{
  "stream_id": string,
  "media_verification_url": string,
  "metadata_url": string,
  "session_update_url": string,
  "heartbeat_url": string,
  "polling_frequency": number,
  "pod_manifest_url": string,
  "manifest_format": string,
}
Champs
stream_id string

Identifiant du flux GAM.
media_verification_url string

URL de validation des contenus multimédias utilisée comme point de terminaison de base pour le suivi des événements de lecture.
metadata_url string

URL des métadonnées utilisée pour interroger des informations périodiques sur les événements d'annonces sur les flux à venir.
session_update_url string

URL de mise à jour de la session utilisée pour mettre à jour les paramètres de ciblage de ce flux. Les valeurs d'origine des paramètres de ciblage sont capturées lors de la requête de création de flux initiale.
heartbeat_url string

L'URL de pulsation, utilisée pour maintenir actif le flux de balisage côté serveur, doit faire l'objet d'un ping toutes les {PollingFrequency} secondes. Renseigné pour les flux de balisage côté serveur.
polling_frequency number

Fréquence d'interrogation, en secondes, lorsque vous demandez "metadata_url" ou "Heartbeat_url".
pod_manifest_url string

Le modèle d'URL du fichier manifeste de la série d'annonces permet de générer l'URL permettant de récupérer le fichier manifeste de la série d'annonces d'un flux, correspondant à l'URL de la playlist multivariante en HLS ou du MPD en DASH. Renseigné pour les événements de diffusion en direct du type d'insertion dynamique d'annonces POD_SERVING_MANIFEST. https://developers.google.com/ad-manager/api/reference/v202305/LiveStreamEventService.DynamicAdInsertionType
manifest_format string

Le format du fichier manifeste est le format du fichier manifeste récupéré à partir de pod_manifest_url, soit dash ou hls.

PodMetadata

PodMetadata contient des informations de métadonnées sur les annonces, les coupures publicitaires et les tags d'ID multimédia.
Représentation JSON
{
  "tags": map[string, object(TagSegment)],
  "ads": map[string, object(Ad)],
  "ad_breaks": map[string, object(AdBreak)],
}
Champs
tags map[string, object(TagSegment)]

Carte des segments de balise indexés par préfixe de balise.
ads map[string, object(Ad)]

Carte des annonces indexées par ID d'annonce.
ad_breaks map[string, object(AdBreak)]

Carte des coupures publicitaires indexées par ID de coupure publicitaire.

TagSegment

TagSegment contient une référence à une annonce, sa coupure publicitaire et son type d'événement. TagSegment avec type="progress" ne doit pas être pingué vers le point de terminaison Ad Media Verification.
Représentation JSON
{
  "ad": string,
  "ad_break_id": string,
  "type": string,
}
Champs
ad string

ID de l'annonce associée à cette balise.
ad_break_id string

ID de la coupure publicitaire de cette balise.
type string

Type d'événement de cette balise.

AdBreak

AdBreak décrit une seule coupure publicitaire dans le flux. Il contient une durée, un type (mid/pre/post) et le nombre d'annonces.
Représentation JSON
{
  "type": string,
  "duration": number,
  "expected_duration": number,
  "ads": number,
}
Champs
type string

Les types de coupures valides sont les suivants : "pre", "mid" et "post".
duration number

Durée totale de l'annonce pour cette coupure publicitaire, en secondes.
expected_duration number

Durée prévue de la coupure publicitaire (en secondes), incluant toutes les annonces et tous les écrans.
ads number

Nombre d'annonces dans la coupure publicitaire.
"Annonce" décrit une annonce dans le flux.
Représentation JSON
{
  "ad_break_id": string,
  "position": number,
  "duration": number,
  "title": string,
  "description": string,
  "advertiser": string,
  "ad_system": string,
  "ad_id": string,
  "creative_id": string,
  "creative_ad_id": string,
  "deal_id": string,
  "clickthrough_url": string,
  "click_tracking_urls": [],
  "verifications": [object(Verification)],
  "slate": boolean,
  "icons": [object(Icon)],
  "wrappers": [object(Wrapper)],
  "universal_ad_id": object(UniversalAdID),
  "extensions": [],
  "companions": [object(Companion)],
  "interactive_file": object(InteractiveFile),
}
Champs
ad_break_id string

ID de la coupure publicitaire de cette annonce.
position number

Position de cette annonce dans la coupure publicitaire, à partir de 1.
duration number

Durée de l'annonce, en secondes.
title string

Titre facultatif de l'annonce.
description string

Description de l'annonce facultative.
advertiser string

Identifiant d'annonceur facultatif.
ad_system string

Système publicitaire facultatif.
ad_id string

Identifiant d'annonce facultatif.
creative_id string

ID de création facultatif.
creative_ad_id string

ID de l'annonce de création facultatif.
deal_id string

ID de l'accord (facultatif).
clickthrough_url string

URL de destination facultative.
click_tracking_urls string

URL de suivi des clics facultatives.
verifications [object(Verification)]

Entrées de validation Open Measurement facultatives qui listent les ressources et les métadonnées requises pour exécuter le code de mesure tierce afin de vérifier la lecture des créations.
slate boolean

Valeur booléenne facultative indiquant que l'entrée actuelle est une liste.
icons [object(Icon)]

Liste d'icônes, omise si vide.
wrappers [object(Wrapper)]

Liste de wrappers, omise si vide.
universal_ad_id object(UniversalAdID)

Identifiant d'annonce universel facultatif.
extensions string

Liste facultative de tous les nœuds <Extension> du VAST.
companions [object(Companion)]

Éléments associés facultatifs pouvant être diffusés avec cette annonce.
interactive_file object(InteractiveFile)

Création interactive (SIMID) facultative à afficher pendant la lecture de l'annonce.

PodTemplateResponse

PodTemplateResponse représente la charge utile JSON renvoyée à un VTP pour la couture de pod.
Représentation JSON
{
  "dash_period_template": string,
  "segment_duration_ms": int64,
}
Champs
dash_period_template string

DashPeriodTemplate est le modèle XML de la période à renseigner avec les données appropriées avant l'assemblage.
segment_duration_ms int64

SegmentDurationMS correspond à la durée des segments de période en millisecondes.

Icône

L'icône contient des informations sur une icône VAST.
Représentation JSON
{
  "click_data": object(ClickData),
  "creative_type": string,
  "click_fallback_images": [object(FallbackImage)],
  "height": int32,
  "width": int32,
  "resource": string,
  "type": string,
  "x_position": string,
  "y_position": string,
  "program": string,
  "alt_text": string,
}
Champs
click_data object(ClickData)

creative_type string

click_fallback_images [object(FallbackImage)]

height int32

width int32

resource string

type string

x_position string

y_position string

program string

alt_text string

ClickData

ClickData contient des informations sur un clic sur une icône.
Représentation JSON
{
  "url": string,
}
Champs
url string

FallbackImage

FallbackImage contient des informations sur une image de remplacement VAST.
Représentation JSON
{
  "creative_type": string,
  "height": int32,
  "width": int32,
  "resource": string,
  "alt_text": string,
}
Champs
creative_type string

height int32

width int32

resource string

alt_text string

Wrapper

Le wrapper contient des informations sur une annonce wrapper. Il n'inclut pas d'ID de transaction s'il n'en existe pas.
Représentation JSON
{
  "system": string,
  "ad_id": string,
  "creative_id": string,
  "creative_ad_id": string,
  "deal_id": string,
}
Champs
system string

Identifiant du système publicitaire.
ad_id string

ID de l'annonce utilisée pour l'annonce wrapper.
creative_id string

ID de la création utilisée pour l'annonce wrapper.
creative_ad_id string

ID de l'annonce de la création utilisé pour l'annonce du wrapper.
deal_id string

ID d'accord facultatif pour l'annonce wrapper.

Validation

Verification contient des informations pour Open Measurement, qui facilite la mesure tierce de la visibilité et de la validation. Pour le moment, seules les ressources JavaScript sont acceptées. Voir https://iabtechlab.com/standards/open-measurement-sdk/
Représentation JSON
{
  "vendor": string,
  "java_script_resources": [object(JavaScriptResource)],
  "tracking_events": [object(TrackingEvent)],
  "parameters": string,
}
Champs
vendor string

Le fournisseur de services de validation
java_script_resources [object(JavaScriptResource)]

Liste des ressources JavaScript pour la validation.
tracking_events [object(TrackingEvent)]

Liste des événements de suivi pour la validation.
parameters string

Chaîne opaque transmise au code de validation de démarrage.

JavaScriptResource

JavaScriptResource contient des informations de validation via JavaScript.
Représentation JSON
{
  "script_url": string,
  "api_framework": string,
  "browser_optional": boolean,
}
Champs
script_url string

URI de la charge utile JavaScript.
api_framework string

APIFramework est le nom du framework vidéo qui exécute le code de validation.
browser_optional boolean

Indique si ce script peut être exécuté en dehors d'un navigateur.

TrackingEvent

TrackingEvent contient des URL qui doivent être pingées par le client dans certaines situations.
Représentation JSON
{
  "event": string,
  "uri": string,
}
Champs
event string

Type d'événement de suivi.
uri string

Événement de suivi à envoyer.

UniversalAdID

UniversalAdID permet de fournir un identifiant de création unique qui est géré dans tous les systèmes publicitaires.
Représentation JSON
{
  "id_value": string,
  "id_registry": string,
}
Champs
id_value string

Identifiant d'annonce universel de la création sélectionnée pour l'annonce.
id_registry string

Chaîne utilisée pour identifier l'URL du site Web du registre où l'ID d'annonce universel de la création sélectionnée est catalogué.

Annonce associée

Le composant "compagnon" contient des informations sur les annonces associées qui peuvent être diffusées avec l'annonce.
Représentation JSON
{
  "click_data": object(ClickData),
  "creative_type": string,
  "height": int32,
  "width": int32,
  "resource": string,
  "type": string,
  "ad_slot_id": string,
  "api_framework": string,
  "tracking_events": [object(TrackingEvent)],
}
Champs
click_data object(ClickData)

Données sur les clics pour cette création associée.
creative_type string

Attribut CreativeType sur le nœud <StaticResource> dans le VAST s'il s'agit d'une création associée de type statique.
height int32

Hauteur en pixels de cette création associée.
width int32

Largeur en pixels de cette création associée.
resource string

Pour les compagnons statiques et iFrame, il s'agit de l'URL à charger et à afficher. Pour les annonces associées HTML, il s'agit de l'extrait de code HTML qui doit être affiché en tant qu'annonce associée.
type string

Type de création associée. Il peut s'agir d'un fichier statique, iFrame ou HTML.
ad_slot_id string

ID d'espace publicitaire de cette annonce associée.
api_framework string

Cadre de l'API de ce compagnon.
tracking_events [object(TrackingEvent)]

Liste des événements de suivi pour ce compagnon.

InteractiveFile

InteractiveFile contient des informations sur la création interactive (SIMID, par exemple) qui doivent s'afficher pendant la lecture de l'annonce.
Représentation JSON
{
  "resource": string,
  "type": string,
  "variable_duration": boolean,
  "ad_parameters": string,
}
Champs
resource string

URL de la création interactive.
type string

Type MIME du fichier fourni en tant que ressource.
variable_duration boolean

Indique si cette création peut demander une prolongation de la durée.
ad_parameters string

Valeur du nœud <AdParameters> dans la norme VAST.