SonarQube · AsyncAPI Specification
Sonarqube Webhooks
Version
View Spec
View on GitHub
Code QualityDeveloper ToolsDevOpsSecurityStatic AnalysisCode SecuritySASTAsyncAPIEvents
AsyncAPI Specification
generated: '2026-11-05'
method: searched
source:
- https://docs.sonarsource.com/sonarqube-server/discovering/integrations/webhooks.md
- https://docs.sonarsource.com/sonarqube-server/project-administration/integrations/webhooks.md
name: SonarQube Server webhooks
summary: >-
SonarQube Server emits outbound webhooks after each project analysis and when an issue change flips the quality
gate status. Delivery is a POST with a JSON payload, identified by the X-SonarQube-Project header and optionally
signed with X-Sonar-Webhook-HMAC-SHA256. Webhooks are configured per project (up to 10) or globally, in the UI
or through the api/webhooks Web API endpoints, which also expose delivery history. No AsyncAPI document is
published; the payload example below is the provider's own.
asyncapi_document: null
direction: outbound
events:
- id: analysis-completed
trigger: "A project analysis is complete. This is done regardless of the status of the background task or of the quality gate."
- id: quality-gate-status-changed-by-issue-update
trigger: "An issue type, severity, or status is updated, and this update changes the quality gate status."
delivery:
method: POST
content_type: application/json; charset=UTF-8
headers:
- name: X-SonarQube-Project
purpose: project key of the analysed project
- name: X-Sonar-Webhook-HMAC-SHA256
purpose: HMAC lower-case SHA-256 hex digest of the request body, keyed with the webhook secret (only when a secret is set)
signature_verification: >-
"SonarQube uses a HMAC lower-case SHA256 digest to compute the signature of the request body." Compare the header
to your own digest; "If the signatures don't match, then the payload should be ignored."
basic_auth_in_url: "A basic authentication mechanism is supported by providing user/password in the URL of the Webhook such as https://myLogin:myPassword@my_server/foo."
timeout: "A delivery is marked as failed if the URL doesn't respond within 10 seconds."
retries: "SonarQube Server doesn't retry to deliver failed webhook deliveries. You may use the Web API to implement an automatic redelivering mechanism."
delivery_history_retention: "Response records are purged after 30 days."
max_per_project: 10
destination_validation: "By default, SonarQube Server rejects webhook URLs that resolve to internal destinations, such as loopback, private network, and cloud metadata addresses."
payload:
fields:
- serverUrl
- taskId
- status
- analysedAt
- revision
- project.key
- project.name
- project.url
- branch
- qualityGate.name
- qualityGate.status
- qualityGate.conditions[].metric
- qualityGate.conditions[].operator
- qualityGate.conditions[].errorThreshold
- qualityGate.conditions[].onLeakPeriod
- qualityGate.conditions[].status
- qualityGate.conditions[].value
- properties
custom_properties: "If you provide additional properties to your SonarScanner using the pattern sonar.analysis.*, these properties will be automatically added to the section \"properties\" of the payload."
example:
serverUrl: "<mySonarqubeURL>"
taskId: "AVh21JS2JepAEhwQ-b3u"
status: "SUCCESS"
analysedAt: "2016-11-18T10:46:28+0100"
revision: "c739069ec7105e01303e8b3065a81141aad9f129"
project:
key: "myProject"
name: "My Project"
url: "https://mycompany.com/sonarqube/project/overview?id=myproject"
properties: {}
qualityGate:
conditions:
- errorThreshold: "1"
metric: "new_security_rating"
onLeakPeriod: true
operator: "GREATER_THAN"
status: "OK"
value: "1"
management_api:
endpoints: api/webhooks (create, update, delete, list, deliveries, delivery)
note: The api/webhooks web service is documented inside each SonarQube Server instance and defined in grpc/sonarqube-ws-webhooks.proto; it is not in the 11-operation local OpenAPI.
mcp_tools: [create_webhook, list_webhooks]
gaps:
- No AsyncAPI document and no JSON Schema for the payload are published; the field list above is read from the provider's prose and example.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/sonarqube-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.