pact_broker-client 1.13.1 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/CHANGELOG.md +17 -0
  4. data/README.md +28 -17
  5. data/doc/markdown/Pact Broker Client - Pact Broker.md +582 -0
  6. data/doc/markdown/README.md +3 -0
  7. data/doc/pacts/markdown/Pact Broker Client - Pact Broker.md +1174 -0
  8. data/doc/pacts/markdown/README.md +3 -0
  9. data/example/scripts/README.md +13 -0
  10. data/example/scripts/deploy-consumer.sh +26 -0
  11. data/example/scripts/pact.json +67 -0
  12. data/example/scripts/publish-pact.sh +3 -0
  13. data/example/scripts/publish-verification.sh +3 -0
  14. data/example/scripts/verification.json +4 -0
  15. data/lib/pact_broker/client/base_client.rb +17 -1
  16. data/lib/pact_broker/client/cli/broker.rb +27 -0
  17. data/lib/pact_broker/client/cli/can_i_deploy_long_desc.txt +13 -3
  18. data/lib/pact_broker/client/error.rb +2 -0
  19. data/lib/pact_broker/client/matrix.rb +0 -2
  20. data/lib/pact_broker/client/version.rb +1 -1
  21. data/lib/pact_broker/client/versions.rb +15 -5
  22. data/lib/pact_broker/client/versions/describe.rb +60 -0
  23. data/lib/pact_broker/client/versions/formatter.rb +20 -0
  24. data/lib/pact_broker/client/versions/json_formatter.rb +13 -0
  25. data/lib/pact_broker/client/versions/text_formatter.rb +31 -0
  26. data/spec/integration/can_i_deploy_spec.rb +2 -2
  27. data/spec/integration/create_version_tag_spec.rb +1 -1
  28. data/spec/lib/pact_broker/client/base_client_spec.rb +28 -0
  29. data/spec/lib/pact_broker/client/versions/describe_spec.rb +65 -0
  30. data/spec/pacts/pact_broker_client-pact_broker.json +118 -0
  31. data/spec/service_providers/pact_broker_client_versions_spec.rb +114 -0
  32. data/spec/service_providers/pact_helper.rb +1 -0
  33. metadata +19 -3
