Skip to content

actionsflow/webhook2github

Repository files navigation

webhook2github

This API enables forward webhook requests to github repository_dispatch event webhook.

API Endpoint: https://webhook.actionsflow.workers.dev/

Usage

https://webhook.actionsflow.workers.dev/<owner>/<repo>/<your-path>?__token=<your-github-personal-token>

The default response of the webhook will use the github create-a-repository-dispatch-event API response. You can use search params __response_code, __response_content_type, __response_body to specify a custom response.

You can also use headers X-Github-Authorization instead of search params __token for more security.

The webhook also supports the cross-origin resource sharing request.

For example:

curl --request POST 'https://webhook.actionsflow.workers.dev/actionsflow/webhook2github/webhook/webhook?__token=<your-github-personal-token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "key": "value"
}'

Specify response code example:

curl --request POST 'https://webhook.actionsflow.workers.dev/actionsflow/webhook2github/webhook/webhook?__token=<your-github-personal-token>&__response_code=200' \
--header 'Content-Type: application/json' \
--data-raw '{
    "key": "value"
}'

An axios example:

var axios = require('axios')
var data = JSON.stringify({ key: 'value' })

var config = {
  method: 'post',
  url:
    'https://webhook.actionsflow.workers.dev/actionsflow/webhook2github/webhook/webhook?__token=<your-github-personal-token>',

  data: data,
}

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data))
  })
  .catch(function (error) {
    console.log(error)
  })

How It Works

This API will forward the following original webhook request:

https://webhook.actionsflow.workers.dev/<owner>/<repo>/<your-path>?__token=<your-github-personal-token>

To https://api.github.com/repos/<owner>/<repo>/dispatches, with body:

{
  "event_type": "webhook",
  "client_payload": {
    "path": "<your-path>",
    "method": "<request.method>",
    "headers": "<request.headers>",
    "body": "<request body>"
  }
}

So Github actions will be triggered with repository_dispatch event.