Servicio de notificaciones

El servicio de notificaciones de AFP permite que las plataformas Transparentes de AFP reciban notificaciones cuando se aprueben los PlatformChildSite, lo que indica que el sitio ahora está disponible en la API.

Para recibir notificaciones, implementa un servidor que acepte solicitudes POST y analice la carga útil de JSON que se describe en el esquema (consulta la configuración de ejemplo). Luego, debes proporcionar la URL del extremo a tu administrador de socios estratégicos para activar el servicio.

Esquema

La carga útil de la notificación debe cumplir con el siguiente esquema:

{
  "$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
}

Más adelante, se podrían agregar más notificationTypes y otros campos.

Ejemplos

Una notificación SITE_APPROVAL se vería de la siguiente manera:

{
  "platformPublisherId" : "pub-123",
  "publisherId" : "pub-456",
  "platformChildSiteName" : "accounts/pub-123/platforms/my-platform/childAccounts/pub-456/sites/child-domain.com",
  "notificationType": "SITE_APPROVAL"
}

Configuración de ejemplo

El siguiente es un ejemplo de un servidor de NodeJS que registra el contenido de una notificación:

// 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}`);
});

Ejemplo de URL de extremo: https://yourdomain.com/your-endpoint

Envía una solicitud POST con curl para verificar que tu extremo funcione:

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"}'

Configura robots.txt

Verifica que el servicio de notificaciones tenga acceso a tu extremo. El servicio de notificaciones respeta las directivas que se describen en el archivo robots.txt de la raíz de tu dominio, si existe:

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