curl "https://api.phrase.com/v2/projects/:project_id/webhooks/:id" \
-u USERNAME_OR_ACCESS_TOKEN \
-X PATCH \
-d '{"callback_url":"http://example.com/hooks/phraseapp-notifications","description":"My webhook for chat notifications","events":"locales:create,translations:update"}' \
-H 'Content-Type: application/json'phrase webhooks update \
--project_id <project_id> \
--id <id> \
--data '{"callback_url": "http://example.com/hooks/phraseapp-notifications", "description": "My webhook for chat notifications", "events": "locales:create,translations:update"}' \
--access_token <token>import requests
url = "https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}"
payload = {
"callback_url": "http://example.com/hooks/phraseapp-notifications",
"secret": "secr3t",
"description": "My webhook for chat notifications",
"events": "locales:create,translations:update",
"active": None,
"include_branches": None
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
callback_url: 'http://example.com/hooks/phraseapp-notifications',
secret: 'secr3t',
description: 'My webhook for chat notifications',
events: 'locales:create,translations:update',
active: null,
include_branches: null
})
};
fetch('https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'callback_url' => 'http://example.com/hooks/phraseapp-notifications',
'secret' => 'secr3t',
'description' => 'My webhook for chat notifications',
'events' => 'locales:create,translations:update',
'active' => null,
'include_branches' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}"
payload := strings.NewReader("{\n \"callback_url\": \"http://example.com/hooks/phraseapp-notifications\",\n \"secret\": \"secr3t\",\n \"description\": \"My webhook for chat notifications\",\n \"events\": \"locales:create,translations:update\",\n \"active\": null,\n \"include_branches\": null\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"callback_url\": \"http://example.com/hooks/phraseapp-notifications\",\n \"secret\": \"secr3t\",\n \"description\": \"My webhook for chat notifications\",\n \"events\": \"locales:create,translations:update\",\n \"active\": null,\n \"include_branches\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"callback_url\": \"http://example.com/hooks/phraseapp-notifications\",\n \"secret\": \"secr3t\",\n \"description\": \"My webhook for chat notifications\",\n \"events\": \"locales:create,translations:update\",\n \"active\": null,\n \"include_branches\": null\n}"
response = http.request(request)
puts response.read_body{
"id": "abcd1234cdef1234abcd1234cdef1234",
"callback_url": "http://example.com/hooks/phraseapp-notifications",
"description": "My webhook for chat notifications",
"events": "locales:create,translations:update",
"active": true,
"include_branches": false,
"created_at": "2015-01-28T09:52:53Z",
"updated_at": "2015-01-28T09:52:53Z"
}{
"message": "Validation Failed",
"errors": [
{
"resource": "Resource",
"field": "name",
"message": "can't be blank"
}
]
}Update a webhook
Update an existing webhook.
curl "https://api.phrase.com/v2/projects/:project_id/webhooks/:id" \
-u USERNAME_OR_ACCESS_TOKEN \
-X PATCH \
-d '{"callback_url":"http://example.com/hooks/phraseapp-notifications","description":"My webhook for chat notifications","events":"locales:create,translations:update"}' \
-H 'Content-Type: application/json'phrase webhooks update \
--project_id <project_id> \
--id <id> \
--data '{"callback_url": "http://example.com/hooks/phraseapp-notifications", "description": "My webhook for chat notifications", "events": "locales:create,translations:update"}' \
--access_token <token>import requests
url = "https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}"
payload = {
"callback_url": "http://example.com/hooks/phraseapp-notifications",
"secret": "secr3t",
"description": "My webhook for chat notifications",
"events": "locales:create,translations:update",
"active": None,
"include_branches": None
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
callback_url: 'http://example.com/hooks/phraseapp-notifications',
secret: 'secr3t',
description: 'My webhook for chat notifications',
events: 'locales:create,translations:update',
active: null,
include_branches: null
})
};
fetch('https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'callback_url' => 'http://example.com/hooks/phraseapp-notifications',
'secret' => 'secr3t',
'description' => 'My webhook for chat notifications',
'events' => 'locales:create,translations:update',
'active' => null,
'include_branches' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}"
payload := strings.NewReader("{\n \"callback_url\": \"http://example.com/hooks/phraseapp-notifications\",\n \"secret\": \"secr3t\",\n \"description\": \"My webhook for chat notifications\",\n \"events\": \"locales:create,translations:update\",\n \"active\": null,\n \"include_branches\": null\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"callback_url\": \"http://example.com/hooks/phraseapp-notifications\",\n \"secret\": \"secr3t\",\n \"description\": \"My webhook for chat notifications\",\n \"events\": \"locales:create,translations:update\",\n \"active\": null,\n \"include_branches\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phrase.com/v2/projects/{project_id}/webhooks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"callback_url\": \"http://example.com/hooks/phraseapp-notifications\",\n \"secret\": \"secr3t\",\n \"description\": \"My webhook for chat notifications\",\n \"events\": \"locales:create,translations:update\",\n \"active\": null,\n \"include_branches\": null\n}"
response = http.request(request)
puts response.read_body{
"id": "abcd1234cdef1234abcd1234cdef1234",
"callback_url": "http://example.com/hooks/phraseapp-notifications",
"description": "My webhook for chat notifications",
"events": "locales:create,translations:update",
"active": true,
"include_branches": false,
"created_at": "2015-01-28T09:52:53Z",
"updated_at": "2015-01-28T09:52:53Z"
}{
"message": "Validation Failed",
"errors": [
{
"resource": "Resource",
"field": "name",
"message": "can't be blank"
}
]
}Authorizations
Enter your token in the format token TOKEN
Headers
Two-Factor-Authentication token (optional)
Body
Callback URL to send requests to
"http://example.com/hooks/phraseapp-notifications"
Webhook secret used to calculate signature. If empty, the default project secret will be used.
"secr3t"
Webhook description. Send an empty string or null to clear the value; omit the field to leave it unchanged. The Phrase CLI drops null values before sending, so use an empty string there.
"My webhook for chat notifications"
List of event names to trigger the webhook (separated by comma)
"locales:create,translations:update"
Whether webhook is active or inactive
null
If enabled, webhook will also be triggered for events from branches of the project specified.
null
Was this page helpful?