Webhook Events

Webhooks are a way for a web application to be alerted of activity on a Rewatch channel.

Natalie Pabón avatar
Written by Natalie Pabón
Updated over a week ago

Webhooks are a way for a web application to be alerted of activity on a Rewatch channel. By providing a URL to receive JSON payloads representing channel events, it’s possible to take action in response to that activity.

Read the webhooks overview for a general discussion of using webhooks with your Rewatch channel.

Note: Creating and configuring webhooks may only be done by channel administrators. Webhook events will contain information about channel resources such as collections and videos regardless of their visibility on the channel.

Webhook event types

There are a set of high-level event types that correspond to resource types in a Rewatch channel, and for each of those there are a set of actions that may be taken on those resources. The combination of those yields the set of events that trigger webhook deliveries.

The current event types and their actions are:

In the near future there will be events added for member and group actions.

The combination of event type and action is represented in the Rewatch-Hook-Delivery-Event header and the JSON payload event field in webhook delivery HTTP requests.

For example, deleting a collection from your channel will result in those fields being set to collection.deleted.

Example event payloads

video.addedToChannel

This event will fire whenever a video leaves the draft state on a channel, regardless of its visibility.

Version: HTTP/1.1
Host: rewatch-example.ngrok.io
User-Agent: Rewatch Webhooks
Accept: application/json;
charset=utf-8
Rewatch-Hook-Delivery-Nonce: dc808dc8cca765568b8b85b4df75b656e8c5de01
Rewatch-Hook-Delivery-Signatures: 38bdef36aaba6c3ec20c0da3f17284,41f15ca050e3787069ea0b1199a602
Rewatch-Hook-Delivery-Timestamp: 2021-08-10T06:09:39Z
Rewatch-Hook-Delivery-Event: video.addedToChannel
Rewatch-Hook-Id: V2ViaG9vay0x

{
"hookId": "V2ViaG9vay0x",
"nonce": "dc808dc8cca765568b8b85b4df75b656e8c5de01",
"at": "2021-08-10T06:09:39.071Z",
"event": "video.addedToChannel",
"actor": {
"id": "VXNlci02MTcz",
"firstName": "Example",
"lastName": "User",
"email": "user@example.com",
"createdAt": "2021-07-15T04:17:22.550Z"
},
"channel": {
"url": "https://example.rewatch.com",
"name": "Rewatch Example",
"subdomain": "example",
"description": null,
"createdAt": "2021-07-15T04:17:22.545Z"
},
"video": {
"id": "VmlkZW8tMTM4NjA=",
"url": "https://example.rewatch.com/video/13860/all-hands-presentation",
"title": "All-hands presentation",
"summary": "The latest updates from the leadership team.",
"visibility": "PRIVATE",
"presentedAt": "2021-08-10T00:00:00.000Z",
"duration": 25.7,
"collections": [
{
"id": "Q29sbGVjdGlvbi0xMzI2",
"url": "https://example.rewatch.com/collection/1326/new-collection-for-hook",
"name": "All-hands",
"description": "The bi-weekly all-hands sessions.",
"createdAt": "2021-08-02T21:08:57.146Z",
"secret": true,
"children": [],
"admins": [],
"members": []
}
],
"taggedUsers": [],
"createdAt": "2021-08-10T06:08:39.996Z"
}
}

video.updated

This event will fire when a video’s details, such as its title or description, are changed, collections are added or removed, users are tagged or untagged, or the video is trimmed.

Version: HTTP/1.1
Host: rewatch-example.ngrok.io
User-Agent: Rewatch Webhooks
Accept: application/json;
charset=utf-8
Rewatch-Hook-Delivery-Nonce: cf8540f64eb1de7f9606ecb3ad96b230b9ef8b15
Rewatch-Hook-Delivery-Signatures: 38bdef36aaba6c3ec20c0da3f17284,41f15ca050e3787069ea0b1199a602
Rewatch-Hook-Delivery-Timestamp: 2021-08-09T20:05:28Z
Rewatch-Hook-Delivery-Event: video.updated
Rewatch-Hook-Id: V2ViaG9vay0x

