pact_broker-client 1.45.0 → 1.48.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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +15 -1
  3. data/CHANGELOG.md +31 -0
  4. data/README.md +51 -47
  5. data/doc/pacts/markdown/Pact Broker Client - Pact Broker.md +315 -1
  6. data/doc/pacts/markdown/Pact Broker Client - Pactflow.md +94 -0
  7. data/doc/pacts/markdown/README.md +1 -0
  8. data/lib/pact_broker/client/cli/broker.rb +9 -139
  9. data/lib/pact_broker/client/cli/custom_thor.rb +0 -16
  10. data/lib/pact_broker/client/cli/matrix_commands.rb +93 -0
  11. data/lib/pact_broker/client/cli/webhook_commands.rb +122 -0
  12. data/lib/pact_broker/client/deployments/record_support_ended.rb +1 -1
  13. data/lib/pact_broker/client/deployments/record_undeployment.rb +1 -1
  14. data/lib/pact_broker/client/matrix/resource.rb +4 -0
  15. data/lib/pact_broker/client/verification_required.rb +34 -0
  16. data/lib/pact_broker/client/version.rb +1 -1
  17. data/lib/pact_broker/client/webhooks/create.rb +14 -8
  18. data/script/record-deployment.sh +1 -1
  19. data/script/record-deployments-and-releases.sh +0 -2
  20. data/script/record-undeployment.sh +1 -1
  21. data/script/webhook-commands.sh +12 -0
  22. data/spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb +1 -1
  23. data/spec/lib/pact_broker/client/cli/broker_run_webhook_commands_spec.rb +4 -2
  24. data/spec/lib/pact_broker/client/deployments/record_support_ended_spec.rb +1 -1
  25. data/spec/lib/pact_broker/client/deployments/record_undeployment_spec.rb +1 -1
  26. data/spec/pacts/pact_broker_client-pact_broker.json +317 -1
  27. data/spec/pacts/pact_broker_client-pactflow.json +118 -0
  28. data/spec/service_providers/pact_helper.rb +15 -10
  29. data/spec/service_providers/pactflow_webhooks_create_spec.rb +86 -0
  30. data/spec/service_providers/record_deployment_spec.rb +1 -3
  31. data/spec/service_providers/record_release_spec.rb +1 -3
  32. data/spec/service_providers/record_undeployment_spec.rb +2 -4
  33. data/spec/service_providers/webhooks_create_spec.rb +1 -1
  34. data/spec/spec_helper.rb +1 -0
  35. metadata +12 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99a06a67fbe9da6f970649c5159443669ed9ce419911e6178594944467255dd0
4
- data.tar.gz: c45dcfa2fd158febe01b9094e2125b4a1637c716da3a6d11d3bd13a8ce19867c
3
+ metadata.gz: b31de7cb8fa97a019e49a5ff8fc37683ed0116980a40cdddb37eb1cd0a52a606
4
+ data.tar.gz: 32278f6e5d47e0ead01215df9d59fc7a63843c106739b249e68b026ea5a0f31b
5
5
  SHA512:
6
- metadata.gz: 6da2ec04fc73a54ae53bebc62ddb5ddfe1fe1db17b1f94d22a3e195edfb756ad6330e9a99ebfeb1a6f5d20be71c92df4c16c0a808a409623b9600fb59e2e6385
7
- data.tar.gz: c714b39a69e0f96ffccabe9b6bc3097c0401a6c1931a0de89e57eae7c1e0c04ef5133e1c3d124df49b2dd294bdd90fe2415baeba365e1bf44fc40b45b4602164
6
+ metadata.gz: a9fb4c7691da7685d7d913678213a1a0576bc09f6eb118e54fec6da3fdf07bbd7c25e7d5d9f0156a700faed0a7ba16610f5f456320025fcbe991b512448d6c90
7
+ data.tar.gz: 11c9f1500fe89aebef11f79ee79fa2e3f65af16cd92c8616d90d7adc625d000269a010ea9658d0579db7c0afbc1d164a3abffab4139fc6ff628a0ca6464f2f00
@@ -27,7 +27,7 @@ jobs:
27
27
  strategy:
