Webhooks
Webhook​
Path: /webhooks/:uuid
Allowed methods: GET, PUT, DELETE
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "uuid": "d2181b32-8b03-4daf-8cc0-d9168b2f6fac",
  "description": "an example webhook",
  "consumer": {
    "name": "Foo"
  },
  "provider": {
    "name": "Bar"
  },
  "enabled": true,
  "request": {
    "method": "POST",
    "url": "https://example.org/webhook",
    "headers": {
      "Content-Type": "application/json"
    },
    "body": {
      "pactUrl": "${pactbroker.pactUrl}"
    }
  },
  "events": [
    {
      "name": "contract_content_changed"
    }
  ],
  "createdAt": "2021-09-01T00:07:21+00:00",
  "_links": {
    "self": {
      "title": "an example webhook",
      "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac"
    },
    "pb:execute": {
      "title": "Test the execution of the webhook with the latest matching pact or verification by sending a POST request to this URL",
      "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac/execute"
    },
    "pb:consumer": {
      "title": "Consumer",
      "name": "Foo",
      "href": "https://pact-broker/pacticipants/Foo"
    },
    "pb:provider": {
      "title": "Provider",
      "name": "Bar",
      "href": "https://pact-broker/pacticipants/Bar"
    },
    "pb:pact-webhooks": {
      "title": "All webhooks for consumer Foo and provider Bar",
      "href": "https://pact-broker/webhooks/provider/Bar/consumer/Foo"
    },
    "pb:webhooks": {
      "title": "All webhooks",
      "href": "https://pact-broker/webhooks"
    }
  }
}
PUT​
Request​
Headers: {"Content-Type":"application/json","Accept":"application/hal+json"}
Body:
{
  "description": "an example webhook",
  "events": [
    {
      "name": "contract_content_changed"
    }
  ],
  "request": {
    "method": "POST",
    "url": "https://example.org/example",
    "username": "username",
    "password": "password",
    "headers": {
      "Accept": "application/json"
    },
    "body": {
      "pactUrl": "${pactbroker.pactUrl}"
    }
  }
}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "uuid": "d2181b32-8b03-4daf-8cc0-d9168b2f6fac",
  "description": "an example webhook",
  "enabled": true,
  "request": {
    "method": "POST",
    "url": "https://example.org/example",
    "headers": {
      "Accept": "application/json"
    },
    "body": {
      "pactUrl": "${pactbroker.pactUrl}"
    },
    "username": "username",
    "password": "**********"
  },
  "events": [
    {
      "name": "contract_content_changed"
    }
  ],
  "createdAt": "2021-09-01T00:07:21+00:00",
  "_links": {
    "self": {
      "title": "an example webhook",
      "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac"
    },
    "pb:execute": {
      "title": "Test the execution of the webhook with the latest matching pact or verification by sending a POST request to this URL",
      "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac/execute"
    },
    "pb:webhooks": {
      "title": "All webhooks",
      "href": "https://pact-broker/webhooks"
    }
  }
}
Webhooks​
Path: /webhooks
Allowed methods: GET, POST
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_links": {
    "self": {
      "title": "Webhooks",
      "href": "http://example.org/webhooks"
    },
    "pb:create": {
      "title": "POST to create a webhook",
      "href": "http://example.org/webhooks"
    },
    "pb:webhooks": [
      {
        "title": "A webhook for the pact between Foo and Bar",
        "name": "an example webhook",
        "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac"
      }
    ],
    "curies": [
      {
        "name": "pb",
        "href": "https://pact-broker/doc/webhooks-{rel}",
        "templated": true
      }
    ]
  }
}
POST​
Request​
Headers: {"Content-Type":"application/json","Accept":"application/hal+json"}
Body:
{
  "description": "an example webhook",
  "events": [
    {
      "name": "contract_content_changed"
    }
  ],
  "request": {
    "method": "POST",
    "url": "https://example.org/example",
    "username": "username",
    "password": "password",
    "headers": {
      "Accept": "application/json"
    },
    "body": {
      "pactUrl": "${pactbroker.pactUrl}"
    }
  }
}
Response​
Status: 201
Headers: {"Content-Type":"application/hal+json;charset=utf-8","Location":"https://pact-broker/webhooks/dCGCl-Ba3PqEFJ_iE9mJkQ"}
Body:
{
  "uuid": "dCGCl-Ba3PqEFJ_iE9mJkQ",
  "description": "an example webhook",
  "enabled": true,
  "request": {
    "method": "POST",
    "url": "https://example.org/example",
    "headers": {
      "Accept": "application/json"
    },
    "body": {
      "pactUrl": "${pactbroker.pactUrl}"
    },
    "username": "username",
    "password": "**********"
  },
  "events": [
    {
      "name": "contract_content_changed"
    }
  ],
  "createdAt": "2021-09-01T00:07:21+00:00",
  "_links": {
    "self": {
      "title": "an example webhook",
      "href": "https://pact-broker/webhooks/dCGCl-Ba3PqEFJ_iE9mJkQ"
    },
    "pb:execute": {
      "title": "Test the execution of the webhook with the latest matching pact or verification by sending a POST request to this URL",
      "href": "https://pact-broker/webhooks/dCGCl-Ba3PqEFJ_iE9mJkQ/execute"
    },
    "pb:webhooks": {
      "title": "All webhooks",
      "href": "https://pact-broker/webhooks"
    }
  }
}
Webhooks for consumer​
Path: /webhooks/consumer/:consumer_name
Allowed methods: POST, GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_links": {
    "self": {
      "title": "Webhooks",
      "href": "http://example.org/webhooks/consumer/Foo"
    },
    "pb:create": {
      "title": "POST to create a webhook",
      "href": "http://example.org/webhooks/consumer/Foo"
    },
    "pb:webhooks": [
    ],
    "curies": [
      {
        "name": "pb",
        "href": "https://pact-broker/doc/webhooks-{rel}",
        "templated": true
      }
    ]
  }
}
Webhooks for a provider​
Path: /webhooks/provider/:provider_name
Allowed methods: POST, GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_links": {
    "self": {
      "title": "Webhooks",
      "href": "http://example.org/webhooks/provider/Bar"
    },
    "pb:create": {
      "title": "POST to create a webhook",
      "href": "http://example.org/webhooks/provider/Bar"
    },
    "pb:webhooks": [
    ],
    "curies": [
      {
        "name": "pb",
        "href": "https://pact-broker/doc/webhooks-{rel}",
        "templated": true
      }
    ]
  }
}
Webhooks for consumer and provider​
Path: /webhooks/provider/:provider_name/consumer/:consumer_name
Allowed methods: POST, GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_links": {
    "self": {
      "title": "Webhooks",
      "href": "http://example.org/webhooks/provider/Bar/consumer/Foo"
    },
    "pb:create": {
      "title": "POST to create a webhook",
      "href": "http://example.org/webhooks/provider/Bar/consumer/Foo"
    },
    "pb:webhooks": [
      {
        "title": "A webhook for the pact between Foo and Bar",
        "name": "an example webhook",
        "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac"
      }
    ],
    "curies": [
      {
        "name": "pb",
        "href": "https://pact-broker/doc/webhooks-{rel}",
        "templated": true
      }
    ]
  }
}
Pact webhooks​
Path: /pacts/provider/:provider_name/consumer/:consumer_name/webhooks
Allowed methods: POST, GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_links": {
    "self": {
      "title": "Pact webhooks",
      "href": "http://example.org/pacts/provider/Bar/consumer/Foo/webhooks"
    },
    "pb:create": {
      "title": "POST to create a webhook",
      "href": "http://example.org/pacts/provider/Bar/consumer/Foo/webhooks"
    },
    "pb:webhooks": [
      {
        "title": "A webhook for the pact between Foo and Bar",
        "name": "an example webhook",
        "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac"
      }
    ],
    "curies": [
      {
        "name": "pb",
        "href": "https://pact-broker/doc/webhooks-{rel}",
        "templated": true
      }
    ]
  }
}
Webhooks status​
Path: /pacts/provider/:provider_name/consumer/:consumer_name/webhooks/status
Allowed methods: GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "summary": {
    "successful": 0,
    "failed": 0,
    "notRun": 1
  },
  "_embedded": {
    "triggeredWebhooks": [
      {
        "name": "POST example.org",
        "status": "not_run",
        "attemptsMade": 1,
        "attemptsRemaining": 6,
        "triggerType": "resource_creation",
        "eventName": "contract_content_changed",
        "triggeredAt": "2021-09-01T00:07:21+00:00",
        "_links": {
          "pb:logs": {
            "href": "https://pact-broker/triggered-webhooks/6cd5cc48-db3c-4a4c-a36d-e9bedeb9d91e/logs",
            "title": "Webhook execution logs",
            "name": "POST example.org"
          },
          "pb:webhook": {
            "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac",
            "title": "Webhook",
            "name": "POST example.org"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "http://example.org/pacts/provider/Bar/consumer/Foo/webhooks/status",
      "title": "Webhooks status"
    },
    "pb:error-logs": [
    ],
    "pb:pact-webhooks": {
      "title": "Webhooks for the pact between Foo and Bar",
      "href": "https://pact-broker/pacts/provider/Bar/consumer/Foo/webhooks"
    },
    "pb:pact-version": {
      "href": "https://pact-broker/pacts/provider/Bar/consumer/Foo/version/3e1f00a04",
      "title": "Pact",
      "name": "Pact between Foo (3e1f00a04) and Bar"
    },
    "pb:consumer": {
      "href": "https://pact-broker/pacticipants/Foo",
      "title": "Consumer",
      "name": "Foo"
    },
    "pb:provider": {
      "href": "https://pact-broker/pacticipants/Bar",
      "title": "Provider",
      "name": "Bar"
    }
  }
}
Executing a saved webhook​
Path: /webhooks/:uuid/execute
Allowed methods: POST
POST​
Request​
Headers: {"Content-Type":"application/json","Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "request": {
    "headers": {
      "accept": "*/*",
      "user-agent": "Pact Broker",
      "content-type": "application/json"
    },
    "body": {
      "pactUrl": "https://pact-broker/pacts/provider/Bar/consumer/Foo/pact-version/3e193ecb37ad04b43ce974a38352c704b2e0ed6b/metadata/3e193ecb37ad04b43ce974a38352c704b2e0ed6b"
    },
    "url": "/webhook"
  },
  "response": {
    "status": 200,
    "headers": {
    },
    "body": ""
  },
  "logs": "[2021-09-01T10:07:21Z] DEBUG: Webhook context {\"base_url\":\"https://pact-broker\",\"event_name\":\"test\"}\n[2021-09-01T10:07:21Z] INFO: HTTP/1.1 POST https://example.org/webhook\n[2021-09-01T10:07:21Z] INFO: accept: */*\n[2021-09-01T10:07:21Z] INFO: user-agent: Pact Broker\n[2021-09-01T10:07:21Z] INFO: content-type: application/json\n[2021-09-01T10:07:21Z] INFO: {\"pactUrl\":\"https://pact-broker/pacts/provider/Bar/consumer/Foo/pact-version/3e193ecb37ad04b43ce974a38352c704b2e0ed6b/metadata/3e193ecb37ad04b43ce974a38352c704b2e0ed6b\"}\n[2021-09-01T10:07:21Z] INFO: HTTP/1.0 200 \n[2021-09-01T10:07:21Z] INFO: \n",
  "success": true,
  "_links": {
  }
}
Executing an unsaved webhook​
Path: /webhooks/execute
Allowed methods: POST
POST​
Request​
Headers: {"Content-Type":"application/json","Accept":"application/hal+json"}
Body:
{
  "description": "an example webhook",
  "events": [
    {
      "name": "contract_content_changed"
    }
  ],
  "request": {
    "method": "POST",
    "url": "https://example.org/example",
    "username": "username",
    "password": "password",
    "headers": {
      "Accept": "application/json"
    },
    "body": {
      "pactUrl": "${pactbroker.pactUrl}"
    }
  }
}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "request": {
    "headers": {
      "accept": "application/json",
      "user-agent": "Pact Broker",
      "authorization": "**********"
    },
    "body": {
      "pactUrl": "https://pact-broker/pacts/provider/Bar/consumer/Foo/pact-version/3e193ecb37ad04b43ce974a38352c704b2e0ed6b/metadata/3e193ecb37ad04b43ce974a38352c704b2e0ed6b"
    },
    "url": "/example"
  },
  "response": {
    "status": 200,
    "headers": {
    },
    "body": ""
  },
  "logs": "[2021-09-01T10:07:21Z] DEBUG: Webhook context {\"base_url\":\"https://pact-broker\",\"event_name\":\"test\"}\n[2021-09-01T10:07:21Z] INFO: HTTP/1.1 POST https://example.org/example\n[2021-09-01T10:07:21Z] INFO: accept: application/json\n[2021-09-01T10:07:21Z] INFO: user-agent: Pact Broker\n[2021-09-01T10:07:21Z] INFO: authorization: **********\n[2021-09-01T10:07:21Z] INFO: {\"pactUrl\":\"https://pact-broker/pacts/provider/Bar/consumer/Foo/pact-version/3e193ecb37ad04b43ce974a38352c704b2e0ed6b/metadata/3e193ecb37ad04b43ce974a38352c704b2e0ed6b\"}\n[2021-09-01T10:07:21Z] INFO: HTTP/1.0 200 \n[2021-09-01T10:07:21Z] INFO: \n",
  "success": true,
  "_links": {
  }
}
Triggered webhooks for pact publication​
Path: /pacts/provider/:provider_name/consumer/:consumer_name/version/:consumer_version_number/triggered-webhooks
Allowed methods: GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_embedded": {
    "triggeredWebhooks": [
      {
        "name": "POST example.org",
        "status": "not_run",
        "attemptsMade": 1,
        "attemptsRemaining": 6,
        "triggerType": "resource_creation",
        "eventName": "contract_content_changed",
        "triggeredAt": "2021-09-01T00:07:21+00:00",
        "_links": {
          "pb:logs": {
            "href": "https://pact-broker/triggered-webhooks/6cd5cc48-db3c-4a4c-a36d-e9bedeb9d91e/logs",
            "title": "Webhook execution logs",
            "name": "POST example.org"
          },
          "pb:webhook": {
            "href": "https://pact-broker/webhooks/d2181b32-8b03-4daf-8cc0-d9168b2f6fac",
            "title": "Webhook",
            "name": "POST example.org"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "title": "Webhooks triggered by the publication of the pact between Foo (3e1f00a04) and Bar",
      "href": "http://example.org/pacts/provider/Bar/consumer/Foo/version/3e1f00a04/triggered-webhooks"
    }
  }
}
Triggered webhooks for verification publication​
Path: /pacts/provider/:provider_name/consumer/:consumer_name/pact-version/:pact_version_sha/verification-results/:verification_number/triggered-webhooks
Allowed methods: GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"application/hal+json;charset=utf-8"}
Body:
{
  "_embedded": {
    "triggeredWebhooks": [
    ]
  },
  "_links": {
    "self": {
      "title": "Webhooks triggered by the publication of verification result 1",
      "href": "http://example.org/pacts/provider/Bar/consumer/Foo/pact-version/3e193ecb37ad04b43ce974a38352c704b2e0ed6b/verification-results/1/triggered-webhooks"
    }
  }
}
Logs of triggered webhook​
Path: /triggered-webhooks/:uuid/logs
Allowed methods: GET
GET​
Request​
Headers: {"Accept":"application/hal+json"}
Response​
Status: 200
Headers: {"Content-Type":"text/plain;charset=utf-8"}
Body:
logs