Layanan notifikasi

Layanan notifikasi AFP memungkinkan platform AFP Transparent menerima notifikasi setelah persetujuan PlatformChildSite - yang menandakan bahwa situs kini tersedia di API.

Untuk menerima notifikasi, terapkan server yang menerima permintaan POST dan mengurai payload JSON yang diuraikan dalam skema (lihat contoh penyiapan). Kemudian, Anda harus memberikan URL endpoint kepada Partner Manager Strategis untuk mengaktifkan layanan.

Skema

Payload notifikasi harus mematuhi skema berikut:

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

notificationTypes lainnya dan kolom lainnya dapat ditambahkan nanti.

Contoh

Notifikasi SITE_APPROVAL akan terlihat seperti:

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

Contoh penyiapan

Berikut adalah contoh server NodeJS yang mencatat konten pemberitahuan ke dalam log:

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

Contoh URL endpoint: https://yourdomain.com/your-endpoint

Pastikan endpoint Anda berfungsi dengan mengirim permintaan POST menggunakan 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"}'

Mengonfigurasi robots.txt

Pastikan layanan notifikasi diizinkan untuk mengakses endpoint Anda. Layanan pemberitahuan mengikuti perintah yang diuraikan dalam file robots.txt di root domain Anda, jika ada:

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