@@ -0,0 +1,3 @@
1
+ ### Pacts for Pact Broker Client
2
+
3
+ * [Pact Broker Client](Pact%20Broker%20Client%20-%20Pact%20Broker.md)
@@ -0,0 +1,1174 @@
1
+ ### A pact between Pact Broker Client and Pact Broker
2
+
3
+ #### Requests from Pact Broker Client to Pact Broker
4
+
5
+ * [A request for the compatibility matrix for a pacticipant that does not exist](#a_request_for_the_compatibility_matrix_for_a_pacticipant_that_does_not_exist)
6
+
7
+ * [A request for the compatibility matrix for all versions of Foo and Bar](#a_request_for_the_compatibility_matrix_for_all_versions_of_Foo_and_Bar_given_the_pact_for_Foo_version_1.2.3_and_1.2.4_has_been_verified_by_Bar_version_4.5.6) given the pact for Foo version 1.2.3 and 1.2.4 has been verified by Bar version 4.5.6
8
+
9
+ * [A request for the compatibility matrix for Foo version 1.2.3 and Bar version 4.5.6](#a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_Bar_version_4.5.6_given_the_pact_for_Foo_Thing_version_1.2.3_has_been_verified_by_Bar_version_4.5.6) given the pact for Foo Thing version 1.2.3 has been verified by Bar version 4.5.6
10
+
11
+ * [A request for the compatibility matrix for Foo version 1.2.3 and Bar version 4.5.6](#a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_Bar_version_4.5.6_given_the_pact_for_Foo_version_1.2.3_has_been_verified_by_Bar_version_4.5.6) given the pact for Foo version 1.2.3 has been verified by Bar version 4.5.6
12
+
13
+ * [A request for the compatibility matrix for Foo version 1.2.3 and the latest prod version of Bar](#a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_the_latest_prod_version_of_Bar_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) 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
14
+
15
+ * [A request for the compatibility matrix for Foo version 1.2.3 and the latest prod versions of all other pacticipants](#a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_the_latest_prod_versions_of_all_other_pacticipants_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) 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
16
+
17
+ * [A request for the compatibility matrix for Foo version 1.2.3 and the latest version of Bar](#a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_the_latest_version_of_Bar_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) 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
18
+
19
+ * [A request for the compatibility matrix where one or more versions does not exist](#a_request_for_the_compatibility_matrix_where_one_or_more_versions_does_not_exist_given_the_pact_for_Foo_version_1.2.3_has_been_verified_by_Bar_version_4.5.6) given the pact for Foo version 1.2.3 has been verified by Bar version 4.5.6
20
+
21
+ * [A request for the compatibility matrix where only the version of Foo is specified](#a_request_for_the_compatibility_matrix_where_only_the_version_of_Foo_is_specified_given_the_pact_for_Foo_version_1.2.3_has_been_verified_by_Bar_version_4.5.6_and_version_5.6.7) given the pact for Foo version 1.2.3 has been verified by Bar version 4.5.6 and version 5.6.7
22
+
23
+ * [A request for the index resource](#a_request_for_the_index_resource_given_the_pb:latest-tagged-version_relation_exists_in_the_index_resource) given the pb:latest-tagged-version relation exists in the index resource
24
+
25
+ * [A request for the index resource](#a_request_for_the_index_resource_given_the_pb:latest-version_relation_exists_in_the_index_resource) given the pb:latest-version relation exists in the index resource
26
+
27
+ * [A request for the list of the latest pacts from all consumers for the Pricing Service'](#a_request_for_the_list_of_the_latest_pacts_from_all_consumers_for_the_Pricing_Service'_given_a_latest_pact_between_Condor_and_the_Pricing_Service_exists) given a latest pact between Condor and the Pricing Service exists
28
+
29
+ * [A request for the list of the latest prod pacts from all consumers for the Pricing Service'](#a_request_for_the_list_of_the_latest_prod_pacts_from_all_consumers_for_the_Pricing_Service'_given_tagged_as_prod_pact_between_Condor_and_the_Pricing_Service_exists) given tagged as prod pact between Condor and the Pricing Service exists
30
+
31
+ * [A request for the successful rows of the compatibility matrix for all versions of Foo and Bar](#a_request_for_the_successful_rows_of_the_compatibility_matrix_for_all_versions_of_Foo_and_Bar_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) 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
32
+
33
+ * [A request retrieve a pact for a specific version](#a_request_retrieve_a_pact_for_a_specific_version_given_the_'Pricing_Service'_and_'Condor'_already_exist_in_the_pact-broker,_and_Condor_already_has_a_pact_published_for_version_1.3.0) given the 'Pricing Service' and 'Condor' already exist in the pact-broker, and Condor already has a pact published for version 1.3.0
34
+
35
+ * [A request to get the Pricing Service](#a_request_to_get_the_Pricing_Service_given_the_'Pricing_Service'_already_exists_in_the_pact-broker) given the 'Pricing Service' already exists in the pact-broker
36
+
37
+ * [A request to get the Pricing Service](#a_request_to_get_the_Pricing_Service_given_the_'Pricing_Service'_does_not_exist_in_the_pact-broker) given the 'Pricing Service' does not exist in the pact-broker
38
+
39
+ * [A request to list pacticipants](#a_request_to_list_pacticipants_given_'Condor'_exists_in_the_pact-broker) given 'Condor' exists in the pact-broker
40
+
41
+ * [A request to list the latest pacts](#a_request_to_list_the_latest_pacts_given_a_pact_between_Condor_and_the_Pricing_Service_exists) given a pact between Condor and the Pricing Service exists
42
+
43
+ * [A request to publish a pact](#a_request_to_publish_a_pact_given_'Condor'_already_exist_in_the_pact-broker,_but_the_'Pricing_Service'_does_not) given 'Condor' already exist in the pact-broker, but the 'Pricing Service' does not
44
+
45
+ * [A request to publish a pact](#a_request_to_publish_a_pact_given_the_'Pricing_Service'_already_exists_in_the_pact-broker) given the 'Pricing Service' already exists in the pact-broker
46
+
47
+ * [A request to publish a pact](#a_request_to_publish_a_pact_given_an_error_occurs_while_publishing_a_pact) given an error occurs while publishing a pact
48
+
49
+ * [A request to publish a pact with method patch](#a_request_to_publish_a_pact_with_method_patch_given_the_'Pricing_Service'_and_'Condor'_already_exist_in_the_pact-broker,_and_Condor_already_has_a_pact_published_for_version_1.3.0) given the 'Pricing Service' and 'Condor' already exist in the pact-broker, and Condor already has a pact published for version 1.3.0
50
+
51
+ * [A request to publish a pact with method put](#a_request_to_publish_a_pact_with_method_put_given_the_'Pricing_Service'_and_'Condor'_already_exist_in_the_pact-broker,_and_Condor_already_has_a_pact_published_for_version_1.3.0) given the 'Pricing Service' and 'Condor' already exist in the pact-broker, and Condor already has a pact published for version 1.3.0
52
+
53
+ * [A request to register the repository URL of a pacticipant](#a_request_to_register_the_repository_URL_of_a_pacticipant_given_the_'Pricing_Service'_already_exists_in_the_pact-broker) given the 'Pricing Service' already exists in the pact-broker
54
+
55
+ * [A request to register the repository URL of a pacticipant](#a_request_to_register_the_repository_URL_of_a_pacticipant_given_the_'Pricing_Service'_does_not_exist_in_the_pact-broker) given the 'Pricing Service' does not exist in the pact-broker
56
+
57
+ * [A request to retrieve the latest 'production' version of Condor](#a_request_to_retrieve_the_latest_'production'_version_of_Condor_given_'Condor'_exists_in_the_pact-broker_with_the_latest_tagged_'production'_version_1.2.3) given 'Condor' exists in the pact-broker with the latest tagged 'production' version 1.2.3
58
+
59
+ * [A request to retrieve the latest pact between Condor and the Pricing Service](#a_request_to_retrieve_the_latest_pact_between_Condor_and_the_Pricing_Service_given_a_pact_between_Condor_and_the_Pricing_Service_exists) given a pact between Condor and the Pricing Service exists
60
+
61
+ * [A request to retrieve the latest pact between Condor and the Pricing Service](#a_request_to_retrieve_the_latest_pact_between_Condor_and_the_Pricing_Service_given_no_pact_between_Condor_and_the_Pricing_Service_exists) given no pact between Condor and the Pricing Service exists
62
+
63
+ * [A request to retrieve the latest version of Condor](#a_request_to_retrieve_the_latest_version_of_Condor_given_'Condor'_exists_in_the_pact-broker_with_the_latest_version_1.2.3) given 'Condor' exists in the pact-broker with the latest version 1.2.3
64
+
65
+ * [A request to retrieve the pact between the production verison of Condor and the Pricing Service](#a_request_to_retrieve_the_pact_between_the_production_verison_of_Condor_and_the_Pricing_Service_given_a_pact_between_Condor_and_the_Pricing_Service_exists_for_the_production_version_of_Condor) given a pact between Condor and the Pricing Service exists for the production version of Condor
66
+
67
+ * [A request to tag the production version of Condor](#a_request_to_tag_the_production_version_of_Condor_given_'Condor'_exists_in_the_pact-broker_with_version_1.3.0,_tagged_with_'prod') given 'Condor' exists in the pact-broker with version 1.3.0, tagged with 'prod'
68
+
69
+ * [A request to tag the production version of Condor](#a_request_to_tag_the_production_version_of_Condor_given_'Condor'_does_not_exist_in_the_pact-broker) given 'Condor' does not exist in the pact-broker
70
+
71
+ * [A request to tag the production version of Condor](#a_request_to_tag_the_production_version_of_Condor_given_'Condor'_exists_in_the_pact-broker) given 'Condor' exists in the pact-broker
72
+
73
+ #### Interactions
74
+
75
+ <a name="a_request_for_the_compatibility_matrix_for_a_pacticipant_that_does_not_exist"></a>
76
+ Upon receiving **a request for the compatibility matrix for a pacticipant that does not exist** from Pact Broker Client, with
77
+ ```json
78
+ {
79
+ "method": "get",
80
+ "path": "/matrix",
81
+ "query": "q[][pacticipant]=Wiffle&q[][version]=1.2.3&q[][pacticipant]=Meep&q[][version]=9.9.9&latestby=cvpv"
82
+ }
83
+ ```
84
+ Pact Broker will respond with:
85
+ ```json
86
+ {
87
+ "status": 400,
88
+ "body": {
89
+ "errors": [
90
+ "an error message"
91
+ ]
92
+ }
93
+ }
94
+ ```
95
+ <a name="a_request_for_the_compatibility_matrix_for_all_versions_of_Foo_and_Bar_given_the_pact_for_Foo_version_1.2.3_and_1.2.4_has_been_verified_by_Bar_version_4.5.6"></a>
96
+ 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
97
+ ```json
98
+ {
99
+ "method": "get",
100
+ "path": "/matrix",
101
+ "query": "q[][pacticipant]=Foo&q[][pacticipant]=Bar&latestby=cvpv"
102
+ }
103
+ ```
104
+ Pact Broker will respond with:
105
+ ```json
106
+ {
107
+ "status": 200,
108
+ "body": {
109
+ "matrix": [
110
+ {
111
+ "consumer": {
112
+ "name": "Foo",
113
+ "version": {
114
+ "number": "4"
115
+ }
116
+ },
117
+ "provider": {
118
+ "name": "Bar",
119
+ "version": {
120
+ "number": "5"
121
+ }
122
+ },
123
+ "verificationResult": {
124
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
125
+ "success": true
126
+ },
127
+ "pact": {
128
+ "createdAt": "2017-10-10T12:49:04+11:00"
129
+ }
130
+ },
131
+ {
132
+ "consumer": {
133
+ "name": "Foo",
134
+ "version": {
135
+ "number": "4"
136
+ }
137
+ },
138
+ "provider": {
139
+ "name": "Bar",
140
+ "version": {
141
+ "number": "5"
142
+ }
143
+ },
144
+ "verificationResult": {
145
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
146
+ "success": true
147
+ },
148
+ "pact": {
149
+ "createdAt": "2017-10-10T12:49:04+11:00"
150
+ }
151
+ }
152
+ ]
153
+ }
154
+ }
155
+ ```
156
+ <a name="a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_Bar_version_4.5.6_given_the_pact_for_Foo_Thing_version_1.2.3_has_been_verified_by_Bar_version_4.5.6"></a>
157
+ 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
158
+ ```json
159
+ {
160
+ "method": "get",
161
+ "path": "/matrix",
162
+ "query": "q[][pacticipant]=Foo%20Thing&q[][version]=1.2.3&q[][pacticipant]=Bar&q[][version]=4.5.6&latestby=cvpv"
163
+ }
164
+ ```
165
+ Pact Broker will respond with:
166
+ ```json
167
+ {
168
+ "status": 200,
169
+ "body": {
170
+ "summary": {
171
+ "deployable": true,
172
+ "reason": "some text"
173
+ },
174
+ "matrix": [
175
+ {
176
+ "consumer": {
177
+ "name": "Foo",
178
+ "version": {
179
+ "number": "4"
180
+ }
181
+ },
182
+ "provider": {
183
+ "name": "Bar",
184
+ "version": {
185
+ "number": "5"
186
+ }
187
+ },
188
+ "verificationResult": {
189
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
190
+ "success": true
191
+ },
192
+ "pact": {
193
+ "createdAt": "2017-10-10T12:49:04+11:00"
194
+ }
195
+ }
196
+ ]
197
+ }
198
+ }
199
+ ```
200
+ <a name="a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_Bar_version_4.5.6_given_the_pact_for_Foo_version_1.2.3_has_been_verified_by_Bar_version_4.5.6"></a>
201
+ 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
202
+ ```json
203
+ {
204
+ "method": "get",
205
+ "path": "/matrix",
206
+ "query": "q[][pacticipant]=Foo&q[][version]=1.2.3&q[][pacticipant]=Bar&q[][version]=4.5.6&latestby=cvpv"
207
+ }
208
+ ```
209
+ Pact Broker will respond with:
210
+ ```json
211
+ {
212
+ "status": 200,
213
+ "body": {
214
+ "summary": {
215
+ "deployable": true,
216
+ "reason": "some text"
217
+ },
218
+ "matrix": [
219
+ {
220
+ "consumer": {
221
+ "name": "Foo",
222
+ "version": {
223
+ "number": "4"
224
+ }
225
+ },
226
+ "provider": {
227
+ "name": "Bar",
228
+ "version": {
229
+ "number": "5"
230
+ }
231
+ },
232
+ "verificationResult": {
233
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
234
+ "success": true
235
+ },
236
+ "pact": {
237
+ "createdAt": "2017-10-10T12:49:04+11:00"
238
+ }
239
+ }
240
+ ]
241
+ }
242
+ }
243
+ ```
244
+ <a name="a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_the_latest_prod_version_of_Bar_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"></a>
245
+ 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
246
+ ```json
247
+ {
248
+ "method": "get",
249
+ "path": "/matrix",
250
+ "query": "q[][pacticipant]=Foo&q[][version]=1.2.3&q[][pacticipant]=Bar&q[][latest]=true&q[][tag]=prod&latestby=cvpv"
251
+ }
252
+ ```
253
+ Pact Broker will respond with:
254
+ ```json
255
+ {
256
+ "status": 200,
257
+ "body": {
258
+ "summary": {
259
+ "deployable": true,
260
+ "reason": "some text"
261
+ },
262
+ "matrix": [
263
+ {
264
+ "consumer": {
265
+ "name": "Foo",
266
+ "version": {
267
+ "number": "4"
268
+ }
269
+ },
270
+ "provider": {
271
+ "name": "Bar",
272
+ "version": {
273
+ "number": "5"
274
+ }
275
+ },
276
+ "verificationResult": {
277
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
278
+ "success": true
279
+ },
280
+ "pact": {
281
+ "createdAt": "2017-10-10T12:49:04+11:00"
282
+ }
283
+ }
284
+ ]
285
+ }
286
+ }
287
+ ```
288
+ <a name="a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_the_latest_prod_versions_of_all_other_pacticipants_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"></a>
289
+ 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
290
+ ```json
291
+ {
292
+ "method": "get",
293
+ "path": "/matrix",
294
+ "query": "q[][pacticipant]=Foo&q[][version]=1.2.3&latestby=cvp&latest=true&tag=prod"
295
+ }
296
+ ```
297
+ Pact Broker will respond with:
298
+ ```json
299
+ {
300
+ "status": 200,
301
+ "body": {
302
+ "matrix": [
303
+ {
304
+ "consumer": {
305
+ "name": "Foo",
306
+ "version": {
307
+ "number": "1.2.3"
308
+ }
309
+ },
310
+ "provider": {
311
+ "name": "Bar",
312
+ "version": {
313
+ "number": "4.5.6"
314
+ }
315
+ }
316
+ }
317
+ ]
318
+ }
319
+ }
320
+ ```
321
+ <a name="a_request_for_the_compatibility_matrix_for_Foo_version_1.2.3_and_the_latest_version_of_Bar_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"></a>
322
+ 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
323
+ ```json
324
+ {
325
+ "method": "get",
326
+ "path": "/matrix",
327
+ "query": "q[][pacticipant]=Foo&q[][version]=1.2.4&q[][pacticipant]=Bar&q[][latest]=true&latestby=cvpv"
328
+ }
329
+ ```
330
+ Pact Broker will respond with:
331
+ ```json
332
+ {
333
+ "status": 200,
334
+ "body": {
335
+ "summary": {
336
+ "deployable": true,
337
+ "reason": "some text"
338
+ },
339
+ "matrix": [
340
+ {
341
+ "consumer": {
342
+ "name": "Foo",
343
+ "version": {
344
+ "number": "4"
345
+ }
346
+ },
347
+ "provider": {
348
+ "name": "Bar",
349
+ "version": {
350
+ "number": "5"
351
+ }
352
+ },
353
+ "verificationResult": {
354
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
355
+ "success": true
356
+ },
357
+ "pact": {
358
+ "createdAt": "2017-10-10T12:49:04+11:00"
359
+ }
360
+ }
361
+ ]
362
+ }
363
+ }
364
+ ```
365
+ <a name="a_request_for_the_compatibility_matrix_where_one_or_more_versions_does_not_exist_given_the_pact_for_Foo_version_1.2.3_has_been_verified_by_Bar_version_4.5.6"></a>
366
+ 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
367
+ ```json
368
+ {
369
+ "method": "get",
370
+ "path": "/matrix",
371
+ "query": "q[][pacticipant]=Foo&q[][version]=1.2.3&q[][pacticipant]=Bar&q[][version]=9.9.9&latestby=cvpv"
372
+ }
373
+ ```
374
+ Pact Broker will respond with:
375
+ ```json
376
+ {
377
+ "status": 400,
378
+ "body": {
379
+ "errors": [
380
+ "an error message"
381
+ ]
382
+ }
383
+ }
384
+ ```
385
+ <a name="a_request_for_the_compatibility_matrix_where_only_the_version_of_Foo_is_specified_given_the_pact_for_Foo_version_1.2.3_has_been_verified_by_Bar_version_4.5.6_and_version_5.6.7"></a>
386
+ 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
387
+ ```json
388
+ {
389
+ "method": "get",
390
+ "path": "/matrix",
391
+ "query": "q[][pacticipant]=Foo&q[][version]=1.2.3&latestby=cvp"
392
+ }
393
+ ```
394
+ Pact Broker will respond with:
395
+ ```json
396
+ {
397
+ "status": 200,
398
+ "body": {
399
+ "summary": {
400
+ "deployable": true,
401
+ "reason": "some text"
402
+ },
403
+ "matrix": [
404
+ {
405
+ "consumer": {
406
+ "name": "Foo",
407
+ "version": {
408
+ "number": "4"
409
+ }
410
+ },
411
+ "provider": {
412
+ "name": "Bar",
413
+ "version": {
414
+ "number": "5"
415
+ }
416
+ },
417
+ "verificationResult": {
418
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
419
+ "success": true
420
+ },
421
+ "pact": {
422
+ "createdAt": "2017-10-10T12:49:04+11:00"
423
+ }
424
+ }
425
+ ]
426
+ }
427
+ }
428
+ ```
429
+ <a name="a_request_for_the_index_resource_given_the_pb:latest-tagged-version_relation_exists_in_the_index_resource"></a>
430
+ 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
431
+ ```json
432
+ {
433
+ "method": "get",
434
+ "path": "/",
435
+ "headers": {
436
+ "Accept": "application/json, application/hal+json"
437
+ }
438
+ }
439
+ ```
440
+ Pact Broker will respond with:
441
+ ```json
442
+ {
443
+ "status": 200,
444
+ "body": {
445
+ "_links": {
446
+ "pb:latest-tagged-version": {
447
+ "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-TAGGED-VERSION-{pacticipant}-{tag}"
448
+ }
449
+ }
450
+ }
451
+ }
452
+ ```
453
+ <a name="a_request_for_the_index_resource_given_the_pb:latest-version_relation_exists_in_the_index_resource"></a>
454
+ Given **the pb:latest-version relation exists in the index resource**, upon receiving **a request for the index resource** from Pact Broker Client, with
455
+ ```json
456
+ {
457
+ "method": "get",
458
+ "path": "/",
459
+ "headers": {
460
+ "Accept": "application/json, application/hal+json"
461
+ }
462
+ }
463
+ ```
464
+ Pact Broker will respond with:
465
+ ```json
466
+ {
467
+ "status": 200,
468
+ "body": {
469
+ "_links": {
470
+ "pb:latest-version": {
471
+ "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-VERSION-{pacticipant}"
472
+ }
473
+ }
474
+ }
475
+ }
476
+ ```
477
+ <a name="a_request_for_the_list_of_the_latest_pacts_from_all_consumers_for_the_Pricing_Service&#39;_given_a_latest_pact_between_Condor_and_the_Pricing_Service_exists"></a>
478
+ 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
479
+ ```json
480
+ {
481
+ "method": "get",
482
+ "path": "/pacts/provider/Pricing%20Service/latest"
483
+ }
484
+ ```
485
+ Pact Broker will respond with:
486
+ ```json
487
+ {
488
+ "status": 200,
489
+ "body": {
490
+ "_links": {
491
+ "provider": {
492
+ "href": "http://example.org/pacticipants/Pricing%20Service",
493
+ "title": "Pricing Service"
494
+ },
495
+ "pacts": [
496
+ {
497
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
498
+ "title": "Pact between Condor (v1.3.0) and Pricing Service",
499
+ "name": "Condor"
500
+ }
501
+ ]
502
+ }
503
+ }
504
+ }
505
+ ```
506
+ <a name="a_request_for_the_list_of_the_latest_prod_pacts_from_all_consumers_for_the_Pricing_Service&#39;_given_tagged_as_prod_pact_between_Condor_and_the_Pricing_Service_exists"></a>
507
+ 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
508
+ ```json
509
+ {
510
+ "method": "get",
511
+ "path": "/pacts/provider/Pricing%20Service/latest/prod"
512
+ }
513
+ ```
514
+ Pact Broker will respond with:
515
+ ```json
516
+ {
517
+ "status": 200,
518
+ "body": {
519
+ "_links": {
520
+ "provider": {
521
+ "href": "http://example.org/pacticipants/Pricing%20Service",
522
+ "title": "Pricing Service"
523
+ },
524
+ "pacts": [
525
+ {
526
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
527
+ "title": "Pact between Condor (v1.3.0) and Pricing Service",
528
+ "name": "Condor"
529
+ }
530
+ ]
531
+ }
532
+ }
533
+ }
534
+ ```
535
+ <a name="a_request_for_the_successful_rows_of_the_compatibility_matrix_for_all_versions_of_Foo_and_Bar_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"></a>
536
+ 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
537
+ ```json
538
+ {
539
+ "method": "get",
540
+ "path": "/matrix",
541
+ "query": "q[][pacticipant]=Foo&q[][pacticipant]=Bar&latestby=cvpv&success[]=true"
542
+ }
543
+ ```
544
+ Pact Broker will respond with:
545
+ ```json
546
+ {
547
+ "status": 200,
548
+ "body": {
549
+ "summary": {
550
+ "deployable": true,
551
+ "reason": "some text"
552
+ },
553
+ "matrix": [
554
+ {
555
+ "consumer": {
556
+ "name": "Foo",
557
+ "version": {
558
+ "number": "4"
559
+ }
560
+ },
561
+ "provider": {
562
+ "name": "Bar",
563
+ "version": {
564
+ "number": "5"
565
+ }
566
+ },
567
+ "verificationResult": {
568
+ "verifiedAt": "2017-10-10T12:49:04+11:00",
569
+ "success": true
570
+ },
571
+ "pact": {
572
+ "createdAt": "2017-10-10T12:49:04+11:00"
573
+ }
574
+ }
575
+ ]
576
+ }
577
+ }
578
+ ```
579
+ <a name="a_request_retrieve_a_pact_for_a_specific_version_given_the_&#39;Pricing_Service&#39;_and_&#39;Condor&#39;_already_exist_in_the_pact-broker,_and_Condor_already_has_a_pact_published_for_version_1.3.0"></a>
580
+ 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
581
+ ```json
582
+ {
583
+ "method": "get",
584
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0"
585
+ }
586
+ ```
587
+ Pact Broker will respond with:
588
+ ```json
589
+ {
590
+ "status": 200,
591
+ "body": {
592
+ "consumer": {
593
+ "name": "Condor"
594
+ },
595
+ "provider": {
596
+ "name": "Pricing Service"
597
+ },
598
+ "interactions": [
599
+
600
+ ]
601
+ }
602
+ }
603
+ ```
604
+ <a name="a_request_to_get_the_Pricing_Service_given_the_&#39;Pricing_Service&#39;_already_exists_in_the_pact-broker"></a>
605
+ Given **the 'Pricing Service' already exists in the pact-broker**, upon receiving **a request to get the Pricing Service** from Pact Broker Client, with
606
+ ```json
607
+ {
608
+ "method": "get",
609
+ "path": "/pacticipants/Pricing%20Service"
610
+ }
611
+ ```
612
+ Pact Broker will respond with:
613
+ ```json
614
+ {
615
+ "status": 200,
616
+ "headers": {
617
+ "Content-Type": "application/hal+json"
618
+ },
619
+ "body": {
620
+ "_links": {
621
+ "self": {
622
+ "href": "http://example.org/pacticipants/Pricing%20Service"
623
+ },
624
+ "versions": {
625
+ "href": "http://example.org/pacticipants/Pricing%20Service/versions"
626
+ }
627
+ },
628
+ "name": "Pricing Service",
629
+ "repositoryUrl": "git@git.realestate.com.au:business-systems/pricing-service",
630
+ "_embedded": {
631
+ "latest-version": {
632
+ "_links": {
633
+ "self": {
634
+ "href": "http://example.org/pacticipants/Pricing%20Service/versions/1.3.0"
635
+ }
636
+ },
637
+ "number": "1.3.0"
638
+ }
639
+ }
640
+ }
641
+ }
642
+ ```
643
+ <a name="a_request_to_get_the_Pricing_Service_given_the_&#39;Pricing_Service&#39;_does_not_exist_in_the_pact-broker"></a>
644
+ 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
645
+ ```json
646
+ {
647
+ "method": "get",
648
+ "path": "/pacticipants/Pricing%20Service"
649
+ }
650
+ ```
651
+ Pact Broker will respond with:
652
+ ```json
653
+ {
654
+ "status": 404
655
+ }
656
+ ```
657
+ <a name="a_request_to_list_pacticipants_given_&#39;Condor&#39;_exists_in_the_pact-broker"></a>
658
+ Given **'Condor' exists in the pact-broker**, upon receiving **a request to list pacticipants** from Pact Broker Client, with
659
+ ```json
660
+ {
661
+ "method": "get",
662
+ "path": "/pacticipants"
663
+ }
664
+ ```
665
+ Pact Broker will respond with:
666
+ ```json
667
+ {
668
+ "status": 200,
669
+ "headers": {
670
+ "Content-Type": "application/hal+json"
671
+ },
672
+ "body": {
673
+ "_links": {
674
+ "self": {
675
+ "href": "http://example.org/pacticipants"
676
+ },
677
+ "pacticipants": [
678
+ {
679
+ "href": "http://example.org/pacticipants/Condor",
680
+ "title": "Condor"
681
+ }
682
+ ]
683
+ },
684
+ "pacticipants": [
685
+ {
686
+ "_links": {
687
+ "self": {
688
+ "href": "http://example.org/pacticipants/Condor"
689
+ }
690
+ },
691
+ "name": "Condor",
692
+ "_embedded": {
693
+ "latest-version": {
694
+ "_links": {
695
+ "self": {
696
+ "href": "http://example.org/pacticipants/Condor/versions/1.3.0"
697
+ }
698
+ },
699
+ "number": "1.3.0"
700
+ }
701
+ }
702
+ }
703
+ ]
704
+ }
705
+ }
706
+ ```
707
+ <a name="a_request_to_list_the_latest_pacts_given_a_pact_between_Condor_and_the_Pricing_Service_exists"></a>
708
+ Given **a pact between Condor and the Pricing Service exists**, upon receiving **a request to list the latest pacts** from Pact Broker Client, with
709
+ ```json
710
+ {
711
+ "method": "get",
712
+ "path": "/pacts/latest"
713
+ }
714
+ ```
715
+ Pact Broker will respond with:
716
+ ```json
717
+ {
718
+ "status": 200,
719
+ "headers": {
720
+ "Content-Type": "application/hal+json"
721
+ },
722
+ "body": {
723
+ "_links": {
724
+ "self": {
725
+ "href": "http://example.org/pacts/latest"
726
+ }
727
+ },
728
+ "pacts": [
729
+ {
730
+ "_links": {
731
+ "self": [
732
+ {
733
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
734
+ },
735
+ {
736
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0"
737
+ }
738
+ ]
739
+ },
740
+ "_embedded": {
741
+ "consumer": {
742
+ "name": "Condor",
743
+ "_links": {
744
+ "self": {
745
+ "href": "http://example.org/pacticipants/Condor"
746
+ }
747
+ },
748
+ "_embedded": {
749
+ "version": {
750
+ "number": "1.3.0"
751
+ }
752
+ }
753
+ },
754
+ "provider": {
755
+ "_links": {
756
+ "self": {
757
+ "href": "http://example.org/pacticipants/Pricing%20Service"
758
+ }
759
+ },
760
+ "name": "Pricing Service"
761
+ }
762
+ }
763
+ }
764
+ ]
765
+ }
766
+ }
767
+ ```
768
+ <a name="a_request_to_publish_a_pact_given_&#39;Condor&#39;_already_exist_in_the_pact-broker,_but_the_&#39;Pricing_Service&#39;_does_not"></a>
769
+ 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
770
+ ```json
771
+ {
772
+ "method": "put",
773
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
774
+ "headers": {
775
+ "Content-Type": "application/json"
776
+ },
777
+ "body": {
778
+ "consumer": {
779
+ "name": "Condor"
780
+ },
781
+ "provider": {
782
+ "name": "Pricing Service"
783
+ },
784
+ "interactions": [
785
+
786
+ ]
787
+ }
788
+ }
789
+ ```
790
+ Pact Broker will respond with:
791
+ ```json
792
+ {
793
+ "status": 201,
794
+ "body": {
795
+ "_links": {
796
+ "pb:latest-pact-version": {
797
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
798
+ }
799
+ }
800
+ }
801
+ }
802
+ ```
803
+ <a name="a_request_to_publish_a_pact_given_the_&#39;Pricing_Service&#39;_already_exists_in_the_pact-broker"></a>
804
+ Given **the 'Pricing Service' already exists in the pact-broker**, upon receiving **a request to publish a pact** from Pact Broker Client, with
805
+ ```json
806
+ {
807
+ "method": "put",
808
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
809
+ "headers": {
810
+ "Content-Type": "application/json"
811
+ },
812
+ "body": {
813
+ "consumer": {
814
+ "name": "Condor"
815
+ },
816
+ "provider": {
817
+ "name": "Pricing Service"
818
+ },
819
+ "interactions": [
820
+
821
+ ]
822
+ }
823
+ }
824
+ ```
825
+ Pact Broker will respond with:
826
+ ```json
827
+ {
828
+ "status": 201,
829
+ "body": {
830
+ "_links": {
831
+ "pb:latest-pact-version": {
832
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
833
+ }
834
+ }
835
+ }
836
+ }
837
+ ```
838
+ <a name="a_request_to_publish_a_pact_given_an_error_occurs_while_publishing_a_pact"></a>
839
+ Given **an error occurs while publishing a pact**, upon receiving **a request to publish a pact** from Pact Broker Client, with
840
+ ```json
841
+ {
842
+ "method": "put",
843
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
844
+ "headers": {
845
+ "Content-Type": "application/json"
846
+ },
847
+ "body": {
848
+ "consumer": {
849
+ "name": "Condor"
850
+ },
851
+ "provider": {
852
+ "name": "Pricing Service"
853
+ },
854
+ "interactions": [
855
+
856
+ ]
857
+ }
858
+ }
859
+ ```
860
+ Pact Broker will respond with:
861
+ ```json
862
+ {
863
+ "status": 500,
864
+ "headers": {
865
+ "Content-Type": "application/hal+json"
866
+ },
867
+ "body": {
868
+ "message": "An error occurred"
869
+ }
870
+ }
871
+ ```
872
+ <a name="a_request_to_publish_a_pact_with_method_patch_given_the_&#39;Pricing_Service&#39;_and_&#39;Condor&#39;_already_exist_in_the_pact-broker,_and_Condor_already_has_a_pact_published_for_version_1.3.0"></a>
873
+ 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
874
+ ```json
875
+ {
876
+ "method": "patch",
877
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
878
+ "headers": {
879
+ "Content-Type": "application/json"
880
+ },
881
+ "body": {
882
+ "consumer": {
883
+ "name": "Condor"
884
+ },
885
+ "provider": {
886
+ "name": "Pricing Service"
887
+ },
888
+ "interactions": [
889
+
890
+ ]
891
+ }
892
+ }
893
+ ```
894
+ Pact Broker will respond with:
895
+ ```json
896
+ {
897
+ "status": 200,
898
+ "body": {
899
+ "_links": {
900
+ "pb:latest-pact-version": {
901
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
902
+ }
903
+ }
904
+ }
905
+ }
906
+ ```
907
+ <a name="a_request_to_publish_a_pact_with_method_put_given_the_&#39;Pricing_Service&#39;_and_&#39;Condor&#39;_already_exist_in_the_pact-broker,_and_Condor_already_has_a_pact_published_for_version_1.3.0"></a>
908
+ 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
909
+ ```json
910
+ {
911
+ "method": "put",
912
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/version/1.3.0",
913
+ "headers": {
914
+ "Content-Type": "application/json"
915
+ },
916
+ "body": {
917
+ "consumer": {
918
+ "name": "Condor"
919
+ },
920
+ "provider": {
921
+ "name": "Pricing Service"
922
+ },
923
+ "interactions": [
924
+
925
+ ]
926
+ }
927
+ }
928
+ ```
929
+ Pact Broker will respond with:
930
+ ```json
931
+ {
932
+ "status": 200,
933
+ "body": {
934
+ "_links": {
935
+ "pb:latest-pact-version": {
936
+ "href": "http://example.org/pacts/provider/Pricing%20Service/consumer/Condor/latest"
937
+ }
938
+ }
939
+ }
940
+ }
941
+ ```
942
+ <a name="a_request_to_register_the_repository_URL_of_a_pacticipant_given_the_&#39;Pricing_Service&#39;_already_exists_in_the_pact-broker"></a>
943
+ 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
944
+ ```json
945
+ {
946
+ "method": "patch",
947
+ "path": "/pacticipants/Pricing%20Service",
948
+ "headers": {
949
+ "Content-Type": "application/json"
950
+ },
951
+ "body": {
952
+ "repository_url": "git@git.realestate.com.au:business-systems/pricing-service"
953
+ }
954
+ }
955
+ ```
956
+ Pact Broker will respond with:
957
+ ```json
958
+ {
959
+ "status": 200
960
+ }
961
+ ```
962
+ <a name="a_request_to_register_the_repository_URL_of_a_pacticipant_given_the_&#39;Pricing_Service&#39;_does_not_exist_in_the_pact-broker"></a>
963
+ 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
964
+ ```json
965
+ {
966
+ "method": "patch",
967
+ "path": "/pacticipants/Pricing%20Service",
968
+ "headers": {
969
+ "Content-Type": "application/json"
970
+ },
971
+ "body": {
972
+ "repository_url": "git@git.realestate.com.au:business-systems/pricing-service"
973
+ }
974
+ }
975
+ ```
976
+ Pact Broker will respond with:
977
+ ```json
978
+ {
979
+ "status": 201
980
+ }
981
+ ```
982
+ <a name="a_request_to_retrieve_the_latest_&#39;production&#39;_version_of_Condor_given_&#39;Condor&#39;_exists_in_the_pact-broker_with_the_latest_tagged_&#39;production&#39;_version_1.2.3"></a>
983
+ 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
984
+ ```json
985
+ {
986
+ "method": "get",
987
+ "path": "/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-TAGGED-VERSION-Condor-production",
988
+ "headers": {
989
+ "Accept": "application/json, application/hal+json"
990
+ }
991
+ }
992
+ ```
993
+ Pact Broker will respond with:
994
+ ```json
995
+ {
996
+ "status": 200,
997
+ "body": {
998
+ "number": "1.2.3",
999
+ "_links": {
1000
+ "self": {
1001
+ "href": "http://localhost:1234/some-url"
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ ```
1007
+ <a name="a_request_to_retrieve_the_latest_pact_between_Condor_and_the_Pricing_Service_given_a_pact_between_Condor_and_the_Pricing_Service_exists"></a>
1008
+ 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
1009
+ ```json
1010
+ {
1011
+ "method": "get",
1012
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/latest"
1013
+ }
1014
+ ```
1015
+ Pact Broker will respond with:
1016
+ ```json
1017
+ {
1018
+ "status": 200,
1019
+ "headers": {
1020
+ "Content-Type": "application/hal+json",
1021
+ "X-Pact-Consumer-Version": "1.3.0"
1022
+ },
1023
+ "body": {
1024
+ "consumer": {
1025
+ "name": "Condor"
1026
+ },
1027
+ "provider": {
1028
+ "name": "Pricing Service"
1029
+ },
1030
+ "interactions": [
1031
+
1032
+ ]
1033
+ }
1034
+ }
1035
+ ```
1036
+ <a name="a_request_to_retrieve_the_latest_pact_between_Condor_and_the_Pricing_Service_given_no_pact_between_Condor_and_the_Pricing_Service_exists"></a>
1037
+ 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
1038
+ ```json
1039
+ {
1040
+ "method": "get",
1041
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/latest"
1042
+ }
1043
+ ```
1044
+ Pact Broker will respond with:
1045
+ ```json
1046
+ {
1047
+ "status": 404
1048
+ }
1049
+ ```
1050
+ <a name="a_request_to_retrieve_the_latest_version_of_Condor_given_&#39;Condor&#39;_exists_in_the_pact-broker_with_the_latest_version_1.2.3"></a>
1051
+ 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
1052
+ ```json
1053
+ {
1054
+ "method": "get",
1055
+ "path": "/HAL-REL-PLACEHOLDER-INDEX-PB-LATEST-VERSION-Condor",
1056
+ "headers": {
1057
+ "Accept": "application/json, application/hal+json"
1058
+ }
1059
+ }
1060
+ ```
1061
+ Pact Broker will respond with:
1062
+ ```json
1063
+ {
1064
+ "status": 200,
1065
+ "body": {
1066
+ "number": "1.2.3",
1067
+ "_links": {
1068
+ "self": {
1069
+ "href": "http://localhost:1234/some-url"
1070
+ }
1071
+ }
1072
+ }
1073
+ }
1074
+ ```
1075
+ <a name="a_request_to_retrieve_the_pact_between_the_production_verison_of_Condor_and_the_Pricing_Service_given_a_pact_between_Condor_and_the_Pricing_Service_exists_for_the_production_version_of_Condor"></a>
1076
+ 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
1077
+ ```json
1078
+ {
1079
+ "method": "get",
1080
+ "path": "/pacts/provider/Pricing%20Service/consumer/Condor/latest/prod",
1081
+ "headers": {
1082
+ "Accept": "application/json, application/hal+json"
1083
+ }
1084
+ }
1085
+ ```
1086
+ Pact Broker will respond with:
1087
+ ```json
1088
+ {
1089
+ "status": 200,
1090
+ "body": {
1091
+ "consumer": {
1092
+ "name": "Condor"
1093
+ },
1094
+ "provider": {
1095
+ "name": "Pricing Service"
1096
+ },
1097
+ "interactions": [
1098
+
1099
+ ]
1100
+ }
1101
+ }
1102
+ ```
1103
+ <a name="a_request_to_tag_the_production_version_of_Condor_given_&#39;Condor&#39;_exists_in_the_pact-broker_with_version_1.3.0,_tagged_with_&#39;prod&#39;"></a>
1104
+ 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
1105
+ ```json
1106
+ {
1107
+ "method": "put",
1108
+ "path": "/pacticipants/Condor/versions/1.3.0/tags/prod",
1109
+ "headers": {
1110
+ "Content-Type": "application/json"
1111
+ }
1112
+ }
1113
+ ```
1114
+ Pact Broker will respond with:
1115
+ ```json
1116
+ {
1117
+ "status": 200,
1118
+ "body": {
1119
+ "_links": {
1120
+ "self": {
1121
+ "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0/tags/prod"
1122
+ }
1123
+ }
1124
+ }
1125
+ }
1126
+ ```
1127
+ <a name="a_request_to_tag_the_production_version_of_Condor_given_&#39;Condor&#39;_does_not_exist_in_the_pact-broker"></a>
1128
+ 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
1129
+ ```json
1130
+ {
1131
+ "method": "put",
1132
+ "path": "/pacticipants/Condor/versions/1.3.0/tags/prod",
1133
+ "headers": {
1134
+ "Content-Type": "application/json"
1135
+ }
1136
+ }
1137
+ ```
1138
+ Pact Broker will respond with:
1139
+ ```json
1140
+ {
1141
+ "status": 201,
1142
+ "body": {
1143
+ "_links": {
1144
+ "self": {
1145
+ "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0/tags/prod"
1146
+ }
1147
+ }
1148
+ }
1149
+ }
1150
+ ```
1151
+ <a name="a_request_to_tag_the_production_version_of_Condor_given_&#39;Condor&#39;_exists_in_the_pact-broker"></a>
1152
+ Given **'Condor' exists in the pact-broker**, upon receiving **a request to tag the production version of Condor** from Pact Broker Client, with
1153
+ ```json
1154
+ {
1155
+ "method": "put",
1156
+ "path": "/pacticipants/Condor/versions/1.3.0/tags/prod",
1157
+ "headers": {
1158
+ "Content-Type": "application/json"
1159
+ }
1160
+ }
1161
+ ```
1162
+ Pact Broker will respond with:
1163
+ ```json
1164
+ {
1165
+ "status": 201,
1166
+ "body": {
1167
+ "_links": {
1168
+ "self": {
1169
+ "href": "http://localhost:1234/pacticipants/Condor/versions/1.3.0/tags/prod"
1170
+ }
1171
+ }
1172
+ }
1173
+ }
1174
+ ```