WebHooks are HTTP POST callback requests sent to URL of a user’s choice in response to some event occurring. They offer simple and effective server to server communication without long running connections.
Webhooks can be used for
- Notifications
- Data Syncing
- Chaining
- Modifications
- Plugins
webhooks.abhinav.co offers JSON APIs to help you create and manage channels and associated webhooks, and makes publishing events to these associated webhooks simple and easy.
A simple API workflow is as follows
POST /channels- Create a new channel and get channel id and a publisher key.POST /channels/:id/webhooks- Use your publisher key to authenticate yourself and associate a webhook URL with this channel. You can call this API multiple times to associate as many webhook URLs you want.POST /channels/:id/events- Post events to this channel, again authentication is done via publisher key.- webhooks system notifies all associated webhook URLs and posts event data to them. In case any webhook URL does not receive data properly (ie, respond with any HTTP status code other than 200), our system continue trying to send event data to webhook URL once an hour for 24 hours.
DEFINITION
POST https://webhooks.abhinav.co/v1/channels
EXAMPLE REQUEST
$ curl -X POST https://webhooks.abhinav.co/v1/channels \
-d "name=my first channel" \
-d "description=my optional channel description" \
-d "guid=optional-unique-uid" \
-d "[email protected]" \
-d "public=false"
EXAMPLE RESPONSE
{
"id" : 9999,
"name" : "my first channel",
"description" : "optional channel description",
"guid" : "optional-unique-uid",
"email" : "[email protected]",
"public" : false,
"publisher_key": "pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29"
}
DEFINITION
GET https://webhooks.abhinav.co/v1/channels/{GUID_OR_ID}
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username.
EXAMPLE REQUEST
$ curl https://webhooks.abhinav.co/v1/channels/9999 \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29:
EXAMPLE RESPONSE
{ "id" : 9999,
"name" : "my first channel",
"description" : "optional channel description",
"guid" : "optional-unique-uid",
"email" : "[email protected]",
"public" : false,
"publisher_key": "pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29"
}
DEFINITION
PUT https://webhooks.abhinav.co/v1/channels/{GUID_OR_ID}
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username.
EXAMPLE REQUEST
$ curl -X PUT https://webhooks.abhinav.co/v1/channels/9999 \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29: \
-d "name=my new name"
EXAMPLE RESPONSE
{
"id" : 9999,
"name" : "my new name",
"description" : "optional channel description",
"guid" : "optional-unique-uid",
"email" : "[email protected]",
"public" : false,
"publisher_key": "pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29"
}
DEFINITION
DELETE https://webhooks.abhinav.co/v1/channels/{GUID_OR_ID}
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username.
EXAMPLE REQUEST
$ curl -X DELETE https://webhooks.abhinav.co/v1/channels/9999 \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29:
EXAMPLE RESPONSE
{
"response" : "ok"
}
DEFINITION
POST https://webhooks.abhinav.co/v1/channels/{ID}/webhooksAUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username.
EXAMPLE REQUEST
$ curl -X POST https://webhooks.abhinav.co/v1/channels/9999/webhooks \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29: \
-d "name=subscriber name" \
-d "webhook_url=http://subcriber.com/webhook_url"
EXAMPLE RESPONSE
{
"id" : 123456,
"name" : "subscriber name",
"webhook_url" : "http://subscriber.com/webhook_url",
"subscriber_key": "sk_ab043192b979363020879c5bb873616ec1ff2a12"
}
DEFINITION
GET https://webhooks.abhinav.co/v1/channels/{ID}/webhooks
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username.
EXAMPLE REQUEST
$ curl https://webhooks.abhinav.co/v1/channels/9999/webhooks \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29:
EXAMPLE RESPONSE
[
{
"id" : 123456,
"name" : "subscriber name",
"webhook_url" : "http://subscriber.com/webhook_url",
"subscriber_key": "sk_ab043192b979363020879c5bb873616ec1ff2a12"
}
]
DEFINITION
GET https://webhooks.abhinav.co/v1/channels/{ID}/webhooks/{WEBHOOK_ID}
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key OR subscriber_key as basic auth username.
EXAMPLE REQUEST
$ curl https://webhooks.abhinav.co/v1/channels/9999/webhooks/123456 \
-u sk_ab043192b979363020879c5bb873616ec1ff2a12:
EXAMPLE RESPONSE
{
"id" : 123456,
"name" : "subscriber name",
"webhook_url" : "http://subscriber.com/webhook_url",
"subscriber_key": "sk_ab043192b979363020879c5bb873616ec1ff2a12"
}
DEFINITION
PUT https://webhooks.abhinav.co/v1/channels/{ID}/webhooks/{WEBHOOK_ID}
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key OR subscriber_key as basic auth username.
EXAMPLE REQUEST
$ curl -X PUT https://webhooks.abhinav.co/v1/channels/9999/webhooks/123456 \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29: \
-d "webhook_url=http://subcriber.com/new_webhook_url"
EXAMPLE RESPONSE
{
"id" : 123456,
"name" : "subscriber name",
"webhook_url" : "http://subscriber.com/new_webhook_url",
"subscriber_key": "sk_ab043192b979363020879c5bb873616ec1ff2a12"
}
DEFINITION
DELETE https://webhooks.abhinav.co/v1/channels/{ID}/webhooks/{WEBHOOK_ID}
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key OR subscriber_key as basic auth username.
EXAMPLE REQUEST
$ curl -X PUT https://webhooks.abhinav.co/v1/channels/9999/webhooks/123456 \
-u sk_ab043192b979363020879c5bb873616ec1ff2a12:
EXAMPLE RESPONSE
{
"response" : "ok"
}
DEFINITION
POST https://webhooks.abhinav.co/v1/channels/{ID}/events
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username. EXAMPLE REQUEST
$ curl -X POST https://webhooks.abhinav.co/v1/channels/9999/events \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29: \
-d "event_name=request.created" \
-d "ext_ref_code=optional-reference-code-2396" \
-d "event_url=http://publisher.com/optional_event_url_for_event_2396" \
-d "data[any_data]=you-want-to-publish" \
-d "data[example_request_id]=123" \
-d "data[created_at]=1354649392"
EXAMPLE RESPONSE
{
"id" : 567890,
"event_name" : "request.created",
"ext_ref_code" : "optional-reference-code-2396",
"event_url" : "http://publisher.com/optional_event_url_for_event_2396",
"data" : {
"any_data" : "you-want-to-publish",
"example_request_id" : "123",
"created_at" : 1354649392"
}
}
DEFINITION
GET https://webhooks.abhinav.co/v1/channels/{ID}/events/{EVENT_ID}/notification_log
AUTHENTICATION
via HTTP_BASIC_AUTH - publisher_key as basic auth username.
EXAMPLE REQUEST
$ curl https://webhooks.abhinav.co/v1/channels/9999/events/567890/notification_log \
-u pk_db0eaf8e5d11e6878f96cdcbe2a9de3228622f29:
EXAMPLE RESPONSE
- PENDING
Copyright (c) 2013 Abhinav Saxena. See LICENSE for details.