{
"hookId": "V2ViaG9vay0x",
"nonce": "cf8540f64eb1de7f9606ecb3ad96b230b9ef8b15",
"at": "2021-08-09T20:05:28.895Z",
"event": "video.updated",
"actor": {
"id": "VXNlci02MTcz",
"firstName": "Example",
"lastName": "User",
"email": "user@example.com",
"createdAt": "2021-07-15T04:17:22.550Z"
},
"channel": {
"url": "https://example.rewatch.com",
"name": "Rewatch Example",
"subdomain": "example",
"description": null,
"createdAt": "2021-07-15T04:17:22.545Z"
},
"video": {
"id": "VmlkZW8tMTE4MjA=",
"url": "https://example.rewatch.com/video/11820/snack",
"title": "My Zoom Call",
"summary": "",
"visibility": "ON_CHANNEL",
"presentedAt": "2021-07-15T00:00:00.000Z",
"duration": 60.466,
"collections": [
{
"id": "Q29sbGVjdGlvbi0xMjE1",
"url": "https://example.rewatch.com/collection/1215/test-collection",
"name": "Test Collection",
"description": "For testing!",
"createdAt": "2021-07-15T04:42:23.897Z",
"secret": false,
"children": [],
"admins": [],
"members": []
},
{
"id": "Q29sbGVjdGlvbi0xMjIy",
"url": "https://example.rewatch.com/collection/1222/test-collection-2",
"name": "Test Collection 2",
"description": "Another one.",
"createdAt": "2021-07-16T03:48:07.010Z",
"secret": false,
"children": [],
"admins": [],
"members": []
}
],
"taggedUsers": [],
"createdAt": "2021-07-15T04:43:10.154Z"
},
"updates": {
"title": {
"from": "My Zoom Call",
"to": "API Design Session"
}
}
}

video.deleted

This event fires whenever a non-draft video is removed from a channel.

Version: HTTP/1.1
Host: rewatch-example.ngrok.io
User-Agent: Rewatch Webhooks
Accept: application/json;
charset=utf-8
Rewatch-Hook-Delivery-Nonce: 9a0566584b7972e90d77e8b346a94344e6c2fd95
Rewatch-Hook-Delivery-Signatures: 38bdef36aaba6c3ec20c0da3f17284,41f15ca050e3787069ea0b1199a602
Rewatch-Hook-Delivery-Timestamp: 2021-08-10T06:16:42Z
Rewatch-Hook-Event: video.deleted
Rewatch-Hook: V2ViaG9vay0x

{
"hookId": "V2ViaG9vay0x",
"nonce": "9a0566584b7972e90d77e8b346a94344e6c2fd95",
"at": "2021-08-10T06:16:42.194Z",
"event": "video.deleted",
"actor": {
"id": "VXNlci02MTcz",
"firstName": "Example",
"lastName": "User",
"email": "user@example.com",
"createdAt": "2021-07-15T04:17:22.550Z"
},
"channel": {
"url": "https://example.rewatch.com",
"name": "Rewatch Example",
"subdomain": "example",
"description": null,
"createdAt": "2021-07-15T04:17:22.545Z"
},
"video": {
"id": "VmlkZW8tMTM4NjA=",
"url": "https://example.rewatch.com/video/13860/all-hands-presentation",
"title": "All-hands presentation",
"summary": "",
"visibility": "PRIVATE",
"presentedAt": "2021-08-10T00:00:00.000Z",
"duration": 25.7,
"collections": [],
"taggedUsers": [],
"createdAt": "2021-08-10T06:08:39.996Z"
}
}

collection.created

This event will fire when a collection is created.

Version: HTTP/1.1
Host: rewatch-example.ngrok.io
User-Agent: Rewatch Webhooks
Accept: application/json;
charset=utf-8
Rewatch-Hook-Delivery-Nonce: 8110fe3af6872b93073b7d5af4d38b3a731f0004
Rewatch-Hook-Delivery-Signatures: 38bdef36aaba6c3ec20c0da3f17284,41f15ca050e3787069ea0b1199a602
Rewatch-Hook-Delivery-Timestamp: 2021-08-10T06:27:59Z
Rewatch-Hook-Delivery-Event: collection.created
Rewatch-Hook-Id: V2ViaG9vay0x

{
"hookId": "V2ViaG9vay0x",
"nonce": "8110fe3af6872b93073b7d5af4d38b3a731f0004",
"at": "2021-08-10T06:27:59.354Z",
"event": "collection.created",
"actor": {
"id": "VXNlci02MTcz",
"firstName": "Example",
"lastName": "User",
"email": "user@example.com",
"createdAt": "2021-07-15T04:17:22.550Z"
},
"channel": {
"url": "https://example.rewatch.com",
"name": "Rewatch Example",
"subdomain": "example",
"description": null,
"createdAt": "2021-07-15T04:17:22.545Z"
},
"collection": {
"id": "Q29sbGVjdGlvbi0xMzc2",
"url": "https://example.rewatch.com/collection/1376/all-hands",
"name": "All-hands",
"description": "Collecting the bi-weekly all hands sessions.",
"createdAt": "2021-08-10T06:27:59.321Z",
"secret": false,
"children": [],
"admins": [],
"members": [],
"parent": null
}
}

collection.updated

This event will fire when a collection’s details, such as its name, description, parent, or secret status, are changed or members are added or removed.

