Service de notification

Le service de notification AFP permet aux plates-formes transparentes AFP de recevoir des notifications lors des approbations de PlatformChildSite, ce qui indique que le site est désormais disponible dans l'API.

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 exemple de configuration). Vous devez ensuite fournir l'URL du point de terminaison à votre responsable des partenaires stratégiques pour activer le service.

Schéma

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

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Notification",
  "type": "object",
  "properties": {
    "platformPublisherId": {
      "type": "string",
      "description": "The unique identifier for the platform publisher."
    },
    "publisherId": {
      "type": "string",
      "description": "The unique identifier for the publisher."
    },
    "platformChildSiteName": {
      "type": "string",
      "description": "The name of the PlatformChildSite the notification refers to (populated for SITE_APPROVAL)."
    },
    "notificationType": {
      "type": "string",
      "enum": ["SITE_APPROVAL"],
      "description": "Type of notification"
    },
  },
  "required": ["platformPublisherId", "publisherId", "notificationType"],
  "additionalProperties": false
}

D'autres notificationTypes et d'autres champs pourront être ajoutés ultérieurement.

Exemples

Une notification SITE_APPROVAL se présente comme suit:

{
  "platformPublisherId" : "pub-123",
  "publisherId" : "pub-456",
  "platformChildSiteName" : "accounts/pub-123/platforms/my-platform/childAccounts/pub-456/sites/child-domain.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 platformPublisherId:', req.body.platformPublisherId)
    console.log('Received publisherId:', req.body.publisherId)
    console.log('Received platformChildSiteName:', req.body.platformChildSiteName)
    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 '{"platformPublisherId" : "pub-123", \
          "publisherId" : "pub-456", \
          "platformChildSiteName" : "accounts/pub-123/platforms/my-platform/childAccounts/pub-456/sites/child-domain.com", \
          "notificationType": "SITE_APPROVAL"}'

Configurer le fichier robots.txt

Vérifiez 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>