doc/pacts/markdown/Pact Broker Client - Pact Broker

A pact between Pact Broker Client and Pact Broker

Requests from Pact Broker Client to Pact Broker

Interactions


Given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with 2 environments that aren’t test available for deployment, upon receiving a request for a pacticipant version from Pact Broker Client, with

{
  "method": "GET",
  "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-Foo-5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:record-deployment": [
        {
          "name": "prod",
          "href": "href"
        },
        {
          "name": "dev",
          "href": "href"
        }
      ]
    }
  }
}


Given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for deployment, upon receiving a request for a pacticipant version from Pact Broker Client, with

{
  "method": "GET",
  "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-Foo-5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:record-deployment": [
        {
          "name": "test",
          "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-RECORD-DEPLOYMENT-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST"
        }
      ]
    }
  }
}


Given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for release, upon receiving a request for a pacticipant version from Pact Broker Client, with

{
  "method": "GET",
  "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-Foo-5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:record-release": [
        {
          "name": "test",
          "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-RECORD-RELEASE-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST"
        }
      ]
    }
  }
}


Given an environment with name test and UUID 16926ef3-590f-4e3f-838e-719717aa88c9 exists, upon receiving a request for an environment from Pact Broker Client, with

{
  "method": "GET",
  "path": "/HAL-REL-PLACEHOLDER-PB-ENVIRONMENT-16926ef3-590f-4e3f-838e-719717aa88c9",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:currently-deployed-deployed-versions": {
        "href": "http://localhost:1234/PLACEHOLDER-ENVIRONMENT-CURRENTLY-DEPLOYED-16926ef3-590f-4e3f-838e-719717aa88c9"
      }
    }
  }
}


Upon receiving a request for the compatibility matrix for a pacticipant that does not exist from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Wiffle&q%5B%5D%5Bversion%5D=1.2.3&q%5B%5D%5Bpacticipant%5D=Meep&q%5B%5D%5Bversion%5D=9.9.9&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 400,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "errors": [
      "an error message"
    ]
  }
}


Given the pact for Foo version 1.2.3 and 1.2.4 has been verified by Bar version 4.5.6, upon receiving a request for the compatibility matrix for all versions of Foo and Bar from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bpacticipant%5D=Bar&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      },
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given the pact for Foo Thing version 1.2.3 has been verified by Bar version 4.5.6, upon receiving a request for the compatibility matrix for Foo version 1.2.3 and Bar version 4.5.6 from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo%20Thing&q%5B%5D%5Bversion%5D=1.2.3&q%5B%5D%5Bpacticipant%5D=Bar&q%5B%5D%5Bversion%5D=4.5.6&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "reason": "some text",
      "unknown": 1
    },
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given the pact for Foo version 1.2.3 has been verified by Bar version 4.5.6, upon receiving a request for the compatibility matrix for Foo version 1.2.3 and Bar version 4.5.6 from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bversion%5D=1.2.3&q%5B%5D%5Bpacticipant%5D=Bar&q%5B%5D%5Bversion%5D=4.5.6&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "reason": "some text",
      "unknown": 1
    },
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given the pact for Foo version 1.2.3 has been successfully verified by Bar version 4.5.6 with tag prod, and 1.2.4 unsuccessfully by 9.9.9, upon receiving a request for the compatibility matrix for Foo version 1.2.3 and the latest prod version of Bar from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bversion%5D=1.2.3&q%5B%5D%5Bpacticipant%5D=Bar&q%5B%5D%5Blatest%5D=true&q%5B%5D%5Btag%5D=prod&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "reason": "some text",
      "unknown": 1
    },
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given the pact for Foo version 1.2.3 has been successfully verified by Bar version 4.5.6 (tagged prod) and version 5.6.7, upon receiving a request for the compatibility matrix for Foo version 1.2.3 and the latest prod versions of all other pacticipants from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bversion%5D=1.2.3&latestby=cvp&latest=true&tag=prod"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "1.2.3"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "4.5.6"
          }
        }
      }
    ]
  }
}