28
28
  fail-fast: false
29
29
  matrix:
30
- feature: ["", "publish_contracts", "deployments"]
30
+ feature: ["", "publish_contracts"]
31
31
  steps:
32
32
  - uses: actions/checkout@v2
33
33
  - uses: ruby/setup-ruby@v1
@@ -42,3 +42,17 @@ jobs:
42
42
  PACT_BROKER_TOKEN: ${{ secrets.PACTFLOW_PACT_OSS_TOKEN }}
43
43
  PACT_BROKER_FEATURES: ${{ matrix.feature }}
44
44
  TEST_FEATURE: ${{ matrix.feature }}
45
+ can-i-deploy:
46
+ runs-on: "ubuntu-latest"
47
+ needs: pact
48
+ steps:
49
+ - run: |
50
+ docker run --rm \
51
+ -e PACT_BROKER_BASE_URL=https://pact-oss.pactflow.io \
52
+ -e PACT_BROKER_TOKEN \
53
+ pactfoundation/pact-cli:latest \
54
+ broker can-i-deploy \
55
+ --pacticipant "Pact Broker Client" --version ${GITHUB_SHA} \
56
+ --pacticipant "Pact Broker" --latest master
57
+ env:
58
+ PACT_BROKER_TOKEN: ${{ secrets.PACTFLOW_PACT_OSS_TOKEN }}
data/CHANGELOG.md CHANGED
@@ -1,3 +1,34 @@
1
+ <a name="v1.48.0"></a>
2
+ ### v1.48.0 (2021-08-04)
3
+
4
+ #### Features
5
+
6
+ * **can-i-deploy**
7
+ * remove feature toggle for --ignore option ([6e7edd8](/../../commit/6e7edd8))
8
+
9
+ <a name="v1.47.1"></a>
10
+ ### v1.47.1 (2021-07-20)
11
+
12
+ #### Bug Fixes
13
+
14
+ * **verification-required**
15
+ * require a verification when either of the specified versions does not exist ([031d232](/../../commit/031d232))
16
+
17
+ <a name="v1.47.0"></a>
18
+ ### v1.47.0 (2021-07-09)
19
+
20
+ #### Features
21
+
22
+ * enabled deployment, release and environment commands without a feature toggle ([bd64caa](/../../commit/bd64caa))
23
+ * update relations used for currently deploy/currently supported versions ([6f6ca2f](/../../commit/6f6ca2f))
24
+
25
+ <a name="v1.46.0"></a>
26
+ ### v1.46.0 (2021-06-24)
27
+
28
+ #### Features
29
+
30
+ * support specifying team UUID when creating a webhook in Pactflow ([c4201e1](/../../commit/c4201e1))
31
+
1
32
  <a name="v1.45.0"></a>
2
33
  ### v1.45.0 (2021-06-16)
3
34
 
data/README.md CHANGED
@@ -78,44 +78,44 @@ Usage:
78
78
  pact-broker can-i-deploy -a, --pacticipant=PACTICIPANT -b, --broker-base-url=BROKER_BASE_URL
79
79
 
80
80
  Options:
81
- -a, --pacticipant=PACTICIPANT
81
+ -a, --pacticipant=PACTICIPANT
82
82
  # The pacticipant name. Use once for each pacticipant being checked.
83
- -e, [--version=VERSION]
83
+ -e, [--version=VERSION]
84
84
  # The pacticipant version. Must be entered after the --pacticipant that it relates to.
85
- [--ignore=IGNORE]
86
- # The pacticipant name to ignore. Use once for each pacticipant being ignored.
87
- A specific version can be ignored by also specifying a --version after the
85
+ [--ignore=IGNORE]
86
+ # The pacticipant name to ignore. Use once for each pacticipant being ignored.
87
+ A specific version can be ignored by also specifying a --version after the
88
88
  pacticipant name option.
