Notification service
The AFP notification service lets AFP Transparent platforms receive notifications upon PlatformChildSite approvals - signalling the site is now available in the API.
To receive notifications, implement a server that accepts POST requests and parses the JSON payload outlined in the schema (see example setup). You then need to provide the endpoint URL to your Strategic Partner Manager to activate the service.
Schema
The notification payload must adhere to the following schema:
{
"$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
}
More notificationTypes
and other fields could be added later.
Examples
A SITE_APPROVAL
notification would look like:
{
"platformPublisherId" : "pub-123",
"publisherId" : "pub-456",
"platformChildSiteName" : "accounts/pub-123/platforms/my-platform/childAccounts/pub-456/sites/child-domain.com",
"notificationType": "SITE_APPROVAL"
}
Example setup
The following is an example of a NodeJS server that logs the contents of a 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}`);
});
Example endpoint URL: https://yourdomain.com/your-endpoint
Verify your endpoint is working by sending a POST request using 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"}'
Configure robots.txt
Verify the notification service is allowed access to your endpoint. The
notification service respects directives outlined in the
robots.txt
file of the root of
your domain, if one exists:
User-agent: GoogleOther
Disallow: <ensure your endpoint is not disallowed>