Update a webhook
const url = 'https://secure.ethicsportal.eu/organizations/example/webhooks/example.json';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"webhook":{"enabled":false}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://secure.ethicsportal.eu/organizations/example/webhooks/example.json \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "webhook": { "enabled": false } }'Change the name, URL, enabled state or events; only supplied fields change. Changing the URL, events or enabled state cancels pending deliveries from the previous configuration. A personal token also needs its user to be a current administrator of the organisation.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Obfuscated organisation ID returned by identity.
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Public HTTPS URL on port 443. Redirects are not followed.
Example
{ "webhook": { "enabled": false }}Responses
Section titled “Responses”The updated webhook.
object
The destination EthicsPortal sends events to, as in Stripe’s API. Other *_url fields are links within this API.
Set when a delivery failed permanently or exhausted its retries; cleared by a later success or a configuration change.
Example
{ "id": "pQrStu", "name": "Case dashboard", "url": "https://receiver.example/ethicsportal", "enabled": false, "events": [ "report.created", "report.overdue" ], "failing_since": null, "created_at": "2026-11-09T10:00:00Z", "updated_at": "2026-11-09T10:00:00Z", "deliveries_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/webhooks/pQrStu/deliveries.json"}Invalid query, body or cursor
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "invalid_request", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Missing, unknown, expired or revoked token
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "invalid_token", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}The token lacks the required scope (WWW-Authenticate names it), the user’s role does not allow the action, or an agreement must be accepted in the web application
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "insufficient_scope", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Organisation or resource missing or inaccessible, or API access suspended
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "not_found", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Validation failed; fields are named, values are not echoed
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "validation_failed", "fields": [ "events" ], "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Rate limited; retry after the Retry-After interval
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "rate_limited", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}