Aller au contenu principal

V2 Partner Experiences API

Ce document décrit les points de terminaison pertinents nécessaires pour interagir avec les API de Rokt afin de récupérer le contenu des Expériences de Rokt. Le point de terminaison est conçu pour servir des expériences alimentées par des offres directement aux partenaires. Les requêtes sont envoyées à ce point de terminaison, et la réponse est transmise à la bibliothèque UX Helper pour un traitement approprié.

Points de terminaison

EnvironnementActionURL
ProductionPOSThttps://server-api.rokt.com/v2/partner/experiences
TestingPOSThttps://server-api-demo.rokt.com/v2/partner/experiences

Meilleures pratiques de test

Le point de terminaison de test https://server-api-demo.rokt.com/v2/partner/experiences est spécifiquement conçu pour les tests et doit être utilisé pour valider l'intégration sans affecter les données ou les performances de production. Assurez-vous que les en-têtes et formats de requête appropriés sont utilisés comme spécifié dans la documentation de l'API pour émuler efficacement des scénarios similaires à la production.

Requête

En-têtes d'autorisation

Veuillez travailler avec votre gestionnaire de compte pour obtenir les informations d'identification nécessaires pour interagir avec ce point de terminaison

Clé de l'en-têteRequisDescriptionTypeRemarque
rokt-pub-idOuiContient l'identifiant public du client fournistringCeci sera fourni par Rokt.
rokt-secretOuiContient le secret public du client fourni qui doit correspondre à l'identifiant publicstringCeci sera fourni par Rokt.

En-têtes requis

Clé de l'en-têteRequisDescriptionTypeExemple
content-typeOuiType de médiastring“application/json”
acceptOuiType de média attendu de la réponsestring“application/json”
rokt-tag-idOuiRokt Tag IDstring1234567890

Corps

Nom de la propriétéRequisType de donnéesDescription
sessionIdNonstringID de session de la session Rokt existante, si elle existe
pageIdentifierOuistringTexte utilisé pour différencier les vues
attributesOuiMap<string, string>Contient les données d'attribut utilisateur à utiliser lors de la sélection d'offres
integrationOuiIntegrationDonnées relatives à l'intégration effectuant la demande. Cela peut être obtenu à partir des bibliothèques UXHelper disponibles pour Android, iOS et web

Intégration

Nom de la propriétéRequisType de donnéesDescription
nameOuistringIndique le nom commun de l'intégration effectuant la demande
versionOuistringVersion de l'intégration effectuant la demande
frameworkOuistringCadre d'intégration utilisé (par exemple, Flutter, React Native)
platformOuistring/enumPlateforme partenaire demandant des offres (par exemple, Web, Mobile, iOS)
layoutSchemaVersionOuistringVersion de schéma compatible la plus élevée pour l'intégration
deviceLocaleOuistringParamètre régional du dispositif de l'utilisateur
deviceModelOuistringModèle de l'appareil pour iOS ou modèle de construction pour Android
deviceTypeOuistringType de dispositif/facteur de forme (par exemple, Téléphone, Tablette)
operatingSystemOuistringSystème d'exploitation du dispositif de l'utilisateur
operatingSystemVersionOuistringVersion du système d'exploitation du dispositif de l'utilisateur
packageNameOuistringNom du package ou identifiant du bundle de l'application hôte
packageVersionOuistringVersion du package ou version du bundle de l'application hôte
metadataNonMap<string, string>Données supplémentaires liées à l'intégration ou au dispositif

Exemple de Requête

Corps/Payload de la Requête JSON

Cliquez pour développer
{
"attributes": {
"email": "test@rokt.com",
"locale": "en-AU"
},
"pageIdentifier": "your_page_identifier",
"integration": {
"name": "UX Helper iOS",
"version": "1.0",
"framework": "Swift",
"platform": "iOS",
"layoutSchemaVersion": "2.1.0",
"packageVersion": "1.0.0",
"packageName": "com.partner",
"operatingSystem": "iOS",
"operatingSystemVersion": "18",
"deviceType": "Phone",
"deviceModel": "iPhone",
"metadata": {
"IsCharging": "true"
}
},
}

Réponse

Réponse de Succès (200)

En-têtes

Ces en-têtes seront retournés pour assurer la cohérence avec d'autres API Ecommerce, mais il n'est pas prévu qu'ils soient consommés par le partenaire ou la bibliothèque UX.

Clé de l'en-têteDescription
rokt-account-idID de compte pour lequel les offres ont été servies
rokt-session-idID de session Rokt associé
etagValeur etag de Rokt pour l'utilisateur

Corps de Réussite

Racine