Given the pact for Foo version 1.2.3 has been successfully verified by Bar version 4.5.6, and 1.2.4 unsuccessfully by 9.9.9, upon receiving a request for the compatibility matrix for Foo version 1.2.3 and the latest version of Bar from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bversion%5D=1.2.4&q%5B%5D%5Bpacticipant%5D=Bar&q%5B%5D%5Blatest%5D=true&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "reason": "some text",
      "unknown": 1
    },
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given the pact for Foo version 1.2.3 has been verified by Bar version 4.5.6, upon receiving a request for the compatibility matrix where one or more versions does not exist from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bversion%5D=1.2.3&q%5B%5D%5Bpacticipant%5D=Bar&q%5B%5D%5Bversion%5D=9.9.9&latestby=cvpv"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "reason": "an error message"
    }
  }
}


Given the pact for Foo version 1.2.3 has been verified by Bar version 4.5.6 and version 5.6.7, upon receiving a request for the compatibility matrix where only the version of Foo is specified from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bversion%5D=1.2.3&latestby=cvp&latest=true"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "reason": "some text",
      "unknown": 1
    },
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given an environment with name test exists, upon receiving a request for the environments from Pact Broker Client, with

{
  "method": "GET",
  "path": "/HAL-REL-PLACEHOLDER-PB-ENVIRONMENTS",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:environments": [
        {
          "name": "test",
          "href": "href"
        }
      ]
    }
  }
}


Upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "get",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:webhooks": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-WEBHOOKS"
      },
      "pb:pacticipants": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-PACTICIPANTS"
      },
      "pb:pacticipant": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-{pacticipant}"
      }
    }
  }
}


Given the pacticipant relations are present, upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "get",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:pacticipants": {
        "href": "http://localhost:1234/pacticipants"
      },
      "pb:pacticipant": {
        "href": "http://localhost:1234/pacticipants/{pacticipant}"
      }
    }
  }
}


Given the pb:latest-tagged-version relation exists in the index resource, upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "get",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json, application/json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:latest-tagged-version": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-TAGGED-VERSION-{pacticipant}-{tag}"
      }
    }
  }
}


Given the pb:latest-version relation exists in the index resource, upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "get",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json, application/json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:latest-version": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-VERSION-{pacticipant}"
      }
    }
  }
}


Given the pb:pacticipant-branch relation exists in the index resource, upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "GET",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:pacticipant-branch": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-BRANCH-{pacticipant}-{branch}"
      }
    }
  }
}


Given the pb:pacticipant-version and pb:environments relations exist in the index resource, upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "GET",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:pacticipant-version": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-{pacticipant}-{version}"
      },
      "pb:environments": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-ENVIRONMENTS"
      }
    }
  }
}


Given the pb:publish-contracts relations exists in the index resource, upon receiving a request for the index resource from Pact Broker Client, with

{
  "method": "GET",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:publish-contracts": {
        "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-PUBLISH-CONTRACTS"
      }
    }
  }
}


Upon receiving a request for the index resource with the webhook relation from Pact Broker Client, with

{
  "method": "get",
  "path": "/",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:webhook": {
        "href": "http://localhost:1234/webhooks/{uuid}",
        "templated": true
      }
    }
  }
}


Given a latest pact between Condor and the Pricing Service exists, upon receiving a request for the list of the latest pacts from all consumers for the Pricing Service’ from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/provider/Pricing%20Service/latest"
}

Pact Broker will respond with:

{
  "status": 200,
  "body": {
    "_links": {
      "provider": {
        "href": "http://example.org/pacticipants/Pricing%20Service",
        "title": "Pricing Service"
      },
      "pb:pacts": [
        {
          "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
          "title": "Pact between Condor (v1.3.0) and Pricing Service",
          "name": "Condor"
        }
      ]
    }
  }
}


