Push Kirby hook events to HTTP endpoints.
The Kirby webhooks-plugin will send a POST request to the configured HTTP endpoints
holding a application/json body with the hook name, the user-data of the user who
triggered the hook and the actual page data including a diff with the old page data.
hookholds the name of the triggered hook.hostholds the hostname from where the request originated.userholds the data of the user who triggered the hook.dataholds the new page data.diffholds the page's old page data which changed.
Example of the Request-Body (shortened)
{
"hook": "panel.page.update",
"host": "127.0.0.1",
"user": {
"username": "user",
"email": "user@domain.tld",
"language": "en",
"role": "admin",
"firstname": "first",
"lastname":" last",
"history": []
},
"data":{
"id": "page/subpage",
"title": "Subpage",
"content": {
"name": "New name!"
}
},
"diff": {
"content": {
"name": "Old name."
}
}
}Choose your preferred installation method below and enable the plugin in the configuration.
kirby plugin:install thasmo/kirby.webhooks{
"name": "my-kirby-installation",
"require": {
"mnsami/composer-custom-directory-installer": "1.0.*",
"thasmo/kirby.webhooks": "0.1.0"
},
"repositories": [
{
"type": "package",
"package": {
"name": "thasmo/kirby.webhooks",
"version": "0.1.0",
"source": {
"type": "git",
"url": "https://github.com/thasmo/kirby.webhooks.git",
"reference": "v0.1.0"
}
}
}
],
"extra": {
"installer-paths": {
"./site/plugins/webhooks": ["thasmo/kirby.webhooks"]
}
}
}Download the latest release and unpack it to site/plugins/webhooks.
webhooks required, default: false
Enable the webhooks-plugin.
c::set('webhooks', true);webhooks.endpoints required default: null
Define HTTP endpoints.
c::set('webhooks.endpoints', [
'http://domain-1.com/all-events/',
'http://domain-2.com/page-events-only/' => ['panel.page'],
'http://domain-3.com/user-events-only/' => ['panel.user'],
]);webhooks.blacklist optional, default: ['password', 'secret']
Set property-names which should not be passed to the endpoints.
c::set('webhooks.blacklist', ['password', 'secret', 'email']);