Nom de la PropriétéTypeDescription
PageContextPageContextDonnées relatives à la page détectée
PluginsLayout[]Objet plugin et polices
SessionIdstringID de session Rokt. Pour le Web, cet ID de session est consommé depuis l'en-tête
SuccessboolIndique si la requête a réussi ou est invalide
TokenstringJWT d'intégrité des données au niveau de la session
OptionsSdkOptionsCollection de configurations d'exécution à fournir aux SDKs Rokt consommateurs

SdkOptions

Nom de la propriétéTypeDescription
UseDiagnosticEventsboolIndique si le SDK Rokt doit produire des diagnostics

PageContext

Nom de la propriétéTypeDescription
IsPageDetectedboolIndique si la requête a abouti à la correspondance d'une page Partenaire
PageIdstringGUID représentant la configuration de la page OP correspondante
PageInstanceGuidstringGUID représentant une instance spécifique de la page sélectionnée
PageVariantNamestringNom de la Variante de Page sélectionnée
PartnerContentTemplatestringModèle utilisé pour les expériences de paiements
RoktTagIdstringID de Tag Partenaire/Annonceur
TokenstringJWT d'intégrité des données au niveau de la page

LayoutPlugin

Nom de la propriétéTypeDescription
FontsFont[]Tableau de polices à utiliser par les SDKs pour l'offre
PluginPluginConfiguration du plugin

Plugin

Nom de la propriétéTypeDescription
ConfigPluginConfigDéfinit la configuration pour le rendu de la mise en page
IdstringID de mise en page / ID externe de la transaction de mise en page
NamestringNom du plugin à utiliser pour le rendu
TargetElementPositionstringAction pour le placement de position basé sur targetElementSelector
TargetElementRelationstringRelation entre le placement et targetElementSelector
TargetElementSelectorstringPosition identifiée pour placer la mise en page dans la page
TargetSectionstringIdentifie différents types de ciblage, par exemple, page de remerciement
UrlstringURL pour télécharger le plugin

PluginConfig

Nom de la propriétéTypeDescription
InstanceGuidstringGUID représentant une instance spécifique du plugin / layout
LayoutSchemaVersionstringVersion du schéma de layout utilisé pour le layout
OuterLayoutSchemastringSchéma JSON définissant l'interface utilisateur du Outer Layout
SlotsSlot []Collection de slots d'offres
TokenstringJWT d'intégrité des données au niveau du plugin / layout

Slot

Nom de la propriétéTypeDescription
InstanceGuidstringGUID représentant une instance spécifique du Slot
LayoutVariantLayoutVariantDéfinition du LayoutVariant à utiliser pour le Slot / Offre
OfferOfferDéfinition de l'Offre à afficher pour nos clients
TokenstringJWT d'intégrité des données au niveau du plugin / layout

LayoutVariant

Nom de la propriétéTypeDescription
LayoutVariantIdstringID généré automatiquement
ModuleNamestringLe nom du module de mise en page
FormatTypestringType de format pour afficher une offre
LayoutVariantSchemastringSchéma JSON définissant l'interface utilisateur pour rendre les offres qui exploitent la variante

Offer

Nom de la propriétéTypeDescription
AccountIdlongL'ID de compte Rokt associé à l'offre
CampaignIdstringID de la campagne liée dans OP
CreativeCreativeCréatif de l'offre défini dans OP
MetadatastringContient des métadonnées liées à l'offre

Creative

Nom de la propriétéTypeDescription
ReferralCreativeIdstringID associé à la configuration de la création
InstanceGuidstringGUID représentant une instance spécifique de la création
CopyMap<string, string>Contient le texte lié au contenu de l'offre
ResponseOptionsMapMap<string, ResponseOption>Configuration pour les boutons CTA
LinksMap<string, Link>Liens disponibles pour l'offre, référencés par le schéma de mise en page
ImagesMap<string, Image>Images disponibles pour l'offre, référencées par le schéma de mise en page
IconsMap<string, Icon>Icônes disponibles pour l'offre, référencées par le schéma de mise en page
TokenstringJWT d'intégrité des données au niveau de la création

Police

Nom de la propriétéType de donnéesDescription
FontFamilystringSpécifie la famille de polices (par exemple, Arial, Helvetica).
FontStylestringSpécifie le style de police (par exemple, normal, italique).
FontWeightstringSpécifie le poids de la police (par exemple, normal, gras).
Srcstring[]Un tableau d'URL sources ou de chemins pour les fichiers de police.

Option de Réponse