Version: HTTP/1.1
Host: rewatch-example.ngrok.io
User-Agent: Rewatch Webhooks
Accept: application/json;
charset=utf-8
Rewatch-Hook-Delivery-Nonce: d25336894c531863962bd0263c94fd9026c09406
Rewatch-Hook-Delivery-Signatures: 38bdef36aaba6c3ec20c0da3f17284,41f15ca050e3787069ea0b1199a602
Rewatch-Hook-Delivery-Timestamp: 2021-08-10T06:31:55Z
Rewatch-Hook-Delivery-Event: collection.updated
Rewatch-Hook-Id: V2ViaG9vay0x

{
"hookId": "V2ViaG9vay0x",
"nonce": "d25336894c531863962bd0263c94fd9026c09406",
"at": "2021-08-10T06:31:55.427Z",
"event": "collection.updated",
"actor": {
"id": "VXNlci02MTcz",
"firstName": "Example",
"lastName": "User",
"email": "user@example.com",
"createdAt": "2021-07-15T04:17:22.550Z"
},
"channel": {
"url": "https://example.rewatch.com",
"name": "Rewatch Example",
"subdomain": "example",
"description": null,
"createdAt": "2021-07-15T04:17:22.545Z"
},
"collection": {
"id": "Q29sbGVjdGlvbi0xMzc3",
"url": "https://example.rewatch.com/collection/1377/q-and-a-sessions",
"name": "Q and A Sessions",
"description": "Q and As following the bi-weekly all-hands.",
"createdAt": "2021-08-10T06:30:46.095Z",
"secret": false,
"children": [],
"admins": [],
"members": [],
"parent": {
"id": "Q29sbGVjdGlvbi0xMzc2",
"url": "https://example.rewatch.com/collection/1376/all-hands",
"name": "All-hands",
"description": "Collecting the bi-weekly all hands sessions.",
"createdAt": "2021-08-10T06:27:59.321Z",
"secret": false,
"children": [
{
"id": "Q29sbGVjdGlvbi0xMzc3",
"url": "https://example.rewatch.com/collection/1377/q-and-a-sessions",
"name": "Q and A Sessions",
"description": "Q and As following the bi-weekly all-hands.",
"createdAt": "2021-08-10T06:30:46.095Z",
"secret": false,
"children": [],
"admins": [],
"members": []
}
],
"admins": [],
"members": []
}
},
"updates": {
"parent": {
"from": null,
"to": {
"id": "Q29sbGVjdGlvbi0xMzc2",
"url": "https://example.rewatch.com/collection/1376/all-hands",
"name": "All-hands",
"description": "Collecting the bi-weekly all hands sessions.",
"createdAt": "2021-08-10T06:27:59.321Z",
"secret": false,
"children": [
{
"id": "Q29sbGVjdGlvbi0xMzc3",
"url": "https://example.rewatch.com/collection/1377/q-and-a-sessions",
"name": "Q and A Sessions",
"description": "Q and As following the bi-weekly all-hands.",
"createdAt": "2021-08-10T06:30:46.095Z",
"secret": false,
"children": [],
"admins": [],
"members": []
}
],
"admins": [],
"members": []
}
}
}
}

collection.deleted

This event will fire when a collection is deleted.

Version: HTTP/1.1
Host: rewatch-example.ngrok.io
User-Agent: Rewatch Webhooks
Accept: application/json;
charset=utf-8
Rewatch-Hook-Delivery-Nonce: d4b28e32d885ff7c851da71116c7ab51003d2257
Rewatch-Hook-Delivery-Signatures: 30c468e042a6bdeed1301764c58767d145ba5b785dac7f3cc520741d0522faf4
Rewatch-Hook-Delivery-Timestamp: 2021-08-10T06:37:46Z
Rewatch-Hook-Delivery-Event: collection.deleted
Rewatch-Hook-Id: V2ViaG9vay0x

{
"hookId": "V2ViaG9vay0x",
"nonce": "d4b28e32d885ff7c851da71116c7ab51003d2257",
"at": "2021-08-10T06:37:46.181Z",
"event": "collection.deleted",
"actor": {
"id": "VXNlci02MTcz",
"firstName": "Example",
"lastName": "User",
"email": "user@example.com",
"createdAt": "2021-07-15T04:17:22.550Z"
},
"channel": {
"url": "https://example.rewatch.com",
"name": "Rewatch Example",
"subdomain": "example",
"description": null,
"createdAt": "2021-07-15T04:17:22.545Z"
},
"collection": {
"id": "Q29sbGVjdGlvbi0xMzc3",
"url": "https://example.rewatch.com/collection/1377/q-and-a-sessions",
"name": "Q and A Sessions",
"description": "Q and As following the bi-weekly all-hands.",
"createdAt": "2021-08-10T06:30:46.095Z",
"secret": false,
"children": [],
"admins": [],
"members": []
}
}


Did this answer your question?