89
- -l, [--latest=[TAG]]
90
- # Use the latest pacticipant version. Optionally specify a TAG to use the
89
+ -l, [--latest=[TAG]]
90
+ # Use the latest pacticipant version. Optionally specify a TAG to use the
91
91
  latest version with the specified tag.
92
- [--to=TAG]
92
+ [--to=TAG]
93
93
  # This is too hard to explain in a short sentence. Look at the examples.
94
- -o, [--output=OUTPUT]
94
+ -o, [--output=OUTPUT]
95
95
  # json or table
96
-
96
+
97
97
  # Default: table
98
- [--retry-while-unknown=TIMES]
99
- # The number of times to retry while there is an unknown verification result
98
+ [--retry-while-unknown=TIMES]
99
+ # The number of times to retry while there is an unknown verification result
100
100
  (ie. the provider verification is likely still running)
101
-
101
+
102
102
  # Default: 0
103
- [--retry-interval=SECONDS]
103
+ [--retry-interval=SECONDS]
104
104
  # The time between retries in seconds. Use in conjuction with --retry-while-unknown
105
-
105
+
106
106
  # Default: 10
107
- [--dry-run], [--no-dry-run]
107
+ [--dry-run], [--no-dry-run]
108
108
  # When enabled, always exits process with a success code. Can also be enabled by setting
109
109
  the environment variable PACT_BROKER_CAN_I_DEPLOY_DRY_RUN=true.
110
- -b, --broker-base-url=BROKER_BASE_URL
110
+ -b, --broker-base-url=BROKER_BASE_URL
111
111
  # The base URL of the Pact Broker
112
- -u, [--broker-username=BROKER_USERNAME]
112
+ -u, [--broker-username=BROKER_USERNAME]
113
113
  # Pact Broker basic auth username
114
- -p, [--broker-password=BROKER_PASSWORD]
114
+ -p, [--broker-password=BROKER_PASSWORD]
115
115
  # Pact Broker basic auth password
116
- -k, [--broker-token=BROKER_TOKEN]
116
+ -k, [--broker-token=BROKER_TOKEN]
117
117
  # Pact Broker bearer token
118
- -v, [--verbose], [--no-verbose]
118
+ -v, [--verbose], [--no-verbose]
119
119
  # Verbose output. Default: false