Given tagged as prod pact between Condor and the Pricing Service exists, upon receiving a request for the list of the latest prod pacts from all consumers for the Pricing Service’ from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/provider/Pricing%20Service/latest/prod"
}

Pact Broker will respond with:

{
  "status": 200,
  "body": {
    "_links": {
      "provider": {
        "href": "http://example.org/pacticipants/Pricing%20Service",
        "title": "Pricing Service"
      },
      "pb:pacts": [
        {
          "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
          "title": "Pact between Condor (v1.3.0) and Pricing Service",
          "name": "Condor"
        }
      ]
    }
  }
}


Given the pact for Foo version 1.2.3 has been successfully verified by Bar version 4.5.6, and 1.2.4 unsuccessfully by 9.9.9, upon receiving a request for the successful rows of the compatibility matrix for all versions of Foo and Bar from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Bpacticipant%5D=Bar&latestby=cvpv&success%5B%5D=true"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "reason": "some text",
      "unknown": 1
    },
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "4"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "5"
          }
        },
        "verificationResult": {
          "verifiedAt": "2017-10-10T12:49:04+11:00",
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "pact": {
          "createdAt": "2017-10-10T12:49:04+11:00"
        }
      }
    ]
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, and Condor already has a pact published for version 1.3.0, upon receiving a request retrieve a pact for a specific version from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}


Upon receiving a request to create a global webhook with a JSON body from Pact Broker Client, with

{
  "method": "post",
  "path": "/HAL-REL-PLACEHOLDER-PB-WEBHOOKS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Upon receiving a request to create a pacticipant from Pact Broker Client, with

{
  "method": "post",
  "path": "/pacticipants",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "name": "Foo",
    "repositoryUrl": "http://foo"
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "name": "Foo",
    "repositoryUrl": "http://foo",
    "_links": {
      "self": {
        "href": "http://localhost:1234/pacticipants/Foo"
      }
    }
  }
}


Given ‘Condor’ does not exist in the pact-broker, upon receiving a request to create a webhook for a consumer and provider from Pact Broker Client, with

{
  "method": "post",
  "path": "/webhooks/provider/Pricing%20Service/consumer/Condor",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    }
  }
}

Pact Broker will respond with:

