{ "consumer": { "name": "ForumsStore" }, "provider": { "name": "ForumAPIServer" }, "interactions": [ { "description": "a request to list the forums", "request": { "method": "POST", "path": "/graphql", "headers": { "content-type": "application/json" }, "body": { "operationName": "GetForums", "query": "query GetForums {\n forums {\n id\n glyph\n label\n position\n __typename\n }\n }", "variables": { } }, "matchingRules": { "$.body.query": { "match": "regex", "regex": "query\\s*GetForums\\s*\\{\\s*forums\\s*\\{\\s*id\\s*glyph\\s*label\\s*position\\s*__typename\\s*\\}\\s*\\}" } } }, "response": { "status": 200, "headers": { "Content-Type": "application/json; charset=utf-8" }, "body": { "data": { "forums": [ { "id": "butter", "glyph": "⌘", "label": "test_forums.butter", "position": 1 } ] } }, "matchingRules": { "$.body.data.forums": { "min": 1 }, "$.body.data.forums[*].*": { "match": "type" }, "$.body.data.forums[*].id": { "match": "type" }, "$.body.data.forums[*].glyph": { "match": "type" }, "$.body.data.forums[*].label": { "match": "type" }, "$.body.data.forums[*].position": { "match": "type" } } } }, { "description": "a request to get a single forum", "request": { "method": "POST", "path": "/graphql", "headers": { "content-type": "application/json" }, "body": { "operationName": "GetForum", "query": "query GetForum($id: ID!) {\n forum(id: $id) {\n id\n glyph\n label\n position\n topics {\n id\n title\n updated_at\n ttl\n __typename\n }\n __typename\n }\n }", "variables": { "id": "freezer" } }, "matchingRules": { "$.body.query": { "match": "regex", "regex": "query\\s*GetForum\\(\\$id:\\s*ID!\\)\\s*\\{\\s*forum\\(id:\\s*\\$id\\)\\s*\\{\\s*id\\s*glyph\\s*label\\s*position\\s*topics\\s*\\{\\s*id\\s*title\\s*updated_at\\s*ttl\\s*__typename\\s*\\}\\s*__typename\\s*\\}\\s*\\}" } } }, "response": { "status": 200, "headers": { "Content-Type": "application/json; charset=utf-8" }, "body": { "data": { "forum": { "id": "freezer", "glyph": "✭", "label": "test_forums.freezer", "position": 3, "topics": [ { "id": "629de02c-151a-4db7-bb86-43b2add8a15a", "title": "Very pacty topic", "updated_at": 1619954611616, "ttl": 3601 } ] } } }, "matchingRules": { "$.body.data.forum": { "match": "type" }, "$.body.data.forum.glyph": { "match": "type" }, "$.body.data.forum.label": { "match": "type" }, "$.body.data.forum.position": { "match": "type" }, "$.body.data.forum.topics": { "min": 1 }, "$.body.data.forum.topics[*].*": { "match": "type" }, "$.body.data.forum.topics[*].id": { "match": "type" }, "$.body.data.forum.topics[*].title": { "match": "type" }, "$.body.data.forum.topics[*].updated_at": { "match": "type" }, "$.body.data.forum.topics[*].ttl": { "match": "type" } } } } ], "metadata": { "pactSpecification": { "version": "2.0.0" } } }