120
120
  ```
121
121
 
@@ -235,27 +235,19 @@ Usage:
235
235
 
236
236
  Options:
237
237
  -X, --request=METHOD
238
- # HTTP method
238
+ # Webhook HTTP method
239
239
  -H, [--header=one two three]
240
- # Header
240
+ # Webhook Header
241
241
  -d, [--data=DATA]
242
- # Data
242
+ # Webhook payload (file or string)
243
243
  -u, [--user=USER]
244
- # Basic auth username and password eg. username:password
244
+ # Webhook basic auth username and password eg. username:password
245
245
  [--consumer=CONSUMER]
246
246
  # Consumer name
247
247
  [--provider=PROVIDER]
248
248
  # Provider name
249
- -b, --broker-base-url=BROKER_BASE_URL
250
- # The base URL of the Pact Broker
251
- [--broker-username=BROKER_USERNAME]
252
- # Pact Broker basic auth username
253
- -p, [--broker-password=BROKER_PASSWORD]
254
- # Pact Broker basic auth password
255
- -k, [--broker-token=BROKER_TOKEN]
256
- # Pact Broker bearer token
257
249
  [--description=DESCRIPTION]
258
- # The description of the webhook
250
+ # Webhook description
259
251
  [--contract-content-changed], [--no-contract-content-changed]
260
252
  # Trigger this webhook when the pact content changes
261
253
  [--contract-published], [--no-contract-published]
@@ -266,6 +258,16 @@ Options:
266
258
  # Trigger this webhook when a failed provider verification result is published
267
259
  [--provider-verification-succeeded], [--no-provider-verification-succeeded]
268
260
  # Trigger this webhook when a successful provider verification result is published
261
+ [--team-uuid=UUID]
262
+ # UUID of the Pactflow team to which the webhook should be assigned (Pactflow only)
263
+ -b, --broker-base-url=BROKER_BASE_URL
264
+ # The base URL of the Pact Broker
265
+ -u, [--broker-username=BROKER_USERNAME]
266
+ # Pact Broker basic auth username
267
+ -p, [--broker-password=BROKER_PASSWORD]
268
+ # Pact Broker basic auth password
269
+ -k, [--broker-token=BROKER_TOKEN]
270
+ # Pact Broker bearer token
269
271
  -v, [--verbose], [--no-verbose]
270
272
  # Verbose output. Default: false
271
273
 
@@ -283,27 +285,19 @@ Usage:
283
285
 
284
286
  Options:
285
287
  -X, --request=METHOD
286
- # HTTP method
288
+ # Webhook HTTP method
287
289
  -H, [--header=one two three]
288
- # Header
290
+ # Webhook Header
289
291
  -d, [--data=DATA]
290
- # Data
292
+ # Webhook payload (file or string)
291
293
  -u, [--user=USER]
292
- # Basic auth username and password eg. username:password
294
+ # Webhook basic auth username and password eg. username:password
293
295
  [--consumer=CONSUMER]
294
296
  # Consumer name
295
297
  [--provider=PROVIDER]
296
298
  # Provider name
297
- -b, --broker-base-url=BROKER_BASE_URL
298
- # The base URL of the Pact Broker
299
- [--broker-username=BROKER_USERNAME]
300
- # Pact Broker basic auth username
301
- -p, [--broker-password=BROKER_PASSWORD]
302
- # Pact Broker basic auth password
303
- -k, [--broker-token=BROKER_TOKEN]
304
- # Pact Broker bearer token
305
299
  [--description=DESCRIPTION]
306
- # The description of the webhook
300
+ # Webhook description
307
301
  [--contract-content-changed], [--no-contract-content-changed]
308
302
  # Trigger this webhook when the pact content changes
309
303
  [--contract-published], [--no-contract-published]
@@ -314,6 +308,16 @@ Options:
314
308
  # Trigger this webhook when a failed provider verification result is published
315
309
  [--provider-verification-succeeded], [--no-provider-verification-succeeded]
316
310
  # Trigger this webhook when a successful provider verification result is published
311
+ [--team-uuid=UUID]
312
+ # UUID of the Pactflow team to which the webhook should be assigned (Pactflow only)
313
+ -b, --broker-base-url=BROKER_BASE_URL
314
+ # The base URL of the Pact Broker
315
+ -u, [--broker-username=BROKER_USERNAME]
316
+ # Pact Broker basic auth username
317
+ -p, [--broker-password=BROKER_PASSWORD]
318
+ # Pact Broker basic auth password
319
+ -k, [--broker-token=BROKER_TOKEN]
320
+ # Pact Broker bearer token
317
321
  -v, [--verbose], [--no-verbose]
318
322
  # Verbose output. Default: false
319
323
  --uuid=UUID
@@ -2,6 +2,14 @@
2
2
 
3
3
  #### Requests from Pact Broker Client to Pact Broker
4
4
 
5
+ * [A request for a pacticipant version](#a_request_for_a_pacticipant_version_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_2_environments_that_aren&#39;t_test_available_for_deployment) given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with 2 environments that aren't test available for deployment
6
+
7
+ * [A request for a pacticipant version](#a_request_for_a_pacticipant_version_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_deployment) given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for deployment
8
+
9
+ * [A request for a pacticipant version](#a_request_for_a_pacticipant_version_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_release) given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for release
10
+
11
+ * [A request for an environment](#a_request_for_an_environment_given_an_environment_with_name_test_and_UUID_16926ef3-590f-4e3f-838e-719717aa88c9_exists) given an environment with name test and UUID 16926ef3-590f-4e3f-838e-719717aa88c9 exists
12
+
5
13
  * [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
14
 
7
15
  * [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
@@ -20,6 +28,8 @@
20
28
 
21
29
  * [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
30
 
31
+ * [A request for the environments](#a_request_for_the_environments_given_an_environment_with_name_test_exists) given an environment with name test exists
32
+
23
33
  * [A request for the index resource](#a_request_for_the_index_resource)
24
34
 
25
35
  * [A request for the index resource](#a_request_for_the_index_resource_given_the_pacticipant_relations_are_present) given the pacticipant relations are present
@@ -28,6 +38,8 @@
28
38
 
29
39
  * [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
30
40
 
41
+ * [A request for the index resource](#a_request_for_the_index_resource_given_the_pb:pacticipant-version_and_pb:environments_relations_exist_in_the_index_resource) given the pb:pacticipant-version and pb:environments relations exist in the index resource
42
+
31
43
  * [A request for the index resource](#a_request_for_the_index_resource_given_the_pb:pacticipant-version_relation_exists_in_the_index_resource) given the pb:pacticipant-version relation exists in the index resource
32
44
 
33
45
  * [A request for the index resource with the webhook relation](#a_request_for_the_index_resource_with_the_webhook_relation)
@@ -74,6 +86,10 @@
74
86
 
75
87
  * [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
76
88
 
89
+ * [A request to list the versions deployed to an environment for a pacticipant name and target](#a_request_to_list_the_versions_deployed_to_an_environment_for_a_pacticipant_name_and_target_given_an_version_is_deployed_to_environment_with_UUID_16926ef3-590f-4e3f-838e-719717aa88c9_with_target_customer-1) given an version is deployed to environment with UUID 16926ef3-590f-4e3f-838e-719717aa88c9 with target customer-1
90
+
91
+ * [A request to mark a deployed version as not currently deploye](#a_request_to_mark_a_deployed_version_as_not_currently_deploye_given_a_currently_deployed_version_exists) given a currently deployed version exists
92
+
77
93
  * [A request to publish a pact](#a_request_to_publish_a_pact_given_&#39;Condor&#39;_already_exist_in_the_pact-broker,_but_the_&#39;Pricing_Service&#39;_does_not) given 'Condor' already exist in the pact-broker, but the 'Pricing Service' does not
78
94
 
79
95
  * [A request to publish a pact](#a_request_to_publish_a_pact_given_the_&#39;Pricing_Service&#39;_already_exists_in_the_pact-broker) given the 'Pricing Service' already exists in the pact-broker
@@ -84,6 +100,10 @@
84
100
 
85
101
  * [A request to publish a pact with method put](#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) given the 'Pricing Service' and 'Condor' already exist in the pact-broker, and Condor already has a pact published for version 1.3.0
86
102
 
103
+ * [A request to record a deployment](#a_request_to_record_a_deployment_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_deployment) given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for deployment
104
+
105
+ * [A request to record a release](#a_request_to_record_a_release_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_deployment) given version 5556b8149bf8bac76bc30f50a8a2dd4c22c85f30 of pacticipant Foo exists with a test environment available for deployment
106
+
87
107
  * [A request to register the repository URL of a pacticipant](#a_request_to_register_the_repository_URL_of_a_pacticipant_given_the_&#39;Pricing_Service&#39;_already_exists_in_the_pact-broker) given the 'Pricing Service' already exists in the pact-broker
88
108
 
89
109
  * [A request to register the repository URL of a pacticipant](#a_request_to_register_the_repository_URL_of_a_pacticipant_given_the_&#39;Pricing_Service&#39;_does_not_exist_in_the_pact-broker) given the 'Pricing Service' does not exist in the pact-broker
@@ -116,6 +136,127 @@
116
136
 
117
137
  #### Interactions
118
138
 
139
+ <a name="a_request_for_a_pacticipant_version_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_2_environments_that_aren&#39;t_test_available_for_deployment"></a>
140
+ 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
141
+ ```json
142
+ {
143
+ "method": "GET",
144
+ "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-Foo-5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
145
+ "headers": {
146
+ "Accept": "application/hal+json"
147
+ }
148
+ }
149
+ ```
150
+ Pact Broker will respond with:
151
+ ```json
152
+ {
153
+ "status": 200,
154
+ "headers": {
155
+ "Content-Type": "application/hal+json;charset=utf-8"
156
+ },
157
+ "body": {
158
+ "_links": {
159
+ "pb:record-deployment": [
160
+ {
161
+ "name": "prod",
162
+ "href": "href"
163
+ },
164
+ {
165
+ "name": "dev",
166
+ "href": "href"
167
+ }
168
+ ]
169
+ }
170
+ }
171
+ }
172
+ ```
173
+ <a name="a_request_for_a_pacticipant_version_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_deployment"></a>
174
+ 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
175
+ ```json
176
+ {
177
+ "method": "GET",
178
+ "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-Foo-5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
179
+ "headers": {
180
+ "Accept": "application/hal+json"
181
+ }
182
+ }
183
+ ```
184
+ Pact Broker will respond with:
185
+ ```json
186
+ {
187
+ "status": 200,
188
+ "headers": {
189
+ "Content-Type": "application/hal+json;charset=utf-8"
190
+ },
191
+ "body": {
192
+ "_links": {
193
+ "pb:record-deployment": [
194
+ {
195
+ "name": "test",
196
+ "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-RECORD-DEPLOYMENT-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST"
197
+ }
198
+ ]
199
+ }
200
+ }
201
+ }
202
+ ```
203
+ <a name="a_request_for_a_pacticipant_version_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_release"></a>
204
+ 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
205
+ ```json
206
+ {
207
+ "method": "GET",
208
+ "path": "/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-Foo-5556b8149bf8bac76bc30f50a8a2dd4c22c85f30",
209
+ "headers": {
210
+ "Accept": "application/hal+json"
211
+ }
212
+ }
213
+ ```
214
+ Pact Broker will respond with:
215
+ ```json
216
+ {
217
+ "status": 200,
218
+ "headers": {
219
+ "Content-Type": "application/hal+json;charset=utf-8"
220
+ },
221
+ "body": {
222
+ "_links": {
223
+ "pb:record-release": [
224
+ {
225
+ "name": "test",
226
+ "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-RECORD-RELEASE-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST"
227
+ }
228
+ ]
229
+ }
230
+ }
231
+ }
232
+ ```
233
+ <a name="a_request_for_an_environment_given_an_environment_with_name_test_and_UUID_16926ef3-590f-4e3f-838e-719717aa88c9_exists"></a>
234
+ 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
235
+ ```json
236
+ {
237
+ "method": "GET",
238
+ "path": "/HAL-REL-PLACEHOLDER-PB-ENVIRONMENT-16926ef3-590f-4e3f-838e-719717aa88c9",
239
+ "headers": {
240
+ "Accept": "application/hal+json"
241
+ }
242
+ }
243
+ ```
244
+ Pact Broker will respond with:
245
+ ```json
246
+ {
247
+ "status": 200,
248
+ "headers": {
249
+ "Content-Type": "application/hal+json;charset=utf-8"
250
+ },
251
+ "body": {
252
+ "_links": {
253
+ "pb:currently-deployed-deployed-versions": {
254
+ "href": "http://localhost:1234/PLACEHOLDER-ENVIRONMENT-CURRENTLY-DEPLOYED-16926ef3-590f-4e3f-838e-719717aa88c9"
255
+ }
256
+ }
257
+ }
258
+ }
259
+ ```
119
260
  <a name="a_request_for_the_compatibility_matrix_for_a_pacticipant_that_does_not_exist"></a>
120
261
  Upon receiving **a request for the compatibility matrix for a pacticipant that does not exist** from Pact Broker Client, with
121
262
  ```json
