{"info":{"_postman_id":"2508998d-336d-4321-9c1e-e893517124c9","name":"TextKit API","description":"<html><head></head><body><p>To get started with messaging your customers you need to first add in a topic, the participants related to that topic and templates that your users will interact with to start their conversations off. Using our API suite allows you to have finer control over those topics, templates and conversations.</p>\n<h2 id=\"graphql\">GraphQL</h2>\n<p>TextKit APIs are built in GraphQL which is a syntax that makes it easier to aggregate data from multiple sources. Instead of needing multiple endpoints, TextKit has a single endpoint that can take care of complex queries and then massage the output to whatever shape you need. For example, you can execute multiple queries in the same call where REST would have required you to make multiple calls to different endpoints. This makes the API and your new application much faster and easier to build.</p>\n<p>For a gentle introduction to GraphQL, the official website is an excellent resource:\n<a href=\"https://graphql.org/learn/\">https://graphql.org/learn/</a></p>\n<p>If you would like to use our GraphQL API you will be assigned an authentication token as well as an API URL upon request.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>TextKit can integrate with many SSO systems for both representative and administrator login/authentication.</p>\n<p>Permissions to generate API tokens can be assigned within TextKit to certain administrative users. These tokens can be used to authenticate requests for all APIs that TextKit provides.</p>\n<p>Authorization is provided by a role-based access control system, where the token will inherit the role permissions of the user that generates the token, or a subset of those permissions that can be chosen at the time of generation.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"3800659","collectionId":"2508998d-336d-4321-9c1e-e893517124c9","publishedId":"TzzHnZ4W","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"E21D7A"},"publishDate":"2021-08-30T03:33:10.000Z"},"item":[{"name":"Participant","item":[{"name":"Contact","item":[{"name":"FindContactById","event":[{"listen":"test","script":{"id":"3470794b-0e96-458b-b67f-20b8a03e39a8","exec":["pm.test(\"Setting conversation ID\", function () {","    var jsonData = pm.response.json();","    var conversationId = jsonData?.data?.findContactById?.conversations[0]?.conversationId;","    pm.environment.set(\"ConversationId\", conversationId);","});"],"type":"text/javascript"}}],"id":"e0e36bda-5643-42f8-a8f1-7de17a2719ab","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"query FindContact($participantId: ID!) {\n    findContactById(id : $participantId) {\n        participantId\n        firstName\n        lastName\n        locale\n        channels {\n            type\n            inboundAddress\n            outboundAddress\n        }\n        external {\n            externalId\n            metadata\n        }\n        conversations {\n            conversationId\n            state\n            from {\n                type\n                outboundAddress\n            }\n        }\n    }\n}","variables":"{\n    \"participantId\" : \"848a9689-da10-4f49-a2d3-65775339a0e8\"\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Queries a Contact by participantId (as a UUID)</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"e0e36bda-5643-42f8-a8f1-7de17a2719ab"},{"name":"SaveContact","event":[{"listen":"test","script":{"id":"dcb00258-8e1f-4cdd-8037-397dcf8cd876","exec":[""],"type":"text/javascript"}}],"id":"0c5e1773-af76-42f8-a388-8ae74807d59a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation SaveContact ($SaveContactInput: SaveContactInput!) {\n    saveContact(contact: $SaveContactInput)\n}","variables":"{\n    \"SaveContactInput\": {\n        \"participantId\": \"848a9689-da10-4f49-a2d3-65775339a0e8\",\n        \"firstName\": \"Alice\",\n        \"lastName\": \"Aiko\",\n        \"locale\": \"en_US\",\n        \"channels\": [\n            {\n                \"type\": \"SMS\",\n                \"inboundAddress\": \"+15555555454\",\n                \"outboundAddress\": \"+15555555451\"\n            }\n        ],\n        \"external\" : {\n            \"externalId\" : \"SF000000001\",\n            \"metadata\" : {\n                \"city\" : \"Toronto\"\n            }\n        }\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Saves a Contact, this operation creates a new Contact or updates an existing one based on their participantId.</p>\n<p>Additionally, for each new Channel; then, a new Conversation is created and the Contact is added as participant in the Conversation.</p>\n<p>It returns the provided participantId</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>participantId: ID!</td>\n<td>A UUID to uniquely identify the Contact.</td>\n</tr>\n<tr>\n<td>firstName: String!</td>\n<td>A firstName for the Contact</td>\n</tr>\n<tr>\n<td>lastName: String!</td>\n<td>A lastName for the Contact</td>\n</tr>\n<tr>\n<td>locale: String!</td>\n<td>A locale for the Contact. It must comply with IETF-BCP47</td>\n</tr>\n<tr>\n<td>channels: [ChannelInput]!</td>\n<td>Channels for the Contact.</td>\n</tr>\n<tr>\n<td>external: ExternalInput!</td>\n<td>External data for the Contact.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"channelinput\">ChannelInput</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>type: ChannelTypeEnum!</td>\n<td>A type for the Channel. ie. SMS</td>\n</tr>\n<tr>\n<td>inboundAddress: String!</td>\n<td>The inboundAddress format is dictated by the channel type: SMS types must follow the E.164 format. For example, for SMS types the inboundAddress is a phone number that the system can receive messages from.</td>\n</tr>\n<tr>\n<td>outboundAddress: String!</td>\n<td>An outboundAddress for the Channel. The outboundAddress format is dictated by the channel type: SMS types must follow the E.164 format. For example, for SMS types the outboundAddress is a phone number used by the system when sending messages to inboundAddresses.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"externalinput\">ExternalInput</h2>\n<p>External data that isn't directly maintained by TextKit but is required when integrating with external systems.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"0c5e1773-af76-42f8-a388-8ae74807d59a"}],"id":"ed3f212f-e388-4174-8936-a5ad0b39ea2b","description":"<p>A contact is a person you would like to have a conversation with, such as a business' customer. These are participants who are going to receive messages from the system.</p>\n","_postman_id":"ed3f212f-e388-4174-8936-a5ad0b39ea2b"},{"name":"Representative","item":[{"name":"FindRepresentativeById","id":"57d5139b-df05-4dee-afa7-47ec7bc6e7bf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"query FindRepresentative($participantId: ID!) {\n    findRepresentativeById(id : $participantId) {\n        participantId\n        external {\n            externalId\n            metadata\n        }\n        authentication {\n            identifier\n        }\n    }\n}","variables":"{\n    \"participantId\" : \"d4e44877-ae53-47f1-851b-20c7bfd3b5ec\"\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Queries a Representative by participantId.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"57d5139b-df05-4dee-afa7-47ec7bc6e7bf"},{"name":"SaveRepresentative","event":[{"listen":"test","script":{"id":"ecb65857-1851-4e23-b985-698d47ab9ec4","exec":["pm.test(\"Your test name\", function () {","    var jsonData = pm.response.json();","    console.log(jsonData.data);","    pm.environment.set(\"ParticipantId\", jsonData.data.saveRepresentative);","});"],"type":"text/javascript"}}],"id":"e59ccd5d-dcf8-48d2-87c4-4e001061c3fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation SaveRepresentative ($SaveRepresentativeInput: SaveRepresentativeInput!) {\n    saveRepresentative(representative: $SaveRepresentativeInput)\n}","variables":"{\n    \"SaveRepresentativeInput\": {\n        \"participantId\": \"d4e44877-ae53-47f1-851b-20c7bfd3b5ec\",\n        \"external\" : {\n            \"externalId\" : \"external_U77676\",\n            \"metadata\" : {\n                \"BRANCH_NAME\" : \"Downtown North\"\n            }\n        },\n        \"authentication\" : {\n            \"identifier\" : \"peter@example.com\"\n        }\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Saves a Representative, this operation creates a new Representative, or updates an existing one based on their participantId.</p>\n<p>It returns the provided participantId</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>participantId: ID!</td>\n<td>A UUID to uniquely identify the Representative.</td>\n</tr>\n<tr>\n<td>external: ExternalInput!</td>\n<td>External data for the Representative.</td>\n</tr>\n<tr>\n<td>authentication: AuthenticationInput!</td>\n<td>Authentication data for the Representative.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"externalinput\">ExternalInput</h2>\n<p>External data that isn't directly maintained by TextKit but is required when integrating with external systems.</p>\n<h2 id=\"authenticationinput\">AuthenticationInput</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>identifier: String!</td>\n<td>Unique identifier within the Authentication Provider service.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"e59ccd5d-dcf8-48d2-87c4-4e001061c3fe"},{"name":"AssignRepresentativeToContacts","id":"aac2b2b9-ac25-4f7e-8396-80d647345cec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation AssignRepresentativeToContact($AssignRepresentativeToContactInput : AssignRepresentativeToContactInput!) {\n    assignRepresentativeToContact(input: $AssignRepresentativeToContactInput)\n}","variables":"{\n    \"AssignRepresentativeToContactInput\" : {\n        \"representative\": \"{{RepresentativeParticipantId}}\",\n        \"contact\": \"{{ContactParticipantId}}\"\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Assigns a Representative to a Contact. The system is going to make the Representative a Participant in each Conversation belonging to the Contact. This operation also unassigns Representative (if any) previously assigned to all Contacts in the Conversation.</p>\n<p>It returns true when successful.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"aac2b2b9-ac25-4f7e-8396-80d647345cec"},{"name":"UnassignRepresentativeFromContacts","id":"ec777b33-cb29-4a05-bbc2-a307a85c6dc4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation unassignRepresentativeFromContact($UnassignRepresentativeFromContactInput : UnassignRepresentativeFromContactInput!) {\n    unassignRepresentativeFromContact(input: $UnassignRepresentativeFromContactInput)\n}","variables":"{\n    \"UnassignRepresentativeFromContactInput\" : {\n        \"representative\": \"{{RepresentativeParticipantId}}\",\n        \"contact\": \"{{ContactParticipantId}}\"\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Unassigns a Representative from a Contact. The system is going to remove the Representative as a Participant from each Conversation belonging to the Contact.</p>\n<p>It returns true when successful.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"ec777b33-cb29-4a05-bbc2-a307a85c6dc4"}],"id":"9be48cd0-20c1-4057-9e1c-b6b99d97ed09","description":"<p>A representative is a user within TextKit who will be sending messages to your contacts in conversations.</p>\n","_postman_id":"9be48cd0-20c1-4057-9e1c-b6b99d97ed09"}],"id":"4f1bb300-a355-4390-a2c1-44f112b29b5d","description":"<p>Participants are those users and contacts involved in a conversation.</p>\n","_postman_id":"4f1bb300-a355-4390-a2c1-44f112b29b5d"},{"name":"Topic","item":[{"name":"FindTopicById","id":"e3530b27-7cd4-4739-8d29-8c69e5239f54","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"query FindTopic($topicId: ID!) {\n    findTopicById(topicId : $topicId) {\n        topicId\n        name\n        description\n        state\n        external {\n            externalId\n            metadata\n        }\n        templates {\n            name\n            locale\n            channel {\n                type\n            }\n            text\n        }\n    }\n}","variables":"{\n    \"topicId\" : \"{{TopicId}}\"\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Queries a Topic by topicId.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"e3530b27-7cd4-4739-8d29-8c69e5239f54"},{"name":"SaveTopic","event":[{"listen":"test","script":{"id":"3fdf2bfc-cabc-47fd-a217-1929749514a1","exec":[""],"type":"text/javascript"}}],"id":"f0b9fa41-5bf3-4d3d-b23a-16f3c54799f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation SaveTopic ($SaveTopicInput: SaveTopicInput!) {\n    saveTopic(input: $SaveTopicInput)\n}","variables":"{\n    \"SaveTopicInput\": {\n        \"topicId\" : \"{{TopicId}}\",\n        \"name\" : \"PayByMobile Campaign\",\n        \"description\" : \"Encourage customers to switch to our new app.\",\n        \"external\": {\n            \"externalId\": \"SFMC00000001\",\n            \"metadata\": {\n                \"product\": \"PayMyMobile\"\n            }\n        },\n        \"templates\" : [\n            {\n                \"name\": \"New App Reminder\",\n                \"locale\": \"en_CA\",\n                \"channel\": {\n                    \"type\": \"SMS\"\n                },\n                \"text\": \"Hello {{name}}. I noticed you paid by {{currency}} last time you were in. Did you know we now have a mobile app to make your payments even easier?\"\n            }, {\n                \"name\": \"Loyalty points\",\n                \"locale\": \"en_CA\",\n                \"channel\": {\n                    \"type\": \"SMS\"\n                },\n                \"text\": \"Hello {{name}}, you are eligible for {{points}} points by using our new mobile app. Would you like to redeem it at your next appointment next week?\"\n            }\n        ]\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Saves a Topic, this operation creates a new Topic, or updates an existing one based on their topicId.</p>\n<p>It returns the provided topicId</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguments</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>topicId: ID!</td>\n<td>A UUID to uniquely identify the Topic.</td>\n</tr>\n<tr>\n<td>name: String!</td>\n<td>A name for the Topic.</td>\n</tr>\n<tr>\n<td>description: String</td>\n<td>A description for the Topic. Max length of 10000 characters.</td>\n</tr>\n<tr>\n<td>name: templates: [TemplateWithTextInput!]</td>\n<td>Templates for the Topic. This array only accepts unique entries, meaning that duplicate entries will be merged.</td>\n</tr>\n<tr>\n<td>external: ExternalInput</td>\n<td>External data that isn't directly maintained by TextKit but required when integrating with external systems.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"templatewithtextinput\">TemplateWithTextInput</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>text: String!</td>\n<td>A text for the Template. Values inside double curly braces {{...}} are considered placeholders that can be replaced by Template Variables.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"externalinput\">ExternalInput</h2>\n<p>External data that isn't directly maintained by TextKit but is required when integrating with external systems.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f0b9fa41-5bf3-4d3d-b23a-16f3c54799f5"},{"name":"SaveTopicParticipation","id":"cc035381-8eb9-4f8d-b373-07abdd515e0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation SaveTopicParticipation ($SaveTopicParticipationInput: SaveTopicParticipationInput!) {\n    saveTopicParticipation(input: $SaveTopicParticipationInput)\n}","variables":"{\n    \"SaveTopicParticipationInput\": {\n        \"topicId\": \"{{TopicId}}\",\n        \"participantId\" : \"{{ContactParticipantId}}\",\n        \"range\" : {\n            \"startsAt\": \"2022-07-17T10:23:53.929335-04:00\",\n            \"endsAt\": \"2999-01-01T01:00:00.000Z\"\n        },\n        \"external\": {\n            \"metadata\": {\n                \"caslLink\": \"https://casl.link?xxxxxxxx\"\n            }\n        },\n        \"templateVariables\": [\n            {\n            \"template\": {\n                \"name\": \"App Campaign\",\n                \"locale\": \"en_CA\",\n                \"channel\": {\n                    \"type\": \"SMS\"\n                }\n            },\n            \"variables\": [\n                {\n                    \"key\": \"name\",\n                    \"value\": \"Alice A. Abel\"\n                }, {\n                    \"key\": \"currency\",\n                    \"value\": \"Cash\"\n                }\n            ]\n            }, {\n                \"template\": {\n                    \"name\": \"Loyalty points\",\n                    \"locale\": \"en_CA\",\n                    \"channel\": {\n                        \"type\": \"SMS\"\n                    }\n                },\n                \"variables\": [\n                    {\n                        \"key\": \"name\",\n                        \"value\": \"Alice\"\n                    }, {\n                        \"key\": \"points\",\n                        \"value\": \"5000\"\n                    }\n                ]\n            }\n        ]\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Saves a TopicParticipation, this operation creates a new TopicParticipation, or updates an existing one based on their topicId and participantId.</p>\n<p>A TopicParticipation defines which Participants (i.e: Contacts) participate in a Topic.</p>\n<p>It returns true when successful.</p>\n<h2 id=\"savetopicparticipationinput\">SaveTopicParticipationInput</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>topicId: ID!</td>\n<td>The topicId of the Topic that the Participant participates in.</td>\n</tr>\n<tr>\n<td>participantId: ID!</td>\n<td>The participantId of the Participant who participates in the Topic. Contacts are the only supported Participants at the moment.</td>\n</tr>\n<tr>\n<td>range: TemporalRangeInput!</td>\n<td>Range applicable to the Participant within the Topic.</td>\n</tr>\n<tr>\n<td>templateVariables: [TemplateVariableInput!]</td>\n<td>Template Variables applicable to the Participant within the Topic.</td>\n</tr>\n<tr>\n<td>external: TopicParticipationExternalInput</td>\n<td>External metadata applicable to the participation.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"temporalrangeinput\">TemporalRangeInput</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>startsAt: DateTime!</td>\n<td>When the range starts.</td>\n</tr>\n<tr>\n<td>endsAt: DateTime!</td>\n<td>When the range ends.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"templatevariableinput\">TemplateVariableInput</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Arguements</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>template: TemplateInput</td>\n<td>Indicates which template the variables are applicable.</td>\n</tr>\n<tr>\n<td>variables: [KeyValueInput]</td>\n<td>Indicates which variables are applicable.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"cc035381-8eb9-4f8d-b373-07abdd515e0c"},{"name":"ActivateTopic","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"94138f67-78ca-46da-9c28-d83ac27ef5e3"}}],"id":"c7e1d7a6-e645-429f-aba0-fefe6c2422df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation ActivateTopic ($topicId: ID!) {\n    activateTopic(topicId: $topicId)\n}","variables":"{\n    \"topicId\" : \"{{TopicId}}\"\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Activates a Topic to be used for Conversations.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"c7e1d7a6-e645-429f-aba0-fefe6c2422df"},{"name":"DeactivateTopic","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"f605bd38-d317-45af-9006-93ac56a69a09"}}],"id":"53b23cf2-491a-4cd6-a46c-cc5947843f1e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation DeactivateTopic ($topicId: ID!) {\n    deactivateTopic(topicId: $topicId)\n}","variables":"{\n    \"topicId\" : \"{{TopicId}}\"\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>Deactivates a Topic and prevents it from being used in Conversatons.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"53b23cf2-491a-4cd6-a46c-cc5947843f1e"},{"name":"RemoveTopicParticipation","id":"1bf985db-f96e-4e4e-bb1a-65d07c3463ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation RemoveTopicParticipation ($RemoveTopicParticipationInput: RemoveTopicParticipationInput!) {\n    removeTopicParticipation(input: $RemoveTopicParticipationInput)\n}","variables":"{\n    \"RemoveTopicParticipationInput\": {\n        \"topicId\": \"{{TopicId}}\",\n        \"participantId\" : \"{{ContactParticipantId}}\"\n    }\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>This operation removes a Topic from a Contact.</p>\n<p>It returns true when successful.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"1bf985db-f96e-4e4e-bb1a-65d07c3463ee"}],"id":"9eef27dc-55f6-4954-a1bc-a49674135c6f","description":"<p>Topics are reasons a participant should engage in a conversation. These could be business campaigns.</p>\n","_postman_id":"9eef27dc-55f6-4954-a1bc-a49674135c6f"},{"name":"Conversation","item":[{"name":"ActivateConversation","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"54a99935-0f98-4871-802f-539466010761"}}],"id":"4136d190-7e07-45bc-a139-f5f21b1106ac","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation ActivateConversation ($conversationId: ID!) {\n    activateConversation(conversationId: $conversationId)\n}","variables":"{\n    \"conversationId\" : \"{{ConversationId}}\"\n}"}},"url":"{{ApiUrl}}/graphql","description":"<p>This triggers the creation of a new conversation ready to go in TextKit. Participants can interact with activated Conversations.</p>\n","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"4136d190-7e07-45bc-a139-f5f21b1106ac"},{"name":"DeactivateConversation","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","id":"9a5edbce-da2b-4b93-90bf-4446aa73c5a2"}}],"id":"9c4e4a9a-c032-48b4-a1e9-331a277954c1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{AuthorizationToken}}","type":"text"}],"body":{"mode":"graphql","graphql":{"query":"mutation deactivateConversation ($conversationId: ID!) {\n    deactivateConversation(conversationId: $conversationId)\n}","variables":"{\n    \"conversationId\" : \"{{ConversationId}}\"\n}"}},"url":"{{ApiUrl}}/graphql","urlObject":{"path":["graphql"],"host":["{{ApiUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"9c4e4a9a-c032-48b4-a1e9-331a277954c1"}],"id":"025b13c9-7670-4e24-bec5-fd51d87ca54d","description":"<p>Conversations can be interacted with individually. This can be useful for managing individual conversations to perform automatic actions, such as moving them between categories to achieve a certain workflow and improve representative efficiency, or to reassign conversations to a different representative to maintain business continuity or rebalance workloads.</p>\n<p>Conversations can actually be created, managed, and follow their whole lifecycle without ever being included with a topic. This can support workflows that don’t fit within the lifecycle of a topic, especially for conversations that are created in reaction to a contact-initiated event such as an incoming support desk request, or an algorithmic outreach trigger for a particular contact.</p>\n","_postman_id":"025b13c9-7670-4e24-bec5-fd51d87ca54d"}]}