{"componentChunkName":"component---src-templates-tree-layout-js","path":"/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/","result":{"data":{"content":{"frontmatter":{"title":"Interacting with GraphQL","description":"This tutorial provides a short introduction to GraphQL terminology and explains how to interact with GraphQL-based APIs.","show_cards":null},"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/","current":"Interacting_with_GraphQL","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"html":"<h1 id=\"interacting-with-graphql\" style=\"position:relative;\"><a href=\"#interacting-with-graphql\" aria-label=\"interacting with graphql permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Interacting with GraphQL</h1>\n<p>This tutorial provides a short introduction to GraphQL terminology and explains how to interact with GraphQL-based APIs.</p>\n<h2 id=\"about-graphql\" style=\"position:relative;\"><a href=\"#about-graphql\" aria-label=\"about graphql permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About GraphQL</h2>\n<p>The GraphQL data query language is:</p>\n<ul>\n<li>A <a href=\"http://spec.graphql.org/June2018/\">specification</a>: The spec determines the validity of the <a href=\"https://graphql.org/learn/schema/\">schema</a> on the API server, and the schema determines the validity of client calls.</li>\n<li>Strongly typed: The schema defines an API's type system and all object relationships.</li>\n<li>Introspective: A client can query the schema for details about the schema.</li>\n<li>Hierarchical: The shape of a GraphQL call mirrors the shape of the JSON data it returns. Nested fields let you query for and receive only the data you specify in a single round trip.</li>\n<li>An application layer: GraphQL is not a storage model or a database query language. The graph refers to graph structures defined in the schema. The API traverses and returns application data based on the schema definitions, independent of how the data is stored.</li>\n</ul>\n<h2 id=\"the-graphql-schema-reference\" style=\"position:relative;\"><a href=\"#the-graphql-schema-reference\" aria-label=\"the graphql schema reference permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The GraphQL Schema Reference</h2>\n<p>The documentation in the API reference section are generated from the GraphQL <a href=\"https://graphql.org/learn/schema/\">schema</a>.\nAll calls are validated and executed against the schema. The following information determines the data that you can call:</p>\n<ul>\n<li>Allowed operations: queries</li>\n<li>Schema-defined types: scalars, objects, enums, and input objects</li>\n</ul>\n<p>Note that you may need to rely on both the documentation and schema validation to successfully call the GraphQL API. </p>\n<h2 id=\"graphql-terminology\" style=\"position:relative;\"><a href=\"#graphql-terminology\" aria-label=\"graphql terminology permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>GraphQL Terminology</h2>\n<dl>\n<dt>Schema</dt>\n<dd>  \nA schema defines a GraphQL API's type system. \nIt describes the complete set of possible data (objects, fields, relationships, everything) that a client can access. \nCalls from the client are \n<a href=\"https://graphql.github.io/learn/validation/\">validated</a> and\n<a href=\"https://graphql.github.io/learn/execution/\">executed</a>\nagainst the schema. \nA client can find information about the schema via \n<a href=\"https://graphql.github.io/learn/introspection/\">introspection</a>, \nand the schema resides on the GraphQL API server. \n</dd>\n  \n<dt>Field</dt>\n<dd>\n<p>A field is a unit of data you can retrieve from an object.\nThe official\n<a href=\"https://graphql.github.io/learn/schema/\"> GraphQL documentation</a> says: <br>\n<em>\"The GraphQL query language is basically about selecting fields on objects.\"</em></p>\n<p>The <a href=\"http://spec.graphql.org/June2018/#sec-Language.Fields\">official specification</a> also says about fields:  <br>\n<em>\"All GraphQL operations must specify their selections down to fields which return scalar values to ensure an unambiguously shaped response.\"</em></p>\n<p>This means that if you try to return a field that is not a scalar, the schema validation will throw an error.\nYou must add nested subfields until all fields return scalars.</p>\n</dd>\n<dt>Argument</dt>\n<dd>\nAn argument is a set of key-value pairs attached to a specific field. Some fields require an argument. \nMutations require an input object as an argument.\n</dd>\n</dl>\n<h2 id=\"discovering-the-graphql-api\" style=\"position:relative;\"><a href=\"#discovering-the-graphql-api\" aria-label=\"discovering the graphql api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Discovering the GraphQL API</h2>\n<p>GraphQL is <a href=\"https://graphql.github.io/learn/introspection/\">introspective</a>.\nThis means that you can query a GraphQL schema for details about itself.</p>\n<ul>\n<li>Query <code class=\"language-text\">__schema</code> to list all types defined in the schema and get details about each</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">  query { __schema { types { name kind description fields { name } } } }</code></pre></div>\n<ul>\n<li>Query <code class=\"language-text\">__type</code> to get details about any type</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">query { __type(name: \"Conversation\") { name kind description fields { name } } }</code></pre></div>\n<p>Since results are in JSON, we recommend pretty-printing them for easier reading and searching.</p>\n<p>Note: The introspection query is probably the only <code class=\"language-text\">GET</code> request you'll run in GraphQL.\nIf you're passing a body, the GraphQL request method is POST, whether it's a query or a mutation.</p>\n<h2 id=\"communicating-with-graphql\" style=\"position:relative;\"><a href=\"#communicating-with-graphql\" aria-label=\"communicating with graphql permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Communicating with GraphQL</h2>\n<p>GraphQL's operations consist of multi-line JSON. You can use cURL or any other HTTP-speaking library.</p>\n<p>In REST, HTTP verbs determine the operation performed. In GraphQL, you'll provide a JSON-encoded body whether you're performing a query or a mutation, so the HTTP verb is POST. The exception is an <em>introspection</em> query, which is a simple <code class=\"language-text\">GET</code> to the endpoint.</p>\n<p>To query GraphQL, we can make a POST request with a JSON payload. The payload must contain a string called query:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">http\nPOST {{BASE_URL}}/partners/{{Partner-ID}}/data/{conversationdata}/getConversationById\nContent-Type: application/json\nAuthorization: Basic {{Client-ID}}:{{Secret}}\nx-cp-partner-id: {{Partner-ID}}\nx-resource-template-version: {{template-version}}\n\n{ “query”: “query{getConversationById(conversationId:\\“39824e66-7eb1-4099-8110-ed41d7793f4d\\“){conversationId}}” } </code></pre></div>\n<p><em>Note: The string value of \"query\" must escape newline characters, or the schema will not parse it correctly. For the POST body, use outer double quotes and escaped inner double quotes.</em></p>\n<h2 id=\"query-and-mutation-operations\" style=\"position:relative;\"><a href=\"#query-and-mutation-operations\" aria-label=\"query and mutation operations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Query and Mutation Operations</h2>\n<p>The two types of allowed operations in GraphQL are queries and mutations. Comparing GraphQL to REST, queries operate like <code class=\"language-text\">GET</code> requests, while mutations operate like <code class=\"language-text\">POST/PATCH/DELETE</code>.</p>\n<p>Queries and mutations share similar forms, with some important differences.</p>\n<h3 id=\"about-queries\" style=\"position:relative;\"><a href=\"#about-queries\" aria-label=\"about queries permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About Queries</h3>\n<p>GraphQL queries return only the data you specify.\nTo form a query, you must specify fields within fields (also known as <em>nested subfields</em>), until you return only scalars.</p>\n<p>Queries are structured like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">query {\n  JSON objects to return\n}</code></pre></div>\n<p>For a real-world example, see <em><a href=\"#an-example-query\">An Example Query</a></em> below.</p>\n<h3 id=\"about-mutations\" style=\"position:relative;\"><a href=\"#about-mutations\" aria-label=\"about mutations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>About Mutations</h3>\n<p>To form a mutation, you must specify three things:</p>\n<ul>\n<li><em>Mutation name</em>: The type of modification you want to perform.</li>\n<li><em>Input object</em>: The data you want to send to the server, composed of <em>input fields</em>. Pass it as an argument to the mutation name.</li>\n<li><em>Payload object</em>: The data you want to return from the server, composed of <em>return fields</em>. Pass it as the body of the mutation name.</li>\n</ul>\n<p>Mutations are structured like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">mutation {\n  mutationName(input: {MutationNameInput!}) {\n    MutationNamePayload\n}</code></pre></div>\n<p>The input object in this example is <code class=\"language-text\">MutationNameInput</code>, and the payload object is <code class=\"language-text\">MutationNamePayload</code>.</p>\n<h2 id=\"working-with-variables\" style=\"position:relative;\"><a href=\"#working-with-variables\" aria-label=\"working with variables permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Working with Variables</h2>\n<p><a href=\"https://graphql.github.io/learn/queries/#variables\">Variables</a> can make queries more dynamic and powerful,\nand they can reduce complexity when passing mutation input objects.</p>\n<p>Here's an example query with a single variable:</p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">query($conversationId:String!) { getConversationById(conversationId: $conversationId) { conversationId } } variables { \"conversationId\": \"123\" }</code></pre></div>\n<p>There are three steps to using variables:</p>\n<ul>\n<li>\n<p>Define the variable outside the operation in a variables object. The object must be valid JSON. This example shows a simple <code class=\"language-text\">String</code> variable type, but it's possible to define more complex variable types, such as input objects. You can also define multiple variables here.</p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">variables { \"conversationId\": \"123\" }</code></pre></div>\n</li>\n<li>\n<p>Pass the variable to the operation as an argument. The argument is a key-value pair, where the key is the <em>name</em> starting with $ (e.g., <code class=\"language-text\">$conversationId</code>), and the value is the <em>type</em> (e.g., String). Add a <code class=\"language-text\">!</code> to indicate whether the type is required. If you've defined multiple variables, include them here as multiple arguments.</p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">query($conversationId:String!) {</code></pre></div>\n</li>\n<li>\n<p>Use the variable within the operation. In this example, we substitute the variable for the <code class=\"language-text\">conversationId</code> to retrieve. We specify a type in step 2 because GraphQL enforces strong typing.</p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">getConversationById(conversationId: $conversationId) {</code></pre></div>\n</li>\n</ul>\n<p><em>This process makes the query argument dynamic. We can now simply change the value in the <code class=\"language-text\">variables</code> object and keep the rest of the query the same.</em></p>\n<p><em>Using variables as arguments lets you dynamically update values in the <code class=\"language-text\">variables</code> object without changing the query.</em></p>\n<h2 id=\"an-example-query\" style=\"position:relative;\"><a href=\"#an-example-query\" aria-label=\"an example query permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>An Example Query</h2>\n<p>Let's walk through a query and put this information in context.</p>\n<p>The following query looks up and returns each conversation's <code class=\"language-text\">conversationId</code>, originatingChannelType and all participants' ids:</p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">query { getConversationById(conversationId:\"123\") { conversationId originatingChannelType participants { participantId } } }</code></pre></div>\n<p>Let's look at the composition line by line:</p>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">query {</code></pre></div>\n<ul>\n<li>Because we want to read data from the server, not modify it, query is the root operation. <em>(If you don't specify an operation, query is also the default.)</em></li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">getConversationById(conversationId:\"123\") {</code></pre></div>\n<ul>\n<li>To begin the query, we want to find a <code class=\"language-text\">Conversation</code> object. The schema validation indicates this object requires a <code class=\"language-text\">conversationId</code> as an argument. Now that we know we're retrieving a <code class=\"language-text\">Conversation</code> object, we can specify the fields we want to return:</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"http\"><pre class=\"language-http\"><code class=\"language-http\">conversationId originatingChannelType participants { participantId }</code></pre></div>\n<ul>\n<li>(Here we specify the <code class=\"language-text\">conversationId, originatingChannelType,</code> and <code class=\"language-text\">participants</code> fields of the <code class=\"language-text\">Conversation</code> object.)</li>\n</ul>\n<p>Note: You may notice that running this query with <code class=\"language-text\">conversationId</code> 123 won't return anything.\nTry running it on with one of the valid <code class=\"language-text\">conversationIds</code> and you'll likely see a difference.</p>\n<h2 id=\"references\" style=\"position:relative;\"><a href=\"#references\" aria-label=\"references permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>References</h2>\n<p>There is a <em>lot</em> more you can do when forming GraphQL calls. Here are some places to look next:</p>\n<ul>\n<li><a href=\"https://graphql.github.io/learn/queries/#fragments\">Fragments</a></li>\n<li><a href=\"https://graphql.github.io/learn/queries/#inline-fragments\">Inline Fragments</a></li>\n<li><a href=\"https://graphql.github.io/learn/queries/#directives\">Directives</a></li>\n</ul>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#interacting-with-graphql\">Interacting with GraphQL</a></p>\n<ul>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#about-graphql\">About GraphQL</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#the-graphql-schema-reference\">The GraphQL Schema Reference</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#graphql-terminology\">GraphQL Terminology</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#discovering-the-graphql-api\">Discovering the GraphQL API</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#communicating-with-graphql\">Communicating with GraphQL</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#query-and-mutation-operations\">Query and Mutation Operations</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#working-with-variables\">Working with Variables</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#an-example-query\">An Example Query</a></li>\n<li><a href=\"/docs/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/#references\">References</a></li>\n</ul>\n</li>\n</ul>"},"documents":{"edges":[{"node":{"fields":{"slug":"/tutorials/getting_started/","current":"getting_started","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started","description":"Getting Started guides for partners to quickly setup their contact center."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/Getting_started_with_intelligent_contact_distribution_API/","current":"Getting_started_with_intelligent_contact_distribution_API","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"Getting Started with Intelligent Contact Distribution API","description":"This tutorial shows how to set up Intelligent Contact Distribution to route a conversation to the optimal contact."}}},{"node":{"fields":{"slug":"/tutorials/WorkForce_Management_Tutorials/Workforce_Management_Integration/","current":"Workforce_Management_Integration","parent":"WorkForce_Management_Tutorials","root":"tutorials"},"frontmatter":{"title":"Workforce Management Integration","description":"Learn to configure and map Human Agent Forecast data for better Workforce tracking and adherence calculations."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Integrating CCaaS and Salesforce/","current":"Integrating CCaaS and Salesforce","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Integrating CCaaS and Salesforce","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/ICD_Channel_Throttling_Rule_Configuration/","current":"ICD_Channel_Throttling_Rule_Configuration","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"ICD Channel Throttling Rule Configuration","description":null}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/LoggingIntoOkta/","current":"LoggingIntoOkta","parent":"IAM_Tutorials","root":"tutorials"},"frontmatter":{"title":"Logging in using Okta","description":"This is from James Thomas Confluence page"}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/Provisioning Users and RBAC/","current":"Provisioning Users and RBAC","parent":"IAM_Tutorials","root":"tutorials"},"frontmatter":{"title":"Provisioning Users and RBAC","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/ICD_HoursOfOperation_Rule_Configuration/","current":"ICD_HoursOfOperation_Rule_Configuration","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"ICD Hours of Operation Rule Configuration","description":null}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Roles_and_Permissions/","current":"Roles_and_Permissions","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Accessing Analytic Data","description":"Gain access to analytic reports based on platform-defined roles and permissions."}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/","current":"Voice_Configuration","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Voice Configuration","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/","current":"Define_Rules_Policies","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Define Rules and Policies","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/","current":"Intelligent_Contact_Distribution","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Setting up Intelligent Contact Distribution","description":"This tutorial shows how to configure Intelligent Contact Distribution API"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/hours_of_operation/","current":"hours_of_operation","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Hours of Operation","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/queue_treatment/","current":"queue_treatment","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Queue Treatment","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Queue_and_Queue_Group/","current":"Queue_and_Queue_Group","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Queues and Queue Groups","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/agent_activity_groups/","current":"agent_activity_groups","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Activity Groups","description":null}}},{"node":{"fields":{"slug":"/tutorials/WorkForce_Management_Tutorials/Workforce_Optimization_Dashboards/","current":"Workforce_Optimization_Dashboards","parent":"WorkForce_Management_Tutorials","root":"tutorials"},"frontmatter":{"title":"Workforce Optimization Data Visualization","description":"Learn how to access and compare real-time and historical reports on agent activity, queues, and queue groups."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Quick_start_VNext/","current":"Quick_start_VNext","parent":"Voyager_Next","root":"Voyager_Next"},"frontmatter":{"title":"Getting Started","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Intelligent_Contact_Distribution/ICD_QueueWaitTime_Rule_Configuration/","current":"ICD_QueueWaitTime_Rule_Configuration","parent":"Intelligent_Contact_Distribution","root":"tutorials"},"frontmatter":{"title":"ICD Queue Wait Time Rule Configuration","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Chat_Features/","current":"Chat_Features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Chat Features","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Setup_Analytics_Reporting/","current":"Setup_Analytics_Reporting","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Setup Analytics and Reporting","description":null}}},{"node":{"fields":{"slug":"/Applications/ContactCenterManagement/","current":"ContactCenterManagement","parent":"Applications","root":"ContactCenterManagement"},"frontmatter":{"title":"Contact Center Management","description":"Welcome to the Contact Center Management"}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Voice_Features/","current":"Voice_Features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Voice Features","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Accessing_EG_Data_Lake/","current":"Accessing_EG_Data_Lake","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started with EG Data Lake","description":"Use EG Data Lake to access and stitch together data from varied domains such as Booking, Marketing, Commerce, User, Supply, and Partner."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Getting_started_with_User_Context_service/","current":"Getting_started_with_User_Context_service","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started with User Context Service","description":"Learn about the User Context Service and the powerful concepts behind the GraphQL data query language."}}},{"node":{"fields":{"slug":"/capabilities/Contact_Center_Management/","current":"Contact_Center_Management","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Contact Center Management Console","description":"Self-service management of the workforce and experiences."}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/","current":"Agent_Experience_Console_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Experience and Contact Center Management Console (CCM Console)","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_hoo_template/","current":"create_hoo_template","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a HOO Template","description":"Create a HOO Template"}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/CoreConversationMetrics/","current":"CoreConversationMetrics","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Core Conversation Metrics","description":"Learn about basic concepts, entities, and processes concerning Core conversation metrics."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Email_Features/","current":"Email_Features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Email Features","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Service_Requests/","current":"Service_Requests","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Service request features","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/history_features/","current":"history_features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"History Features","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/knowledge_base_features/","current":"knowledge_base_features","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Knowledge Base Integration","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/","current":"Data_Intelligence","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Data Intelligence","description":"Provides conversation content, data & insights, intelligent contact, distribution, data pipeline and EGDP and dData integration."}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Intelligent_Contact_Distribution_API/","current":"Intelligent_Contact_Distribution_API","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Intelligent Contact Distribution API","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Resource_Sharing_Across_Partner/","current":"Resource_Sharing_Across_Partner","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Resource Sharing Across Partners","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_policies/","current":"create_policies","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create Policies","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_routing_templates/","current":"create_routing_templates","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a Routing Template","description":"Create a Routing Template"}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/","current":"Data_Intelligence_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Data Intelligence Tutorials","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Build_Customize_Reports/","current":"Build_Customize_Reports","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Build and Customise Reports","description":"Learn how to build and manage your own dashboard reports, then save them for future access."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Customization_VNext/","current":"Customization_VNext","parent":"Voyager_Next","root":"Voyager_Next"},"frontmatter":{"title":"Voyager NEXT Customization","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/UserContextService/","current":"UserContextService","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"User Context Service","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/RBAC_Resources/","current":"RBAC_Resources","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"RBAC Resource","description":null}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/","current":"Workforce_Optimization","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Workforce Optimization","description":"Improve performance and utilization of Agents & Contact Centers using real-time and historical data to pinpoint areas of excellence and improvement, replicate successful interactions, and identify crucial feedback."}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_qwt_template/","current":"create_qwt_template","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a Queue Wait Time Template","description":"Create a Queue Wait Time Template"}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Conversation_Data_Concepts/","current":"Conversation_Data_Concepts","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Conversation Data Concepts","description":"Learn about basic concepts, entities, and processes concerning Conversation data."}}},{"node":{"fields":{"slug":"/tutorials/WorkForce_Management_Tutorials/","current":"WorkForce_Management_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Workforce Management Tutorials","description":"This section contains the tutorials for the Workforce Management capability."}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/Virtual_Agent_Assistant_in_Voyager_Next/","current":"Virtual_Agent_Assistant_in_Voyager_Next","parent":"Features","root":"Voyager_Next"},"frontmatter":{"title":"Virtual Agent Assistant in Voyager Next","description":null}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/recording_transcription/","current":"recording_transcription","parent":"voice","root":"capabilities"},"frontmatter":{"title":"Recording & Transcription","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/EGDP_Conversation_Domain_Data/","current":"EGDP_Conversation_Domain_Data","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Data Lake","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Tool_Access/","current":"Tool_Access","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Tool Access","description":null}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/","current":"Smart_Omni_Channel_Routing","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Smart Omni-Channel Routing","description":"Smart Omni-Channel Routing is a suite of skills and applications, that connects customer to the most suitable human Agent with full context of customer's unresolved intent, on any of the platform supported channel. (uad-2620)"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_throttling_template/","current":"create_throttling_template","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create a Throttling Template","description":"Create a Throttling Template"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/agent_managment/","current":"agent_managment","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Management","description":"Learn how to create, update, and deactivate agents and groups."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Conversation/","current":"Conversation","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Conversation Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Conversation/","current":"Conversation","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Conversation Scenarios","description":"Learn to access and manage common scenarios for analyzing Conversation data."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Getting_started_with_Platform_Data_API/","current":"Getting_started_with_Platform_Data_API","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Getting Started with Platform Data API","description":"Learn about Platform Data API and the powerful concepts behind the GraphQL data query language."}}},{"node":{"fields":{"slug":"/tutorials/SmartOmniChannelRouting_Tutorials/","current":"SmartOmniChannelRouting_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Smart-Omni-Channel-Routing Tutorials","description":"This section contains the tutorials for the SOCR capability."}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Dashboard_and_Reports/","current":"Dashboard_and_Reports","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Dashboard and Reports","description":"Dashboards"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/voice_adapter/","current":"voice_adapter","parent":"voice","root":"capabilities"},"frontmatter":{"title":"Voice providers and adapters","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/PlatformDataAPI/","current":"PlatformDataAPI","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Platform Data API","description":"Data API provides the capability to programmatically access the conversation platform data."}}},{"node":{"fields":{"slug":"/capabilities/IAM/Agent_Roles/","current":"Agent_Roles","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Built-in Agent Roles","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Login_Details/","current":"Login_Details","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Login Details","description":null}}},{"node":{"fields":{"slug":"/capabilities/Omni_Channel_Agent_Tool/","current":"Omni_Channel_Agent_Tool","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Omni-Channel Agent Tool","description":"Agent tool that provides a component based, intuitive interface across multiple conversation channels"}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Workforce_Management/","current":"Workforce_Management","parent":"Workforce_Optimization","root":"capabilities"},"frontmatter":{"title":"Workforce Management","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_rule_types/","current":"create_rule_types","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create Rule Types","description":"Creating Rule Types for Business Rules and Policies"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/Create_Voice_Entry_Points/","current":"Create_Voice_Entry_Points","parent":"Voice_Configuration","root":"tutorials"},"frontmatter":{"title":"Voice Entry Points","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/","current":"Channel_Integration_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Voice and Chat Channel Integration Tutorials","description":"This section houses the tutorials for the Channel Integration capability."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Message/","current":"Message","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Message Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/","current":"Interacting_with_GraphQL","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Interacting with GraphQL","description":"This tutorial provides a short introduction to GraphQL terminology and explains how to interact with GraphQL-based APIs."}}},{"node":{"fields":{"slug":"/tutorials/Data_Intelligence_Tutorials/Skills_Tasks/","current":"Skills_Tasks","parent":"Data_Intelligence_Tutorials","root":"tutorials"},"frontmatter":{"title":"Skills and Tasks Scenarios","description":"This tutorial describes how Skills and Tasks relate to Business Functions. It then provides a few sample scenarios to illustrate their use."}}},{"node":{"fields":{"slug":"/tutorials/SmartOmniChannelRouting_Tutorials/queue_management_wait_time/","current":"queue_management_wait_time","parent":"SmartOmniChannelRouting_Tutorials","root":"tutorials"},"frontmatter":{"title":"Queue and Queue Management","description":null}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Adhoc_Analysis/","current":"Adhoc_Analysis","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Ad hoc Analysis","description":"Ad hoc Analysis"}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/Reporting_Features/","current":"Reporting_Features","parent":"Analytics_Console","root":"Analytics_Console"},"frontmatter":{"title":"Reporting Features","description":"Reporting Features"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/","current":"Channel_Integration","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Channel Integration","description":"Conversations can happen across different channels like voice or chat. Channel Integration provides partners different ways to configure or build integration of different channels and tools with the platform"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/chat/","current":"chat","parent":"Channel_Integration","root":"capabilities"},"frontmatter":{"title":"Chat Channel Integration","description":null}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/softphone/","current":"softphone","parent":"voice","root":"capabilities"},"frontmatter":{"title":"Softphone","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Visualization/","current":"Data_Visualization","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Data Visualization","description":"configuration tool"}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/","current":"Service_Experience_Metrics_Suite","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Service Experience Metric Suite","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Detractor_Likelihood/","current":"Detractor_Likelihood","parent":"Service_Experience_Metrics_Suite","root":"capabilities"},"frontmatter":{"title":"Detractor Likelihood","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Repeat_Contact_Likelihood/","current":"Repeat_Contact_Likelihood","parent":"Service_Experience_Metrics_Suite","root":"capabilities"},"frontmatter":{"title":"Repeat Contact Likelihood","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Repeat_Purchase_Likelihood/","current":"Repeat_Purchase_Likelihood","parent":"Service_Experience_Metrics_Suite","root":"capabilities"},"frontmatter":{"title":"Repeat Purchase Likelihood","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Service_Experience_Metrics_Suite/Repeat_Purchase_Likelihood/What-If_Tool/","current":"What-If_Tool","parent":"Repeat_Purchase_Likelihood","root":"capabilities"},"frontmatter":{"title":"What-If Tool","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/Configuration_Roles/","current":"Configuration_Roles","parent":"IAM","root":"capabilities"},"frontmatter":{"title":"Built-in Configuration Roles","description":null}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Agent_Presence/","current":"Agent_Presence","parent":"Workforce_Optimization","root":"capabilities"},"frontmatter":{"title":"Agent Presence","description":"reviewed by ED team cpce-90294"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_rules/","current":"create_rules","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create Rules","description":"Create Rules"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/Create_Voice_Experience_Templates/","current":"Create_Voice_Experience_Templates","parent":"Voice_Configuration","root":"tutorials"},"frontmatter":{"title":"Voice Experience Templates","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BYOVoiceProviderClientLibAdapter/","current":"BYOVoiceProviderClientLibAdapter","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Provider Client Library Adapter","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BringYourOwnVoiceProvider/BYOVoiceProviderClientLibAdapter/","current":"BYOVoiceProviderClientLibAdapter","parent":"BringYourOwnVoiceProvider","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Provider Client Library Adapter","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Participant_Session/","current":"Participant_Session","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Participant Session Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/","current":"IAM_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Identity and Access Management Tutorials","description":"This section houses the tutorials for the IAM capability."}}},{"node":{"fields":{"slug":"/","current":"","parent":"","root":""},"frontmatter":{"title":"Home","description":"Providing conversational capabilities to any partner application over voice, text and social channels"}}},{"node":{"fields":{"slug":"/Applications/Analytics_Console/","current":"Analytics_Console","parent":"Applications","root":"Analytics_Console"},"frontmatter":{"title":"Analytics Console","description":"Analytics Console-One Stop Solution for all Reporting Needs."}}},{"node":{"fields":{"slug":"/Applications/Softphone/","current":"Softphone","parent":"Applications","root":"Softphone"},"frontmatter":{"title":"Softphone","description":"Setup agents to receive or make phone calls and perform call controls."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Agent_Connectivity_Management/","current":"Agent_Connectivity_Management","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Agent Connectivity Management","description":"Detect the network connectivity of the agent in softphone."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Automated_CLI/","current":"Automated_CLI","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Automated CLI","description":"Detect country and hence caller line interface (CLI) candidates for outbound number."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Automated_State_Change/","current":"Automated_State_Change","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Automated State Management","description":"Automated the State change behavior in Softphone for some states"}}},{"node":{"fields":{"slug":"/Applications/Softphone/Call_Source/","current":"Call_Source","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Call Source","description":"Call Source is visible to the agent to get the context of an inbound call."}}},{"node":{"fields":{"slug":"/Applications/Softphone/ClickToCall_CLI_Integration/","current":"ClickToCall_CLI_Integration","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"ClickToCall and Caller ID Integration","description":"Setup agents to be able to select CLI when making calls through CRM tool."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Softphone_Config/","current":"Softphone_Config","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Softphone Configuration","description":null}}},{"node":{"fields":{"slug":"/Applications/Softphone/Softphone_Transfers/","current":"Softphone_Transfers","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Softphone Transfers","description":"Transfer of calls by CP Queue Agents to other Participants."}}},{"node":{"fields":{"slug":"/Applications/Softphone/Supervisor_Bargein/","current":"Supervisor_Bargein","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Supervisor Functionalities","description":null}}},{"node":{"fields":{"slug":"/Applications/Softphone/WhisperAnnouncement/","current":"WhisperAnnouncement","parent":"Softphone","root":"Softphone"},"frontmatter":{"title":"Whisper Announcement","description":"Play whisper announcement on inbound call"}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/","current":"Voyager_Next","parent":"Applications","root":"Voyager_Next"},"frontmatter":{"title":"Voyager Next","description":"“Out-of-box\" configurable Agent Tool for travel agents"}}},{"node":{"fields":{"slug":"/capabilities/Channel_Integration/voice/","current":"voice","parent":"Channel_Integration","root":"capabilities"},"frontmatter":{"title":"Voice Channel Integration","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/","current":"Data_Dictionary","parent":"Data_Intelligence","root":"capabilities"},"frontmatter":{"title":"Data Dictionary","description":"Information related to EG Data Platform concepts, agent interactions, workforce management (WFM) and workforce optimization."}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Conversation_Data/","current":"Conversation_Data","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Conversation Data","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Repeat_Purchase_Likelihood_Data/","current":"Repeat_Purchase_Likelihood_Data","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Repeat Purchase Likelihood Data","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Rules_Business_Objects_Reporting/","current":"Rules_Business_Objects_Reporting","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Rules Business Objects Reporting","description":null}}},{"node":{"fields":{"slug":"/capabilities/Data_Intelligence/Data_Dictionary/Service_Case_Data/","current":"Service_Case_Data","parent":"Data_Dictionary","root":"capabilities"},"frontmatter":{"title":"Service Case Data","description":null}}},{"node":{"fields":{"slug":"/capabilities/Forecasting/Forecast_Overview/","current":"Forecast_Overview","parent":"Forecasting","root":"capabilities"},"frontmatter":{"title":"Agent Capacity Forecast","description":null}}},{"node":{"fields":{"slug":"/capabilities/IAM/","current":"IAM","parent":"capabilities","root":"capabilities"},"frontmatter":{"title":"Identity and Access Management","description":"CP Front End services enables Role-Based Access Control for all CP resources."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Callback/","current":"Callback","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Callback","description":"Description of what a callback means."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/ICD/","current":"ICD","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Intelligent Contact Distribution (ICD)","description":"Description of what ICD does."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Queue_Treatment/","current":"Queue_Treatment","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Queue Treatment","description":"Description of what queue treatment is to a customer"}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Realtime_Insights/","current":"Realtime_Insights","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Realtime Insights","description":"Description of various agent states."}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Routing_Configuration/","current":"Routing_Configuration","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Routing Configuration","description":"Description of routing configuration rules"}}},{"node":{"fields":{"slug":"/capabilities/Smart_Omni_Channel_Routing/Routing_Conversation_To_Agent/","current":"Routing_Conversation_To_Agent","parent":"Smart_Omni_Channel_Routing","root":"capabilities"},"frontmatter":{"title":"Routing Conversation To Agent","description":"Describes metrics that route a conversation to an agent."}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Agent_Evaluation/","current":"Agent_Evaluation","parent":"Workforce_Optimization","root":"capabilities"},"frontmatter":{"title":"Agent Evaluation","description":"Reviewed by ED team cpce-90295"}}},{"node":{"fields":{"slug":"/capabilities/Workforce_Optimization/Agent_Evaluation/Voice_Recording/","current":"Voice_Recording","parent":"Agent_Evaluation","root":"capabilities"},"frontmatter":{"title":"Voice Recording System","description":"cpce-90296"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Define_Rules_Policies/create_outdial/","current":"create_outdial","parent":"Define_Rules_Policies","root":"tutorials"},"frontmatter":{"title":"Create an Outdial template","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/Voice_Configuration/Bulk_Upload_Entry_Points/","current":"Bulk_Upload_Entry_Points","parent":"Voice_Configuration","root":"tutorials"},"frontmatter":{"title":"Bulk Upload Voice Entry Point","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/console_users/","current":"console_users","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Console User Management","description":"The Contact Center Management Console is used to securely manage Human Agents and Contact Cetners via an easy to use Admin Console. This sections deals with initial setup and ongoing management, via a single point or Console"}}},{"node":{"fields":{"slug":"/tutorials/CCaaS_Skills_Tutorials/","current":"CCaaS_Skills_Tutorials","parent":"tutorials","root":"tutorials"},"frontmatter":{"title":"Configure your own Skills Tutorials","description":"This section houses the tutorials for the Virtual Agent Skills section."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BYOVoiceAdapter/","current":"BYOVoiceAdapter","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Adapter","description":"Out-of-the-box, the current virtual agent oftphone supports Twilio as a voice provider. Under the Bring Your Own Resource model, the partner can choose to bring their own voice provider. This document maps out instructions for the parther to write their own adapaters for interactions between the new voice provider and the virtual agent phone, similar to what Expedia has for Twilio, along with the Twilio Client Wrapper library."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BringYourOwnVoiceProvider/","current":"BringYourOwnVoiceProvider","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Provider","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/BringYourOwnVoiceProvider/BYOVoiceAdapter/","current":"BYOVoiceAdapter","parent":"BringYourOwnVoiceProvider","root":"tutorials"},"frontmatter":{"title":"Bring Your Own Voice Adapter","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/","current":"Conversation_Data_Visualization","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Conversation Data Visualization","description":"Quickly generate graphical representations of data to answer many common questions."}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Conversation_Data_Visualization/Skills_Tasks/","current":"Skills_Tasks","parent":"Conversation_Data_Visualization","root":"tutorials"},"frontmatter":{"title":"Skills and Tasks Scenarios","description":null}}},{"node":{"fields":{"slug":"/tutorials/SmartOmniChannelRouting_Tutorials/Provisioning Users and RBAC/","current":"Provisioning Users and RBAC","parent":"SmartOmniChannelRouting_Tutorials","root":"tutorials"},"frontmatter":{"title":"Provisioning Users and RBAC","description":null}}},{"node":{"fields":{"slug":"/Applications/","current":"Applications","parent":null,"root":null},"frontmatter":{"title":"Applications","description":null}}},{"node":{"fields":{"slug":"/Applications/Voyager_Next/Features/","current":"Features","parent":"Voyager_Next","root":"Voyager_Next"},"frontmatter":{"title":"Features","description":"Learn about available features in Voyager Next, and how they can help your agents."}}},{"node":{"fields":{"slug":"/api-references/","current":"api-references","parent":null,"root":null},"frontmatter":{"title":"API","description":"Contact Center API References"}}},{"node":{"fields":{"slug":"/capabilities/","current":"capabilities","parent":null,"root":"capabilities"},"frontmatter":{"title":"Capabilities","description":"Contact Center as a Service Capabilities"}}},{"node":{"fields":{"slug":"/tutorials/","current":"tutorials","parent":null,"root":"tutorials"},"frontmatter":{"title":"Tutorials","description":"List of all updated tutorials for each capability"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/DataTag_Management/","current":"DataTag_Management","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Data Tag Management","description":"Learn how to view, create and update data tags and data tag groups for your contact center"}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/agent_tool_configuration/","current":"agent_tool_configuration","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Agent Tool Configuration","description":null}}},{"node":{"fields":{"slug":"/tutorials/Agent_Experience_Console_Tutorials/business_locations/","current":"business_locations","parent":"Agent_Experience_Console_Tutorials","root":"tutorials"},"frontmatter":{"title":"Business Locations","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/Phone_Number_Assignment_Guide/","current":"Phone_Number_Assignment_Guide","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"Phone Number Assignment Guide","description":null}}},{"node":{"fields":{"slug":"/tutorials/Channel_Integration_Tutorials/ccaas_channel_setup_for_agent_tools/","current":"ccaas_channel_setup_for_agent_tools","parent":"Channel_Integration_Tutorials","root":"tutorials"},"frontmatter":{"title":"CCaaS Channel Setup for Agent Tools","description":null}}},{"node":{"fields":{"slug":"/tutorials/IAM_Tutorials/role_management/","current":"role_management","parent":"IAM_Tutorials","root":"tutorials"},"frontmatter":{"title":"Role Management","description":"James Thomas Confluence page role management tab"}}}]}},"pageContext":{"slug":"/tutorials/Data_Intelligence_Tutorials/Interacting_with_GraphQL/"}},"staticQueryHashes":["2152644321","3128451518","3235971795","685961757"]}