Nom de la propriétéType de donnéesDescription
actionstringL'action de la réponse
responseOptionGuidstringUn GUID généré qui est unique pour l'option de réponse et à envoyer dans le cadre des appels d'événements
signalTypestringLe EventType à utiliser lors de l'envoi d'un événement lors d'une interaction. Ce sera presque toujours SignalResponse
labelstringÉtiquette à afficher sur le bouton/lien
successTextstringTexte à afficher lors de l'interaction (non pertinent pour le pilote)
isPositivebooleanIndique si la réponse est un engagement positif ou négatif
urlstringURL sur laquelle effectuer l'action

Réponse d'erreur de requête (HTTP 4xx)

Racine/Corps

Nom de la propriétéTypeDescription
titlestringRaison principale de l'échec
statusnumberCode de statut HTTP
successbooleanIndique si la requête a réussi
errorsError[]Collection d'erreurs de validation survenues

Erreur

Nom de la propriétéTypeDescription
codestringCode d'erreur correspondant
messagestringMessage décrivant l'erreur
valuebooleanValeur fournie qui était invalide, le cas échéant

Corps de la réponse réussie

Réponse de Succès

Cliquez pour développer
{
"sessionId": "b1fb003c-e904-4083-b7b9-03cde555a7a1",
"pageContext": {
"pageInstanceGuid": "b1fb003c-e905-4375-91bd-242e74b12277",
"pageId": "6b1214f0-43e1-447d-b0bb-cf493d361411",
"language": "en",
"isPageDetected": true,
"pageVariantName": "iOSVaraint1",
"token": "<JWT token placeholder>"
},
"plugins": [
{
"plugin": {
"id": "3353172846080032866",
"name": "dcui",
"url": "https://wsdk.rokt.com/plugins/dcui/index.html",
"targetElementSelector": "#target_element",
"targetElementPosition": "append",
"targetElementRelation": "child",
"targetSection": "None",
"config": {
"slots": [
{
"instanceGuid": "8f492d28-83fb-4813-877e-26e752ea9474",
"offer": {
"campaignId": "2749386944931233793",
"accountId": "106",
"maxTotalItemsQtyInOffer": 1,
"creative": {
"referralCreativeId": "2760914349384466797",
"instanceGuid": "c9f37d78-731d-4a0e-b8bc-712bd8c46cc1",
"responseOptionsMap": {
"positive": {
"id": "2760914349384466794",
"action": "Url",
"instanceGuid": "1d47ded1-b483-44e6-abf8-1d1d5faa82bc",
"signalType": "SignalResponse",
"shortLabel": "Oui",
"longLabel": "Oui",
"shortSuccessLabel": "Email Envoyé",
"isPositive": true,
"url": "http://example.com",
"ignoreBranch": false,
"urlBehavior": "newTab",
"token": "<JWT token placeholder>"
```json
},
"negative": {
"id": "2760914349384466796",
"action": "CaptureOnly",
"instanceGuid": "24de5c75-ff04-41c5-b3f7-7d2ee129ecc6",
"signalType": "SignalResponse",
"shortLabel": "Non merci",
"longLabel": "Non merci",
"isPositive": false,
"ignoreBranch": false,
"urlBehavior": "newTab",
"token": "<JWT token placeholder>"
}
},
"links": {
"termsAndConditions": {
"url": "https://server-api.rokt.com/LegalTerms/TermsAndConditions/2760914349384466797",
"title": "Conditions Générales"
}
},
"images": {},
"icons": {},
"token": "<JWT token placeholder>",
"advertiser": {
"name": "000. Pour Test de Widget",
"brand": "000. Pour Test de Widget"
},
"copy": {
"creative.copy": "Nicholas Grasevski 2",
"creative.termsAndConditions.message": "Veuillez visiter [rokt.com](https://www.rokt.com) pour les CGU",
"creative.termsAndConditions.close.copy": "Fermer",
"creative.termsAndConditions.title": "Conditions Générales",
"creative.tag": "Services B2B",
"creative.success.title": "Succès",
"creative.success.copy": "Nous avons envoyé une confirmation à test1593754986316@rokt.com.",

``` "creative.termsAndConditions.link": "https://server-api.rokt.com/LegalTerms/TermsAndConditions/2760914349384466797"
}
},
"metadata": {}
},
"layoutVariant": {
"layoutVariantId": "3353172846080032865",
"moduleName": "standard-marketing",
"formatType": "Texte",
"layoutVariantSchema":"<JSON encoded schema>"
},
"token": "<JWT token placeholder>"
},
],
"instanceGuid": "ce5158a9-dc59-4a97-9006-a299901e4587",
"outerLayoutSchema": "<JSON encoded schema>",
"layoutSchemaVersion": "2.0",
"token": "<JWT token placeholder>"
}
},
"fonts": []
}
],
"options": {
"useDiagnosticEvents": true
},
"success": true
}

Réponse de succès vide

Il existe une occurrence rare où il n'y aura pas d'offres pertinentes pour un utilisateur particulier. Les chances que cela se produise peuvent être réduites en fournissant plus de données d'attribut lors de la requête. Dans ce cas, Rokt renverra une charge utile sans expériences :

{
"sessionId": "b2170028-cf39-4d23-849d-f1c38be50000",
"pageContext": {
"pageInstanceGuid": "b2170028-cf39-4ff4-8e7d-d88eb9e441e6",
"isPageDetected": true,
"token": "<JWT token placeholder>"
},
"plugins": [],
"options": {
"useDiagnosticEvents": false
},
"token": "<JWT token placeholder>",
"success": true,
}

Exemple : Erreur de validation de la requête

Code de réponse HTTP : 422

Cliquez pour développer
{
"title": "Validation failed",
"status": 422,
"success": false,
"errors": [
{
"code": "IntegrationNameNotProvided",
"message": "Integration.Name is required"
},
{
"code": "IntegrationVersionNotProvided",
"message": "Integration.Version is required"
},
{
"code": "IntegrationFrameworkNotProvided",
"message": "Integration.Framework is required"
},
{
"code": "IntegrationPlatformInvalid",
"message": "Integration.Platform is invalid"
},
{
"code": "IntegrationLayoutSchemaVersionNotProvided",
"message": "Integration.LayoutSchemaVersion is required"
},
{
"code": "IntegrationDeviceLocaleNotProvided",
"message": "Integration.DeviceLocale is required"
},
{
"code": "IntegrationDeviceModelNotProvided",
"message": "Integration.DeviceModel is required"
},
{
"code": "IntegrationDeviceTypeNotProvided",
"message": "Integration.DeviceType is required"
},
{
"code": "IntegrationOperatingSystemNotProvided",
"message": "Integration.OperatingSystem is required"
},
{
"code": "IntegrationOperatingSystemVersionNotProvided",
"message": "Integration.OperatingSystemVersion is required"
},
{
"code": "IntegrationPackageNameNotProvided",
"message": "Integration.PackageName est requis"
},
{
"code": "IntegrationPackageVersionNotProvided",
"message": "Integration.PackageVersion est requis"
},
{
"code": "PageIdentifierNotProvided",
"message": "PageIdentifier est requis"
},
{
"code": "PartnerIdNotProvided",
"message": "rokt-tag-id est manquant/incorrect"
}
]
}

Code de réponse HTTP : 400

{
"title": "BadRequest",
"status": 400,
"success": false,
"errors": [
{
"code": "InvalidRequestPayload",
"message": "Le format du corps de la requête n'est pas valide"
}
]
}

Erreurs internes du serveur (HTTP 5xx)

Dans de rares circonstances, le système peut ne pas être en mesure de compléter une requête de manière inattendue. Dans ce cas, nous retournerons une requête sans corps et un code de statut approprié conforme aux codes de réponse HTTP standard. Dans le cas où cette réponse se produit, nous recommandons de réessayer la requête après un court délai (1-2 secondes). Si le problème persiste ou se produit de manière constante, veuillez contacter le support pour aider à identifier et corriger le problème.

Mise en cache des offres

Rendre les offres Rokt en temps opportun vous permet de maximiser les opportunités de revenus grâce à l'engagement des utilisateurs et aux conversions. Cependant, une intégration serveur à serveur implique des appels réseau supplémentaires entre les serveurs backend de Rokt et les vôtres, ce qui retarde la récupération des données nécessaires pour afficher les offres.

Pour améliorer les performances, nous vous recommandons de récupérer le contenu des offres à partir de l'API endpoint /v2/partner/experiences de Rokt à un moment antérieur dans le parcours de transaction de l'utilisateur, avant que nos offres ne soient censées être rendues. Il est préférable d'initier la récupération du contenu des offres après qu'un utilisateur ait démontré un intérêt significatif pour compléter la transaction afin d'éviter des appels réseau inutiles.

Une fois reçues, les données peuvent être stockées dans un cache. Cela permettra une récupération plus rapide par le client pour une utilisation au sein de la même transaction.

Nous recommandons de mettre en cache en fonction d'une combinaison d'informations uniques et idéalement contextuelles telles que l'ID de transaction, l'ID utilisateur et le type d'appareil utilisateur. Dans le cas d'un changement de contexte utilisateur (par exemple, d'un appareil Android à un appareil iOS), le client devrait récupérer de nouvelles expériences à partir de l'API endpoint /v2/partner/experiences en utilisant des attributs client mis à jour. Cela garantit que les offres affichées restent pertinentes pour le contexte actuel du client.

Cet article vous a-t-il été utile ?