@@ -537,6 +678,36 @@ Pact Broker will respond with:
537
678
  }
538
679
  }
539
680
  ```
681
+ <a name="a_request_for_the_environments_given_an_environment_with_name_test_exists"></a>
682
+ Given **an environment with name test exists**, upon receiving **a request for the environments** from Pact Broker Client, with
683
+ ```json
684
+ {
685
+ "method": "GET",
686
+ "path": "/HAL-REL-PLACEHOLDER-PB-ENVIRONMENTS",
687
+ "headers": {
688
+ "Accept": "application/hal+json"
689
+ }
690
+ }
691
+ ```
692
+ Pact Broker will respond with:
693
+ ```json
694
+ {
695
+ "status": 200,
696
+ "headers": {
697
+ "Content-Type": "application/hal+json;charset=utf-8"
698
+ },
699
+ "body": {
700
+ "_links": {
701
+ "pb:environments": [
702
+ {
703
+ "name": "test",
704
+ "href": "href"
705
+ }
706
+ ]
707
+ }
708
+ }
709
+ }
710
+ ```
540
711
  <a name="a_request_for_the_index_resource"></a>
541
712
  Upon receiving **a request for the index resource** from Pact Broker Client, with
542
713
  ```json
@@ -654,6 +825,36 @@ Pact Broker will respond with:
654
825
  }