{
  "status": 404,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving a request to create a webhook with a JSON body and a uuid from Pact Broker Client, with

{
  "method": "put",
  "path": "/webhooks/696c5f93-1b7f-44bc-8d03-59440fcaa9a0",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "consumer": {
      "name": "Condor"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving a request to create a webhook with a JSON body for a consumer from Pact Broker Client, with

{
  "method": "post",
  "path": "/HAL-REL-PLACEHOLDER-PB-WEBHOOKS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "consumer": {
      "name": "Condor"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving a request to create a webhook with a JSON body for a consumer and provider from Pact Broker Client, with

{
  "method": "post",
  "path": "/webhooks/provider/Pricing%20Service/consumer/Condor",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Upon receiving a request to create a webhook with a JSON body for a consumer specified by a label from Pact Broker Client, with

{
  "method": "post",
  "path": "/HAL-REL-PLACEHOLDER-PB-WEBHOOKS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "consumer": {
      "label": "consumer_label"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Upon receiving a request to create a webhook with a JSON body for a consumer that does not exist from Pact Broker Client, with

{
  "method": "post",
  "path": "/HAL-REL-PLACEHOLDER-PB-WEBHOOKS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "consumer": {
      "name": "Condor"
    }
  }
}

Pact Broker will respond with:

{
  "status": 400,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "errors": {
      "consumer.name": [
        "Some error"
      ]
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving a request to create a webhook with a JSON body for a provider from Pact Broker Client, with

{
  "method": "post",
  "path": "/HAL-REL-PLACEHOLDER-PB-WEBHOOKS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "provider": {
      "name": "Pricing Service"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Upon receiving a request to create a webhook with a JSON body for a provider specified by a label from Pact Broker Client, with

{
  "method": "post",
  "path": "/HAL-REL-PLACEHOLDER-PB-WEBHOOKS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "provider": {
      "label": "provider_label"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving a request to create a webhook with a non-JSON body for a consumer and provider from Pact Broker Client, with

{
  "method": "post",
  "path": "/webhooks/provider/Pricing%20Service/consumer/Condor",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": "",
      "username": "username",
      "password": "password"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": ""
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving a request to create a webhook with every possible event type from Pact Broker Client, with

{
  "method": "post",
  "path": "/webhooks/provider/Pricing%20Service/consumer/Condor",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      },
      {
        "name": "contract_published"
      },
      {
        "name": "provider_verification_published"
      },
      {
        "name": "provider_verification_succeeded"
      },
      {
        "name": "provider_verification_failed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    }
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      },
      {
        "name": "contract_published"
      },
      {
        "name": "provider_verification_published"
      },
      {
        "name": "provider_verification_succeeded"
      },
      {
        "name": "provider_verification_failed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Given a branch named main exists for pacticipant Foo, upon receiving a request to delete a pacticipant branch from Pact Broker Client, with

{
  "method": "DELETE",
  "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-BRANCH-Foo-main"
}

Pact Broker will respond with:

{
  "status": 204
}


Given provider Bar version 4.5.6 has a successful verification for Foo version 1.2.3 tagged prod and a failed verification for version 3.4.5 tagged prod, upon receiving a request to determine if Bar can be deployed with all Foo tagged prod, ignoring the verification for Foo version 3.4.5 from Pact Broker Client, with

{
  "method": "get",
  "path": "/matrix",
  "query": "q%5B%5D%5Bpacticipant%5D=Bar&q%5B%5D%5Bversion%5D=4.5.6&q%5B%5D%5Bpacticipant%5D=Foo&q%5B%5D%5Btag%5D=prod&latestby=cvpv&ignore%5B%5D%5Bpacticipant%5D=Foo&ignore%5B%5D%5Bversion%5D=3.4.5"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "summary": {
      "deployable": true,
      "ignored": 1
    },
    "notices": [
      {
        "text": "some notice",
        "type": "info"
      }
    ],
    "matrix": [
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "1.2.3"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "4.5.6"
          }
        },
        "verificationResult": {
          "success": true,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        }
      },
      {
        "consumer": {
          "name": "Foo",
          "version": {
            "number": "3.4.5"
          }
        },
        "provider": {
          "name": "Bar",
          "version": {
            "number": "4.5.6"
          }
        },
        "verificationResult": {
          "success": false,
          "_links": {
            "self": {
              "href": "http://result"
            }
          }
        },
        "ignored": true
      }
    ]
  }
}


Given the ‘Pricing Service’ already exists in the pact-broker, upon receiving a request to get the Pricing Service from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacticipants/Pricing%20Service"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://example.org/pacticipants/Pricing%20Service"
      },
      "versions": {
        "href": "http://example.org/pacticipants/Pricing%20Service/versions"
      }
    },
    "name": "Pricing Service",
    "repositoryUrl": "git@git.realestate.com.au:business-systems/pricing-service",
    "_embedded": {
      "latest-version": {
        "_links": {
          "self": {
            "href": "http://example.org/pacticipants/Pricing%20Service/versions/1.3.0"
          }
        },
        "number": "1.3.0"
      }
    }
  }
}


Given the ‘Pricing Service’ does not exist in the pact-broker, upon receiving a request to get the Pricing Service from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacticipants/Pricing%20Service"
}

Pact Broker will respond with:

{
  "status": 404
}


Given ‘Condor’ exists in the pact-broker, upon receiving a request to list pacticipants from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacticipants"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://example.org/pacticipants"
      },
      "pacticipants": [
        {
          "href": "http://example.org/pacticipants/Condor",
          "title": "Condor"
        }
      ]
    },
    "pacticipants": [
      {
        "_links": {
          "self": {
            "href": "http://example.org/pacticipants/Condor"
          }
        },
        "name": "Condor",
        "_embedded": {
          "latest-version": {
            "_links": {
              "self": {
                "href": "http://example.org/pacticipants/Condor/versions/1.3.0"
              }
            },
            "number": "1.3.0"
          }
        }
      }
    ]
  }
}


