Service de notification

Le service de notification AFP permet aux plates-formes AFP Direct de recevoir des notifications en cas de changement d'état des sous-comptes et des sites. Les plates-formes peuvent utiliser l'API Platform pour examiner les modifications.

Pour recevoir des notifications, implémentez un serveur qui accepte les requêtes POST et analyse la charge utile JSON décrite dans le schéma (voir un exemple de configuration). Vous devez ensuite fournir l'URL du point de terminaison à votre Strategic Partner Manager pour activer le service.

Schéma

La charge utile de notification doit respecter le schéma suivant:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Notification",
  "type": "object",
  "properties": {
    "accountName": {
      "type": "string",
      "description": "The name of the modified sub-account."
    },
    "domain": {
      "type": "string",
      "description": "The domain the notification refers to, if any. Optional (only populated for SITE_APPROVAL)"
    },
    "notificationType": {
      "type": "string",
      "enum": ["PUBLISHER_APPROVAL", "SITE_APPROVAL"],
      "description": "Type of notification"
    }
  },
  "required": ["platformPublisherId", "publisherId", "notificationType"],
  "additionalProperties": false
}

Vous pourrez ajouter d'autres notificationTypes et d'autres champs ultérieurement.

Exemples

Une notification d'approbation de l'éditeur ressemblerait à ceci:

{
  "accountName" : "platforms/pub-1234567890123456/accounts/pub-0987654321654321",
  "notificationType": "PUBLISHER_APPROVAL"
}

Voici à quoi ressemble une notification d'approbation de site:

{
  "accountName" : "platforms/pub-1234567890123456/accounts/pub-0987654321654321",
  "domain": "afpsite.com",
  "notificationType": "SITE_APPROVAL"
}

Exemples de configuration

Voici un exemple de serveur NodeJS qui consigne le contenu d'une notification:

// Import express
const express = require('express');

// Create an express application
const app = express();

// Middleware to parse JSON bodies
app.use(express.json());

// Define a route to receive POST requests
app.post('/notification', (req, res) => {
    console.log('Received account name:', req.body.accountName)
    console.log('Received Domain:', req.body.domain)
    console.log('Received notification type', req.body.notificationType)

    // Send a response back to the client
    res.status(200).send('Notification received');
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

Exemple d'URL de point de terminaison: https://yourdomain.com/your-endpoint

Vérifiez que votre point de terminaison fonctionne en envoyant une requête POST à l'aide de curl:

curl -X POST https://yourdomain.com/your-endpoint \
     -H "Content-Type: application/json" \
     -d '{"accountName": "platforms/pub-1234567890123456/accounts/pub-0987654321654321", \
        "notificationType": "PUBLISHER_APPROVAL"}'

Configurer le fichier robots.txt

Assurez-vous que le service de notification est autorisé à accéder à votre point de terminaison. Le service de notification respecte les directives décrites dans le fichier robots.txt de la racine de votre domaine, le cas échéant:

User-agent: GoogleOther
Disallow: <ensure your endpoint is not disallowed>