655
826
  }
656
827
  ```
828
+ <a name="a_request_for_the_index_resource_given_the_pb:pacticipant-version_and_pb:environments_relations_exist_in_the_index_resource"></a>
829
+ 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
830
+ ```json
831
+ {
832
+ "method": "GET",
833
+ "path": "/",
834
+ "headers": {
835
+ "Accept": "application/hal+json"
836
+ }
837
+ }
838
+ ```
839
+ Pact Broker will respond with:
840
+ ```json
841
+ {
842
+ "status": 200,
843
+ "headers": {
844
+ "Content-Type": "application/hal+json;charset=utf-8"
845
+ },
846
+ "body": {
847
+ "_links": {
848
+ "pb:pacticipant-version": {
849
+ "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-VERSION-{pacticipant}-{version}"
850
+ },
851
+ "pb:environments": {
852
+ "href": "http://localhost:1234/HAL-REL-PLACEHOLDER-PB-ENVIRONMENTS"
853
+ }
854
+ }
855
+ }
856
+ }
857
+ ```
657
858
  <a name="a_request_for_the_index_resource_given_the_pb:pacticipant-version_relation_exists_in_the_index_resource"></a>
658
859
  Given **the pb:pacticipant-version relation exists in the index resource**, upon receiving **a request for the index resource** from Pact Broker Client, with
659
860
  ```json
