Skip to main content
Version: v1.6.0

Use Webhook to subscribe events

Webhook usage process

Configuration:

# Whether to start the Webhook admin service
eventMesh.webHook.admin.start=true

# Webhook event configuration storage mode. But currently only supports file and nacos
eventMesh.webHook.operationMode=file

# The file path of fileMode. If you write #{eventMeshHome}, in the eventMesh root directory
eventMesh.webHook.fileMode.filePath= #{eventMeshHome}/webhook

# The nacos storage mode. The configuration naming rule is eventMesh.webHook.nacosMode.{nacos native configuration key} For the specific configuration, please see [nacos github api](https://github.com/alibaba/nacos/blob/develop/api/src/main/java /com/alibaba/nacos/api/SystemPropertyKeyConst.java)
## address of nacos
eventMesh.webHook.nacosMode.serverAddr=127.0.0.1:8848

# Webhook CloudEvent sending mode. This property is the same as the eventMesh.storage.plugin.type configuration.
eventMesh.webHook.producer.connector=standalone

The second step: Add Webhook configuration information

Configuration information description:

   /**
* The path called by the manufacturer. Manufacturer event call address, [http or https]://[domain or IP]:[port]/webhook/[callbackPath]
* for example: http://127.0.0.1:10504/webhook/test/event , The full url needs to be filled in the manufacturer call input
* callbackPath is the only
*/
private String callbackPath;

/**
* manufacturer name, like github
*/
private String manufacturerName;

/**
* manufacturer domain name, like www.github.com
*/
private String manufacturerDomain;

/**
* Webhook event name, like rep-push
*/
private String manufacturerEventName;

/**
* http header content type
*/
private String contentType = "application/json";

/**
* description of this WebHookConfig
*/
private String description;

/**
* secret key, for authentication
*/
private String secret;

/**
* userName, for HTTP authentication
*/
private String userName;

/**
* password, for HTTP authentication
*/
private String password;


/**
* roll out event name, like topic to mq
*/
private String cloudEventName;

/**
* roll out data format -> CloudEvent serialization mode
* If HTTP protocol is used, the request header contentType needs to be marked
*/
private String dataContentType = "application/json";

/**
* id of cloudEvent, like uuid/manufacturerEventId
*/
private String cloudEventIdGenerateMode;

Add WebHook config

path: /webhook/insertWebHookConfig

method: POST

contentType: application/json

input params:

fielddesctype necessarydefault 
callbackPathcall address, unique addressstringY null 
manufacturerNamemanufacturer namestringY null 
manufacturerDomainmanufacturer domain namestringY null 
manufacturerEventNamemanufacturer event namestringY null 
contentTypehttp connettypestringN application/json 
descriptionconfiguration instructionsstringN null 
secretsignature stringstringN null 
userNameusernamestringN null 
passwordpasswordstringN null 
cloudEventNamecloudEvent namestringY null 
cloudEventIdGenerateModecloudEvent event object identification method, uuid or event idstringN manufacturerEventId

E.g:

{
"callbackPath":"/webhook/github/eventmesh/all",
"manufacturerName":"github",
"manufacturerDomain":"www.github.com",
"manufacturerEventName":"all",
"cloudEventName":"github-eventmesh"
}

Output params: 1 for success, 0 for failure

Query WebHook config by callback path

path: /webhook/queryWebHookConfigById

method: POST

contentType: application/json

input params:

fielddesctype necessarydefault 
callbackPathcall address, unique addressstringY null 
manufacturerNamethe caller of this callbackPath belongs tostringY null 

E.g:

{
"callbackPath":"/webhook/github/eventmesh/all",
"manufacturerName":"github"
}

Output params:

fielddesctype necessarydefault 
callbackPathcall address, unique addressstringY null 
manufacturerNamemanufacturer namestringY null 
manufacturerDomainmanufacturer domain namestringY null 
manufacturerEventNamemanufacturer event namestringY null 
contentTypehttp connettypestringN application/json 
descriptionconfiguration instructionsstringN null 
secretsignature keystringN null 
userNameuser namestringN null 
passwordpasswordstringN null 
cloudEventNamecloudEvent namestringY null 
cloudEventIdGenerateModecloudEvent event object identification method, uuid or event idstringN manufacturerEventId 

Query WebHook config by manufacturer

path: /webhook/queryWebHookConfigByManufacturer

method: POST

contentType: application/json

input params:

fielddesctype necessarydefault 
manufacturerNamemanufacturer namestringY null 
pageNumpage number of paging querystringY null 
pageSizepage size of each pagestringY null 

E.g:

{
"manufacturerName":"github",
"pageNum":1,
"pageSize":2
}

Output params:

fielddesctype necessarydefault 
callbackPathcall address, unique addressstringY null 
manufacturerNamemanufacturer namestringY null 
manufacturerDomainmanufacturer domain namestringY null 
manufacturerEventNamemanufacturer event namestringY null 
contentTypehttp connettypestringN application/json 
descriptionconfiguration instructionsstringN null 
secretsignature keystringN null 
userNameuser namestringN null 
passwordpasswordstringN null 
cloudEventNamecloudEvent namestringY null 
cloudEventIdGenerateModecloudEvent event object identification method, uuid or event idstringN manufacturerEventId 

Update WebHook config

path: /webhook/updateWebHookConfig

method: POST

contentType: application/json

input params:

fielddesctypenecessarydefault
callbackPathcall address, unique addressstringYnull
manufacturerNamemanufacturer namestringYnull
manufacturerDomainmanufacturer domain namestringYnull
manufacturerEventNamemanufacturer event namestringYnull
contentTypehttp connettypestringNapplication/json
descriptionconfiguration instructionsstringNnull
secretsignature stringstringNnull
userNameusernamestringNnull
passwordpasswordstringNnull
cloudEventNamecloudEvent namestringYnull
cloudEventIdGenerateModecloudEvent event object identification method, uuid or event idstringNmanufacturerEventId

E.g:

{
"callbackPath":"/webhook/github/eventmesh/all",
"manufacturerName":"github",
"manufacturerDomain":"www.github.com",
"manufacturerEventName":"all",
"cloudEventName":"github-eventmesh"
}

Output params: 1 for success, 0 for failure

Delete WebHook config

path: /webhook/deleteWebHookConfig

method: POST

contentType: application/json

input params:

fielddesctypenecessarydefault
callbackPathcall address, unique addressstringYnull
manufacturerNamethe caller of this callbackPath belongs tostringYnull

E.g:

{
"callbackPath":"/webhook/github/eventmesh/all",
"manufacturerName":"github"
}

Output params: 1 for success, 0 for failure

The third step: Check if the configuration is successful

  1. file storage mode. Please go to the eventMesh.webHook.fileMode.filePath directory to view. The Filename is callbackPath.
  2. nacos storage mode. Please go to the nacos service configured by eventMesh.webHook.nacosMode.serverAddr to see this.

The fourth step: Configure the consumer of cloudevent

For manufacturer's operation, please refer to Manufacturer's Webhook operation instructions.

Manufacturer's Webhook operation instructions

GitHub sign up

The first step: Enter the corresponding project

The second step: click setting

The third step: click Webhooks

The fourth step: Click on Add Webhook

The fifth step: Fill in the Webhook information

Payload URL: EventMesh service address and callbackPath, which must include the protocol header. For example, when the callback address callbackPath is /webhook/github/eventmesh/all, the Payload URL is http://www.example.com:10105/webhook/github/eventmesh/all.

[http or https]://[domain or IP]:[port]/webhook/[callbackPath]

Content type: http header content type

Secret: signature string