{
"id": "place.stream.server.createWebhook",
"defs": {
"main": {
"type": "procedure",
"input": {
"schema": {
"type": "object",
"required": [
"url",
"events"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The webhook URL where events will be sent."
},
"name": {
"type": "string",
"maxLength": 100,
"description": "A user-friendly name for this webhook."
},
"active": {
"type": "boolean",
"default": false,
"description": "Whether this webhook should be active upon creation."
},
"events": {
"type": "array",
"items": {
"enum": [
"chat",
"livestream",
"follow",
"mention"
],
"type": "string"
},
"description": "The types of events this webhook should receive."
},
"prefix": {
"type": "string",
"maxLength": 100,
"description": "Text to prepend to webhook messages."
},
"suffix": {
"type": "string",
"maxLength": 100,
"description": "Text to append to webhook messages."
},
"rewrite": {
"type": "array",
"items": {
"ref": "place.stream.server.defs#rewriteRule",
"type": "ref"
},
"description": "Text replacement rules for webhook messages."
},
"muteWords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"description": "Words to filter out from chat messages. Messages containing any of these words will not be forwarded."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "A description of what this webhook is used for."
}
}
},
"encoding": "application/json"
},
"errors": [
{
"name": "InvalidUrl",
"description": "The provided webhook URL is invalid or unreachable."
},
{
"name": "DuplicateWebhook",
"description": "A webhook with this URL already exists for this user."
},
{
"name": "TooManyWebhooks",
"description": "The user has reached their maximum number of webhooks."
}
],
"output": {
"schema": {
"type": "object",
"required": [
"webhook"
],
"properties": {
"webhook": {
"ref": "place.stream.server.defs#webhook",
"type": "ref"
}
}
},
"encoding": "application/json"
},
"parameters": null,
"description": "Create a new webhook for receiving Streamplace events."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}