Given a pact between Condor and the Pricing Service exists, upon receiving a request to list the latest pacts from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/latest"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://example.org/pacts/latest"
      }
    },
    "pacts": [
      {
        "_links": {
          "self": [
            {
              "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
            },
            {
              "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0"
            }
          ]
        },
        "_embedded": {
          "consumer": {
            "name": "Condor",
            "_links": {
              "self": {
                "href": "http://example.org/pacticipants/Condor"
              }
            },
            "_embedded": {
              "version": {
                "number": "1.3.0"
              }
            }
          },
          "provider": {
            "_links": {
              "self": {
                "href": "http://example.org/pacticipants/Pricing%20Service"
              }
            },
            "name": "Pricing Service"
          }
        }
      }
    ]
  }
}


Given an version is deployed to environment with UUID 16926ef3-590f-4e3f-838e-719717aa88c9 with target customer-1, upon receiving a request to list the versions deployed to an environment for a pacticipant name and application instance from Pact Broker Client, with

{
  "method": "GET",
  "path": "/PLACEHOLDER-ENVIRONMENT-CURRENTLY-DEPLOYED-16926ef3-590f-4e3f-838e-719717aa88c9",
  "query": "pacticipant=Foo",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_embedded": {
      "deployedVersions": [
        {
          "applicationInstance": "customer-1",
          "_links": {
            "self": {
              "href": "http://localhost:1234/PLACEHOLDER-DEPLOYED-VERSION-ff3adecf-cfc5-4653-a4e3-f1861092f8e0"
            }
          }
        }
      ]
    }
  }
}


Given a currently deployed version exists, upon receiving a request to mark a deployed version as not currently deploye from Pact Broker Client, with

{
  "method": "PATCH",
  "path": "/PLACEHOLDER-DEPLOYED-VERSION-ff3adecf-cfc5-4653-a4e3-f1861092f8e0",
  "headers": {
    "Content-Type": "application/merge-patch+json"
  },
  "body": {
    "currentlyDeployed": false
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "currentlyDeployed": false,
    "_embedded": {
      "version": {
        "number": "2"
      }
    }
  }
}


Given ‘Condor’ already exist in the pact-broker, but the ‘Pricing Service’ does not, upon receiving a request to publish a pact from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:latest-pact-version": {
        "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
      }
    }
  }
}


Given the ‘Pricing Service’ already exists in the pact-broker, upon receiving a request to publish a pact from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:latest-pact-version": {
        "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
      }
    }
  }
}


Given an error occurs while publishing a pact, upon receiving a request to publish a pact from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}

Pact Broker will respond with:

{
  "status": 500,
  "headers": {
    "Content-Type": "application/hal+json"
  },
  "body": {
    "error": {
      "message": "An error occurred"
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, and Condor already has a pact published for version 1.3.0, upon receiving a request to publish a pact with method patch from Pact Broker Client, with

{
  "method": "patch",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:latest-pact-version": {
        "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
      }
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, and Condor already has a pact published for version 1.3.0, upon receiving a request to publish a pact with method put from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "pb:latest-pact-version": {
        "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
      }
    }
  }
}


Upon receiving a request to publish contracts from Pact Broker Client, with