@@ -1666,6 +1867,72 @@ Pact Broker will respond with:
1666
1867
  }
1667
1868
  }
1668
1869
  ```
1870
+ <a name="a_request_to_list_the_versions_deployed_to_an_environment_for_a_pacticipant_name_and_target_given_an_version_is_deployed_to_environment_with_UUID_16926ef3-590f-4e3f-838e-719717aa88c9_with_target_customer-1"></a>
1871
+ 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 target** from Pact Broker Client, with
1872
+ ```json
1873
+ {
1874
+ "method": "GET",
1875
+ "path": "/PLACEHOLDER-ENVIRONMENT-CURRENTLY-DEPLOYED-16926ef3-590f-4e3f-838e-719717aa88c9",
1876
+ "query": "pacticipant=Foo",
1877
+ "headers": {
1878
+ "Accept": "application/hal+json"
1879
+ }
1880
+ }
1881
+ ```
1882
+ Pact Broker will respond with:
1883
+ ```json
1884
+ {
1885
+ "status": 200,
1886
+ "headers": {
1887
+ "Content-Type": "application/hal+json;charset=utf-8"
1888
+ },
1889
+ "body": {
1890
+ "_embedded": {
1891
+ "deployedVersions": [
1892
+ {
1893
+ "target": "customer-1",
1894
+ "_links": {
1895
+ "self": {
1896
+ "href": "http://localhost:1234/PLACEHOLDER-DEPLOYED-VERSION-ff3adecf-cfc5-4653-a4e3-f1861092f8e0"
1897
+ }
1898
+ }
1899
+ }
1900
+ ]
1901
+ }
1902
+ }
1903
+ }
1904
+ ```
1905
+ <a name="a_request_to_mark_a_deployed_version_as_not_currently_deploye_given_a_currently_deployed_version_exists"></a>
1906
+ Given **a currently deployed version exists**, upon receiving **a request to mark a deployed version as not currently deploye** from Pact Broker Client, with
1907
+ ```json
1908
+ {
1909
+ "method": "PATCH",
1910
+ "path": "/PLACEHOLDER-DEPLOYED-VERSION-ff3adecf-cfc5-4653-a4e3-f1861092f8e0",
1911
+ "headers": {
1912
+ "Content-Type": "application/merge-patch+json"
1913
+ },
1914
+ "body": {
1915
+ "currentlyDeployed": false
1916
+ }
1917
+ }
1918
+ ```
1919
+ Pact Broker will respond with:
1920
+ ```json
1921
+ {
1922
+ "status": 200,
1923
+ "headers": {
1924
+ "Content-Type": "application/hal+json;charset=utf-8"
1925
+ },
1926
+ "body": {
1927
+ "currentlyDeployed": false,
1928
+ "_embedded": {
1929
+ "version": {
1930
+ "number": "2"
1931
+ }
1932
+ }
1933
+ }
1934
+ }
1935
+ ```
1669
1936
  <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>
1670
1937
  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
1671
1938
  ```json
