Create custom events for webhooks in Label Studio
If you want to trigger custom events for webhooks in Label Studio, you can extend the webhook event model.
Create a custom webhook event
To create a custom webhook event, add your own action to the WebhookActions
model.
For example:
class WebhookAction(models.Model):
...
SOMETHING_HAPPENED = 'SOMETHING_HAPPENED'
...
ACTIONS = {
SOMETHING_HAPPENED: {
'name': _('Something happened'),
'description': _("A thing happened. We wanted to let you know."),
'key': 'something',
},
...
...
After declaring the action and the associated properties and payload details in the WebhookAction
class, call the event action in the code where it occurs. For example:
...python
result = do_something()
emit_webhooks(organization, WebhookAction.SOMETHING_HAPPENED, {'something': [result]})
...
You can retrieve the organization details using Organization.objects.first()
.
Call event actions with Python functions
There are several functions you can use to call event actions. Refer to the following table:
Python function | When to use | Additional details |
---|---|---|
get_active_webhooks() |
Get all active webhooks. | |
run_webhook() |
Run one webhook and pass some payload. | |
emit_webhooks() |
Send requests for all webhooks for an action. | |
emit_webhooks_for_instances() |
Send serialized instances with webhook requests. | You must declare a serializer in the WebhookAction.ACTIONS model. |
Call event actions with decorators in API source code
You can use decorators with the CRUD REST methods to send event actions to webhooks. You can use the following:
Decorator syntax | When to use | Details |
---|---|---|
@api_webhook() |
POST /PUT /PATCH requests |
Expects a response with an id and uses the .get_object() function after the request to send that information. |
@api_webhook_for_delete() |
DELETE |
Sends only the id field after a successfully delete operation. |