{
  "method": "POST",
  "path": "/HAL-REL-PLACEHOLDER-PB-PUBLISH-CONTRACTS",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "pacticipantName": "Foo",
    "pacticipantVersionNumber": "5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
    "branch": "main",
    "tags": [
      "dev"
    ],
    "buildUrl": "http://build",
    "contracts": [
      {
        "consumerName": "Foo",
        "providerName": "Bar",
        "specification": "pact",
        "contentType": "application/json",
        "content": "eyJjb25zdW1lciI6eyJuYW1lIjoiRm9vIn0sInByb3ZpZGVyIjp7Im5hbWUiOiJCYXIifSwiaW50ZXJhY3Rpb25zIjpbeyJkZXNjcmlwdGlvbiI6ImFuIGV4YW1wbGUgcmVxdWVzdCIsInByb3ZpZGVyU3RhdGUiOiJhIHByb3ZpZGVyIHN0YXRlIiwicmVxdWVzdCI6eyJtZXRob2QiOiJHRVQiLCJwYXRoIjoiLyIsImhlYWRlcnMiOnt9fSwicmVzcG9uc2UiOnsic3RhdHVzIjoyMDAsImhlYWRlcnMiOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vaGFsK2pzb24ifX19XSwibWV0YWRhdGEiOnsicGFjdFNwZWNpZmljYXRpb24iOnsidmVyc2lvbiI6IjIuMC4wIn19fQ==",
        "onConflict": "merge"
      }
    ]
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_embedded": {
      "pacticipant": {
        "name": "Foo"
      },
      "version": {
        "number": "5556b8149bf8bac76bc30f50a8a2dd4c22c85f30"
      }
    },
    "logs": [
      {
        "level": "info",
        "message": "some message"
      }
    ],
    "_links": {
      "pb:pacticipant-version-tags": [
        {
          "name": "dev"
        }
      ],
      "pb:contracts": [
        {
          "href": "http://some-pact"
        }
      ]
    }
  }
}


Given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for deployment, upon receiving a request to record a deployment from Pact Broker Client, with

{
  "method": "POST",
  "path": "/HAL-REL-PLACEHOLDER-PB-RECORD-DEPLOYMENT-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "applicationInstance": "blue",
    "target": "blue"
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "target": "blue"
  }
}


Given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for deployment, upon receiving a request to record a release from Pact Broker Client, with

{
  "method": "POST",
  "path": "/HAL-REL-PLACEHOLDER-PB-RECORD-RELEASE-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  }
}


Given the ‘Pricing Service’ already exists in the pact-broker, upon receiving a request to register the repository URL of a pacticipant from Pact Broker Client, with

{
  "method": "patch",
  "path": "/pacticipants/Pricing%20Service",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "repository_url": "git@git.realestate.com.au:business-systems/pricing-service"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  }
}


Given the ‘Pricing Service’ does not exist in the pact-broker, upon receiving a request to register the repository URL of a pacticipant from Pact Broker Client, with

{
  "method": "patch",
  "path": "/pacticipants/Pricing%20Service",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "repository_url": "git@git.realestate.com.au:business-systems/pricing-service"
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  }
}


Given a pacticipant with name Foo exists, upon receiving a request to retrieve a pacticipant from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacticipants/Foo",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://localhost:1234/pacticipants/Foo"
      }
    }
  }
}


Upon receiving a request to retrieve a pacticipant from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacticipants/Foo",
  "headers": {
    "Accept": "application/hal+json"
  }
}

Pact Broker will respond with:

{
  "status": 404
}


Given ‘Condor’ exists in the pact-broker with the latest tagged ‘production’ version 1.2.3, upon receiving a request to retrieve the latest ‘production’ version of Condor from Pact Broker Client, with

{
  "method": "get",
  "path": "/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-TAGGED-VERSION-Condor-production",
  "headers": {
    "Accept": "application/hal+json, application/json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "number": "1.2.3",
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url"
      }
    }
  }
}


Given a pact between Condor and the Pricing Service exists, upon receiving a request to retrieve the latest pact between Condor and the Pricing Service from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/latest"
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json",
    "X-Pact-Consumer-Version": "1.3.0"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}


Given no pact between Condor and the Pricing Service exists, upon receiving a request to retrieve the latest pact between Condor and the Pricing Service from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/latest"
}

Pact Broker will respond with:

{
  "status": 404
}


Given ‘Condor’ exists in the pact-broker with the latest version 1.2.3, upon receiving a request to retrieve the latest version of Condor from Pact Broker Client, with

{
  "method": "get",
  "path": "/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-VERSION-Condor",
  "headers": {
    "Accept": "application/hal+json, application/json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "number": "1.2.3",
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url"
      }
    }
  }
}


Given a pact between Condor and the Pricing Service exists for the production version of Condor, upon receiving a request to retrieve the pact between the production verison of Condor and the Pricing Service from Pact Broker Client, with

{
  "method": "get",
  "path": "/pacts/provider/Pricing%20Service/consumer/Condor/latest/prod",
  "headers": {
    "Accept": "application/hal+json, application/json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "consumer": {
      "name": "Condor"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "interactions": [

    ]
  }
}


Given ‘Condor’ exists in the pact-broker with version 1.3.0, tagged with ‘prod’, upon receiving a request to tag the production version of Condor from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacticipants/Condor/versions/1.3.0/tags/prod",
  "headers": {
    "Content-Type": "application/json"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0/tags/prod"
      }
    }
  }
}


Given ‘Condor’ does not exist in the pact-broker, upon receiving a request to tag the production version of Condor from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacticipants/Condor/versions/1.3.0/tags/prod",
  "headers": {
    "Content-Type": "application/json"
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0/tags/prod"
      }
    }
  }
}


Given ‘Condor’ exists in the pact-broker, upon receiving a request to tag the production version of Condor from Pact Broker Client, with

{
  "method": "put",
  "path": "/pacticipants/Condor/versions/1.3.0/tags/prod",
  "headers": {
    "Content-Type": "application/json"
  }
}

Pact Broker will respond with:

{
  "status": 201,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "_links": {
      "self": {
        "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0/tags/prod"
      }
    }
  }
}


Given a pacticipant with name Foo exists, upon receiving a request to update a pacticipant from Pact Broker Client, with

{
  "method": "patch",
  "path": "/pacticipants/Foo",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "name": "Foo",
    "repositoryUrl": "http://foo"
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "name": "Foo",
    "repositoryUrl": "http://foo",
    "_links": {
      "self": {
        "href": "http://localhost:1234/pacticipants/Foo"
      }
    }
  }
}


Given a webhook with the uuid 696c5f93-1b7f-44bc-8d03-59440fcaa9a0 exists, upon receiving a request to update a webhook from Pact Broker Client, with

{
  "method": "put",
  "path": "/webhooks/696c5f93-1b7f-44bc-8d03-59440fcaa9a0",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "url": "https://webhook",
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    },
    "provider": {
      "name": "Pricing Service"
    },
    "consumer": {
      "name": "Condor"
    }
  }
}

Pact Broker will respond with:

{
  "status": 200,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "description": "a webhook",
    "request": {
      "body": {
        "some": "body"
      }
    },
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "_links": {
      "self": {
        "href": "http://localhost:1234/some-url",
        "title": "A title"
      }
    }
  }
}


Given the ‘Pricing Service’ and ‘Condor’ already exist in the pact-broker, upon receiving an invalid request to create a webhook for a consumer and provider from Pact Broker Client, with

{
  "method": "post",
  "path": "/webhooks/provider/Pricing%20Service/consumer/Condor",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/hal+json"
  },
  "body": {
    "description": "a webhook",
    "events": [
      {
        "name": "contract_content_changed"
      }
    ],
    "request": {
      "method": "POST",
      "headers": {
        "Foo": "bar",
        "Bar": "foo"
      },
      "body": {
        "some": "body"
      },
      "username": "username",
      "password": "password"
    }
  }
}

Pact Broker will respond with:

{
  "status": 400,
  "headers": {
    "Content-Type": "application/hal+json;charset=utf-8"
  },
  "body": {
    "errors": {
      "request.url": [
        "Some error"
      ]
    }
  }
}