@@ -1854,6 +2121,54 @@ Pact Broker will respond with:
1854
2121
  }
1855
2122
  }
1856
2123
  ```
2124
+ <a name="a_request_to_record_a_deployment_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_deployment"></a>
2125
+ 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
2126
+ ```json
2127
+ {
2128
+ "method": "POST",
2129
+ "path": "/HAL-REL-PLACEHOLDER-PB-RECORD-DEPLOYMENT-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST",
2130
+ "headers": {
2131
+ "Content-Type": "application/json",
2132
+ "Accept": "application/hal+json"
2133
+ },
2134
+ "body": {
2135
+ "target": "blue"
2136
+ }
2137
+ }
2138
+ ```
2139
+ Pact Broker will respond with:
2140
+ ```json
2141
+ {
2142
+ "status": 201,
2143
+ "headers": {
2144
+ "Content-Type": "application/hal+json;charset=utf-8"
2145
+ },
2146
+ "body": {
2147
+ "target": "blue"
2148
+ }
2149
+ }
2150
+ ```
2151
+ <a name="a_request_to_record_a_release_given_version_5556b8149bf8bac76bc30f50a8a2dd4c22c85f30_of_pacticipant_Foo_exists_with_a_test_environment_available_for_deployment"></a>
2152
+ 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
2153
+ ```json
2154
+ {
2155
+ "method": "POST",
2156
+ "path": "/HAL-REL-PLACEHOLDER-PB-RECORD-RELEASE-FOO-5556B8149BF8BAC76BC30F50A8A2DD4C22C85F30-TEST",
2157
+ "headers": {
2158
+ "Content-Type": "application/json",
2159
+ "Accept": "application/hal+json"
2160
+ }
2161
+ }
2162
+ ```
2163
+ Pact Broker will respond with:
2164
+ ```json
2165
+ {
2166
+ "status": 201,
2167
+ "headers": {
2168
+ "Content-Type": "application/hal+json;charset=utf-8"
2169
+ }
2170
+ }
2171
+ ```
1857
2172
  <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>
1858
2173
  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
1859
2174
  ```json
@@ -2264,7 +2579,6 @@ Given **the 'Pricing Service' and 'Condor' already exist in the pact-broker**, u
2264
2579
  }
2265
2580
  ],
2266
2581
  "request": {
2267
- "url": null,
2268
2582
  "method": "POST",
2269
2583
  "headers": {
2270
2584
  "Foo": "bar",