Each event is sent as an HTTP POST with Content-Type: application/json and the headers:
X-Claim-Event: claimed, unclaimed or testX-Claim-Signature: sha256=<hex>: HMAC-SHA256 of the raw body, only if a secret is setFields without a value (e.g. reason) are omitted. Any 2xx answer counts as success.
Claiming several tests sends one event per test.
{
"event": "claimed", // "claimed" | "unclaimed"
"type": "test", // "test" | "build"
"jenkinsUrl": "https://jenkins.example.com/",
"job": "folder/my-job",
"build": 42,
"buildUrl": "https://jenkins.example.com/job/folder/job/my-job/42/",
"test": "junit/pkg/MyClass/myMethod", // only for type "test"
"testUrl": "https://jenkins.example.com/job/folder/job/my-job/42/testReport/junit/pkg/MyClass/myMethod",
"claimedBy": { "id": "alice", "name": "Alice A." }, // on "unclaimed": the previous claimant
"triggeredBy": { "id": "bob", "name": "Bob B." }, // user who claimed/assigned/unclaimed
"reason": "Known flaky, see TICKET-123",
"sticky": true,
"propagated": false, // true if the claim is also applied to following builds
"timestamp": "2026-11-11T10:00:00Z"
}
The Test webhook button sends:
{ "event": "test", "message": "Test event from the Jenkins Claim plugin", "jenkinsUrl": "https://jenkins.example.com/" }