### A pact between Pact Broker Client and PactFlow #### Requests from Pact Broker Client to PactFlow * [A request for the index resource](#a_request_for_the_index_resource) * [A request for the index resource](#a_request_for_the_index_resource_given_the_pb:publish-provider-contract_relation_exists_in_the_index_resource) given the pb:publish-provider-contract relation exists in the index resource * [A request to create a provider contract](#a_request_to_create_a_provider_contract) * [A request to create a provider contract](#a_request_to_create_a_provider_contract_given_there_is_a_pf:ui_href_in_the_response) given there is a pf:ui href in the response * [A request to create a webhook for a team](#a_request_to_create_a_webhook_for_a_team_given_a_team_with_UUID_2abbc12a-427d-432a-a521-c870af1739d9_exists) given a team with UUID 2abbc12a-427d-432a-a521-c870af1739d9 exists * [A request to publish a provider contract](#a_request_to_publish_a_provider_contract) #### Interactions Upon receiving **a request for the index resource** from Pact Broker Client, with ```json { "method": "get", "path": "/", "headers": { "Accept": "application/hal+json" } } ``` PactFlow will respond with: ```json { "status": 200, "headers": { "Content-Type": "application/hal+json;charset=utf-8" }, "body": { "_links": { "pb:webhooks": { "href": "http://localhost:1235/HAL-REL-PLACEHOLDER-PB-WEBHOOKS" }, "pb:pacticipants": { "href": "http://localhost:1235/HAL-REL-PLACEHOLDER-PB-PACTICIPANTS" }, "pb:pacticipant": { "href": "http://localhost:1235/HAL-REL-PLACEHOLDER-PB-PACTICIPANT-{pacticipant}" } } } } ``` Given **the pb:publish-provider-contract relation exists in the index resource**, upon receiving **a request for the index resource** from Pact Broker Client, with ```json { "method": "GET", "path": "/", "headers": { "Accept": "application/hal+json" } } ``` PactFlow will respond with: ```json { "status": 200, "headers": { "Content-Type": "application/hal+json;charset=utf-8" }, "body": { "_links": { "pf:publish-provider-contract": { "href": "http://localhost:1235/HAL-REL-PLACEHOLDER-PF-PUBLISH-PROVIDER-CONTRACT-{provider}" } } } } ``` Upon receiving **a request to create a provider contract** from Pact Broker Client, with ```json { "method": "put", "path": "/contracts/provider/Bar/version/1", "headers": { "Content-Type": "application/json", "Accept": "application/hal+json" }, "body": { "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType": "oas", "contentType": "application/yaml", "verificationResults": { "success": true, "content": "c29tZSByZXN1bHRz", "contentType": "text/plain", "format": "text", "verifier": "my custom tool", "verifierVersion": "1.0" } } } ``` PactFlow will respond with: ```json { "status": 201, "headers": { "Content-Type": "application/hal+json;charset=utf-8" } } ``` Given **there is a pf:ui href in the response**, upon receiving **a request to create a provider contract** from Pact Broker Client, with ```json { "method": "put", "path": "/contracts/provider/Bar/version/1", "headers": { "Content-Type": "application/json", "Accept": "application/hal+json" }, "body": { "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contractType": "oas", "contentType": "application/yaml", "verificationResults": { "success": true, "content": "c29tZSByZXN1bHRz", "contentType": "text/plain", "format": "text", "verifier": "my custom tool", "verifierVersion": "1.0" } } } ``` PactFlow will respond with: ```json { "status": 201, "headers": { "Content-Type": "application/hal+json;charset=utf-8" }, "body": { "_links": { "pf:ui": { "href": "some-url" } } } } ``` Given **a team with UUID 2abbc12a-427d-432a-a521-c870af1739d9 exists**, upon receiving **a request to create a webhook for a team** from Pact Broker Client, with ```json { "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" } }, "teamUuid": "2abbc12a-427d-432a-a521-c870af1739d9" } } ``` PactFlow will respond with: ```json { "status": 201, "headers": { "Content-Type": "application/hal+json;charset=utf-8" }, "body": { "description": "a webhook", "teamUuid": "2abbc12a-427d-432a-a521-c870af1739d9", "_links": { "self": { "href": "http://localhost:1234/some-url", "title": "A title" } } } } ``` Upon receiving **a request to publish a provider contract** from Pact Broker Client, with ```json { "method": "post", "path": "/HAL-REL-PLACEHOLDER-PF-PUBLISH-PROVIDER-CONTRACT-Bar", "headers": { "Content-Type": "application/json", "Accept": "application/hal+json,application/problem+json" }, "body": { "pacticipantVersionNumber": "1", "tags": [ "dev" ], "branch": "main", "buildUrl": "http://build", "contract": { "content": "LS0tCnNvbWU6IGNvbnRyYWN0Cg==", "contentType": "application/yaml", "specification": "oas", "selfVerificationResults": { "success": true, "content": "c29tZSByZXN1bHRz", "contentType": "text/plain", "format": "text", "verifier": "my custom tool", "verifierVersion": "1.0" } } } } ``` PactFlow will respond with: ```json { "status": 200, "headers": { "Content-Type": "application/hal+json;charset=utf-8" }, "body": { "notices": [ { "text": "some notice", "type": "info" } ], "_embedded": { "version": { "number": "1" } }, "_links": { "pb:pacticipant-version-tags": [ { } ], "pb:branch-version": { } } } } ```