From 49e05bfaa5d4671f77fdc81c8e963b335225c1c8 Mon Sep 17 00:00:00 2001 From: Parth-2701 Date: Fri, 27 Mar 2026 20:51:45 +0530 Subject: [PATCH] A new search scheme for efficient retrieval --- devrev_search.ipynb | 500 +++- requirements.txt | 2 + test_queries_results.json | 4828 +++++++++++++++++----------------- test_queries_results.parquet | Bin 0 -> 166052 bytes 4 files changed, 2796 insertions(+), 2534 deletions(-) create mode 100644 test_queries_results.parquet diff --git a/devrev_search.ipynb b/devrev_search.ipynb index 11d47a8..641c785 100644 --- a/devrev_search.ipynb +++ b/devrev_search.ipynb @@ -20,10 +20,10 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "/Users/prakharagarwal/devrev/devrev-search-bench/.venv/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + "c:\\Users\\parth\\Desktop\\New folder (2)\\devrev-search-bench\\.venv\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] } @@ -46,13 +46,6 @@ "execution_count": 2, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating train split: 100%|██████████| 291/291 [00:00<00:00, 36370.05 examples/s]" - ] - }, { "name": "stdout", "output_type": "stream", @@ -64,13 +57,6 @@ " })\n", "})\n" ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -168,7 +154,7 @@ "4 [{'id': 'ART-1961_KNOWLEDGE_NODE-28', 'text': ... " ] }, - "execution_count": null, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -197,7 +183,7 @@ " 'title': 'Microsoft Teams AirSync | AirSync | Snap-ins | DevRev'}]}" ] }, - "execution_count": null, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -221,11 +207,10 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n", - "Generating test split: 100%|██████████| 92/92 [00:00<00:00, 35466.54 examples/s]" + "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n" ] }, { @@ -239,13 +224,6 @@ " })\n", "})\n" ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -330,7 +308,7 @@ "4 SSO setup SAML IDP metadata connection string ... " ] }, - "execution_count": null, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -353,7 +331,7 @@ " 'query': 'end customer organization name not appearing in ticket or conversation'}" ] }, - "execution_count": null, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -376,13 +354,6 @@ "execution_count": 8, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating corpus split: 100%|██████████| 65224/65224 [00:00<00:00, 1493567.46 examples/s]" - ] - }, { "name": "stdout", "output_type": "stream", @@ -394,13 +365,6 @@ " })\n", "})\n" ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] } ], "source": [ @@ -498,7 +462,7 @@ "4 American cybersecurity leader unifies security... " ] }, - "execution_count": null, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -522,7 +486,7 @@ " 'title': 'Sync fails when original sync owners loses permissions'}" ] }, - "execution_count": null, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -625,14 +589,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Using model: qwen3-embedding:0.6b\n", + "Using model: bge-m3\n", "Provider: ollama\n" ] } @@ -643,7 +607,7 @@ "EMBEDDING_PROVIDER = \"ollama\" # \"openai\" | \"ollama\"\n", "\n", "OPENAI_MODEL_ID = \"text-embedding-3-small\"\n", - "OLLAMA_MODEL_ID = \"qwen3-embedding:0.6b\"\n", + "OLLAMA_MODEL_ID = \"bge-m3\"\n", "\n", "client = None\n", "if EMBEDDING_PROVIDER == \"openai\":\n", @@ -660,6 +624,7 @@ "elif EMBEDDING_PROVIDER == \"ollama\":\n", " import ollama\n", " MODEL_ID = OLLAMA_MODEL_ID\n", + " \n", "else:\n", " raise ValueError(\"EMBEDDING_PROVIDER must be either 'openai' or 'ollama'\")\n", "\n", @@ -669,7 +634,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -700,7 +665,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -720,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -730,7 +695,7 @@ "Provider: ollama\n", "Test embedding shape: (1024,)\n", "Embedding dimension: 1024\n", - "First 5 values: [-0.02046742 -0.02415173 -0.00554356 -0.05601534 -0.00608756]\n" + "First 5 values: [-0.04681401 0.04310892 -0.0465319 -0.02188324 -0.00760494]\n" ] } ], @@ -745,14 +710,14 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Preparing documents: 100%|██████████| 65224/65224 [00:00<00:00, 97638.25it/s] " + "Preparing documents: 100%|██████████| 65224/65224 [00:02<00:00, 25166.70it/s]" ] }, { @@ -784,7 +749,8 @@ "doc_ids = []\n", "doc_titles = []\n", "doc_texts = []\n", - "\n", + "doc_map={}\n", + "i=0\n", "for item in tqdm(corpus, desc=\"Preparing documents\"):\n", " # Concatenate title and text\n", " doc_text = f\"{item['title']}\\n\\n{item['text']}\"\n", @@ -792,6 +758,8 @@ " doc_ids.append(item['id'])\n", " doc_titles.append(item['title'])\n", " doc_texts.append(item['text'])\n", + " doc_map[item['id']]=i\n", + " i+=1\n", "\n", "print(f\"\\nTotal documents: {len(documents):,}\")\n", "print(f\"\\nSample document:\")\n", @@ -800,7 +768,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -841,64 +809,147 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ - "# Generate embeddings for all documents\n", - "print(\"Generating embeddings for knowledge base...\")\n", - "print(f\"Total documents: {len(documents):,}\")\n", - "print(\"Using batch processing for efficiency...\")\n", + "# # Generate embeddings for all documents\n", + "# print(\"Generating embeddings for knowledge base...\")\n", + "# print(f\"Total documents: {len(documents):,}\")\n", + "# print(\"Using batch processing for efficiency...\")\n", "\n", - "# For testing, use a subset (uncomment for all documents)\n", - "# documents_to_embed = documents[:100] # Test with first 100 docs\n", - "documents_to_embed = documents # All documents\n", + "# # For testing, use a subset (uncomment for all documents)\n", + "# # documents_to_embed = documents[:100] # Test with first 100 docs\n", + "# documents_to_embed = documents # All documents\n", "\n", - "embeddings = get_all_embeddings(documents_to_embed, batch_size=10)\n", - "print(f\"\\nEmbeddings shape: {embeddings.shape}\")\n", + "# embeddings = get_all_embeddings(documents_to_embed, batch_size=10)\n", + "# print(f\"\\nEmbeddings shape: {embeddings.shape}\")\n", "\n", - "# Save embeddings\n", - "np.save(\"embeddings.npy\", embeddings)\n", - "print(\"Embeddings saved to embeddings.npy\")" + "# # Save embeddings\n", + "# np.save(\"embeddings.npy\", embeddings)\n", + "# print(\"Embeddings saved to embeddings.npy\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded embeddings shape: (65224, 1024)\n" + ] + } + ], "source": [ "# Load embeddings if already saved\n", - "# embeddings = np.load(\"embeddings.npy\")\n", - "# print(f\"Loaded embeddings shape: {embeddings.shape}\")" + "embeddings = np.load(\"embeddings.npy\")\n", + "print(f\"Loaded embeddings shape: {embeddings.shape}\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded index with 65,224 vectors\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading weights: 100%|██████████| 393/393 [00:00<00:00, 631.15it/s]\n" + ] + } + ], "source": [ - "# Create FAISS index\n", - "embedding_dim = embeddings.shape[1]\n", - "print(f\"Creating FAISS index with dimension: {embedding_dim}\")\n", + "from rank_bm25 import BM25Okapi\n", + "from sentence_transformers import CrossEncoder\n", + "def setup(corpus: list[dict]):\n", + " \"\"\"Load embeddings, build FAISS index and BM25 index.\"\"\"\n", + "\n", + " # FAISS\n", "\n", - "# Normalize embeddings for cosine similarity\n", - "embeddings_normalized = embeddings.copy().astype('float32')\n", - "faiss.normalize_L2(embeddings_normalized)\n", + " # # Create FAISS index(if not created)\n", + " # embedding_dim = embeddings.shape[1]\n", + " # print(f\"Creating FAISS index with dimension: {embedding_dim}\")\n", "\n", - "# Create the index using IndexFlatIP for inner product (cosine similarity with normalized vectors)\n", - "index = faiss.IndexFlatIP(embedding_dim)\n", - "index.add(embeddings_normalized)\n", + " # # Normalize embeddings for cosine similarity\n", + " # embeddings_normalized = embeddings.copy().astype('float32')\n", + " # faiss.normalize_L2(embeddings_normalized)\n", "\n", - "print(f\"Index created with {index.ntotal:,} vectors\")" + " # # Create the index using IndexFlatIP for inner product (cosine similarity with normalized vectors)\n", + " # index = faiss.IndexFlatIP(embedding_dim)\n", + " # index.add(embeddings_normalized)\n", + "\n", + " # print(f\"Index created with {index.ntotal:,} vectors\")\n", + "\n", + " # Load saved index and mapping\n", + " INDEX_DIR = \"faiss_index\"\n", + " index = faiss.read_index(os.path.join(INDEX_DIR, \"knowledge_base.index\"))\n", + " with open(os.path.join(INDEX_DIR, \"doc_mapping.pkl\"), \"rb\") as f:\n", + " mapping = pickle.load(f)\n", + " doc_ids = mapping[\"doc_ids\"]\n", + " documents = mapping[\"documents\"]\n", + " doc_titles = mapping[\"doc_titles\"]\n", + " doc_texts = mapping[\"doc_texts\"]\n", + " print(f\"Loaded index with {index.ntotal:,} vectors\")\n", + "\n", + " # BM25\n", + " tokenized_corpus = [doc.lower().split() for doc in documents]\n", + " bm25 = BM25Okapi(tokenized_corpus)\n", + "\n", + " # Cross-encoder\n", + " # cross_encoder = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')\n", + " cross_encoder = CrossEncoder('BAAI/bge-reranker-v2-m3')\n", + "\n", + " return index, bm25, cross_encoder\n", + "\n", + "index, bm25, cross_encoder = setup(documents)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, "outputs": [], + "source": [ + "# # Create FAISS index\n", + "# embedding_dim = embeddings.shape[1]\n", + "# print(f\"Creating FAISS index with dimension: {embedding_dim}\")\n", + "\n", + "# # Normalize embeddings for cosine similarity\n", + "# embeddings_normalized = embeddings.copy().astype('float32')\n", + "# faiss.normalize_L2(embeddings_normalized)\n", + "\n", + "# # Create the index using IndexFlatIP for inner product (cosine similarity with normalized vectors)\n", + "# index = faiss.IndexFlatIP(embedding_dim)\n", + "# index.add(embeddings_normalized)\n", + "\n", + "# print(f\"Index created with {index.ntotal:,} vectors\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✓ Index saved to faiss_index/knowledge_base.index\n", + "✓ Document mapping saved to faiss_index/doc_mapping.pkl\n" + ] + } + ], "source": [ "# Save the index and document mapping\n", "INDEX_DIR = \"faiss_index\"\n", @@ -929,28 +980,82 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "def search(query: str, k: int = 5):\n", - " \"\"\"Search the knowledge base for relevant documents.\"\"\"\n", - " query_embedding = get_embedding(query).astype('float32')\n", - " query_embedding = query_embedding.reshape(1, -1)\n", - " faiss.normalize_L2(query_embedding)\n", - " \n", - " scores, indices = index.search(query_embedding, k)\n", - " \n", - " results = []\n", - " for i, (score, idx) in enumerate(zip(scores[0], indices[0])):\n", - " results.append({\n", - " \"rank\": i + 1,\n", + "def bm25_search(query: str, bm25, doc_ids: list, n: int = 25):\n", + " tokenized_query = query.lower().split()\n", + " scores = bm25.get_scores(tokenized_query)\n", + " top_indices = np.argsort(scores)[::-1][:n]\n", + " return [doc_ids[i] for i in top_indices] " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "def semantic_search(query: str, index, doc_ids: list, n: int = 25):\n", + " query_emb = get_embedding(query).astype('float32').reshape(1, -1)\n", + " faiss.normalize_L2(query_emb)\n", + " _, indices = index.search(query_emb, n)\n", + " return [doc_ids[i] for i in indices[0]] " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def rrf_fusion(bm25_ids: list, semantic_ids: list, k: int = 60):\n", + " scores = {}\n", + " for rank, doc_id in enumerate(bm25_ids):\n", + " scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)\n", + " for rank, doc_id in enumerate(semantic_ids):\n", + " scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)\n", + " return sorted(scores, key=lambda x: scores[x], reverse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "def rerank(query: str, candidate_ids: list, documents:list,doc_map:dict, cross_encoder, top_k: int = 10):\n", + " pairs = [(query, documents[doc_map[doc_id]]) for doc_id in candidate_ids]\n", + " scores = cross_encoder.predict(pairs)\n", + " ranked = sorted(zip(candidate_ids, scores), key=lambda x: x[1], reverse=True)\n", + " return ranked[:top_k] " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "def search(query: str, index, bm25, cross_encoder, doc_ids, doc_texts, doc_titles, n: int = 5):\n", + " RRF_CANDIDATES = n * 3\n", + " bm25_ids = bm25_search(query, bm25, doc_ids, n * 5)\n", + " semantic_ids = semantic_search(query, index, doc_ids, n * 5)\n", + " fused_ids = rrf_fusion(bm25_ids, semantic_ids)\n", + " candidates = fused_ids[:RRF_CANDIDATES]\n", + " final = rerank(query, candidates, documents,doc_map, cross_encoder, n)\n", + "\n", + " results = [\n", + " {\n", + " \"rank\": i + 1,\n", " \"score\": float(score),\n", - " \"id\": doc_ids[idx],\n", - " \"title\": doc_titles[idx],\n", - " \"text\": doc_texts[idx]\n", - " })\n", - " \n", + " \"id\": doc_id,\n", + " \"title\": doc_titles[doc_map[doc_id]], \n", + " \"text\": doc_texts[doc_map[doc_id]] \n", + " }\n", + " for i, (doc_id, score) in enumerate(final)\n", + " ]\n", " return results" ] }, @@ -959,10 +1064,79 @@ "execution_count": null, "metadata": {}, "outputs": [], + "source": [ + "# def search(query: str, k: int = 5):\n", + "# \"\"\"Search the knowledge base for relevant documents.\"\"\"\n", + "# query_embedding = get_embedding(query).astype('float32')\n", + "# query_embedding = query_embedding.reshape(1, -1)\n", + "# faiss.normalize_L2(query_embedding)\n", + " \n", + "# scores, indices = index.search(query_embedding, k)\n", + " \n", + "# results = []\n", + "# for i, (score, idx) in enumerate(zip(scores[0], indices[0])):\n", + "# results.append({\n", + "# \"rank\": i + 1,\n", + "# \"score\": float(score),\n", + "# \"id\": doc_ids[idx],\n", + "# \"title\": doc_titles[idx],\n", + "# \"text\": doc_texts[idx]\n", + "# })\n", + " \n", + "# return results" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Query: How do I set up AirSync?\n", + "============================================================\n", + "\n", + "[Rank 1] Score: 0.9956\n", + "Doc ID: ART-2045_KNOWLEDGE_NODE-29\n", + "Title: AirSync | Snap-ins | DevRev\n", + "Text: Setting up a new AirSync\\n\\n![]()\\n\\nFor best results, AirSyncs should be done using an administrator account on the external source. This ensures all necessary permissions are available to complete the import successfully.\\n\\nWhether you want to perform only a one-time import or set up an ongoing s...\n", + "----------------------------------------\n", + "\n", + "[Rank 2] Score: 0.9680\n", + "Doc ID: ART-2992_KNOWLEDGE_NODE-26\n", + "Title: GitHub Issues AirSync | AirSync | Snap-ins | DevRev\n", + "Text: [GitHub PAT](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) with the account that will be used to set up the AirSync.\\n\\n The minimum required permissions are READ + WRITE Issues and READ + WRITE Pull Requests.\\n2. Go to **Setti...\n", + "----------------------------------------\n", + "\n", + "[Rank 3] Score: 0.9670\n", + "Doc ID: ART-2048_KNOWLEDGE_NODE-28\n", + "Title: ClickUp AirSync | AirSync | Snap-ins | DevRev\n", + "Text: install the snap-in.\\n2. In the snap-in config modal, click **Install** then go to **Integrations** > **AirSyncs** in your settings left nav.\\n3. Click the **AirSync** import button and select the **ClickUp** tile in the **Start import** window.\\n4. Create a new connection to your ClickUp account, o...\n", + "----------------------------------------\n", + "\n", + "[Rank 4] Score: 0.9114\n", + "Doc ID: ART-2055_KNOWLEDGE_NODE-28\n", + "Title: Linear AirSync | AirSync | Snap-ins | DevRev\n", + "Text: This ensures all necessary permissions are available to complete the import successfully.\\n\\n1. Go to **Settings** > **Snap-ins** and install **Linear**.\\n\\n![]()\\n\\nThere may be an existing **Linear Issues** already added. If so, **Add** the other.\\n\\n1. Go to **Settings** > **Integrations** > **Ai...\n", + "----------------------------------------\n", + "\n", + "[Rank 5] Score: 0.8739\n", + "Doc ID: ART-2045_KNOWLEDGE_NODE-60\n", + "Title: AirSync | Snap-ins | DevRev\n", + "Text: AirSync](/docs/integrations/articulate-reach360)\\n\\n#### On this page\\n\\n* [AirSync features](#airsync-features)\\n* [General process](#general-process)\\n* [Setting up a new AirSync](#setting-up-a-new-airsync)\\n* [Post-import options](#postimport-options)\\n* [Historical AirSyncs](#historical-airsyncs...\n", + "----------------------------------------\n" + ] + } + ], "source": [ "# Test search with a sample query\n", "query = \"How do I set up AirSync?\"\n", - "results = search(query, k=5)\n", + "# results = search(query, k=5)\n", + "\n", + "results = search(query, index, bm25, cross_encoder, doc_ids, doc_texts, doc_titles, n=5)\n", + "\n", "\n", "print(f\"Query: {query}\")\n", "print(\"=\" * 60)\n", @@ -987,9 +1161,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing test queries: 100%|██████████| 92/92 [01:30<00:00, 1.01it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Processed 92 test queries\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], "source": [ "# Run search on all test queries - DIRECT VERSION (no dependency on search function)\n", "TOP_K = 10 # Number of retrievals per query\n", @@ -1031,9 +1228,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sample result:\n", + "{\n", + " \"query_id\": \"a97f93d2-410a-431f-ae9a-1e23ed35d74c\",\n", + " \"query\": \"end customer organization name not appearing in ticket or conversation\",\n", + " \"retrievals\": [\n", + " {\n", + " \"id\": \"ART-1981_KNOWLEDGE_NODE-30\",\n", + " \"text\": \"conversation of which you are not the owner, let the owner know to respond. It's beneficial to retain the same point of contact for the duration of the conversation unless the owner refers some another user.\\\\n* If the conversation has a customer org that's unidentified or is new, add yourself (the customer experience engineer) as the owner of the ticket. Try to find the appropriate owner for the customer org and update the customer record accordingly.\\\\n* Change the stage of the conversation to\",\n", + " \"title\": \"Support best practices | Computer for Support Teams | DevRev\"\n", + " },\n", + " {\n", + " \"id\": \"ART-1986_KNOWLEDGE_NODE-44\",\n", + " \"text\": \"**Custom**: Filters all tickets that will breach by the selected date.\\\\n\\\\n![]()\\\\n\\\\nTroubleshooting: No SLA running on the ticket\\\\n---------------------------------------------\\\\n\\\\n### Issue\\\\n\\\\nYou have created and published an SLA, but no SLA is running on the ticket.\\\\n\\\\n### Solution\\\\n\\\\n1. Check the **SLA Name** attribute:\\\\n\\\\n\\\\xc2\\\\xa0\\\\xc2\\\\xa0 - Verify that the **SLA Name** attribute on the ticket is not empty.\\\\n\\\\n\\\\xc2\\\\xa0\\\\xc2\\\\xa0 - If the **SLA Name** is empty, it means the customer account\",\n", + " \"title\": \"Service-level agreement | Computer for Support Teams | DevRev\"\n", + " },\n", + " {\n", + " \"id\": \"\n" + ] + } + ], "source": [ "# Preview a sample result\n", "import json\n", @@ -1043,12 +1264,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✓ Results saved to test_queries_results_zerank_2.json\n", + " - 92 queries\n", + " - 10 retrievals per query\n" + ] + } + ], "source": [ "# Save results to JSON file\n", - "OUTPUT_FILE = \"test_queries_results.json\"\n", + "OUTPUT_FILE = \"test_queries_results_zerank_2.json\"\n", "\n", "with open(OUTPUT_FILE, \"w\") as f:\n", " json.dump(test_results, f, indent=2)\n", @@ -1060,9 +1291,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✓ Results also saved to test_queries_results.parquet\n" + ] + } + ], "source": [ "# Also save as a parquet file for easier loading\n", "results_df = pd.DataFrame(test_results)\n", @@ -1072,9 +1311,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "============================================================\n", + "Test Queries Results Summary\n", + "============================================================\n", + "Total queries: 92\n", + "Retrievals per query: 10\n", + "\n", + "Output files:\n", + " - test_queries_results.json\n", + " - test_queries_results.parquet\n", + "\n", + "Format matches annotated_queries structure:\n", + " - query_id: string\n", + " - query: string\n", + " - retrievals: list of {id, text, title}\n" + ] + } + ], "source": [ "# Display results summary\n", "print(\"=\" * 60)\n", @@ -1105,7 +1365,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Load saved index and mapping\n", + "# # Load saved index and mapping\n", "# INDEX_DIR = \"faiss_index\"\n", "# index = faiss.read_index(os.path.join(INDEX_DIR, \"knowledge_base.index\"))\n", "# with open(os.path.join(INDEX_DIR, \"doc_mapping.pkl\"), \"rb\") as f:\n", @@ -1120,7 +1380,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": ".venv (3.12.4)", "language": "python", "name": "python3" }, @@ -1134,7 +1394,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.2" + "version": "3.12.4" } }, "nbformat": 4, diff --git a/requirements.txt b/requirements.txt index b196bf1..ac51b43 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,5 @@ faiss-cpu numpy tqdm pyarrow +rank-bm25 +sentence_transformers diff --git a/test_queries_results.json b/test_queries_results.json index 74c199a..52dff11 100644 --- a/test_queries_results.json +++ b/test_queries_results.json @@ -9,49 +9,49 @@ "title": "Support best practices | Computer for Support Teams | DevRev" }, { - "id": "ART-1981_KNOWLEDGE_NODE-34", - "text": "ticket.\\n* Make sure all tickets have the customer org field populated.\\n* Cancel any internal ticket without a customer org that has been created by a developer. Ask them to create an issue instead.\\n* If a customer raises a feature request that aligns with the product strategy, but needs significant development effort and will not be delivered in the near future, move it to the *accepted* stage, rather than keeping the ticket open. Inform the customer accordingly.\\n* If a customer reports a", - "title": "Support best practices | Computer for Support Teams | DevRev" - }, - { - "id": "ART-1953_KNOWLEDGE_NODE-30", - "text": "linked to a conversation\\n-------------------------------\\n\\n* **Trigger**: A ticket is linked to an existing conversation.\\n* **Action**: The system sends out a notification with the linked ticket number.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"\"\\n\\n![]()\\n\\nThis email is only sent to the organizations with [Convergence snap-in](https://docs.devrev.ai/automations/converge)\\n\\nChange of", - "title": "Customer email notifications | Computer by DevRev | DevRev" - }, - { - "id": "ART-1953_KNOWLEDGE_NODE-29", - "text": "[support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"You are missing messages from \"\\n\\nReply to the customer on a ticket\\n---------------------------------\\n\\n* **Trigger**: When a reply is made to a customer on a ticket.\\n* **Action**: The system sends out a notification to the customer with the reply message.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"[{Company\\\\_Name}] Update on TKT-XXX\"\\n\\nTicket", - "title": "Customer email notifications | Computer by DevRev | DevRev" - }, - { - "id": "ART-1953_KNOWLEDGE_NODE-5", - "text": "ticket conversion](/docs/product/conversation-ticket)\\n + [Tickets](/docs/product/tickets)\\n + [Routing](/docs/product/routing)\\n + [Support best practices](/docs/product/support-bp)\\n + [Customer portal](/docs/product/support-portal)\\n + [Questions & answers](/docs/product/qa)\\n + [Knowledge Base](/docs/product/knowledge-base)\\n\\n - [Articles](/docs/product/articles)\\n - [Collections](/docs/product/collection)\\n + [Turing AI agent](/docs/product/conversational-bot)\\n\\n - [Best", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-1986_KNOWLEDGE_NODE-44", + "text": "**Custom**: Filters all tickets that will breach by the selected date.\\n\\n![]()\\n\\nTroubleshooting: No SLA running on the ticket\\n---------------------------------------------\\n\\n### Issue\\n\\nYou have created and published an SLA, but no SLA is running on the ticket.\\n\\n### Solution\\n\\n1. Check the **SLA Name** attribute:\\n\\n\\xc2\\xa0\\xc2\\xa0 - Verify that the **SLA Name** attribute on the ticket is not empty.\\n\\n\\xc2\\xa0\\xc2\\xa0 - If the **SLA Name** is empty, it means the customer account", + "title": "Service-level agreement | Computer for Support Teams | DevRev" }, { "id": "ART-1979_KNOWLEDGE_NODE-63", "text": "support tickets on behalf of customers\\xe2\\x80\\x94without granting customers access to these tickets. This feature enables internal collaboration while keeping the ticket invisible to the customer until explicitly made external.\\n\\nEven if a ticket contains customer-related information (such as the customer workspace or the **Reported by** field), it remains inaccessible to the customer unless it is explicitly converted into an external ticket. The **Customer Messages** tab is unavailable for", "title": "Tickets | Computer for Support Teams | DevRev" }, + { + "id": "ART-16806_KNOWLEDGE_NODE-27", + "text": "Internal Ticket** from the **Ticket Creation** dropdown.\\n* **Focused UI:** The **Customer Messages** tab is disabled on internal tickets to prevent unintended communication.\\n\\nThis feature supports internal workflows while giving you control over when customer engagement begins.\\n\\n![]()\\xc2\\xa0For more information about *Conversation and Ticket Workflows*, refer to the following articles: \\xe2\\x80\\xa3 [Auto parts to conversation | Automate | Snap-ins](/docs/automations/auto-parts)", + "title": "July 2025 | Changelog | DevRev" + }, { "id": "ART-1978_KNOWLEDGE_NODE-44", "text": "URL and not on the support portal of some other customer.\\n* Customer admin isn't able to see all the tickets of the organization.\\n\\n + This could happen if the customer isn't logged in on the correct URL. If the customer is logged in on the correct URL, then check if there are any tickets that are reported by the other customers in that organization or not. Check if the customer is added as a customer admin or not by logging in to your DevRev application.\\n* You are not able to add customer", "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-36", - "text": "conversation](#ticket-linked-to-a-conversation)\\n* [Change of stage of a ticket/conversation](#change-of-stage-of-a-ticketconversation)\\n* [CSAT survey for conversation/ticket](#csat-survey-for-conversationticket)\\n* [Auto customer reply](#auto-customer-reply)\\n* [Auto reply on email](#auto-reply-on-email)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-1974_KNOWLEDGE_NODE-33", + "text": "have been addressed.\\n\\n A conversation set to *resolved* still shows in the end-user's widget. If they respond again, it reopens the conversation and set the status to *needs response*.\\n* *Archived*\\n\\n The final stage for conversation.\\n\\n[PreviousTicket-Team Performance](/docs/dashboards/ticket-team-performance)[NextConversation to ticket conversion](/docs/product/conversation-ticket)\\n\\n#### On this page\\n\\n* [Stages](#stages)\\n\\n[Enterprise grade security to protect customer", + "title": "Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-24", - "text": "conversation](#reply-to-the-customer-on-a-conversation)\\n* [Reply to the customer on a ticket](#reply-to-the-customer-on-a-ticket)\\n* [Ticket linked to a conversation](#ticket-linked-to-a-conversation)\\n* [Change of stage of a ticket/conversation](#change-of-stage-of-a-ticketconversation)\\n* [CSAT survey for conversation/ticket](#csat-survey-for-conversationticket)\\n* [Auto customer reply](#auto-customer-reply)\\n* [Auto reply on email](#auto-reply-on-email)\\n\\n1. [Documentation](/docs)\\n3.", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-1981_KNOWLEDGE_NODE-34", + "text": "ticket.\\n* Make sure all tickets have the customer org field populated.\\n* Cancel any internal ticket without a customer org that has been created by a developer. Ask them to create an issue instead.\\n* If a customer raises a feature request that aligns with the product strategy, but needs significant development effort and will not be delivered in the near future, move it to the *accepted* stage, rather than keeping the ticket open. Inform the customer accordingly.\\n* If a customer reports a", + "title": "Support best practices | Computer for Support Teams | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-31", - "text": "stage of a ticket/conversation\\n----------------------------------------\\n\\n* **Trigger**: When there\\'s a change of stage in a ticket or conversation.\\n* **Action**: The system sends out a notification detailing the Ticket/Conversation number and stage change.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**:\\n + For ticket: \"[{Company\\\\_Name}] Update on TKT-XXX - Ticket Title\"\"\"\\n + For conversations:", + "id": "ART-1953_KNOWLEDGE_NODE-29", + "text": "[support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"You are missing messages from \"\\n\\nReply to the customer on a ticket\\n---------------------------------\\n\\n* **Trigger**: When a reply is made to a customer on a ticket.\\n* **Action**: The system sends out a notification to the customer with the reply message.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"[{Company\\\\_Name}] Update on TKT-XXX\"\\n\\nTicket", "title": "Customer email notifications | Computer by DevRev | DevRev" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-45", + "text": "selected on the ticket is not assigned any SLA.\\n\\n\\xc2\\xa0\\xc2\\xa0 \\xc2\\xa0 - Action: Check your SLA assignment rules or add the customer as an exception to any of your SLAs.\\n\\n![]()\\n\\nThe **SLA Name** is never empty if your organization has a default SLA.\\n\\n1. Verify policy conditions:\\n\\n\\xc2\\xa0\\xc2\\xa0 - If the **SLA Name** is populated but you still see no SLA metrics running on the ticket, the ticket does not satisfy the conditions of any policy within the SLA.\\n\\n\\xc2\\xa0\\xc2\\xa0", + "title": "Service-level agreement | Computer for Support Teams | DevRev" + }, + { + "id": "ART-1978_KNOWLEDGE_NODE-43", + "text": "with that email or not.\\n + This could also be because your customer hasn't logged in.\\n* Customer isn't able to view the tickets they have created.\\n\\n + Check if there are any reported tickets by that customer. You can do so by logging into your DevRev app and then going into the tickets section. Here you can filter based on **reported by** and see if any tickets have been reported by the customer who isn't able to view the tickets.\\n + Check if the customer has logged in on the correct", + "title": "Customer portal | Computer for Support Teams | DevRev" } ] }, @@ -60,24 +60,19 @@ "query": "Android SDK session generated with Unknown user", "retrievals": [ { - "id": "ART-2898_KNOWLEDGE_NODE-10", - "text": "identification\\n\\nThe anonymous identification method allows you to create an anonymous user with an optional or random user identifier, ensuring that no other data is stored or associated with the user.\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1| DevRev.identifyAnonymousUser( \\n ---|--- \\n 2| userId: String \\n 3| )\\n[/code] \\n \\n### Unverified identification\\n\\nThe unverified identification method identifies users with a unique identifier, but it does not verify their", - "title": "Android integration \u2014 DevRev | Docs" - }, - { - "id": "ART-15513_KNOWLEDGE_NODE-1", - "text": "[Exchange your AAT for a session token](/sdks/android/features#exchange-your-aat-for-a-session-token)\\n* [Identify the verified user](/sdks/android/features#identify-the-verified-user)\\n* [Updating the user](/sdks/android/features#updating-the-user)\\n* [Logout](/sdks/android/features#logout)\\n* [Identity model](/sdks/android/features#identity-model)\\n* [Properties](/sdks/android/features#properties)\\n* [User traits](/sdks/android/features#user-traits)\\n* [Organization", + "id": "ART-15513_KNOWLEDGE_NODE-0", + "text": "b'Features | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\nOn this page\\n\\n* [Identification](/sdks/android/features#identification)\\n* [Identify an anonymous user](/sdks/android/features#identify-an-anonymous-user)\\n* [Identify an unverified user](/sdks/android/features#identify-an-unverified-user)\\n* [Identify a verified user](/sdks/android/features#identify-a-verified-user)\\n* [Generate an AAT](/sdks/android/features#generate-an-aat)\\n*", "title": "Features | DevRev | Docs" }, { - "id": "ART-2898_KNOWLEDGE_NODE-1", - "text": "identification](/public/sdks/mobile/android#unverified-identification)\\n * [Update user information](/public/sdks/mobile/android#update-user-information)\\n * [PLuG support chat](/public/sdks/mobile/android#plug-support-chat)\\n * [Analytics](/public/sdks/mobile/android#analytics)\\n * [Session analytics](/public/sdks/mobile/android#session-analytics)\\n * [Opt in or out](/public/sdks/mobile/android#opt-in-or-out)\\n * [Session recording](/public/sdks/mobile/android#session-recording)\\n *", - "title": "Android integration \u2014 DevRev | Docs" + "id": "ART-2895_KNOWLEDGE_NODE-0", + "text": "b'[](/public/sdks/web/user-identity)\\n\\nPublic\\n\\nOn this page\\n\\n * [Generate an application access token](/public/sdks/web/user-identity#generate-an-application-access-token)\\n * [Generate a session token](/public/sdks/web/user-identity#generate-a-session-token)\\n * [Pass custom attributes](/public/sdks/web/user-identity#pass-custom-attributes)\\n * [Pass the session token](/public/sdks/web/user-identity#pass-the-session-token)\\n * [Identify users without session", + "title": "Identify your users with PLuG \u2014 DevRev | Docs" }, { - "id": "ART-15506_KNOWLEDGE_NODE-29", - "text": "window.plugSDK.shutdown(); |\\n| 6 | } |\\n| 7 | window.plugSDK.init({ |\\n| 8 | app_id: appId, |\\n| 9 | |\\n| 10 | // Pass the session details |\\n| 11 | session_recording_options: { |\\n| 12 | sessionDetails: { |\\n| 13 | sessionId: sessionId, |\\n| 14 | tabId: tabId, |\\n| 15 | }, |\\n| 16 | }, |\\n| 17 | |\\n| 18 | // With session token |\\n| 19 | session_token: sessionToken, |\\n| 20 | // Or without session token |\\n| 21 | identity: {}, |\\n| 22 | }); |\\n```\\n\\nWas this page", - "title": "Identify your users with Plug | DevRev | Docs" + "id": "ART-15515_KNOWLEDGE_NODE-5", + "text": "page\\n\\nIdentification\\n--------------\\n\\nTo access certain features of the DevRev SDK, user identification is required.\\n\\nThe identification function should be placed appropriately in your app after the user logs in. If you have the user information available at app launch, call the function after the `DevRev.configure(appID:)` method.\\n\\n##### \\n\\nIf you haven\\xe2\\x80\\x99t previously identified the user, the DevRev SDK will automatically create an anonymous user for you immediately after the", + "title": "Features | DevRev | Docs" }, { "id": "ART-4255_KNOWLEDGE_NODE-10", @@ -85,29 +80,34 @@ "title": "DevRev SDK for Android \u2014 DevRev | Docs" }, { - "id": "ART-15506_KNOWLEDGE_NODE-4", - "text": "RevUser Session Token(5) Return Session Token(6) Call plugSDK.init() with token\\n\\nGenerate an application access token\\n------------------------------------\\n\\n1. In DevRev, go to **Settings > Support > Plug Tokens** through the settings icon on the top-left corner.\\n2. Under the **Application access tokens** panel, click **New token** and copy the token that\\xe2\\x80\\x99s displayed.\\n\\n##### \\n\\nEnsure you copy your access token, as you cannot view it again.\\n\\nGenerate a session", - "title": "Identify your users with Plug | DevRev | Docs" + "id": "ART-2898_KNOWLEDGE_NODE-10", + "text": "identification\\n\\nThe anonymous identification method allows you to create an anonymous user with an optional or random user identifier, ensuring that no other data is stored or associated with the user.\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1| DevRev.identifyAnonymousUser( \\n ---|--- \\n 2| userId: String \\n 3| )\\n[/code] \\n \\n### Unverified identification\\n\\nThe unverified identification method identifies users with a unique identifier, but it does not verify their", + "title": "Android integration \u2014 DevRev | Docs" }, { - "id": "ART-4255_KNOWLEDGE_NODE-1", - "text": "information](/public/sdks/android#update-user-information)\\n * [PLuG support chat](/public/sdks/android#plug-support-chat)\\n * [Analytics](/public/sdks/android#analytics)\\n * [Session analytics](/public/sdks/android#session-analytics)\\n * [Opt in or out](/public/sdks/android#opt-in-or-out)\\n * [Session recording](/public/sdks/android#session-recording)\\n * [Session properties](/public/sdks/android#session-properties)\\n * [Timers](/public/sdks/android#timers)\\n * [Screen", - "title": "DevRev SDK for Android \u2014 DevRev | Docs" + "id": "ART-2895_KNOWLEDGE_NODE-12", + "text": "their context.\\n\\n[code]\\n\\n 1| // You can generate this session token using the above API in your backend \\n ---|--- \\n 2| const sessionToken = \\'\\' \\n 3| \\n 4| |\\n| 4 | |\\n```\\n\\nYou can modify the keydown event listener to bind it to other", "title": "Install Plug search | DevRev | Docs" }, { - "id": "ART-15509_KNOWLEDGE_NODE-1", - "text": "conversation](/sdks/web/methods#start-conversation)\\n* [Shutdown](/sdks/web/methods#shutdown)\\n* [Initialize the search agent](/sdks/web/methods#initialize-the-search-agent)\\n* [Toggle search agent](/sdks/web/methods#toggle-search-agent)\\n* [Check Search Agent status](/sdks/web/methods#check-search-agent-status)\\n* [Prefill search query in search agent](/sdks/web/methods#prefill-search-query-in-search-agent)\\n* [Add session properties](/sdks/web/methods#add-session-properties)\\n* [Get session", - "title": "Methods | DevRev | Docs" + "id": "ART-4206_KNOWLEDGE_NODE-6", + "text": "OK |\\n| 2 | { |\\n| 3 | \"challenge\": \"DlrVaK7zRyZWwbJhj5dZHDlrVaK7Jhj5dZZjH\" |\\n| 4 | } |\\n```\\n\\nYou should follow the documentation provided for webhooks [here](https://developer.devrev.ai/public/guides/webhooks)\\n\\nMake async API calls\\n--------------------\\n\\n**Key parameters:**\\n\\n* `agent`: Your agent\\xe2\\x80\\x99s ID.\\n* `event.input_message.message`: The query for your agent.\\n* `session_object`: A unique identifier for the conversation session (maintains agent memory).\\n*", + "title": "Agents async API | DevRev | Docs" + }, + { + "id": "ART-2894_KNOWLEDGE_NODE-6", + "text": "considered an anonymous user. Anonymous users are the users that come to your site and haven\\xe2\\x80\\x99t yet logged in or shared any information.\\n\\nAfter integrating the PLuG widget, you can personalize and contextualize customer engagement. Learn how to [identify your customers](/public/sdks/web/user-identity) and update their information.\\n\\n## Bind a hotkey to toggle search agent\\n\\nYou can bind the `toggleSearchAgent` method to a hotkey, such as `Cmd + K` (or `Ctrl + K` for Windows), to", + "title": "Install PLuG search \u2014 DevRev | Docs" }, { - "id": "ART-2894_KNOWLEDGE_NODE-4", - "text": "2| window.plugSDK.init({ \\n 3| app_id: \\'\\', \\n 4| disable_plug_chat_window: true, \\n 5| }); \\n 6| \\n 7| window.plugSDK.onEvent((payload) => { \\n 8| if (payload.type === \\'ON_PLUG_WIDGET_READY\\') { \\n 9| window.plugSDK.initSearchAgent(); \\n 10| } \\n 11| }); \\n 12| \\n[/code] \\n \\nTo toggle `searchAgent`, call the following method on any event required:\\n\\n[code]\\n\\n", + "id": "ART-2894_KNOWLEDGE_NODE-7", + "text": "toggle the search agent. Here\\xe2\\x80\\x99s an example implementation:\\n\\n###### Setup\\n\\n###### Setup for React\\n\\n[code]\\n\\n 1| \\n[/code] \\n \\nPlace the following code in the `` section of your HTML page:\\n\\n[code]\\n\\n 1| ;\\n\\nPlace this code inside the react component where you want to render the chat widget. Typically you should do it as top level component like", - "title": "Install PLuG chat on your website" + "id": "ART-2893_KNOWLEDGE_NODE-2", + "text": "2| type=\"text/javascript\" \\n 3| src=\"https://plug-platform.devrev.ai/static/plug.js\" \\n 4| >\\n[/code] \\n \\nPlace the following code in the `` section of your HTML page:\\n\\n[code]\\n\\n 1| \\n[/code] \\n \\nThe PLuG widget should now be installed on", + "title": "Install the Web SDK \u2014 DevRev | Docs" } ] }, @@ -3475,20 +3475,15 @@ "query_id": "80fd3cb8-b4ff-4ca4-8d4b-2b0ac1fdab5b", "query": "send notification to slack when a ticket is manually assigned", "retrievals": [ - { - "id": "ART-2017_KNOWLEDGE_NODE-28", - "text": "you would like to tag on the message (the ticket owner gets tagged automatically); and the target Slack channel. The channel\\'s ID can be found by going to the channel details. Refer to the placeholder value on the input to see an example of how this looks.\\n2. Decide if notifications should go out even if the ticket has a target end date set. Set the toggle to the desired behavior.\\n3. Decide if a ticket should pass the check if it\\'s part is a descendant of the filter part. For example, if a", - "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" - }, { "id": "ART-2035_KNOWLEDGE_NODE-42", "text": "ticket notifications\\n\\n* Enable through the **Notify on new ticket creation** snap-in configuration.\\n* Provide a Slack channel ID in the **Channel ID to send ticket notifications** configuration.\\n* Snap-in will send notifications to the target channel whenever a new ticket is created, regardless of the source channel or platform.\\n* Notification message threads are **not** synced between platforms.\\n\\n### Notifications for ticket state update\\n\\n* Enable through **Notify on ticket state", "title": "Slack | Integrate | Snap-ins | DevRev" }, { - "id": "ART-2017_KNOWLEDGE_NODE-25", - "text": "ticket\\'s owner and subscribers, when a ticket\\'s resolution time SLA changes into the *Warning* or *Breached* stage.\\n\\n![]()\\n\\nFor more information, refer to the\\n[SLA status change Slack notifier snap-in](/marketplace/sla-status-change-slack-notifier) on the DevRev\\nmarketplace.\\n\\nInstallation\\n------------\\n\\n1. Create a Slack app for your workspace in .\\n2. In App features, generate bot token in **OAuth & Permissions**.\\n3. Grant the app bot the following", - "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" + "id": "ART-2912_KNOWLEDGE_NODE-15", + "text": "[Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)\\n - [Slack message agent](/docs/automations/slack-message-agent)\\n", + "title": "Ticket email notifier | Automate | Snap-ins | DevRev" }, { "id": "ART-2035_KNOWLEDGE_NODE-36", @@ -3496,34 +3491,39 @@ "title": "Slack | Integrate | Snap-ins | DevRev" }, { - "id": "ART-2912_KNOWLEDGE_NODE-13", - "text": "group](/docs/automations/set-user-preference)\\n - [SLA status change Slack notifier](/docs/automations/sla-change-notifier)\\n - [Slash commands](/docs/automations/slash-commands)\\n - [Spam Shield](/docs/automations/spam-shield)\\n - [Subtype Migration](/docs/automations/subtype-migration)\\n - [Ticket age in engineering](/docs/automations/ticket-age-in-engineering)\\n - [Ticket issue field migrator](/docs/automations/ticket-issue-field-migrator)\\n - [Ticket", - "title": "Ticket email notifier | Automate | Snap-ins | DevRev" + "id": "ART-3068_KNOWLEDGE_NODE-15", + "text": "[Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)\\n - [Slack message agent](/docs/automations/slack-message-agent)\\n", + "title": "Conversation reminder | Automate | Snap-ins | DevRev" }, { - "id": "ART-2017_KNOWLEDGE_NODE-29", - "text": "ticket with part set as \"Feature 1\" should trigger a notification when the filter is set to \"Capability 1\" and this is a parent part of that feature. Set the toggle to the desired behavior.\\n4. Check the default message body and change it if you would like a different phrasing.\\n\\n[PreviousSet user preference for group](/docs/automations/set-user-preference)[NextSlash commands](/docs/automations/slash-commands)\\n\\n#### On this page\\n\\n* [Installation](#installation)\\n* [Configure the", + "id": "ART-2017_KNOWLEDGE_NODE-28", + "text": "you would like to tag on the message (the ticket owner gets tagged automatically); and the target Slack channel. The channel\\'s ID can be found by going to the channel details. Refer to the placeholder value on the input to see an example of how this looks.\\n2. Decide if notifications should go out even if the ticket has a target end date set. Set the toggle to the desired behavior.\\n3. Decide if a ticket should pass the check if it\\'s part is a descendant of the filter part. For example, if a", "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" }, { - "id": "ART-2017_KNOWLEDGE_NODE-27", - "text": "Connection**.\\n * Select **Slack** from the dowpdown list.\\n * Give it a name and sign in with Slack. Ensure to toggle on **Make public** to make the connection public for your organization.\\n\\nConfigure the snap-in\\n---------------------\\n\\n1. In the **Configuration** tab, the first input field to set is *filters*. Here you can declare for which tickets to track the SLA status and to which channels to send notifications.\\n\\n Set the ticket subtype, severity, and part; the support heads", + "id": "ART-4965_KNOWLEDGE_NODE-15", + "text": "[Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)\\n - [Slack message agent](/docs/automations/slack-message-agent)\\n", + "title": "Ticket Immutability | Automate | Snap-ins | DevRev" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-25", + "text": "ticket\\'s owner and subscribers, when a ticket\\'s resolution time SLA changes into the *Warning* or *Breached* stage.\\n\\n![]()\\n\\nFor more information, refer to the\\n[SLA status change Slack notifier snap-in](/marketplace/sla-status-change-slack-notifier) on the DevRev\\nmarketplace.\\n\\nInstallation\\n------------\\n\\n1. Create a Slack app for your workspace in .\\n2. In App features, generate bot token in **OAuth & Permissions**.\\n3. Grant the app bot the following", "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" }, + { + "id": "ART-4185_KNOWLEDGE_NODE-15", + "text": "[Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)\\n - [Slack message agent](/docs/automations/slack-message-agent)\\n", + "title": "Ticket approval workflow | Automate | Snap-ins | DevRev" + }, { "id": "ART-2035_KNOWLEDGE_NODE-38", "text": "recommended if you already have a conversation in progress. Configure the snap-in to send or not send a ticket summary card to the Slack thread using the **Notify on conversation to ticket conversion** setting. Regardless, the Slack thread will sync with the new ticket instead of the ongoing conversation.\\n\\n![]()\\n\\nSlack does not support slash commands in threads.\\n\\nChoosing one of the first two options will open a pop-up modal with the new ticket form. Complete the required fields; some", "title": "Slack | Integrate | Snap-ins | DevRev" }, { - "id": "ART-2017_KNOWLEDGE_NODE-24", - "text": "[Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Installation](#installation)\\n* [Configure the snap-in](#configure-the-snapin)\\n\\n1. [Documentation](/docs)\\n3. [Snap-ins](/docs/snapins)\\n[Automate](/docs/automate)\\n[SLA status change Slack notifier](/docs/automations/sla-change-notifier)\\n\\nSLA status change Slack notifier\\n================================\\n\\nGet alerted on your ticket\\'s SLAs. This snap-in sends a notification through Slack to user configured channels, tagging the", - "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" - }, - { - "id": "ART-2017_KNOWLEDGE_NODE-13", - "text": "creator](/docs/automations/smart-issue-creator)\\n - [Set user preference for group](/docs/automations/set-user-preference)\\n - [SLA status change Slack notifier](/docs/automations/sla-change-notifier)\\n - [Slash commands](/docs/automations/slash-commands)\\n - [Spam Shield](/docs/automations/spam-shield)\\n - [Subtype Migration](/docs/automations/subtype-migration)\\n - [Ticket age in engineering](/docs/automations/ticket-age-in-engineering)\\n - [Ticket issue field", - "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" + "id": "ART-4199_KNOWLEDGE_NODE-15", + "text": "[Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)\\n - [Slack message agent](/docs/automations/slack-message-agent)\\n", + "title": "Slack message agent | Automate | Snap-ins | DevRev" } ] }, @@ -3531,55 +3531,55 @@ "query_id": "3b420be6-ebc2-458e-a551-3a6038309339", "query": "export all accounts without 500 limit", "retrievals": [ - { - "id": "ART-1255_KNOWLEDGE_NODE-8", - "text": "Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/accounts/export)[#### Get Account\\n\\nNext](/api-reference/accounts/get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Export Accounts (POST) | DevRev | Docs" - }, { "id": "ART-1462_KNOWLEDGE_NODE-3", "text": "Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nPOST\\n\\n/accounts.export\\n\\n[code]\\n\\n $| curl -X POST https://api.devrev.ai/accounts.export \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \" \\\\ \\n >| -H \"Content-Type: application/json\" \\\\ \\n >| -d \\'{}\\'\\n[/code] \\n \\nTry it\\n\\n200accountsExportPostExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"accounts\": [ \\n 3| { \\n 4| \"id\": \"foo\", \\n 5|", "title": "Export Accounts (POST) \u2014 DevRev | Docs" }, { - "id": "ART-1254_KNOWLEDGE_NODE-9", - "text": "Export Accounts (POST)\\n\\nNext](/api-reference/accounts/export-post)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "id": "ART-1254_KNOWLEDGE_NODE-8", + "text": "stringsOptional\\n\\nArray of websites of accounts to be filtered.\\n\\n### Response\\n\\nThe response to exporting a collection of accounts.\\n\\naccountslist of objects\\n\\nThe exported accounts.\\n\\nShow 14 properties\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/accounts/delete)[####", "title": "Export Accounts | DevRev | Docs" }, { - "id": "ART-1254_KNOWLEDGE_NODE-1", - "text": "it](/api-reference/accounts/export?explorer=true)\\n\\n200Retrieved\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"accounts\": [ |\\n| 3 | { |\\n| 4 | \"id\": \"string\", |\\n| 5 | \"owned_by\": [ |\\n| 6 | { |\\n| 7 | \"display_id\": \"string\", |\\n| 8 | \"id\": \"string\", |\\n| 9 | \"display_name\": \"string\", |\\n| 10 | \"display_picture\": { |\\n| 11 | \"display_id\": \"string\", |\\n| 12 | \"id\": \"string\", |\\n| 13 | \"file\": { |\\n| 14 | \"type\": \"string\", |\\n| 15 | \"name\": \"string\", |\\n| 16 | \"size\": 1 |\\n| 17 | } |\\n| 18", - "title": "Export Accounts | DevRev | Docs" + "id": "ART-1449_KNOWLEDGE_NODE-5", + "text": "Unavailable Error\\n\\nGET\\n\\n/accounts.export\\n\\n[code]\\n\\n $| curl https://api.devrev.ai/accounts.export \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \"\\n[/code] \\n \\nTry it\\n\\n200exportExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"accounts\": [ \\n 3| { \\n 4| \"id\": \"foo\", \\n 5| \"owned_by\": [ \\n 6| { \\n 7| \"display_id\": \"foo\", \\n 8| \"id\": \"foo\", \\n 9| \"display_name\": \"foo\", \\n", + "title": "Export Accounts \u2014 DevRev | Docs" }, { - "id": "ART-1255_KNOWLEDGE_NODE-1", - "text": "|\\n| > | -H \"Content-Type: application/json\" \\\\ |\\n| > | -d \\'{}\\' |\\n```\\n\\n[Try it](/api-reference/accounts/export-post?explorer=true)\\n\\n200Successful\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"accounts\": [ |\\n| 3 | { |\\n| 4 | \"id\": \"string\", |\\n| 5 | \"owned_by\": [ |\\n| 6 | { |\\n| 7 | \"display_id\": \"string\", |\\n| 8 | \"id\": \"string\", |\\n| 9 | \"display_name\": \"string\", |\\n| 10 | \"display_picture\": { |\\n| 11 | \"display_id\": \"string\", |\\n| 12 | \"id\": \"string\", |\\n| 13 | \"file\": { |\\n| 14", - "title": "Export Accounts (POST) | DevRev | Docs" + "id": "ART-1302_KNOWLEDGE_NODE-19", + "text": "maximum number of accounts to return per page. The default is \\'50\\'.\\nmode \"after\" or \"before\" Optional\\nThe iteration mode to use, otherwise if not set, then \"after\" is used.\\nAllowed values: after before\\nmodified_date.after datetime Optional\\nFilters for objects created after the provided timestamp (inclusive).\\nmodified_date.before datetime Optional\\nFilters for objects created before the provided timestamp (inclusive).\\nowned_by string Optional\\nFilters for accounts owned by the specified", + "title": "Export \u2014 DevRev | Docs" }, { - "id": "ART-1254_KNOWLEDGE_NODE-0", - "text": "b'Export Accounts | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[accounts](/api-reference/accounts/accounts)\\n\\nExport Accounts\\n===============\\n\\nCopy page\\n\\nGET\\n\\nhttps://api.devrev.ai/accounts.export\\n\\nGET\\n\\n/accounts.export\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl https://api.devrev.ai/accounts.export \\\\ |\\n| > | -H \"Authorization: Bearer \" |\\n```\\n\\n[Try", + "id": "ART-1254_KNOWLEDGE_NODE-1", + "text": "it](/api-reference/accounts/export?explorer=true)\\n\\n200Retrieved\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"accounts\": [ |\\n| 3 | { |\\n| 4 | \"id\": \"string\", |\\n| 5 | \"owned_by\": [ |\\n| 6 | { |\\n| 7 | \"display_id\": \"string\", |\\n| 8 | \"id\": \"string\", |\\n| 9 | \"display_name\": \"string\", |\\n| 10 | \"display_picture\": { |\\n| 11 | \"display_id\": \"string\", |\\n| 12 | \"id\": \"string\", |\\n| 13 | \"file\": { |\\n| 14 | \"type\": \"string\", |\\n| 15 | \"name\": \"string\", |\\n| 16 | \"size\": 1 |\\n| 17 | } |\\n| 18", "title": "Export Accounts | DevRev | Docs" }, { - "id": "ART-1255_KNOWLEDGE_NODE-0", - "text": "b'Export Accounts (POST) | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[accounts](/api-reference/accounts/accounts)\\n\\nExport Accounts (POST)\\n======================\\n\\nCopy page\\n\\nPOST\\n\\nhttps://api.devrev.ai/accounts.export\\n\\nPOST\\n\\n/accounts.export\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl -X POST https://api.devrev.ai/accounts.export \\\\ |\\n| > | -H \"Authorization: Bearer \" \\\\", - "title": "Export Accounts (POST) | DevRev | Docs" + "id": "ART-1460_KNOWLEDGE_NODE-2", + "text": "it\\n\\n200accountsDeleteExample\\n\\n[code]\\n\\n 1| {} \\n ---|---\\n[/code] \\n \\n[Export AccountsUp Next](/public/api-reference/accounts/export)\\n\\n[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)\\n\\n[Enterprise grade security to protect customer dataLearn more about it.](https://devrev.ai/blog/soc-compliance)\\n\\nProduct\\n\\n * [Build](https://devrev.ai/build)\\n * [Support](https://devrev.ai/support)\\n *", + "title": "Delete Account \u2014 DevRev | Docs" }, { - "id": "ART-1449_KNOWLEDGE_NODE-5", - "text": "Unavailable Error\\n\\nGET\\n\\n/accounts.export\\n\\n[code]\\n\\n $| curl https://api.devrev.ai/accounts.export \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \"\\n[/code] \\n \\nTry it\\n\\n200exportExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"accounts\": [ \\n 3| { \\n 4| \"id\": \"foo\", \\n 5| \"owned_by\": [ \\n 6| { \\n 7| \"display_id\": \"foo\", \\n 8| \"id\": \"foo\", \\n 9| \"display_name\": \"foo\", \\n", - "title": "Export Accounts \u2014 DevRev | Docs" + "id": "ART-1462_KNOWLEDGE_NODE-2", + "text": "stringsOptional\\n\\nFilters for accounts on specified stages.\\n\\ntierlist of stringsOptional\\n\\nTier of the accounts to be filtered.\\n\\nwebsiteslist of stringsOptional\\n\\nArray of websites of accounts to be filtered.\\n\\n### Response\\n\\nThe response to exporting a collection of accounts.\\n\\naccountslist of objects\\n\\nThe exported accounts.\\n\\nShow 14 properties\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests", + "title": "Export Accounts (POST) \u2014 DevRev | Docs" }, { - "id": "ART-1254_KNOWLEDGE_NODE-8", - "text": "stringsOptional\\n\\nArray of websites of accounts to be filtered.\\n\\n### Response\\n\\nThe response to exporting a collection of accounts.\\n\\naccountslist of objects\\n\\nThe exported accounts.\\n\\nShow 14 properties\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/accounts/delete)[####", - "title": "Export Accounts | DevRev | Docs" + "id": "ART-1652_KNOWLEDGE_NODE-15", + "text": "of strings Optional\\nDomains for accounts to be filtered.\\nexternal_refs list of strings Optional\\nArray of references of accounts to be filtered.\\nlimit integer Optional\\nThe maximum number of accounts to return per page. The default is \\'50\\'.\\nmode \"after\" or \"before\" Optional\\nAllowed values: after before\\nThe iteration mode to use. If \"after\", then entries after the provided cursor will be returned, or if no cursor is provided, then from the beginning. If \"before\", then entries before the", + "title": "Export \u2014 DevRev | Docs" + }, + { + "id": "ART-1303_KNOWLEDGE_NODE-11", + "text": "list of objects\\nThe exported accounts.\\nShow 18 properties\\nPOST / accounts.export\\ncURL\\n$ curl -X POST https://api.devrev.ai/accounts.export \\\\ > -H \" Authorization: Bearer \" \\\\ > -H \" Content-Type: application/json \" \\\\ > -d \\' {} \\'\\n200 Successful 1 { 2 \" accounts \" : [ 3 { 4 \" created_date \" : \" 2023-01-01T12:00:00Z \" , 5 \" display_id \" : \" display_id \" , 6 \" id \" : \" id \" , 7 \" modified_date \" : \" 2023-01-01T12:00:00Z \" , 8 \" display_name \" : \" display_name \" , 9 \" artifacts \" :", + "title": "Export Post \u2014 DevRev | Docs" }, { - "id": "ART-1449_KNOWLEDGE_NODE-1", - "text": "__\\n\\n[Pricing](https://devrev.ai/pricing)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[API Reference](/public/api-reference/getting-started)[Accounts](/public/api-reference/accounts/accounts)\\n\\n# Export Accounts\\n\\nGET\\n\\nhttps://api.devrev.ai/accounts.export\\n\\nTry it\\n\\nExports a collection of accounts.\\n\\n### Query parameters\\n\\ncreated_bylist of stringsOptional\\n\\nFilters for accounts created by the specified", - "title": "Export Accounts \u2014 DevRev | Docs" + "id": "ART-1652_KNOWLEDGE_NODE-439", + "text": "users.\\ncustom_fields map from strings to any Optional\\nFilters for custom fields.\\nfirst integer Optional\\nThe number of work items to return. The default is \\'50\\', the maximum is \\'5000\\'.\\nissue.accounts string Optional\\nFilters for issues with any of the provided Accounts.\\nissue.priority enum Optional\\nFilters for issues with any of the provided priorities.\\nAllowed values: p0 p1 p2 p3\\nissue.priority_v2 long Optional\\nFilters for issues with any of the provided priority enum", + "title": "Export \u2014 DevRev | Docs" } ] }, @@ -3588,54 +3588,54 @@ "query": "export report CSV download location", "retrievals": [ { - "id": "ART-1254_KNOWLEDGE_NODE-1", - "text": "it](/api-reference/accounts/export?explorer=true)\\n\\n200Retrieved\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"accounts\": [ |\\n| 3 | { |\\n| 4 | \"id\": \"string\", |\\n| 5 | \"owned_by\": [ |\\n| 6 | { |\\n| 7 | \"display_id\": \"string\", |\\n| 8 | \"id\": \"string\", |\\n| 9 | \"display_name\": \"string\", |\\n| 10 | \"display_picture\": { |\\n| 11 | \"display_id\": \"string\", |\\n| 12 | \"id\": \"string\", |\\n| 13 | \"file\": { |\\n| 14 | \"type\": \"string\", |\\n| 15 | \"name\": \"string\", |\\n| 16 | \"size\": 1 |\\n| 17 | } |\\n| 18", - "title": "Export Accounts | DevRev | Docs" + "id": "ART-1302_KNOWLEDGE_NODE-54", + "text": "Locate.\\n\\nGET https:// api.devrev.ai / artifacts.locate\\nGets the download URL for the artifact.\\nQuery parameters.\\n\\nid string Required\\nThe ID of the artifact to get the URL for.\\nversion string Optional\\nThe version of the artifact that needs to be fetched.\\nResponse.\\n\\nThis endpoint returns an object.\\nurl string\\nThe artifact\\'s download URL.\\nexpires_at datetime Optional\\nThe expiration timestamp of the URL.\\nAPI Reference artifacts Locate Post.\\n\\nPOST https:// api.devrev.ai /", + "title": "Export \u2014 DevRev | Docs" }, { - "id": "ART-1449_KNOWLEDGE_NODE-0", - "text": "b'[](/public/api-reference/accounts/export)\\n\\nPublic\\n\\n[](https://devrev.ai)\\n\\n * Product\\n * Platform\\n * Solutions\\n * Marketplace\\n * Company\\n * Resources\\n * [Pricing](https://devrev.ai/pricing)\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[](https://devrev.ai)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nSolutions __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources", - "title": "Export Accounts \u2014 DevRev | Docs" + "id": "ART-1302_KNOWLEDGE_NODE-55", + "text": "artifacts.locate\\nGets the download URL for the artifact.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of the artifact to get the URL for.\\nversion string Optional\\nThe version of the artifact that needs to be fetched.\\nResponse.\\n\\nThis endpoint returns an object.\\nurl string\\nThe artifact\\'s download URL.\\nexpires_at datetime Optional\\nThe expiration timestamp of the URL.\\nAPI Reference artifacts Prepare.\\n\\nPOST https:// api.devrev.ai / artifacts.prepare\\nCreates", + "title": "Export \u2014 DevRev | Docs" }, { - "id": "ART-1244_KNOWLEDGE_NODE-1", - "text": "it](/api-reference/works/export?explorer=true)\\n\\n200Retrieved\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"works\": [ |\\n| 3 | { |\\n| 4 | \"created_by\": { |\\n| 5 | \"display_id\": \"string\", |\\n| 6 | \"id\": \"string\", |\\n| 7 | \"display_name\": \"string\", |\\n| 8 | \"display_picture\": { |\\n| 9 | \"display_id\": \"string\", |\\n| 10 | \"id\": \"string\", |\\n| 11 | \"file\": { |\\n| 12 | \"type\": \"string\", |\\n| 13 | \"name\": \"string\", |\\n| 14 | \"size\": 1 |\\n| 15 | } |\\n| 16 | }, |\\n| 17 | \"email\": \"string\", |\\n| 18", - "title": "Export Works | DevRev | Docs" + "id": "ART-2575_KNOWLEDGE_NODE-27", + "text": "initiate the process. Notifications about successful imports and any errors will appear in the form of toasts at the bottom left.\\n\\nCSV file requirements\\n---------------------\\n\\n### Mandatory fields\\n\\nTo ensure a successful import, certain fields are required.\\n\\n**Accounts**:\\n\\n* display\\\\_name\\n* external\\\\_refs (a unique identifier for the account, such as the company\\'s website domain.)\\n\\n**Contacts:**\\n\\n* display\\\\_name\\n* external\\\\_ref (a unique identifier for the contact, such as", + "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-1254_KNOWLEDGE_NODE-0", - "text": "b'Export Accounts | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[accounts](/api-reference/accounts/accounts)\\n\\nExport Accounts\\n===============\\n\\nCopy page\\n\\nGET\\n\\nhttps://api.devrev.ai/accounts.export\\n\\nGET\\n\\n/accounts.export\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl https://api.devrev.ai/accounts.export \\\\ |\\n| > | -H \"Authorization: Bearer \" |\\n```\\n\\n[Try", - "title": "Export Accounts | DevRev | Docs" + "id": "ART-2575_KNOWLEDGE_NODE-11", + "text": "uploader](/docs/automations/csv-work-item-uploader)\\n - [CSV comments uploader](/docs/automations/csv-comments-uploader)\\n - [CSV commands uploader](/docs/automations/csv-commands-uploader)\\n - [Descope identity validation](/docs/automations/descope-identity-validation)\\n - [Effort logger](/docs/automations/effort-logger)\\n - [HTTP archive file upload & sanitization](/docs/automations/har-sanitization)\\n - [Link preview](/docs/automations/link-preview)\\n - [Org tags", + "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-1449_KNOWLEDGE_NODE-10", - "text": "\"modified_date\": \"2023-01-01T12:00:00.000Z\", \\n 69| \"primary_account\": { \\n 70| \"id\": \"foo\", \\n 71| \"display_id\": \"foo\", \\n 72| \"display_name\": \"foo\" \\n 73| }, \\n 74| \"tier\": \"foo\", \\n 75| \"websites\": [ \\n 76| \"foo\" \\n 77| ] \\n 78| } \\n 79| ] \\n 80| }\\n[/code] \\n \\n[Export Accounts (POST)Up Next](/public/api-reference/accounts/export-post)\\n\\n[Built", - "title": "Export Accounts \u2014 DevRev | Docs" + "id": "ART-16355_KNOWLEDGE_NODE-0", + "text": "b'CSV commands uploader | Automate | Snap-ins | DevRev\\n\\n* Computer\\n* Resources\\n* [Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nComputer\\n\\nResources\\n\\n[Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nSearch\\n\\n`CMD`\\xc2\\xa0+\\xc2\\xa0`K`\\n\\n* [Introduction](/docs)\\n* [Computer by DevRev](/docs/intro)\\n\\n + [Core concepts](/docs/product/core)\\n + [Apps](/docs/product/apps)\\n +", + "title": "CSV commands uploader | Automate | Snap-ins | DevRev" }, { - "id": "ART-1254_KNOWLEDGE_NODE-9", - "text": "Export Accounts (POST)\\n\\nNext](/api-reference/accounts/export-post)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Export Accounts | DevRev | Docs" + "id": "ART-1303_KNOWLEDGE_NODE-8", + "text": "external_refs \" 26 ] , 27 \" owned_by \" : [] , 28 \" stock_schema_fragment \" : \" don:core::devo/:custom_type_fragment/ \" , 29 \" subtype \" : \" subtype \" , 30 \" tags \" : [ 31 { 32 \" tag \" : { 33 \" id \" : \" id \" , 34 \" name \" : \" name \" 35 } 36 } 37 ] , 38 \" tier \" : \" tier \" 39 } 40 ] 41 }\\nAPI Reference accounts Export Post.\\n\\nPOST https:// api.devrev.ai / accounts.export\\nExports a collection of accounts.\\nRequest.\\n\\nThis endpoint expects an", + "title": "Export Post \u2014 DevRev | Docs" }, { - "id": "ART-1302_KNOWLEDGE_NODE-11", - "text": "accounts.export\\n$ curl -G https://api.devrev.ai/accounts.export \\\\ > -H \" Authorization: Bearer \" \\\\ > --data-urlencode created_date.after=2023-01-01T12:00:00Z \\\\ > --data-urlencode created_date.before=2023-01-01T12:00:00Z \\\\ > --data-urlencode modified_date.after=2023-01-01T12:00:00Z \\\\ > --data-urlencode modified_date.before=2023-01-01T12:00:00Z\\n200 Retrieved 1 { 2 \" accounts \" : [ 3 { 4 \" created_date \" : \" 2023-01-01T12:00:00Z \" , 5 \" display_id \" : \" display_id \" , 6 \" id \" : \"", - "title": "Export \u2014 DevRev | Docs" + "id": "ART-1244_KNOWLEDGE_NODE-25", + "text": "(POST)\\n\\nNext](/api-reference/works/export-post)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Export Works | DevRev | Docs" }, { - "id": "ART-1449_KNOWLEDGE_NODE-5", - "text": "Unavailable Error\\n\\nGET\\n\\n/accounts.export\\n\\n[code]\\n\\n $| curl https://api.devrev.ai/accounts.export \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \"\\n[/code] \\n \\nTry it\\n\\n200exportExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"accounts\": [ \\n 3| { \\n 4| \"id\": \"foo\", \\n 5| \"owned_by\": [ \\n 6| { \\n 7| \"display_id\": \"foo\", \\n 8| \"id\": \"foo\", \\n 9| \"display_name\": \"foo\", \\n", - "title": "Export Accounts \u2014 DevRev | Docs" + "id": "ART-4022_KNOWLEDGE_NODE-0", + "text": "b'CSV work item uploader | Automate | Snap-ins | DevRev\\n\\n* Computer\\n* Resources\\n* [Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nComputer\\n\\nResources\\n\\n[Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nSearch\\n\\n`CTRL`\\xc2\\xa0+\\xc2\\xa0`K`\\n\\n* [Introduction](/docs)\\n* [Computer by DevRev](/docs/intro)\\n\\n + [Core concepts](/docs/product/core)\\n + [Apps](/docs/product/apps)\\n +", + "title": "CSV work item uploader | Automate | Snap-ins | DevRev" }, { - "id": "ART-1255_KNOWLEDGE_NODE-0", - "text": "b'Export Accounts (POST) | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[accounts](/api-reference/accounts/accounts)\\n\\nExport Accounts (POST)\\n======================\\n\\nCopy page\\n\\nPOST\\n\\nhttps://api.devrev.ai/accounts.export\\n\\nPOST\\n\\n/accounts.export\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl -X POST https://api.devrev.ai/accounts.export \\\\ |\\n| > | -H \"Authorization: Bearer \" \\\\", - "title": "Export Accounts (POST) | DevRev | Docs" + "id": "ART-1244_KNOWLEDGE_NODE-0", + "text": "b'Export Works | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[works](/api-reference/works/tickets-and-issues)\\n\\nExport Works\\n============\\n\\nCopy page\\n\\nGET\\n\\nhttps://api.devrev.ai/works.export\\n\\nGET\\n\\n/works.export\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl https://api.devrev.ai/works.export \\\\ |\\n| > | -H \"Authorization: Bearer \" |\\n```\\n\\n[Try", + "title": "Export Works | DevRev | Docs" }, { - "id": "ART-1255_KNOWLEDGE_NODE-1", - "text": "|\\n| > | -H \"Content-Type: application/json\" \\\\ |\\n| > | -d \\'{}\\' |\\n```\\n\\n[Try it](/api-reference/accounts/export-post?explorer=true)\\n\\n200Successful\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"accounts\": [ |\\n| 3 | { |\\n| 4 | \"id\": \"string\", |\\n| 5 | \"owned_by\": [ |\\n| 6 | { |\\n| 7 | \"display_id\": \"string\", |\\n| 8 | \"id\": \"string\", |\\n| 9 | \"display_name\": \"string\", |\\n| 10 | \"display_picture\": { |\\n| 11 | \"display_id\": \"string\", |\\n| 12 | \"id\": \"string\", |\\n| 13 | \"file\": { |\\n| 14", - "title": "Export Accounts (POST) | DevRev | Docs" + "id": "ART-1302_KNOWLEDGE_NODE-4", + "text": "don:core::devo/:custom_type_fragment/ \" 18 ] , 19 \" description \" : \" description \" , 20 \" domains \" : [ 21 \" domains \" 22 ] , 23 \" external_refs \" : [ 24 \" external_refs \" 25 ] , 26 \" owned_by \" : [] , 27 \" stock_schema_fragment \" : \" don:core::devo/:custom_type_fragment/ \" , 28 \" subtype \" : \" subtype \" , 29 \" tags \" : [ 30 { 31 \" tag \" : { 32 \" id \" : \" id \" , 33 \" name \" : \" name \" 34 } 35 } 36 ]", + "title": "Export \u2014 DevRev | Docs" } ] }, @@ -3644,54 +3644,54 @@ "query": "ticket calls show playback access issue", "retrievals": [ { - "id": "ART-1447_KNOWLEDGE_NODE-8", - "text": "demo](https://devrev.ai/request-a-demo)\\n\\n'", - "title": "Tickets and issues \u2014 DevRev | Docs" + "id": "ART-15716_KNOWLEDGE_NODE-8", + "text": "for TicketsWe have a summarize option (it would resemble sparkle symbol) in the top right corner of the ticket view, which uses the ticket content to summarize the ticket\\n\\n7. Difference between Issues and Tickets\\n\\nTickets\\xc2\\xa0are for customer support\\xe2\\x80\\x94tracking requests, problems, or questions from customers or prospects.\\n\\nIssues\\xc2\\xa0are internal work items for developers\\xe2\\x80\\x94used to improve the product, fix bugs, or implement features. Issues can be linked to", + "title": "Support queries related playbook" }, { - "id": "ART-1979_KNOWLEDGE_NODE-41", - "text": "progress\\n\\n\\n\\nOpen\\n\\n\\n\\nEscalate\\n\\n\\n\\nValidate the fix\\n\\n\\n\\nAdditional detail needed\\n\\n\\n\\nCustomer responds\\n\\n\\n\\nStart\\n\\n\\n\\nFeature request accepted\\n\\n\\n\\nResolved\\n\\n\\n\\nNot valid\\n\\n\\n\\nQueued\\n\\n\\n\\nWork in progress\\n\\n\\n\\nAwaiting product assist\\n\\n\\n\\nAwaiting development\\n\\n\\n\\nAwating customer response\\n\\n\\n\\nIn development\\n\\n\\n\\nAccepted\\n\\n\\n\\nResolved\\n\\n\\n\\nCanceled\\n```\\n\\n**Open**\\n\\n* *Queued* (Q)\\n The initial stage for all tickets. When a new ticket is created,", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1978_KNOWLEDGE_NODE-43", + "text": "with that email or not.\\n + This could also be because your customer hasn't logged in.\\n* Customer isn't able to view the tickets they have created.\\n\\n + Check if there are any reported tickets by that customer. You can do so by logging into your DevRev app and then going into the tickets section. Here you can filter based on **reported by** and see if any tickets have been reported by the customer who isn't able to view the tickets.\\n + Check if the customer has logged in on the correct", + "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1979_KNOWLEDGE_NODE-39", - "text": "other tickets or issues that relate to this ticket, click **Link Records** and select the relevant items.\\n7. If you would like to immediately create another ticket, select **Create multiple**.\\n8. Click **Create**.\\n\\nIf a ticket is created from an existing conversation, then the ticket's title and description are populated automatically from the conversation.\\n\\n![]()\\n\\nYou can create a child issue by clicking **+ Link issue** > **Add a child issue**. You can link the other existing issue as", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-4271_KNOWLEDGE_NODE-31", + "text": "AI-handled conversation reaches its capability limits and needs human expertise.\\n * **Extended troubleshooting** : Issues requiring multiple steps or follow-ups over time.\\n\\n## Key information\\n\\n * **Channel support** : Currently, the conversion feature is only available for PLuG and Slack conversations. Other channels still use the traditional **Link Ticket** functionality.\\n\\n * **CSAT surveys** : CSAT surveys are not sent when a conversation is converted to a ticket. Surveys are only", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev" }, { - "id": "ART-1002_KNOWLEDGE_NODE-1", - "text": "\\xe2\\x86\\x92 Issues\\n Items to track customer requests/problems \\xe2\\x86\\x92 Tickets\\n\\n\\nGiven the converged nature of the DevRev platform, we have both Tickets, and Issues, so when do you use what? The answer is \\xe2\\x80\\x9cit depends\\xe2\\x80\\x9d on what your role is on the part you\\xe2\\x80\\x99re creating the work item on. In general, issues should be restricted to those individuals that either own or contribute to a part. Tickets should be used for all customer/consumer (internal or", - "title": "Tickets, Issues: When to Use Each" + "id": "ART-1979_KNOWLEDGE_NODE-63", + "text": "support tickets on behalf of customers\\xe2\\x80\\x94without granting customers access to these tickets. This feature enables internal collaboration while keeping the ticket invisible to the customer until explicitly made external.\\n\\nEven if a ticket contains customer-related information (such as the customer workspace or the **Reported by** field), it remains inaccessible to the customer unless it is explicitly converted into an external ticket. The **Customer Messages** tab is unavailable for", + "title": "Tickets | Computer for Support Teams | DevRev" }, { - "id": "ART-1979_KNOWLEDGE_NODE-27", - "text": "also be used to engage customers for feedback/ideas (such as new feature ideas). Scoping is important for broadcast tickets as there needs to be a differentiation between broadcast (all revs) vs. multicast (particular revs).\\n\\nViews of tickets can be found under **Support** in the DevRev app.\\n\\n![]()\\n\\nYou can export views to CSV or JSON by selecting **Actions** in the upper-right corner and choosing the format.\\n\\nAttributes\\n----------\\n\\nTickets have attributes that can be used to filter", + "id": "ART-1979_KNOWLEDGE_NODE-48", + "text": "engineer can directly close and cancel such tickets.\\n* *Accepted* (A)\\n\\n The ticket requires a new feature development on the platform for resolution. However, there is no active work on the ticket but the feature addition required to meet the ticket will be done in the future. This stage is added to ensure that feature requests do not linger in the APA queue and to ensure that the right features are prioritized during roadmap planning.\\n* *Resolved* (R)\\n\\n The goal target stage for", "title": "Tickets | Computer for Support Teams | DevRev" }, { - "id": "ART-1447_KNOWLEDGE_NODE-1", - "text": "[Tickets](https://docs.devrev.ai/product/tickets) and [Issues](https://docs.devrev.ai/product/issues).\\n\\nWas this page helpful?YesNo\\n\\n[Create WorkUp Next](/public/api-reference/works/create)\\n\\n[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)\\n\\n[Enterprise grade security to protect customer dataLearn more about it.](https://devrev.ai/blog/soc-compliance)\\n\\nProduct\\n\\n * [Build](https://devrev.ai/build)\\n *", - "title": "Tickets and issues \u2014 DevRev | Docs" + "id": "ART-4184_KNOWLEDGE_NODE-2", + "text": "control](/docs/product/access-control)\\n + [Object customization](/docs/product/object-customization)\\n + [Glossary \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://support.devrev.ai/devrev/article/ART-16784-glossary)\\n + [Search](/docs/product/search)\\n + [Workflows](/docs/product/workflow-engine)\\n\\n - [Workflow action library](/docs/product/action-library)\\n - [Triggers](/docs/product/trigger-library)\\n - [Conversational workflows](/docs/product/conversational-workflows)\\n - [Workflow", + "title": "Ticket linked issues comment sync | Automate | Snap-ins | DevRev" }, { - "id": "ART-15716_KNOWLEDGE_NODE-8", - "text": "for TicketsWe have a summarize option (it would resemble sparkle symbol) in the top right corner of the ticket view, which uses the ticket content to summarize the ticket\\n\\n7. Difference between Issues and Tickets\\n\\nTickets\\xc2\\xa0are for customer support\\xe2\\x80\\x94tracking requests, problems, or questions from customers or prospects.\\n\\nIssues\\xc2\\xa0are internal work items for developers\\xe2\\x80\\x94used to improve the product, fix bugs, or implement features. Issues can be linked to", - "title": "Support queries related playbook" + "id": "ART-1979_KNOWLEDGE_NODE-60", + "text": "tickets\\n-----------------\\n\\nFollow up tickets allow support teams to seamlessly address unresolved issues, recurring problems, or additional concerns without losing context. By linking follow-up tickets to the original ticket(archived/immutable), teams can track ongoing issues more effectively, minimize duplicate work and enhance customer experience. A follow-up ticket is a new ticket that is created and linked when a customer responds in reference to an archived/immutable ticket. The", + "title": "Tickets | Computer for Support Teams | DevRev" }, { - "id": "ART-1002_KNOWLEDGE_NODE-3", - "text": "systems being used for engineering work are commonly abused by sales, marketing and support teams. For example, a sales rep may create an issue for a developer for a customer request. In the case of support, you\\xe2\\x80\\x99ll commonly see a ton of duplicate issues when only one was really necessary. This leads to a lot of noise for developers, and devalues the notion of an \\xe2\\x80\\x9cissue\\xe2\\x80\\x9d. By keeping a clear line between tickets and issues, we ensure the following:\\n\\n\\n issues", - "title": "Tickets, Issues: When to Use Each" + "id": "ART-1979_KNOWLEDGE_NODE-50", + "text": "customization](./object-customization).\\n\\nViewing attachments on tickets\\n------------------------------\\n\\nYou can view all attachments sent via the ticket's description, internal discussion, or a customer message by going to the **Attachments** section on the ticket for easy access.\\n\\n![]()\\n\\nTuring suggests\\n---------------\\n\\nTuring suggests enables Computer to aid customer experience engineers in resolving current tickets more efficiently. Each time a ticket is viewed, Computer", + "title": "Tickets | Computer for Support Teams | DevRev" }, { - "id": "ART-1979_KNOWLEDGE_NODE-40", - "text": "a child issue or create a new one by clicking on **+ New issue**.\\nJust update the title of the child issue and click enter. All other fields will be populated automatically by DevRev. You can edit them later.\\n\\nTags\\n----\\n\\n* Stalled\\n* Priority/Escalated\\n* Fast/Slow Moving\\n* Blocked\\n* Resolution: [*value*]\\n* Impact: [*value*]\\n* Reason: [*value*]\\n\\nStages\\n------\\n\\nThe following figure shows the state machine for tickets.\\n\\n```\\nClosed\\n\\n\\n\\nIn", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1975_KNOWLEDGE_NODE-26", + "text": "resolve tickets.\\n* **Tickets awaiting response**\\n\\n The number of active tickets awaiting response to customer.\\n* **Unassigned tickets**\\n\\n The number of tickets not yet assigned to a support agent.\\n* **Active blocker tickets**\\n\\n The number of tickets with severity Blocker that are in the Open or In Progress state.\\n* **SLA compliance rate**\\n\\n The percentage of tickets where the SLA was met out of all tickets where the SLA was applied.\\n* **Average CSAT score**\\n\\n The average", + "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1242_KNOWLEDGE_NODE-0", - "text": "b'Tickets and issues | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[works](/api-reference/works/tickets-and-issues)\\n\\nTickets and issues\\n==================\\n\\nCopy page\\n\\n`works` endpoint\\n\\n\\xe2\\x84\\xb9\\xef\\xb8\\x8f A work item is a record of some work that has to be done for a customer (ticket) or for another builder or maintainer of a part (issue).\\n\\n\\xf0\\x9f\\x93\\x8c For more information", - "title": "Tickets and issues | DevRev | Docs" + "id": "ART-1979_KNOWLEDGE_NODE-27", + "text": "also be used to engage customers for feedback/ideas (such as new feature ideas). Scoping is important for broadcast tickets as there needs to be a differentiation between broadcast (all revs) vs. multicast (particular revs).\\n\\nViews of tickets can be found under **Support** in the DevRev app.\\n\\n![]()\\n\\nYou can export views to CSV or JSON by selecting **Actions** in the upper-right corner and choosing the format.\\n\\nAttributes\\n----------\\n\\nTickets have attributes that can be used to filter", + "title": "Tickets | Computer for Support Teams | DevRev" } ] }, @@ -3705,49 +3705,49 @@ "title": "Issues with Salesforce OAuth connection" }, { - "id": "ART-2047_KNOWLEDGE_NODE-30", - "text": "it\\'s your first).\\n2. Create a new connection to your Salesforce account, or use an existing connection if you already have one.\\n3. Once the connection is established, select the Salesforce account you want to import and specify the DevRev part that should be used for any imported cases without a product. This initiates a bulk import of the selected account.\\n4. DevRev makes an effort to automatically map the fields from Salesforce to corresponding fields in DevRev. However, you may be", - "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev" + "id": "ART-4059_KNOWLEDGE_NODE-3", + "text": "Error\\n\\n404\\n\\nNot Found Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nPOST\\n\\n/dev-orgs.auth-connections.update\\n\\n[code]\\n\\n $| curl -X POST https://api.devrev.ai/dev-orgs.auth-connections.update \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \" \\\\ \\n >| -H \"Content-Type: application/json\" \\\\ \\n >| -d \\'{}\\'\\n[/code] \\n \\nTry", + "title": "Update Dev Orgs Auth Connection \u2014 DevRev | Docs" }, { - "id": "ART-15716_KNOWLEDGE_NODE-3", - "text": "SMTP/IMAP). You\\xe2\\x80\\x99ll need admin access to complete the setup.\\n\\n[Email integration setup instructions](https://devrev.ai/docs/integrations/email)\\n\\n6. Syncing Cases Between DevRev and Salesforce\\n\\nYes, you can sync cases (tickets) from DevRev to Salesforce using the Salesforce integration. Mapping and sync options are available during setup.\\n\\n[Syncing cases with Salesforce](https://devrev.ai/docs/integrations/salesforce#sync-cases)\\n\\n7. Supported Airdrop Sources\\n\\nDevRev Airdrop", + "id": "ART-15716_KNOWLEDGE_NODE-25", + "text": "not working, try resending the code or using a different phone number.\\n\\nIf the problem continues, escalate with the user\\xe2\\x80\\x99s phone number, timestamp, and any error messages for backend review.\\n\\nOkta Integration and Forcing SSO\\n\\nYes, DevRev integrates with Okta for Single Sign-On (SSO). You can enforce SSO for your organization, ensuring all users authenticate via Okta. DevRev also supports SCIM for automated user provisioning and deprovisioning 12.\\n\\nTo set this up:\\n\\nGo to", "title": "Support queries related playbook" }, { - "id": "ART-2047_KNOWLEDGE_NODE-36", - "text": "DevRev**.\\n\\n![]()\\n\\nThis may override fields in previously imported items, even if they were modified in DevRev.\\n\\n### Sync to Salesforce\\n\\nAfter a successful import from a Salesforce account, you can sync changes made in DevRev to the previously imported cases back to Salesforce. Additionally, any new [DevRev tickets marked for sync](#mark-a-devrev-ticket-for-syncing) is created as new Salesforce items.\\n\\nTo perform a one-time sync to Salesforce, follow these steps:\\n\\n1. Go to", - "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev" + "id": "ART-4057_KNOWLEDGE_NODE-3", + "text": "Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nPOST\\n\\n/dev-orgs.auth-connections.list\\n\\n[code]\\n\\n $| curl -X POST https://api.devrev.ai/dev-orgs.auth-connections.list \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \" \\\\ \\n >| -H \"Content-Type: application/json\" \\\\ \\n >| -d \\'{}\\'\\n[/code] \\n \\nTry", + "title": "List Dev Orgs Auth Connections (POST) \u2014 DevRev | Docs" }, { - "id": "ART-2047_KNOWLEDGE_NODE-35", - "text": "longer available.\\n\\n### Sync to DevRev\\n\\nAfter a successful import from a Salesforce account, you can choose to sync the imported data with DevRev. This feature airdrops any new items and any changes made to previously imported items from Salesforce.\\n\\nTo perform a one-time sync to DevRev, follow these steps:\\n\\n1. Go to **Settings** > **Integrations** > **AirSyncs**.\\n2. Locate the previously imported project.\\n3. Select **\\xe2\\x8b\\xae** > **Sync Salesforce Service to", - "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev" + "id": "ART-4055_KNOWLEDGE_NODE-2", + "text": "Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nPOST\\n\\n/dev-orgs.auth-connections.get\\n\\n[code]\\n\\n $| curl -X POST https://api.devrev.ai/dev-orgs.auth-connections.get \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \" \\\\ \\n >| -H \"Content-Type: application/json\" \\\\ \\n >| -d \\'{ \\n >| \"id\": \"foo\" \\n >| }\\'\\n[/code] \\n \\nTry it\\n\\n200authConnectionsDevOrgAuthConnectionsGetPostExample\\n\\n[code]\\n\\n 1| { \\n", + "title": "Get Dev Orgs Auth Connection (POST) \u2014 DevRev | Docs" }, { - "id": "ART-17569_KNOWLEDGE_NODE-2", - "text": "connection:\\n\\nOpen a Support Case w/ SFDC Support.\\n\\nAsk to have the API Access Control feature enabled\\n\\nOnce enabled, go to the system user in SFDC and select the appropriate profle/permission set and go to System Permissions.\\n\\nCheck the box that says \"Use Any API client\"\\n\\nThis is a setting that wouldn\\'t be available without the API Access Control feature.\\n\\nRetry creating the connection after you\\'ve completed the previous steps.'", - "title": "Issues with Salesforce OAuth connection" + "id": "ART-15374_KNOWLEDGE_NODE-3", + "text": "Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/auth-connections/dev-org-auth-connections-list-post)[#### Update Dev Orgs Auth Connection\\n\\nNext](/api-reference/auth-connections/dev-org-auth-connections-update)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Toggle Dev Orgs Auth Connections | DevRev | Docs" }, { - "id": "ART-15716_KNOWLEDGE_NODE-2", - "text": "details](https://devrev.ai/docs/integrations/jira)\\n\\n4. Integration with Salesforce\\n\\nYes, DevRev offers a Salesforce integration. You can sync accounts, contacts, opportunities, and more between DevRev and Salesforce.\\n\\n[Salesforce integration overview](https://devrev.ai/docs/integrations/salesforce)\\n\\n5. Configuring Email Integration Snap-In\\n\\nGo to Settings \\xe2\\x86\\x92 Integrations \\xe2\\x86\\x92 Email, then follow the prompts to connect your email provider (Gmail, Outlook, or custom", - "title": "Support queries related playbook" + "id": "ART-15369_KNOWLEDGE_NODE-5", + "text": "Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/auth-connections/identity-provider)[#### Delete Dev Orgs Auth Connection\\n\\nNext](/api-reference/auth-connections/dev-org-auth-connections-delete)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Create Dev Orgs Auth Connection | DevRev | Docs" }, { - "id": "ART-16740_KNOWLEDGE_NODE-1", - "text": "expected sync is from DevRev \\xe2\\x86\\x92 Salesforce, the Owner field in Salesforce will be overwritten with the Owner value from DevRev.'", - "title": "Handling Conflicts in Two-Way Sync Between DevRev and External Systems" + "id": "ART-15360_KNOWLEDGE_NODE-3", + "text": "Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/auth-connections/dev-org-auth-connections-create)[#### Get Dev Orgs Auth Connection\\n\\nNext](/api-reference/auth-connections/dev-org-auth-connections-get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Delete Dev Orgs Auth Connection | DevRev | Docs" }, { - "id": "ART-2047_KNOWLEDGE_NODE-37", - "text": "**Settings** > **Integrations** > **AirSyncs**.\\n2. Locate the previously imported project.\\n3. Select **\\xe2\\x8b\\xae** > **Sync DevRev to Salesforce Service**.\\n\\n![]()\\n\\nThis may override fields in Salesforce of previously imported items, even if they were modified in Salesforce.\\n\\n#### Mark a DevRev ticket for syncing\\n\\nUsing the [Sync to Salesforce](#sync-to-salesforce) feature, it\\'s possible to sync DevRev tickets to Salesforce. In order to sync a DevRev ticket to a specific Salesforce", - "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev" + "id": "ART-4059_KNOWLEDGE_NODE-4", + "text": "it\\n\\n201authConnectionsDevOrgAuthConnectionsUpdateExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"auth_connection\": {} \\n 3| }\\n[/code] \\n \\n[Get Dev OrgUp Next](/public/api-reference/dev-orgs/get)\\n\\n[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)\\n\\n[Enterprise grade security to protect customer dataLearn more about it.](https://devrev.ai/blog/soc-compliance)\\n\\nProduct\\n\\n * [Build](https://devrev.ai/build)\\n *", + "title": "Update Dev Orgs Auth Connection \u2014 DevRev | Docs" }, { - "id": "ART-2047_KNOWLEDGE_NODE-33", - "text": "Salesforce](#sync-to-salesforce):\\n + This option synchronizes any changes made in DevRev to previously synced Salesforce [supported items](#supported-objects) back to Salesforce. It also creates any [items marked in DevRev](#mark-a-devrev-ticket-for-syncing) for creation in Salesforce. This is a one-time operation.\\n* [Periodic Sync](#periodic-sync):\\n + By enabling this option, you can automatically sync new changes from Salesforce to DevRev on a periodic basis. The default frequency is", - "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev" + "id": "ART-15362_KNOWLEDGE_NODE-3", + "text": "Dev organization.\\n\\nShow 6 variants\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n404\\n\\nNot Found Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/auth-connections/dev-org-auth-connections-get)[#### List Dev Orgs Auth Connections\\n\\nNext](/api-reference/auth-connections/dev-org-auth-connections-list)[Built", + "title": "Get Dev Orgs Auth Connection (POST) | DevRev | Docs" } ] }, @@ -3755,35 +3755,35 @@ "query_id": "b0868a8c-db97-4032-a697-5e8eb9c4be3d", "query": "DevRev statistical data on ticket resolution time and customer benefits", "retrievals": [ + { + "id": "ART-1977_KNOWLEDGE_NODE-26", + "text": "owner.\\n* **Average Resolution Time**\\n\\n Average time taken to resolve tickets by ticket owners.\\n\\n[PreviousTicket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)[NextConversations](/docs/product/conversation)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer works](/how-computer-works)\\n\\nApps\\n\\n* [For Support Teams](/for-support-teams)\\n* [For", + "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev" + }, { "id": "ART-1975_KNOWLEDGE_NODE-25", "text": "insights\\n===============\\n\\n* **Tickets created**\\n\\n The number of tickets created within the date range that meet the other filtering criteria.\\n* **Active tickets**\\n\\n The number of tickets that are in the Open or In Progress state.\\n* **Closed tickets**\\n\\n The number of tickets closed within the date range that meet the other filtering criteria.\\n* **Average resolution time**\\n\\n The average time taken to resolve tickets.\\n* **Median resolution time**\\n\\n The median time taken to", "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, - { - "id": "ART-15792_KNOWLEDGE_NODE-8", - "text": "they come from - chat, email, Slack, phone - using unified data from across your company.\\n\\nCustomizable Ticket Routing: Route tickets with customizable workflows. Go beyond just priority and agent skill levels to assign the right ticket to the right person\\n\\nTakes actions: Support resolves common customer requests like password resets, subscription changes, and more from start to finish.\\n\\nUnified Data View: Eliminate disjointed middleware and layers of complex integrations. Speed up", - "title": "DevRev Products and Agents" - }, { "id": "ART-1975_KNOWLEDGE_NODE-28", "text": "conversations against standalone tickets.\\n* **Tickets linked to issues**\\n\\n The percentage of tickets linked to product issues.\\n* **Active tickets by owner**\\n\\n The number of Open or In Progress tickets grouped by owner.\\n* **Tickets created vs. closed**\\n\\n The trend of tickets created against those closed.\\n\\nCustomer satisfaction (CSAT)\\n----------------------------\\n\\n* **CSAT score distribution**\\n\\n A distribution of customer satisfaction scores on tickets.\\n\\nTime spent per", "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1975_KNOWLEDGE_NODE-24", - "text": "[Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Customer & product impact](#customer-product-impact)\\n* [Ticket distribution](#ticket-distribution)\\n* [Customer satisfaction (CSAT)](#customer-satisfaction-csat)\\n* [Time spent per stage](#time-spent-per-stage)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Support analytics](/docs/product/support-analytics)\\n[Ticket insights](/docs/dashboards/ticket-insights)\\n\\nTicket", + "id": "ART-1975_KNOWLEDGE_NODE-26", + "text": "resolve tickets.\\n* **Tickets awaiting response**\\n\\n The number of active tickets awaiting response to customer.\\n* **Unassigned tickets**\\n\\n The number of tickets not yet assigned to a support agent.\\n* **Active blocker tickets**\\n\\n The number of tickets with severity Blocker that are in the Open or In Progress state.\\n* **SLA compliance rate**\\n\\n The percentage of tickets where the SLA was met out of all tickets where the SLA was applied.\\n* **Average CSAT score**\\n\\n The average", "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1977_KNOWLEDGE_NODE-26", - "text": "owner.\\n* **Average Resolution Time**\\n\\n Average time taken to resolve tickets by ticket owners.\\n\\n[PreviousTicket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)[NextConversations](/docs/product/conversation)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer works](/how-computer-works)\\n\\nApps\\n\\n* [For Support Teams](/for-support-teams)\\n* [For", - "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-16189_KNOWLEDGE_NODE-13", + "text": "faster ticket resolution\\n* 57% drop in resolution time\\n* Improved coordination between support and engineering\\n* Real-time visibility into issue status\\n* Automation of routine support tasks\\n* Reduced backlog by 100+ tickets\\n* Enhanced customer communication and transparency\\n* Scalable, future-proof support operations\\n\\n### Related Articles\\n\\n[![]()\\n\\n5 min readLuxCreo boosts operational efficiency and agility with DevRev](/case-study/luxcreo)[![]()\\n\\n5 min readAditya Birla Capital", + "title": "FOSSA\u2019s Unified Support Strategy for Elevated Customer Experience" }, { - "id": "ART-1975_KNOWLEDGE_NODE-27", - "text": "customer satisfaction score for tickets.\\n* **Escalated tickets**\\n\\n The number of tickets that are escalated.\\n\\nCustomer & product impact\\n-------------------------\\n\\n* **Active tickets by customer**\\n\\n The number of Open or In Progress tickets grouped by customer.\\n* **Active tickets by part**\\n\\n The number of Open or In Progress tickets grouped by part.\\n\\nTicket distribution\\n-------------------\\n\\n* **Tickets linked to conversations**\\n\\n The percentage of tickets linked from", - "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-4181_KNOWLEDGE_NODE-1", + "text": "context-aware, and customer-centric with SLAs that are connected to your customers, parts of your product, and issues - not just tickets.\\n\\nNever miss an SLA with DevRev\\n\\nReduction in SLA breaches\\n\\n40%\\n\\nImprovement in response time\\n\\n60%\\n\\nFaster ticket resolution\\n\\n4X\\n\\nEffortlessly create SLAs\\n========================\\n\\nSay goodbye to the hassle of creating SLAs using complex flowcharts\\n===================================================================\\n\\n[Read our", + "title": "Support like a lightning fast pit-crew" }, { "id": "ART-1975_KNOWLEDGE_NODE-29", @@ -3791,19 +3791,19 @@ "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1986_KNOWLEDGE_NODE-36", - "text": "conversations:\\n\\n**Tickets**\\n\\n| Metric | Default conditions | Start event | End event | Pause event | Resume event |\\n| --- | --- | --- | --- | --- | --- |\\n| First response time | * Ticket created by a customer * The ticket was created by a customer experience engineer but reported by a customer | Ticket created | * The agent added a comment to the customer chat * The ticket is moved to Awaiting Customer Response, or the ticket is closed | | |\\n| Next response time | * Ticket created by", - "title": "Service-level agreement | Computer for Support Teams | DevRev" + "id": "ART-2886_KNOWLEDGE_NODE-1", + "text": "workflows\\n--------------------------------------------------------------------------------------\\n\\n* 30% reduction in mean time to resolution\\n* 29% faster ticket closure time\\n* Unified collaboration between L1 and L2 support teams\\n\\n[Read Case Study](/case-study/phenom)\\n\\n![]()\\n\\nHIGHLIGHTS\\n\\nHow Bolt connected customer, product, and engineering for smooth checkout\\n-------------------------------------------------------------------------\\n\\n* 40% faster ticket resolution\\n* 35% faster", + "title": "Case Study Library | DevRev" }, { - "id": "ART-1986_KNOWLEDGE_NODE-37", - "text": "a customer * The ticket was created by a customer experience engineer but reported by a customer | A new comment on the ticket by the customer after the customer experience engineer replied | * The agent added a comment to the customer chat * The ticket is moved to Awaiting Customer Response, or the ticket is closed | | |\\n| Full resolution time | * Ticket created by a customer * The ticket was created by a customer experience engineer but reported by a customer | Ticket created | The", - "title": "Service-level agreement | Computer for Support Teams | DevRev" + "id": "ART-1027_KNOWLEDGE_NODE-12", + "text": "driver\\n----------------------------------------------------------\\n\\nBy deploying DevRev, Descope has achieved:\\n\\n* 54% reduction in average resolution time\\n* 5\\xc3\\x97 faster ticket resolution with complete lifecycle visibility\\n* 300M+ users supported daily, up from 10M\\n* 100% SLA adherence maintained during scale\\n* 32\\xe2\\x80\\x9340% of inquiries resolved through AI-powered self-service\\n* Increased CSAT and reduced time to resolution\\n\\nThe result: a streamlined, product-led support", + "title": "Descope streamlines support at scale with automation, AI, and unified collaboration" }, { - "id": "ART-2662_KNOWLEDGE_NODE-4", - "text": "insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n + [Conversations](/docs/product/conversation)\\n\\n - [Conversation to", - "title": "DevRev Documentation" + "id": "ART-2664_KNOWLEDGE_NODE-5", + "text": "ticket conversion](/docs/product/conversation-ticket)\\n + [Tickets](/docs/product/tickets)\\n + [Routing](/docs/product/routing)\\n + [Support best practices](/docs/product/support-bp)\\n + [Customer portal](/docs/product/support-portal)\\n + [Questions & answers](/docs/product/qa)\\n + [Knowledge Base](/docs/product/knowledge-base)\\n\\n - [Articles](/docs/product/articles)\\n - [Collections](/docs/product/collection)\\n + [Turing AI agent](/docs/product/conversational-bot)\\n\\n - [Best", + "title": "Session analytics | Computer for Your Customers | DevRev" } ] }, @@ -3816,16 +3816,6 @@ "text": "do not, by default, have permission to read any datasets besides their own. Admins are responsible for granting read permissions to all or a subset of datasets, which platform users can then utilize in building dashboards or reports.\\n\\n### Sharing\\n\\nThe share functionality allows dashboard or report editors to grant read or update permissions to other users.\\n\\n1. Select **Share** from the actions drop-down.\\n2. Search for the desired user, assign them a role (Editor or Viewer), then click", "title": "Access control | Computer by DevRev | DevRev" }, - { - "id": "ART-1958_KNOWLEDGE_NODE-29", - "text": "whatever combination, that will give user groups permission to perform various operations on dashboards/reports. Out of the box, the following roles are enabled for the predefined user groups:\\n\\n* Admins\\n\\n ![]()\\n* Platform users\\n\\n ![]()\\n\\n By default, platform users have the following permissions:\\n\\n + Create dashboards or reports.\\n + Read, update, and delete their own dashboards or reports.\\n + Create datasets.\\n + Read, update, and delete their own datasets.\\n\\nPlatform users", - "title": "Access control | Computer by DevRev | DevRev" - }, - { - "id": "ART-1958_KNOWLEDGE_NODE-32", - "text": "**Create**: Build a dashboard or report. A user must have dashboard create permissions and dataset read permissions to create a dashboard or report.\\n* **Update**: Modify an existing dashboard or report. A user must have dashboard update permissions and dataset read permissions to modify a dashboard or report.\\n* **Share**: Allows a user to share an existing dashboard or report with other users. A user must have dashboard update permissions to share a dashboard or report.\\n\\n[PreviousDefault", - "title": "Access control | Computer by DevRev | DevRev" - }, { "id": "ART-1958_KNOWLEDGE_NODE-28", "text": "are not authorized to perform this action\". Relevant buttons may be inactive.\\nUsers can contact the organization\\'s admins to enable access in that case.\\n\\n![]()\\n\\nGranting access permissions\\n---------------------------\\n\\nUsers are granted access permissions to dashboards or reports through MFZ policies and sharing.\\n\\n### MFZ policies\\n\\nUse of MFZ policies facilitates the need to grant access to a wider group of users.\\n\\nAn org admin has permission to define and enable roles, in", @@ -3837,9 +3827,14 @@ "title": "Access control | Computer by DevRev | DevRev" }, { - "id": "ART-15687_KNOWLEDGE_NODE-1", - "text": "[Groups](/docs/product/groups)\\n + [Parts & trails](/docs/product/parts)\\n + [Vistas](/docs/product/vistas)\\n\\n - [Vista Reports](/docs/product/vista-reports)\\n - [Board view](/docs/product/board-view)\\n + [Tasks](/docs/product/tasks)\\n + [Updates](/docs/product/updates)\\n + [Customer email notifications](/docs/product/customer-emails)\\n + [Roles](/docs/product/roles)\\n\\n - [Default privileges by group](/docs/product/privs)\\n + [Access control](/docs/product/access-control)\\n +", - "title": "Dashboards | Computer by DevRev | DevRev" + "id": "ART-1958_KNOWLEDGE_NODE-29", + "text": "whatever combination, that will give user groups permission to perform various operations on dashboards/reports. Out of the box, the following roles are enabled for the predefined user groups:\\n\\n* Admins\\n\\n ![]()\\n* Platform users\\n\\n ![]()\\n\\n By default, platform users have the following permissions:\\n\\n + Create dashboards or reports.\\n + Read, update, and delete their own dashboards or reports.\\n + Create datasets.\\n + Read, update, and delete their own datasets.\\n\\nPlatform users", + "title": "Access control | Computer by DevRev | DevRev" + }, + { + "id": "ART-1958_KNOWLEDGE_NODE-32", + "text": "**Create**: Build a dashboard or report. A user must have dashboard create permissions and dataset read permissions to create a dashboard or report.\\n* **Update**: Modify an existing dashboard or report. A user must have dashboard update permissions and dataset read permissions to modify a dashboard or report.\\n* **Share**: Allows a user to share an existing dashboard or report with other users. A user must have dashboard update permissions to share a dashboard or report.\\n\\n[PreviousDefault", + "title": "Access control | Computer by DevRev | DevRev" }, { "id": "ART-1955_KNOWLEDGE_NODE-38", @@ -3847,18 +3842,23 @@ "title": "Default privileges by group | Roles | Computer by DevRev | DevRev" }, { - "id": "ART-15687_KNOWLEDGE_NODE-31", - "text": "dashboards\\n-------------------\\n\\nDashboards organize and display multiple widgets.\\n\\n* **Access the dashboard builder**:\\n Similar to the widget builder, access the dashboard builder by modifying your DevRev workspace URL. For example, your\\\\_workspace\\\\_slug/dashboard-preview.\\n The builder provides a boilerplate code.\\n\\n ![]()\\n* **Link widgets to the dashboard**:\\n\\n + Scroll to the section that defines the widgets to be linked.\\n + Remove any existing widget IDs and paste the", - "title": "Dashboards | Computer by DevRev | DevRev" + "id": "ART-1952_KNOWLEDGE_NODE-38", + "text": "the \\xe2\\x9c\\x8f\\xef\\xb8\\x8f\\xc2\\xa0icon. This will take you into the widget builder.\\n\\n### Share\\n\\nShare reports/dashboards by clicking the \\xe2\\x9a\\xa1\\xc2\\xa0button on your dashboard main page. Based on whether you have access, you can share with team members.\\n\\nAuthorization (MFZ)\\n-------------------\\n\\nFor Authorization (MFZ) related information, refer to [Vista Reports Authorization](./access-control).\\n\\n[PreviousVistas](/docs/product/vistas)[NextBoard", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev" }, { - "id": "ART-15687_KNOWLEDGE_NODE-33", - "text": "organization.\\n Define the reference ID for each tab before mapping widgets to them.\\n* **Create the dashboard**:\\n Once satisfied with the linked widgets and layout, click the **Create dashboard** button.\\n* **Accessing dashboards**:\\n\\nSearch in the **Explore** section:\\n\\n* Go to **Explore** in the left nav in DevRev.\\n* Search for your dashboard by its name.\\n* Click on the dashboard to access it.\\n* For easy access, you can pin your dashboard under a section of your", - "title": "Dashboards | Computer by DevRev | DevRev" + "id": "ART-1955_KNOWLEDGE_NODE-76", + "text": "Privileges: issue object None\\n* *Dashboard Admin:* A role that allows CRUDL operations to admins\\n\\n Privileges: dashboard object ['CREATE', 'READ', 'UPDATE', 'DELETE']\\n* *Timeline Comment Admins/System User Interactor:* Contains privileges on timeline comment for admins and system users\\n\\n Privileges: comment object ['CREATE', 'READ', 'UPDATE', 'DELETE']\\n* *DevOrg Commerce Admin License Assignment Manager:* Contains workspace commerce admin privileges for license assignment object.\\n\\n", + "title": "Default privileges by group | Roles | Computer by DevRev | DevRev" }, { - "id": "ART-15687_KNOWLEDGE_NODE-37", - "text": "Service](/legal/terms-of-service)\\n\\n[System Status](/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n![]()\\n\\n![]()\\n\\n![]()'", + "id": "ART-16615_KNOWLEDGE_NODE-28", + "text": "reassign Owner while keeping the same Stage.\\n * Drag diagonally to change both Stage and Owner simultaneously. For example, moving a card from *In Progress/John* to *Review/Sarah*.\\n3. **Edit inline**: Click directly on editable fields within cards to make quick updates.\\n4. **Bulk edit**: Select multiple cards using hover or Shift + click and apply bulk actions in one go.\\n\\n![]()\\n\\n### Customize your view\\n\\n1. **Create new items**: Click the **+** icon in any column or swimlane", + "title": "Board view | Vistas | Computer by DevRev | DevRev" + }, + { + "id": "ART-15687_KNOWLEDGE_NODE-33", + "text": "organization.\\n Define the reference ID for each tab before mapping widgets to them.\\n* **Create the dashboard**:\\n Once satisfied with the linked widgets and layout, click the **Create dashboard** button.\\n* **Accessing dashboards**:\\n\\nSearch in the **Explore** section:\\n\\n* Go to **Explore** in the left nav in DevRev.\\n* Search for your dashboard by its name.\\n* Click on the dashboard to access it.\\n* For easy access, you can pin your dashboard under a section of your", "title": "Dashboards | Computer by DevRev | DevRev" } ] @@ -3868,54 +3868,54 @@ "query": "Escalation triggers for complex queries requiring human intervention, including probing questions and answer capturing", "retrievals": [ { - "id": "ART-1003_KNOWLEDGE_NODE-25", - "text": "* 100\\n \\n \\n\\n\\nSELECT (COUNT(*) * 100) / (SELECT COUNT(*) FROM tickets WHERE EXTRACT(@period FROM created_at) = EXTRACT(@period FROM CURRENT_DATE)) AS EscalationRate\\nFROM tickets\\nWHERE is_escalated = 1\\nAND EXTRACT(@period FROM created_at) = EXTRACT(@period FROM CURRENT_DATE);\\n-- NOTE: Replace @period with 'DAY', 'WEEK', 'MONTH', or 'QUARTER'.\\n\\n\\nAgent Utilization Rate\\n\\n\\n Definition\\n \\n The percentage of an engineer\\xe2\\x80\\x99s working hours spent on handling customer", + "id": "ART-1003_KNOWLEDGE_NODE-24", + "text": "= EXTRACT(@period FROM CURRENT_DATE))) AS TicketBacklog\\nFROM tickets\\nWHERE status != 'closed'\\nAND EXTRACT(@period FROM created_at) = EXTRACT(@period FROM CURRENT_DATE);\\n-- NOTE: Replace @period with 'DAY', 'WEEK', 'MONTH', or 'QUARTER'.\\n\\n\\nEscalation Rate\\n\\n\\n Definition\\n \\n The percentage of support tickets that require escalation to higher-level support or other departments.\\n \\n \\n Calculation\\n \\n (Total number of escalated tickets) / (Total number of tickets)", "title": "Understanding a Support Lead's Pain Points and KPIs" }, { - "id": "ART-1974_KNOWLEDGE_NODE-30", - "text": "stage.\\n* *Needs response* (NR)\\n\\n The customer has responded; the customer experience engineer needs to review the item and respond or resolve the issue if the user requests or validates the fix. When a customer experience engineer responds the stage transitions to *waiting on user*.\\n\\n In certain cases it may be necessary to escalate the item internally where the conversation may depend on tickets, issues, or a response from someone other than themselves. In this case the stage", - "title": "Conversations | Computer for Support Teams | DevRev" + "id": "ART-1004_KNOWLEDGE_NODE-4", + "text": "these resources most productive, it is important to leverage automation to handle some of these lower-level activities; then, by the time it reaches the engineer, they are dealing with more complex pieces of the puzzle. Examples of this are KB deflection, Q&A flows (gather context), and system offloads (AI is great here).\\n\\nA great example is the monotony and frequency of \\xe2\\x80\\x9cWhat\\xe2\\x80\\x99s the status of this?\\xe2\\x80\\x9d inquiries. If people have access to the system, and the", + "title": "Understanding a Support Engineer's Pain Points and KPIs" }, { - "id": "ART-1983_KNOWLEDGE_NODE-28", - "text": "creation of Q&As, Computer learns from customer conversations\\xc2\\xa0in which a human answers a question that it previously could not answer.\\n\\nWhen a customer initiates a conversation seeking answers, Computer springs into action, drawing upon published Q&As and knowledge articles to provide a solution. If Computer falls short or the user prefers a more personalized touch, they opt to connect with a customer experience engineer and resolve the conversation. Computer doesn't just move", - "title": "Questions & answers | Computer for Support Teams | DevRev" + "id": "ART-2134_KNOWLEDGE_NODE-3", + "text": "integration of AI into products and processes. It highlights the need for real-time interventions, where AI can discern, de\\xef\\xac\\x82ect, and deduplicate tasks and inputs. Also required are natural language interfaces for various tasks, such as text-to-SQL, text-to-visualizations, and text-to-APIs. Additionally, it emphasizes the use of copilots, semantic search, and goal-oriented bots to reduce human workload and improve productivity.\\n\\nThe Essential Methodology aims to create a culture of", + "title": "The Essential Methodology: Executive Summary" }, { - "id": "ART-1003_KNOWLEDGE_NODE-3", - "text": "transfer session (KT) with teams as new features go out?\\n\\nHow to resolve them:\\n\\n\\n Leverage intelligent deflection and AI offloads\\n \\n For example, don\\xe2\\x80\\x99t waste time making a human gather context, AI can now very accurately gather context and/or suggest articles.\\n \\n \\n Leverage load in terms of routing\\n \\n Normally routing is statically done or done in a round-robin manner, however, that doesn\\xe2\\x80\\x99t work when cases may be differing in complexity.\\n", - "title": "Understanding a Support Lead's Pain Points and KPIs" + "id": "ART-13178_KNOWLEDGE_NODE-18", + "text": "human direction.\\n\\nYour business decisions require both intelligence and action. Agentic AI delivers both.\\n\\nAt its foundation, agentic AI employs multiple large language models (LLMs) working together. When handling complex problems, AI agents consult different models and cross-references their insights. This collaborative approach produces more reliable decisions than single-model systems.\\n\\nThe decision making processes unfold in four key stages:\\n\\n 1. **User provides instruction:** You", + "title": "Understanding Agentic AI: Capabilities and Implications for the Future" }, { - "id": "ART-1004_KNOWLEDGE_NODE-4", - "text": "these resources most productive, it is important to leverage automation to handle some of these lower-level activities; then, by the time it reaches the engineer, they are dealing with more complex pieces of the puzzle. Examples of this are KB deflection, Q&A flows (gather context), and system offloads (AI is great here).\\n\\nA great example is the monotony and frequency of \\xe2\\x80\\x9cWhat\\xe2\\x80\\x99s the status of this?\\xe2\\x80\\x9d inquiries. If people have access to the system, and the", - "title": "Understanding a Support Engineer's Pain Points and KPIs" + "id": "ART-1983_KNOWLEDGE_NODE-28", + "text": "creation of Q&As, Computer learns from customer conversations\\xc2\\xa0in which a human answers a question that it previously could not answer.\\n\\nWhen a customer initiates a conversation seeking answers, Computer springs into action, drawing upon published Q&As and knowledge articles to provide a solution. If Computer falls short or the user prefers a more personalized touch, they opt to connect with a customer experience engineer and resolve the conversation. Computer doesn't just move", + "title": "Questions & answers | Computer for Support Teams | DevRev" }, { - "id": "ART-1974_KNOWLEDGE_NODE-28", - "text": "transitions from *new* to *waiting on user*. When a customer responds back to support, the stage transitions to *needs response*.\\n\\n Towards the end of the conversation when the resolution is expected to be valid, the customer experience engineer asks the customer to acknowledge their concerns have been resolved. When the customer experience engineer asks this question the stage transitions to *waiting on user*, and if they validate it moves to *needs response* for the customer experience", - "title": "Conversations | Computer for Support Teams | DevRev" + "id": "ART-970_KNOWLEDGE_NODE-62", + "text": "exploration delves into the pivotal role of context in AI, emphasizes the importance of context for unlocking AI\\xe2\\x80\\x99s potential, and underscores the significance of knowledge graphs. These versatile tools go beyond item similarity, helping us organize and cluster events over time, make informed decisions, and navigate the complexities of our data-driven world. Join us as we navigate the evolving AI landscape, reshaping industries and redefining technology\\xe2\\x80\\x99s role in our", + "title": "The Story" }, { - "id": "ART-1983_KNOWLEDGE_NODE-27", - "text": "**Q&As** and click **+ QA** in the top-right corner.\\n2. Fill in the **Question** and **Answer** fields, and select the relevant **Part**.\\n3. Set the appropriate **Status** and **Access level**. Set the status to *External* or *Public* if you want Computer to use it.\\n4. Confirm by clicking **Create**.\\n\\n![]()\\n\\nAutomatic creation\\n------------------\\n\\nYour customer conversations include a lot of knowledge, including some of the most accurate and current information. With the automated", - "title": "Questions & answers | Computer for Support Teams | DevRev" + "id": "ART-12392_KNOWLEDGE_NODE-6", + "text": "practices for documentation that supports AI](/docs/product/writing-bp)\\n + [Commands](/docs/product/commands)\\n + [Service-level agreement](/docs/product/sla)\\n + [Operational-level agreement](/docs/product/ola)\\n + [Support snap-ins](/docs/product/snapins-support)\\n* [Computer for Builders](/docs/product/build)\\n\\n + [Issues](/docs/product/issues)\\n + [Now, Next, Later](/docs/product/nnl)\\n + [Sprint mode](/docs/product/sprint)\\n + [Enhancements](/docs/product/enhancements)\\n +", + "title": "Triggers | Workflows | Computer by DevRev | DevRev" }, { - "id": "ART-1987_KNOWLEDGE_NODE-27", - "text": "automatically replies to the user query before it gets assigned to support. It goes through the knowledge base (articles and QAs), generates an answer, and checks with the user if the answer is useful or not.\\n\\n* If Computer doesn't understand the query, it gives the user an option to rephrase the question and ask again.\\n* If the user marks the answer as useful, Computer asks the user if they have more questions, then resolves the conversation.\\n* If the user marks the answer as not useful,", - "title": "Turing AI agent | Computer for Support Teams | DevRev" + "id": "ART-4162_KNOWLEDGE_NODE-6", + "text": "Computer\\xe2\\x80\\x99s agents were built for the natural language conversations that define modern AI interactions.\\n\\n![]()\\n\\nIntelligent search at scale\\n\\nThrough advanced and proprietary vectorization techniques, Computer imbues data with meaning. Working alongside keyword-based search, it can efficiently search across billions of records to deliver more relevant results and higher quality generated answers.\\n\\n![]()\\n\\nPowerful analytics\\n\\nComputer uses multiple database technologies to", + "title": "Computer by DevRev: AI Infrastructure for Connected Enterprise Data | DevRev" }, { - "id": "ART-1004_KNOWLEDGE_NODE-2", - "text": "troubleshooting.\\n\\nKPIs to track:\\n\\n\\n First Contact Resolution Rate\\n Knowledge Base Contributions\\n\\n\\nHigh-pressure environment\\n\\nDealing with people are angry or frustrated isn\\xe2\\x80\\x99t easy, even for the calmest person. In their role, they are the primary person triaging requets from customers and status updates from others in the organization; this can make this a very complex and tense role.\\n\\nAdditionally, most support organizations are very speed focused, so there is pressure", - "title": "Understanding a Support Engineer's Pain Points and KPIs" + "id": "ART-4165_KNOWLEDGE_NODE-6", + "text": "Computer\\xe2\\x80\\x99s agents were built for the natural language conversations that define modern AI interactions.\\n\\n![]()\\n\\nIntelligent search at scale\\n\\nThrough advanced and proprietary vectorization techniques, Computer imbues data with meaning. Working alongside keyword-based search, it can efficiently search across billions of records to deliver more relevant results and higher quality generated answers.\\n\\n![]()\\n\\nPowerful analytics\\n\\nComputer uses multiple database technologies to", + "title": "Computer by DevRev: AI Infrastructure for Connected Enterprise Data | DevRev" }, { - "id": "ART-1003_KNOWLEDGE_NODE-13", - "text": "this is ensuring you have visibility helping foster communication between internal teams. If you see an increase in escalations, that could point to a lack of enablement for the team.\\n\\nKPIs to track:\\n\\n\\n Escalation Rate\\n Time to Escalation Resolution\\n\\n\\nStaff retention and development\\n\\nAs much as you must support your customers, it\\xe2\\x80\\x99s also imperative to attract, retain, and develop top talent. How can you help enable them? Are you helping them grow? If the staff gets burnt", - "title": "Understanding a Support Lead's Pain Points and KPIs" + "id": "ART-4168_KNOWLEDGE_NODE-6", + "text": "Computer\\xe2\\x80\\x99s agents were built for the natural language conversations that define modern AI interactions.\\n\\n![]()\\n\\nIntelligent search at scale\\n\\nThrough advanced and proprietary vectorization techniques, Computer imbues data with meaning. Working alongside keyword-based search, it can efficiently search across billions of records to deliver more relevant results and higher quality generated answers.\\n\\n![]()\\n\\nPowerful analytics\\n\\nComputer uses multiple database technologies to", + "title": "Computer by DevRev: AI Infrastructure for Connected Enterprise Data | DevRev" } ] }, @@ -3924,54 +3924,54 @@ "query": "API token vs Auth token for API calling DevRev", "retrievals": [ { - "id": "ART-1386_KNOWLEDGE_NODE-8", - "text": "[Documentation](https://docs.devrev.ai/)\\n * [API Reference](https://docs.devrev.ai/api/)\\n * [The Book of DevRev](https://thebook.devrev.ai/)\\n * [Partner Program](https://devrev.ai/partners)\\n * [Startup Program](https://devrev.ai/startups)\\n\\nCompany\\n\\n * [About](https://devrev.ai/about)\\n * [People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why", - "title": "Get Auth Token \u2014 DevRev | Docs" + "id": "ART-1389_KNOWLEDGE_NODE-0", + "text": "b'[](/public/api-reference/auth-tokens/security-tokens)\\n\\nPublic\\n\\n[API Reference](/public/api-reference/getting-started)[auth-tokens](/public/api-reference/auth-tokens/security-tokens)\\n\\n#\\n\\nSecurity tokens\\n\\n`auth-tokens` endpoint\\n\\n\\xe2\\x84\\xb9\\xef\\xb8\\x8f Security tokens are required for accessing DevRev. There are four types of security tokens:\\n\\n * **Application Access Token (AAT)** : Uniquely identifies an application belonging to a dev org.\\n * **System User Token (SUT)** :", + "title": "Security tokens \u2014 DevRev | Docs" }, { - "id": "ART-1384_KNOWLEDGE_NODE-9", - "text": "Engine](https://devrev.ai/workflow-engine)\\n * [Turing AI](https://devrev.ai/turing-ai)\\n\\nResources\\n\\n * [Pricing](https://devrev.ai/pricing/support)\\n * [Blog](https://devrev.ai/blog)\\n * [Events](https://devrev.ai/events)\\n * [News](https://devrev.ai/blog?category=news)\\n * [Case Studies](https://devrev.ai/case-study)\\n * [Documentation](https://docs.devrev.ai/)\\n * [API Reference](https://docs.devrev.ai/api/)\\n * [The Book of DevRev](https://thebook.devrev.ai/)\\n * [Partner", - "title": "Create Auth Token \u2014 DevRev | Docs" + "id": "ART-1785_KNOWLEDGE_NODE-57", + "text": "\" scope \" : \" scope \" , 7 \" token_type \" : \" bearer \" 8 }\\nAPI Reference auth-tokens Delete.\\n\\nPOST https:// api.devrev.ai / auth-tokens.delete\\nRevokes the token that matches the given token ID issued under the given Dev organization.\\nRequest.\\n\\nThis endpoint expects an object.\\ntoken_id string Optional\\nThe unique identifier for the token under a given Dev organization. If no token ID is provided, then the token ID will be set from the JTI claim of the token in the authorization", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-1388_KNOWLEDGE_NODE-9", - "text": "[Documentation](https://docs.devrev.ai/)\\n * [API Reference](https://docs.devrev.ai/api/)\\n * [The Book of DevRev](https://thebook.devrev.ai/)\\n * [Partner Program](https://devrev.ai/partners)\\n * [Startup Program](https://devrev.ai/startups)\\n\\nCompany\\n\\n * [About](https://devrev.ai/about)\\n * [People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why", - "title": "List Auth Tokens \u2014 DevRev | Docs" + "id": "ART-15507_KNOWLEDGE_NODE-12", + "text": "platform.\\n\\nHere is a simple example of an API request to the DevRev backend to exchange your AAT for a session token:\\n\\n##### \\n\\nMake sure that you replace the `` and `` with the actual values.\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl \\\\ |\\n| > | --location \\'https://api.devrev.ai/auth-tokens.create\\' \\\\ |\\n| > | --header \\'accept: application/json, text/plain, */*\\' \\\\ |\\n| > | --header \\'content-type: application/json\\' \\\\ |\\n| > | --header \\'authorization: \\' \\\\", + "title": "Features | DevRev | Docs" }, { - "id": "ART-1386_KNOWLEDGE_NODE-11", - "text": "AI?](https://devrev.ai/what-is-conversational-ai)\\n\\n[](https://devrev.ai)\\n\\n[](https://www.linkedin.com/company/devrev)[](https://medium.com/devrev)[](https://twitter.com/devrev)\\n\\n[System Status](https://devrev.ai/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n[](https://devrev.ai)\\n\\n * Product\\n * Platform\\n * Solutions\\n * Marketplace\\n * Company\\n * Resources\\n * [Pricing](https://devrev.ai/pricing)\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a", + "id": "ART-1386_KNOWLEDGE_NODE-0", + "text": "b'[](/public/api-reference/auth-tokens/get)\\n\\nPublic\\n\\n[API Reference](/public/api-reference/getting-started)[Auth Tokens](/public/api-reference/auth-tokens/create)\\n\\n# Get Auth Token\\n\\nGET\\n\\nhttps://api.devrev.ai/auth-tokens.get\\n\\nTry it\\n\\nGets the token metadata corresponding to the given token ID under the given Dev organization.\\n\\n### Query parameters\\n\\ntoken_idstringRequired`format: \"id\"`\\n\\nThe unique identifier of the token under a given Dev organization.\\n\\n### Response\\n\\nThe", "title": "Get Auth Token \u2014 DevRev | Docs" }, { - "id": "ART-1196_KNOWLEDGE_NODE-6", - "text": "with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Get Auth Token | DevRev | Docs" + "id": "ART-1394_KNOWLEDGE_NODE-1", + "text": "__\\n\\n[Pricing](https://devrev.ai/pricing)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[API Reference](/public/api-reference/getting-started)[Auth Tokens](/public/api-reference/auth-tokens/create)\\n\\n# Get Auth Token (POST)\\n\\nPOST\\n\\nhttps://api.devrev.ai/auth-tokens.get\\n\\nTry it\\n\\nGets the token metadata corresponding to the given token ID under the given Dev organization.\\n\\n### Request\\n\\nThis endpoint expects an", + "title": "Get Auth Token (POST) \u2014 DevRev | Docs" }, { - "id": "ART-1394_KNOWLEDGE_NODE-9", - "text": "* [Blog](https://devrev.ai/blog)\\n * [Events](https://devrev.ai/events)\\n * [News](https://devrev.ai/blog?category=news)\\n * [Case Studies](https://devrev.ai/case-study)\\n * [Documentation](https://docs.devrev.ai/)\\n * [API Reference](https://docs.devrev.ai/api/)\\n * [The Book of DevRev](https://thebook.devrev.ai/)\\n * [Partner Program](https://devrev.ai/partners)\\n * [Startup Program](https://devrev.ai/startups)\\n\\nCompany\\n\\n * [About](https://devrev.ai/about)\\n *", - "title": "Get Auth Token (POST) \u2014 DevRev | Docs" + "id": "ART-1194_KNOWLEDGE_NODE-0", + "text": "b'Create Auth Token | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[auth-tokens](/api-reference/auth-tokens/security-tokens)\\n\\nCreate Auth Token\\n=================\\n\\nCopy page\\n\\nPOST\\n\\nhttps://api.devrev.ai/auth-tokens.create\\n\\nPOST\\n\\n/auth-tokens.create\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl -X POST https://api.devrev.ai/auth-tokens.create \\\\ |\\n| > | -H \"Authorization: Bearer", + "title": "Create Auth Token | DevRev | Docs" }, { - "id": "ART-1384_KNOWLEDGE_NODE-4", - "text": "that identifies the token.\\n\\n### Response\\n\\nResponse for the request to create a new token corresponding to the requested token type.\\n\\naccess_tokenstring`format: \"text\"`\\n\\nThe issued JSON Web Token (JWT) corresponding to the requested token type.\\n\\nexpires_inlong\\n\\nThe validity lifetime of the token specified in seconds since Unix epoch.\\n\\ntoken_typeenum\\n\\nAllowed values: bearer\\n\\nThe type of the issued token. Bearer is the only supported token type.\\n\\nclient_idstringOptional`format:", + "id": "ART-1384_KNOWLEDGE_NODE-0", + "text": "b'[](/public/api-reference/auth-tokens/create)\\n\\nPublic\\n\\n[API Reference](/public/api-reference/getting-started)[Auth Tokens](/public/api-reference/auth-tokens/create)\\n\\n# Create Auth Token\\n\\nPOST\\n\\nhttps://api.devrev.ai/auth-tokens.create\\n\\nTry it\\n\\nCreates a JWT corresponding to the requested token type for the authenticated user.\\n\\n### Request\\n\\nThis endpoint expects an object.\\n\\nact_asstringOptional`format: \"id\"`\\n\\nThe unique ID of the Dev user or the service account to", "title": "Create Auth Token \u2014 DevRev | Docs" }, { - "id": "ART-12969_KNOWLEDGE_NODE-6", - "text": "DevRev](https://thebook.devrev.ai/)\\n * [Partner Program](https://devrev.ai/partners)\\n * [Startup Program](https://devrev.ai/startups)\\n\\nCompany\\n\\n * [About](https://devrev.ai/about)\\n * [People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why How](https://devrev.ai/what-why-how)\\n\\nConnect\\n\\n * [Contact ](mailto:humansofdevrev@devrev.ai)\\n * [Instagram", - "title": "Info Auth Tokens \u2014 DevRev | Docs" + "id": "ART-1193_KNOWLEDGE_NODE-2", + "text": "helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/auth-connections/dev-org-auth-connections-update)[#### Create Auth Token\\n\\nNext](/api-reference/auth-tokens/create)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Security tokens | DevRev | Docs" }, { - "id": "ART-1384_KNOWLEDGE_NODE-13", - "text": "AI?](https://devrev.ai/what-is-conversational-ai)\\n\\n[](https://devrev.ai)\\n\\n[](https://www.linkedin.com/company/devrev)[](https://medium.com/devrev)[](https://twitter.com/devrev)\\n\\n[System Status](https://devrev.ai/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n[](https://devrev.ai)\\n\\n * Product\\n * Platform\\n * Solutions\\n * Marketplace\\n * Company\\n * Resources\\n * [Pricing](https://devrev.ai/pricing)\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a", - "title": "Create Auth Token \u2014 DevRev | Docs" + "id": "ART-1196_KNOWLEDGE_NODE-0", + "text": "b'Get Auth Token | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[auth-tokens](/api-reference/auth-tokens/security-tokens)\\n\\nGet Auth Token\\n==============\\n\\nCopy page\\n\\nGET\\n\\nhttps://api.devrev.ai/auth-tokens.get\\n\\nGET\\n\\n/auth-tokens.get\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl -G https://api.devrev.ai/auth-tokens.get \\\\ |\\n| > | -H \"Authorization: Bearer \" \\\\ |\\n| > | -d", + "title": "Get Auth Token | DevRev | Docs" }, { - "id": "ART-1384_KNOWLEDGE_NODE-8", - "text": "it.](https://devrev.ai/blog/soc-compliance)\\n\\nProduct\\n\\n * [Build](https://devrev.ai/build)\\n * [Support](https://devrev.ai/support)\\n * [Search](https://devrev.ai/search)\\n * [PLuG - User Engagement](https://devrev.ai/plug-user-engagement)\\n * [PLuG - User Observability](https://devrev.ai/plug-observability)\\n * [Marketplace](https://marketplace.devrev.ai/)\\n\\nPlatform\\n\\n * [Airdrop](https://devrev.ai/airdrop)\\n * [Analytics](https://devrev.ai/analytics)\\n * [Workflow", - "title": "Create Auth Token \u2014 DevRev | Docs" + "id": "ART-16579_KNOWLEDGE_NODE-12", + "text": "replace the `` and `` with the actual values.\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl \\\\ |\\n| > | --location \\'https://api.devrev.ai/auth-tokens.create\\' \\\\ |\\n| > | --header \\'accept: application/json, text/plain, */*\\' \\\\ |\\n| > | --header \\'content-type: application/json\\' \\\\ |\\n| > | --header \\'authorization: \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"rev_info\": { |\\n| > | \"user_ref\": \"\" |\\n| > | } |\\n| > | }\\' |\\n```\\n\\nThe response of the API call", + "title": "Features | DevRev | Docs" } ] }, @@ -3980,54 +3980,54 @@ "query": "SLA metrics dashboard filter not retaining selected data point showing all tickets instead of filtered tickets", "retrievals": [ { - "id": "ART-1986_KNOWLEDGE_NODE-44", - "text": "**Custom**: Filters all tickets that will breach by the selected date.\\n\\n![]()\\n\\nTroubleshooting: No SLA running on the ticket\\n---------------------------------------------\\n\\n### Issue\\n\\nYou have created and published an SLA, but no SLA is running on the ticket.\\n\\n### Solution\\n\\n1. Check the **SLA Name** attribute:\\n\\n\\xc2\\xa0\\xc2\\xa0 - Verify that the **SLA Name** attribute on the ticket is not empty.\\n\\n\\xc2\\xa0\\xc2\\xa0 - If the **SLA Name** is empty, it means the customer account", + "id": "ART-1986_KNOWLEDGE_NODE-42", + "text": "Target\\n------------------------------------\\n\\nIn order to filter tickets based on SLA, you can use the **Next SLA Target** filter.\\nHere\\xe2\\x80\\x99s how the filter works:\\n\\n* **All**: Filters all tickets that currently have an SLA applied to them. It will not filter tickets that had an SLA applied in the past and have been completed.\\n* **Breached since**:\\n\\n + **Any**: Filters all tickets that breached SLA, irrespective of when they were breached.\\n + **Over an hour**: Filters all", "title": "Service-level agreement | Computer for Support Teams | DevRev" }, { - "id": "ART-1972_KNOWLEDGE_NODE-24", - "text": "[Product demos](/docs/DevRevU/demos)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Support analytics](/docs/product/support-analytics)\\n[Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n\\nTicket-SLA Analytics\\n====================\\n\\n* **SLA applied Tickets**\\n\\n Number of tickets where SLA is applied.\\n* **SLA compliance rate**\\n\\n Percentage of tickets where SLA was met out of all tickets where SLA is applied.\\n* **Active tickets with", - "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-1819_KNOWLEDGE_NODE-450", + "text": "response.\\nticket.rev_org string Optional\\nFilters for tickets that are associated with any of the provided Rev organizations.\\nticket.severity enum Optional\\nFilters for tickets with any of the provided severities.\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the provided", + "title": "Sla Trackers Get \u2014 DevRev | Docs" }, { - "id": "ART-1972_KNOWLEDGE_NODE-15", - "text": "[Operational SLA Metrics](/docs/automations/operational-sla-metrics)\\n - [Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment", - "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-1986_KNOWLEDGE_NODE-35", + "text": "of schedule when they remain at the same stage, but time spent out of schedule isn't included in the calculation.\\n\\n![]()\\n\\nIf the customer account is updated after the ticket is created, all SLA metrics will be recalculated based on the updated customer account information. Any previous SLA breaches or achievements will be discarded, and new calculations will be applied according to the updated SLA.\\n\\nThe following table describes how each metric works for tickets and", + "title": "Service-level agreement | Computer for Support Teams | DevRev" }, { - "id": "ART-1972_KNOWLEDGE_NODE-4", - "text": "analytics](/docs/product/support-analytics)\\n\\n - [Conversation insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n +", - "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-1819_KNOWLEDGE_NODE-463", + "text": "need response.\\nticket.rev_org string Optional\\nFilters for tickets that are associated with any of the provided Rev organizations.\\nticket.severity enum Optional\\nFilters for tickets with any of the provided severities.\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the", + "title": "Sla Trackers Get \u2014 DevRev | Docs" }, { - "id": "ART-1972_KNOWLEDGE_NODE-25", - "text": "SLA breaches**\\n\\n Number of Active Tickets that breached an SLA.\\n* **Tickets with SLA warning**\\n\\n Number of Active Tickets that about to breach an SLA.\\n* **Resolution compliance rate**\\n\\n Percentage of tickets where Resolution SLA was met out of all tickets where Resolution SLA is applied.\\n* **First Response compliance rate**\\n\\n Percentage of tickets where First Response SLA was met out of all tickets where First Response SLA is applied.\\n* **Next Response compliance rate**\\n\\n", + "id": "ART-1972_KNOWLEDGE_NODE-15", + "text": "[Operational SLA Metrics](/docs/automations/operational-sla-metrics)\\n - [Custom field migration](/docs/automations/custom-field-migration)\\n - [Slack scraper](/docs/automations/slack-scraper)\\n - [Slack Broadcaster](/docs/automations/slack-broadcaster)\\n - [Reported by enricher](/docs/automations/ticket-reported-by)\\n - [Ticket approval workflow](/docs/automations/ticket-approval-workflow)\\n - [Ticket linked issues comment", "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1986_KNOWLEDGE_NODE-45", - "text": "selected on the ticket is not assigned any SLA.\\n\\n\\xc2\\xa0\\xc2\\xa0 \\xc2\\xa0 - Action: Check your SLA assignment rules or add the customer as an exception to any of your SLAs.\\n\\n![]()\\n\\nThe **SLA Name** is never empty if your organization has a default SLA.\\n\\n1. Verify policy conditions:\\n\\n\\xc2\\xa0\\xc2\\xa0 - If the **SLA Name** is populated but you still see no SLA metrics running on the ticket, the ticket does not satisfy the conditions of any policy within the SLA.\\n\\n\\xc2\\xa0\\xc2\\xa0", - "title": "Service-level agreement | Computer for Support Teams | DevRev" + "id": "ART-1819_KNOWLEDGE_NODE-462", + "text": "Optional\\nFilters for issues synced from this specific origin system.\\ntags string Optional\\nFilters for work with any of the provided tags.\\nticket.channels enum Optional\\nFilters for tickets with any of the provided channels.\\nAllowed values: email plug slack twilio twilio_sms\\nticket.group string Optional\\nFilters for tickets belonging to specific groups.\\nticket.is_spam boolean Optional\\nFilters for tickets that are spam.\\nticket.needs_response boolean Optional\\nFilters for tickets that", + "title": "Sla Trackers Get \u2014 DevRev | Docs" }, { - "id": "ART-2017_KNOWLEDGE_NODE-4", - "text": "analytics](/docs/product/support-analytics)\\n\\n - [Conversation insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n +", - "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev" + "id": "ART-1819_KNOWLEDGE_NODE-449", + "text": "issues synced from this specific origin system.\\ntags string Optional\\nFilters for work with any of the provided tags.\\nticket.channels enum Optional\\nFilters for tickets with any of the provided channels.\\nAllowed values: email plug slack twilio twilio_sms\\nticket.group string Optional\\nFilters for tickets belonging to specific groups.\\nticket.is_spam boolean Optional\\nFilters for tickets that are spam.\\nticket.needs_response boolean Optional\\nFilters for tickets that need", + "title": "Sla Trackers Get \u2014 DevRev | Docs" }, { - "id": "ART-1986_KNOWLEDGE_NODE-42", - "text": "Target\\n------------------------------------\\n\\nIn order to filter tickets based on SLA, you can use the **Next SLA Target** filter.\\nHere\\xe2\\x80\\x99s how the filter works:\\n\\n* **All**: Filters all tickets that currently have an SLA applied to them. It will not filter tickets that had an SLA applied in the past and have been completed.\\n* **Breached since**:\\n\\n + **Any**: Filters all tickets that breached SLA, irrespective of when they were breached.\\n + **Over an hour**: Filters all", - "title": "Service-level agreement | Computer for Support Teams | DevRev" + "id": "ART-1818_KNOWLEDGE_NODE-463", + "text": "medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the provided source channels.\\nticket.subtype string Optional\\nFilters for tickets with any of the provided subtypes.\\ntype enum Optional\\nFilters for work of the provided types.\\nAllowed values: issue opportunity task ticket\\nResponse.\\n\\nThis endpoint returns", + "title": "Sla Trackers Get Post \u2014 DevRev | Docs" }, { - "id": "ART-1972_KNOWLEDGE_NODE-27", - "text": "by Channel**\\n\\n Number of tickets where SLA was breached for each source channel.\\n* **SLA breaches by Subtype**\\n\\n Number of tickets where SLA was breached for each ticket subtype.\\n* **SLA breaches by Owner**\\n\\n Number of Tickets with SLA breaches for ticket owners.\\n* **Avg CSAT by SLA status**\\n\\n Average CSAT rating of tickets w.r.t. their SLA status and severity.\\n* **Unassigned Tickets with SLA breaches per Customer**\\n\\n Number of Unassigned Tickets with SLA breaches for each", - "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-1818_KNOWLEDGE_NODE-450", + "text": "medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the provided source channels.\\nticket.subtype string Optional\\nFilters for tickets with any of the provided subtypes.\\ntype enum Optional\\nFilters for work of the provided types.\\nAllowed values: issue opportunity task ticket\\nResponse.\\n\\nThis endpoint returns", + "title": "Sla Trackers Get Post \u2014 DevRev | Docs" }, { - "id": "ART-2818_KNOWLEDGE_NODE-4", - "text": "insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n + [Conversations](/docs/product/conversation)\\n\\n - [Conversation to", - "title": "Operational SLA Metrics | Automate | Snap-ins | DevRev" + "id": "ART-1248_KNOWLEDGE_NODE-24", + "text": "values:blockerhighlowmedium\\n\\nticket.sla\\\\_summary.stagelist of enumsOptional\\n\\nFilters for records with any of the provided SLA stages.\\n\\nAllowed values:breachedcompletedpausedrunningwarning\\n\\nticket.source\\\\_channellist of stringsOptional\\n\\nFilters for tickets with any of the provided source channels.\\n\\nticket.source\\\\_channel\\\\_v2list of stringsOptional\\n\\nFilters for tickets that are associated with any of the source\\nchannels.\\n\\ntypelist of enumsOptional\\n\\nFilters for work of the", + "title": "List Works | DevRev | Docs" } ] }, @@ -4036,14 +4036,9 @@ "query": "automatically change ticket stage when customer responds", "retrievals": [ { - "id": "ART-1979_KNOWLEDGE_NODE-43", - "text": "*awaiting customer response* until the customer responds.\\n\\n In certain scenarios, the customer experience engineer may be able to resolve the customer's concern. If that's the case, they would ask the customer if their resolution has resolved their concern and the stage would move to the *awaiting customer response*. Once the concern is resolved and the customer acknowledges the resolution, the stage may move to *resolved*. If the concern isn't resolved, the stage may change back to *work in", - "title": "Tickets | Computer for Support Teams | DevRev" - }, - { - "id": "ART-1981_KNOWLEDGE_NODE-28", - "text": "new conversation. Respond within 1 hour to new messages on existing conversations. Change the stage of conversation to *awaiting customer response* as soon as you have responded.\\n* In **Updates**, filter by **Type** > **Mentioned**. Respond to those updates first.\\n* Create a ticket if you aren't able to resolve the conversation in 20 minutes. As soon as the ticket is opened, move it to the *escalate* stage. The owner of the ticket is the owner of the customer org where the conversation", - "title": "Support best practices | Computer for Support Teams | DevRev" + "id": "ART-2016_KNOWLEDGE_NODE-28", + "text": "depending on the message given by a discussion participant.\\n\\n Enter /StageConfig in the snap-in **Discussions** tab and select the values from the dropdown for the stage transition whenever a message is given by a discussion participant.\\n4. Go to **Issues** or **Roadmap** and make updates. The tickets that were linked to the issue or enhancement reflect the changes you configured in the CSV file, notifying the ticket owner.\\n\\n[PreviousSend customized", + "title": "StageFlow automator | Automate | Snap-ins | DevRev" }, { "id": "ART-1953_KNOWLEDGE_NODE-31", @@ -4056,24 +4051,24 @@ "title": "Convergence | Automate | Snap-ins | DevRev" }, { - "id": "ART-1981_KNOWLEDGE_NODE-27", - "text": "Periodically group the **Inbox** by stage and make sure there conversations only in *hold* or *awaiting customer response* stages.\\n* Let the customer know when a ticket linked to a conversation is closed and request their verification.\\n* Once all tickets of a conversation are resolved and the customer is satisfied, resolve the conversation.\\n* Move new tickets to the *awaiting product assist* stage.\\n\\nRespond to conversations\\n------------------------\\n\\n* Respond as fast as possible to any", - "title": "Support best practices | Computer for Support Teams | DevRev" + "id": "ART-2012_KNOWLEDGE_NODE-28", + "text": "say \\xe2\\x80\\x9cI would like to add a terminal stage on my tickets\\xe2\\x80\\x9d and we will get it done.\\n\\n * If no terminal stage is set, tickets will reopen on new comments from customers if **Reopen Closed Tickets on customer message** is enabled in the [convergence snap-in](./converge). The tickets move to the _In Progress_ state by default.\\n\\n * If you connected your support email address with DevRev, it is recommended that you enable the **Allow automations to send email** in your", + "title": "Follow-up ticket | Automate | Snap-ins | DevRev" }, { - "id": "ART-1974_KNOWLEDGE_NODE-30", - "text": "stage.\\n* *Needs response* (NR)\\n\\n The customer has responded; the customer experience engineer needs to review the item and respond or resolve the issue if the user requests or validates the fix. When a customer experience engineer responds the stage transitions to *waiting on user*.\\n\\n In certain cases it may be necessary to escalate the item internally where the conversation may depend on tickets, issues, or a response from someone other than themselves. In this case the stage", - "title": "Conversations | Computer for Support Teams | DevRev" + "id": "ART-1953_KNOWLEDGE_NODE-24", + "text": "conversation](#reply-to-the-customer-on-a-conversation)\\n* [Reply to the customer on a ticket](#reply-to-the-customer-on-a-ticket)\\n* [Ticket linked to a conversation](#ticket-linked-to-a-conversation)\\n* [Change of stage of a ticket/conversation](#change-of-stage-of-a-ticketconversation)\\n* [CSAT survey for conversation/ticket](#csat-survey-for-conversationticket)\\n* [Auto customer reply](#auto-customer-reply)\\n* [Auto reply on email](#auto-reply-on-email)\\n\\n1. [Documentation](/docs)\\n3.", + "title": "Customer email notifications | Computer by DevRev | DevRev" }, { - "id": "ART-1979_KNOWLEDGE_NODE-45", - "text": "a user. In certain cases where the ticket depends on some fix (issues) the stage may go from *in development* to *awaiting customer response* when the corresponding issues have been resolved and the fix needs to be validated with the user.\\n\\n In certain cases, the customer experience engineer may be able to solve directly (without any required issues) which may change the stage from *work in progress* to *awaiting customer response* to validate they have solved the problem. If either has", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1981_KNOWLEDGE_NODE-27", + "text": "Periodically group the **Inbox** by stage and make sure there conversations only in *hold* or *awaiting customer response* stages.\\n* Let the customer know when a ticket linked to a conversation is closed and request their verification.\\n* Once all tickets of a conversation are resolved and the customer is satisfied, resolve the conversation.\\n* Move new tickets to the *awaiting product assist* stage.\\n\\nRespond to conversations\\n------------------------\\n\\n* Respond as fast as possible to any", + "title": "Support best practices | Computer for Support Teams | DevRev" }, { - "id": "ART-2012_KNOWLEDGE_NODE-28", - "text": "say \\xe2\\x80\\x9cI would like to add a terminal stage on my tickets\\xe2\\x80\\x9d and we will get it done.\\n\\n * If no terminal stage is set, tickets will reopen on new comments from customers if **Reopen Closed Tickets on customer message** is enabled in the [convergence snap-in](./converge). The tickets move to the _In Progress_ state by default.\\n\\n * If you connected your support email address with DevRev, it is recommended that you enable the **Allow automations to send email** in your", - "title": "Follow-up ticket | Automate | Snap-ins | DevRev" + "id": "ART-2016_KNOWLEDGE_NODE-24", + "text": "[Snap-ins](/docs/snapins)\\n[Automate](/docs/automate)\\n[StageFlow automator](/docs/automations/stageflow-automator)\\n\\nStageFlow Automator\\n===================\\n\\nThe StageFlow Automator is a custom snap-in that allows you to configure custom stages between tickets and issues/enhancements. You can also configure the stage transition whenever a message is given by a customer or a support team member.\\nIt also sends notifications to the ticket owner based on its stage changes.\\n\\n![]()\\n\\nFor", + "title": "StageFlow automator | Automate | Snap-ins | DevRev" }, { "id": "ART-1979_KNOWLEDGE_NODE-42", @@ -4081,9 +4076,14 @@ "title": "Tickets | Computer for Support Teams | DevRev" }, { - "id": "ART-2016_KNOWLEDGE_NODE-28", - "text": "depending on the message given by a discussion participant.\\n\\n Enter /StageConfig in the snap-in **Discussions** tab and select the values from the dropdown for the stage transition whenever a message is given by a discussion participant.\\n4. Go to **Issues** or **Roadmap** and make updates. The tickets that were linked to the issue or enhancement reflect the changes you configured in the CSV file, notifying the ticket owner.\\n\\n[PreviousSend customized", - "title": "StageFlow automator | Automate | Snap-ins | DevRev" + "id": "ART-1981_KNOWLEDGE_NODE-28", + "text": "new conversation. Respond within 1 hour to new messages on existing conversations. Change the stage of conversation to *awaiting customer response* as soon as you have responded.\\n* In **Updates**, filter by **Type** > **Mentioned**. Respond to those updates first.\\n* Create a ticket if you aren't able to resolve the conversation in 20 minutes. As soon as the ticket is opened, move it to the *escalate* stage. The owner of the ticket is the owner of the customer org where the conversation", + "title": "Support best practices | Computer for Support Teams | DevRev" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-45", + "text": "a user. In certain cases where the ticket depends on some fix (issues) the stage may go from *in development* to *awaiting customer response* when the corresponding issues have been resolved and the fix needs to be validated with the user.\\n\\n In certain cases, the customer experience engineer may be able to solve directly (without any required issues) which may change the stage from *work in progress* to *awaiting customer response* to validate they have solved the problem. If either has", + "title": "Tickets | Computer for Support Teams | DevRev" } ] }, @@ -4091,25 +4091,35 @@ "query_id": "eeedb1ab-bd3a-420d-b9a0-ecb2ce0e8835", "query": "Article 471 not viewable from internal and external links", "retrievals": [ - { - "id": "ART-15414_KNOWLEDGE_NODE-10", - "text": "elements exist.\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/links/list)[#### Replace Links\\n\\nNext](/api-reference/links/replace)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "List Links (POST) | DevRev | Docs" - }, { "id": "ART-1985_KNOWLEDGE_NODE-35", "text": "and no longer required can be removed by archiving them.\\n\\nVisibility settings\\n-------------------\\n\\n### Article visibility\\n\\nTo control who can view the articles, open the **Visible to** menu. This displays all external groups that the article can be shared with. By default, the following groups are available:\\n\\n* **Customers**: Allows public access without verification.\\n\\n ![]()\\n\\n Public access requires the public portal to be enabled. If the public portal is not enabled, only", "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" }, { - "id": "ART-15402_KNOWLEDGE_NODE-9", - "text": "elements exist.\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/links/get-post)[#### List Links (POST)\\n\\nNext](/api-reference/links/list-post)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "List Links | DevRev | Docs" + "id": "ART-1985_KNOWLEDGE_NODE-39", + "text": "customers, the article should be visible to customers. If the **Visible to** option is set to **Verified Customers**, only signed-in customers are able to view the article.\\n* When sharing an external link with customers, the article status should be *Published*. If it is in *Draft* mode, they won\\xe2\\x80\\x99t be able to view it.\\n\\nArticle Formatting\\n------------------\\n\\nWhen you\\xe2\\x80\\x99re creating a new article or editing an existing article, formatting options are displayed. While", + "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" + }, + { + "id": "ART-1985_KNOWLEDGE_NODE-36", + "text": "verified (signed-in) customers can view the article.\\n* **Verified Customers**: Limits visibility to customers signed in to the customer portal.\\n* **Customer Admins**: Restricts access to a subset of verified customers in the **Customer Admin** group. Membership in this group is managed through [**Settings** > **Customer Management** > **Segments**](https://app.devrev.ai/?setting=segments)\\\\*.\\n\\n ![]()\\n\\n If an article is for internal use only, leave the **Visible to** field blank.\\n\\n###", + "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" + }, + { + "id": "ART-5153_KNOWLEDGE_NODE-22", + "text": "| \"is_visibility_togglable\": true, |\\n| 464 | \"label\": \"string\", |\\n| 465 | \"lock_position\": \"left\", |\\n| 466 | \"max_width\": 1, |\\n| 467 | \"min_width\": 1, |\\n| 468 | \"order\": 1, |\\n| 469 | \"pin_position\": \"left\", |\\n| 470 | \"width\": 1 |\\n| 471 | } |\\n| 472 | ], |\\n| 473 | \"group_by\": [ |\\n| 474 | { |\\n| 475 | \"key\": \"string\", |\\n| 476 | \"limit\": 1 |\\n| 477 | } |\\n| 478 | ] |\\n| 479 | } |\\n| 480 | }, |\\n| 481 | \"query\": { |\\n| 482 | \"dimensions\": [ |\\n| 483 | \"string\" |\\n| 484 | ], |\\n| 485 |", + "title": "Get Widget (POST) | DevRev | Docs" + }, + { + "id": "ART-15297_KNOWLEDGE_NODE-9", + "text": "article\\'s ID.\\n\\naccess\\\\_levelenumOptional\\n\\nAllowed values:externalinternalprivatepublicrestricted\\n\\naliasesobjectOptional\\n\\nShow 1 properties\\n\\napplies\\\\_to\\\\_partsobjectOptional\\n\\nShow 1 properties\\n\\nartifactsobjectOptional\\n\\nShow 1 properties\\n\\nauthored\\\\_byobjectOptional\\n\\nShow 1 properties\\n\\nbrandstring or nullOptional`format: \"id\"`\\n\\nThe updated brand of the article.\\n\\ncontent\\\\_blocksobjectOptional\\n\\nShow 1 properties\\n\\ncontent\\\\_formatenumOptional\\n\\nContent format of", + "title": "Update Article | DevRev | Docs" }, { - "id": "ART-15404_KNOWLEDGE_NODE-7", - "text": "Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/links/list-post)[#### Count Meetings\\n\\nNext](/api-reference/meetings/count)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Replace Links | DevRev | Docs" + "id": "ART-4129_KNOWLEDGE_NODE-9", + "text": "\"sync_metadata\": { |\\n| 141 | \"external_reference\": \"string\", |\\n| 142 | \"origin_system\": \"string\" |\\n| 143 | }, |\\n| 144 | \"title\": \"string\" |\\n| 145 | } |\\n| 146 | ], |\\n| 147 | \"playbooks\": [ |\\n| 148 | { |\\n| 149 | \"id\": \"string\", |\\n| 150 | \"article_type\": \"article\", |\\n| 151 | \"display_id\": \"string\", |\\n| 152 | \"resource\": { |\\n| 153 | \"artifacts\": [ |\\n| 154 | { |\\n| 155 | \"id\": \"string\", |\\n| 156 | \"display_id\": \"string\", |\\n| 157 | \"file\": { |\\n| 158 | \"type\": \"string\", |\\n| 159 |", + "title": "Group Incidents (POST) | DevRev | Docs" }, { "id": "ART-1985_KNOWLEDGE_NODE-38", @@ -4117,9 +4127,9 @@ "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" }, { - "id": "ART-1985_KNOWLEDGE_NODE-39", - "text": "customers, the article should be visible to customers. If the **Visible to** option is set to **Verified Customers**, only signed-in customers are able to view the article.\\n* When sharing an external link with customers, the article status should be *Published*. If it is in *Draft* mode, they won\\xe2\\x80\\x99t be able to view it.\\n\\nArticle Formatting\\n------------------\\n\\nWhen you\\xe2\\x80\\x99re creating a new article or editing an existing article, formatting options are displayed. While", - "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" + "id": "ART-15297_KNOWLEDGE_NODE-14", + "text": "Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/articles/list-articles-post)[#### Get Atom\\n\\nNext](/api-reference/atoms/get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Update Article | DevRev | Docs" }, { "id": "ART-4070_KNOWLEDGE_NODE-1", @@ -4127,19 +4137,9 @@ "title": "Update Article \u2014 DevRev | Docs" }, { - "id": "ART-15297_KNOWLEDGE_NODE-9", - "text": "article\\'s ID.\\n\\naccess\\\\_levelenumOptional\\n\\nAllowed values:externalinternalprivatepublicrestricted\\n\\naliasesobjectOptional\\n\\nShow 1 properties\\n\\napplies\\\\_to\\\\_partsobjectOptional\\n\\nShow 1 properties\\n\\nartifactsobjectOptional\\n\\nShow 1 properties\\n\\nauthored\\\\_byobjectOptional\\n\\nShow 1 properties\\n\\nbrandstring or nullOptional`format: \"id\"`\\n\\nThe updated brand of the article.\\n\\ncontent\\\\_blocksobjectOptional\\n\\nShow 1 properties\\n\\ncontent\\\\_formatenumOptional\\n\\nContent format of", - "title": "Update Article | DevRev | Docs" - }, - { - "id": "ART-15410_KNOWLEDGE_NODE-2", - "text": "link.\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n404\\n\\nNot Found Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/links/create)[#### Get Link\\n\\nNext](/api-reference/links/get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Delete Link | DevRev | Docs" - }, - { - "id": "ART-2141_KNOWLEDGE_NODE-9", - "text": "Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/beta/api-reference/customization/custom-link-type-list)[#### Update Link Types Custom\\n\\nNext](/beta/api-reference/customization/custom-link-type-update)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "List Link Types Custom (POST) | DevRev | Docs" + "id": "ART-4133_KNOWLEDGE_NODE-9", + "text": "|\\n| 144 | }, |\\n| 145 | \"title\": \"string\" |\\n| 146 | } |\\n| 147 | ], |\\n| 148 | \"playbooks\": [ |\\n| 149 | { |\\n| 150 | \"id\": \"string\", |\\n| 151 | \"article_type\": \"article\", |\\n| 152 | \"display_id\": \"string\", |\\n| 153 | \"resource\": { |\\n| 154 | \"artifacts\": [ |\\n| 155 | { |\\n| 156 | \"id\": \"string\", |\\n| 157 | \"display_id\": \"string\", |\\n| 158 | \"file\": { |\\n| 159 | \"type\": \"string\", |\\n| 160 | \"name\": \"string\", |\\n| 161 | \"size\": 1 |\\n| 162 | } |\\n| 163 | } |\\n| 164 | ], |\\n| 165 | \"url\":", + "title": "Update Incident | DevRev | Docs" } ] }, @@ -4148,54 +4148,54 @@ "query": "change Stage state in stage library", "retrievals": [ { - "id": "ART-3894_KNOWLEDGE_NODE-4", - "text": "14| \"transitions\": [ \\n 15| { \\n 16| \"target_stage\": { \\n 17| \"id\": \"foo\", \\n 18| \"display_id\": \"foo\", \\n 19| \"name\": \"foo\" \\n 20| } \\n 21| } \\n 22| ] \\n 23| } \\n 24| ], \\n 25| \"created_by\": { \\n 26| \"display_id\": \"foo\", \\n 27| \"id\": \"foo\", \\n 28| \"display_name\": \"foo\", \\n", - "title": "List Stage Diagrams (Beta) \u2014 DevRev | Docs" + "id": "ART-15353_KNOWLEDGE_NODE-5", + "text": "stage.\\n\\nstate\\\\_idstringOptional`format: \"id\"`\\n\\nThe state ID.\\n\\n### Response\\n\\nSuccess.\\n\\ncustom\\\\_stageobject\\n\\nShow 9 properties\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n404\\n\\nNot Found Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/customization/custom-stages-list-post)[#### Create States", + "title": "Update Stages Custom | DevRev | Docs" }, { - "id": "ART-15345_KNOWLEDGE_NODE-1", - "text": "\" |\\n```\\n\\n[Try it](/api-reference/customization/stage-diagrams-list?explorer=true)\\n\\n200Retrieved\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"result\": [ |\\n| 3 | { |\\n| 4 | \"id\": \"string\", |\\n| 5 | \"stages\": [ |\\n| 6 | { |\\n| 7 | \"is_deprecated\": true, |\\n| 8 | \"is_start\": true, |\\n| 9 | \"stage\": { |\\n| 10 | \"id\": \"string\", |\\n| 11 | \"display_id\": \"string\", |\\n| 12 | \"name\": \"string\" |\\n| 13 | }, |\\n| 14 | \"transitions\": [ |\\n| 15 | { |\\n| 16 | \"target_stage\": { |\\n| 17 | \"id\":", - "title": "List Stage Diagrams | DevRev | Docs" + "id": "ART-1645_KNOWLEDGE_NODE-44", + "text": "object lifecycle to your organization\\xe2\\x80\\x99s specific requirements.\\n\\nA state is a group of stages. For example, the _open_ state groups the _triage_ , _backlog_ , and _prioritized_ stages. By default, DevRev creates _open_ , _in_progress_ , and _closed_ states in your organization.\\n\\n#####\\n\\nYou want to add a new stage _Needs RCA_ to the _bug_ subtype.\\n\\n### Create custom stages\\n\\n[code]\\n\\n $| curl --location \\'https://api.devrev.ai/stages.custom.create\\' \\\\ \\n ---|--- \\n", + "title": "Object customization (Beta) \u2014 DevRev | Docs" }, { - "id": "ART-15354_KNOWLEDGE_NODE-2", - "text": "\"name\": \"string\" |\\n| 13 | }, |\\n| 14 | \"transitions\": [ |\\n| 15 | { |\\n| 16 | \"target_stage\": { |\\n| 17 | \"id\": \"string\", |\\n| 18 | \"display_id\": \"string\", |\\n| 19 | \"name\": \"string\" |\\n| 20 | } |\\n| 21 | } |\\n| 22 | ] |\\n| 23 | } |\\n| 24 | ], |\\n| 25 | \"created_by\": { |\\n| 26 | \"display_id\": \"string\", |\\n| 27 | \"id\": \"string\", |\\n| 28 | \"display_name\": \"string\", |\\n| 29 | \"display_picture\": { |\\n| 30 | \"display_id\": \"string\", |\\n| 31 | \"id\": \"string\", |\\n| 32 | \"file\": { |\\n| 33 | \"type\":", - "title": "List Stage Diagrams (POST) | DevRev | Docs" + "id": "ART-15350_KNOWLEDGE_NODE-4", + "text": "\"leaf_type\": \"string\", |\\n| 46 | \"modified_by\": { |\\n| 47 | \"display_id\": \"string\", |\\n| 48 | \"id\": \"string\", |\\n| 49 | \"display_name\": \"string\", |\\n| 50 | \"display_picture\": { |\\n| 51 | \"display_id\": \"string\", |\\n| 52 | \"id\": \"string\", |\\n| 53 | \"file\": { |\\n| 54 | \"type\": \"string\", |\\n| 55 | \"name\": \"string\", |\\n| 56 | \"size\": 1 |\\n| 57 | } |\\n| 58 | }, |\\n| 59 | \"email\": \"string\", |\\n| 60 | \"full_name\": \"string\", |\\n| 61 | \"state\": \"active\" |\\n| 62 | }, |\\n| 63 | \"modified_date\":", + "title": "Create Stage Diagram | DevRev | Docs" }, { - "id": "ART-3893_KNOWLEDGE_NODE-4", - "text": "\\n 5| { \\n 6| \"is_deprecated\": true, \\n 7| \"is_start\": true, \\n 8| \"stage\": { \\n 9| \"id\": \"foo\", \\n 10| \"display_id\": \"foo\", \\n 11| \"name\": \"foo\" \\n 12| }, \\n 13| \"transitions\": [ \\n 14| { \\n 15| \"target_stage\": { \\n 16| \"id\": \"foo\", \\n 17| \"display_id\": \"foo\", \\n 18| \"name\": \"foo\" \\n 19|", - "title": "Get Stage Diagram (Beta) \u2014 DevRev | Docs" + "id": "ART-3895_KNOWLEDGE_NODE-2", + "text": "https://api.devrev.ai/stage-diagrams.update \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \" \\\\ \\n >| -H \"Content-Type: application/json\" \\\\ \\n >| -d \\'{ \\n >| \"id\": \"foo\" \\n >| }\\'\\n[/code] \\n \\nTry it\\n\\n200customizationStageDiagramsUpdateExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"stage_diagram\": { \\n 3| \"id\": \"foo\", \\n 4| \"stages\": [ \\n 5| { \\n 6| \"is_deprecated\": true, \\n 7|", + "title": "Update Stage Diagram (Beta) \u2014 DevRev | Docs" }, { - "id": "ART-15350_KNOWLEDGE_NODE-2", - "text": "\"is_deprecated\": true, |\\n| 7 | \"is_start\": true, |\\n| 8 | \"stage\": { |\\n| 9 | \"id\": \"string\", |\\n| 10 | \"display_id\": \"string\", |\\n| 11 | \"name\": \"string\" |\\n| 12 | }, |\\n| 13 | \"transitions\": [ |\\n| 14 | { |\\n| 15 | \"target_stage\": { |\\n| 16 | \"id\": \"string\", |\\n| 17 | \"display_id\": \"string\", |\\n| 18 | \"name\": \"string\" |\\n| 19 | } |\\n| 20 | } |\\n| 21 | ] |\\n| 22 | } |\\n| 23 | ], |\\n| 24 | \"created_by\": { |\\n| 25 | \"display_id\": \"string\", |\\n| 26 | \"id\": \"string\", |\\n| 27 | \"display_name\":", - "title": "Create Stage Diagram | DevRev | Docs" + "id": "ART-15487_KNOWLEDGE_NODE-42", + "text": "add a new stage *Needs RCA* to the *bug* subtype.\\n\\n### Create custom stages\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl --location \\'https://api.devrev.ai/stages.custom.create\\' \\\\ |\\n| > | --header \\'Content-Type: application/json\\' \\\\ |\\n| > | --header \\'Authorization: Bearer \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"name\": \"Needs RCA\", |\\n| > | \"state\": \"closed\", |\\n| > | \"ordinal\": 1000 |\\n| > | }\\' |\\n```\\n\\nA stage can be referenced by any object type. For example, both *issue* and", + "title": "Object customization | DevRev | Docs" }, { - "id": "ART-15353_KNOWLEDGE_NODE-5", - "text": "stage.\\n\\nstate\\\\_idstringOptional`format: \"id\"`\\n\\nThe state ID.\\n\\n### Response\\n\\nSuccess.\\n\\ncustom\\\\_stageobject\\n\\nShow 9 properties\\n\\n### Errors\\n\\n400\\n\\nBad Request Error\\n\\n401\\n\\nUnauthorized Error\\n\\n403\\n\\nForbidden Error\\n\\n404\\n\\nNot Found Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/api-reference/customization/custom-stages-list-post)[#### Create States", - "title": "Update Stages Custom | DevRev | Docs" + "id": "ART-3896_KNOWLEDGE_NODE-7", + "text": "\"2023-01-01T12:00:00.000Z\", \\n 42| \"display_id\": \"foo\", \\n 43| \"is_custom_leaf_type\": true, \\n 44| \"is_default\": true, \\n 45| \"leaf_type\": \"foo\", \\n 46| \"modified_by\": { \\n 47| \"display_id\": \"foo\", \\n 48| \"id\": \"foo\", \\n 49| \"display_name\": \"foo\", \\n 50| \"display_picture\": { \\n 51| \"display_id\": \"foo\", \\n 52| \"id\": \"foo\", \\n 53| \"file\": { \\n 54| \"type\": \"foo\", \\n", + "title": "Create Stage Diagram (Beta) \u2014 DevRev | Docs" }, { - "id": "ART-3895_KNOWLEDGE_NODE-3", - "text": "\"is_start\": true, \\n 8| \"stage\": { \\n 9| \"id\": \"foo\", \\n 10| \"display_id\": \"foo\", \\n 11| \"name\": \"foo\" \\n 12| }, \\n 13| \"transitions\": [ \\n 14| { \\n 15| \"target_stage\": { \\n 16| \"id\": \"foo\", \\n 17| \"display_id\": \"foo\", \\n 18| \"name\": \"foo\" \\n 19| } \\n 20| } \\n 21| ] \\n 22| } \\n", - "title": "Update Stage Diagram (Beta) \u2014 DevRev | Docs" + "id": "ART-2016_KNOWLEDGE_NODE-28", + "text": "depending on the message given by a discussion participant.\\n\\n Enter /StageConfig in the snap-in **Discussions** tab and select the values from the dropdown for the stage transition whenever a message is given by a discussion participant.\\n4. Go to **Issues** or **Roadmap** and make updates. The tickets that were linked to the issue or enhancement reflect the changes you configured in the CSV file, notifying the ticket owner.\\n\\n[PreviousSend customized", + "title": "StageFlow automator | Automate | Snap-ins | DevRev" }, { - "id": "ART-3898_KNOWLEDGE_NODE-8", - "text": "}\\n[/code] \\n \\n[Update Stage DiagramUp Next](/beta/api-reference/customization/stage-diagrams-update)\\n\\n[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)\\n\\n[Enterprise grade security to protect customer dataLearn more about it.](https://devrev.ai/blog/soc-compliance)\\n\\nProduct\\n\\n * [Build](https://devrev.ai/build)\\n * [Support](https://devrev.ai/support)\\n * [Search](https://devrev.ai/search)\\n * [PLuG - User", - "title": "List Stage Diagrams (POST) (Beta) \u2014 DevRev | Docs" + "id": "ART-15347_KNOWLEDGE_NODE-5", + "text": "Headers\\n\\nAuthorizationstringRequired\\n\\nBearer authentication of the form `Bearer `, where token is your auth token.\\n\\n### Request\\n\\nThis endpoint expects an object.\\n\\nidstringRequired`format: \"id\"`\\n\\nThe ID of the stage diagram to update.\\n\\nnamestringOptional`format: \"text\"`\\n\\nThe updated name of the stage diagram.\\n\\nstageslist of objectsOptional\\n\\nList of stages in the stage diagram.\\n\\nShow 4 properties\\n\\n### Response\\n\\nSuccess.\\n\\nstage\\\\_diagramobject\\n\\nShow 11", + "title": "Update Stage Diagram | DevRev | Docs" }, { - "id": "ART-3894_KNOWLEDGE_NODE-14", - "text": "__\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[](https://devrev.ai)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nSolutions __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources __\\n\\n[Pricing](https://devrev.ai/pricing)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n'", - "title": "List Stage Diagrams (Beta) \u2014 DevRev | Docs" + "id": "ART-3895_KNOWLEDGE_NODE-5", + "text": "\"foo\", \\n 39| \"state\": \"active\" \\n 40| }, \\n 41| \"created_date\": \"2023-01-01T12:00:00.000Z\", \\n 42| \"display_id\": \"foo\", \\n 43| \"is_custom_leaf_type\": true, \\n 44| \"is_default\": true, \\n 45| \"leaf_type\": \"foo\", \\n 46| \"modified_by\": { \\n 47| \"display_id\": \"foo\", \\n 48| \"id\": \"foo\", \\n 49| \"display_name\": \"foo\", \\n 50| \"display_picture\": { \\n 51| \"display_id\": \"foo\", \\n 52|", + "title": "Update Stage Diagram (Beta) \u2014 DevRev | Docs" }, { - "id": "ART-3898_KNOWLEDGE_NODE-4", - "text": "11| \"display_id\": \"foo\", \\n 12| \"name\": \"foo\" \\n 13| }, \\n 14| \"transitions\": [ \\n 15| { \\n 16| \"target_stage\": { \\n 17| \"id\": \"foo\", \\n 18| \"display_id\": \"foo\", \\n 19| \"name\": \"foo\" \\n 20| } \\n 21| } \\n 22| ] \\n 23| } \\n 24| ], \\n 25| \"created_by\": { \\n 26|", - "title": "List Stage Diagrams (POST) (Beta) \u2014 DevRev | Docs" + "id": "ART-2016_KNOWLEDGE_NODE-26", + "text": "of an issue changes then the changes are also reflected accordingly in issues/enhancements.\\n\\n1. Create the mapping in the CSV file in the format given below. The CSV file should contain the following columns:\\n\\n * Ticket Subtype\\n * Issue Stage or Enhancement Stage\\n * Ticket Stage\\n\\n Refer to the default stages documentation for each product feature:\\n\\n * [Issue stages](https://docs.devrev.ai/product/issues)\\n * [Ticket stages](https://docs.devrev.ai/product/tickets)\\n *", + "title": "StageFlow automator | Automate | Snap-ins | DevRev" } ] }, @@ -4204,19 +4204,14 @@ "query": "Google Calendar Snap-in connection setup authentication issue", "retrievals": [ { - "id": "ART-16804_KNOWLEDGE_NODE-27", - "text": "already exists, you can reuse it; otherwise, click **Add\\n Connection**. \\n In the connection modal, click **Sign in with snap-in** (with the Google\\n Calendar icon), enter a connection name, and proceed to **authorize via your\\n Google account using OAuth**. \\n Provide the necessary permissions and click **Continue** to complete the\\n setup.\\n5. Once the connection is established, select the calendars you want to import\\n and specify the DevRev part that should be used for any", - "title": "Google Calendar AirSync | Integrate | Snap-ins | DevRev" - }, - { - "id": "ART-16804_KNOWLEDGE_NODE-26", - "text": "Identities | \\xe2\\x9c\\x85 |\\n| Meetings | Meetings | \\xe2\\x9c\\x85 |\\n\\nImport Google Calendar\\n----------------------\\n\\nFollow the steps below to import from Google Calendar:\\n\\n1. Go to the **Marketplace** and search for **Google Calendar** in the\\n **Import** category, and install.\\n2. Go to the **Import** section in your settings left nav.\\n3. Click **+Import** and select the Google Calendar logo.\\n4. In the **Select Connection** dropdown, choose **Google Calendar**. \\n If a connection", - "title": "Google Calendar AirSync | Integrate | Snap-ins | DevRev" + "id": "ART-2032_KNOWLEDGE_NODE-27", + "text": "toggle on **Make public** to make the connection public for your organization.\\n\\n#### Organization calendar sync\\n\\n1. Update the snap-in configurations as needed.\\n\\n * **Internal Domains**: List of internal domains to be considered as internal users.\\n * **Calendar ID**: ID of Google calendar to be synced to DevRev. The default is primary.\\n * **Exclude Matching Events**: Excludes event if their title starts or ends with the specified string. Default is -.\\n * **Skip Events With", + "title": "Google Calendar | Integrate | Snap-ins | DevRev" }, { - "id": "ART-3207_KNOWLEDGE_NODE-28", - "text": "In the top-right corner, select **+ Connection**, choose Google, and enter your connection name and domain name.\\n3. Toggle on **Make public** to make the connection public for your organization and click **Next**.\\n4. Click **Sign in with Google** and add your organization\\xe2\\x80\\x99s Gmail account. If you are already logged in using a different Gmail account select **Use another account** and continue.\\n\\n If you are using Google Groups then use the same Gmail account which has permission", - "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev" + "id": "ART-2032_KNOWLEDGE_NODE-30", + "text": "sync\\n\\n1. Update the snap-in configurations as needed.\\n\\n * **Calendar ID**: ID of Google calendar to be synced with DevRev. The default is primary.\\n * **Exclude Matching Events**: Excludes event if their title starts or ends with the specified string. Default is -.\\n * **Skip Events With Emails**: Events containing any of these email addresses are completely excluded from sync. No meetings are created in DevRev for events where these emails appear as attendees, organizers, or", + "title": "Google Calendar | Integrate | Snap-ins | DevRev" }, { "id": "ART-2032_KNOWLEDGE_NODE-26", @@ -4224,19 +4219,19 @@ "title": "Google Calendar | Integrate | Snap-ins | DevRev" }, { - "id": "ART-3207_KNOWLEDGE_NODE-27", - "text": "connection\\n--------------------------\\n\\nIf you are using Google as the mail provider, refer to **Gmail connection**; if you are using custom domains or other providers, refer to **Email connection**.\\n\\nGmail connection\\n\\nYou must be a part of the group and have permission to send emails to the Google Group. This approach doesn\\'t work with generic Google Groups ending with @googlegroups.com.\\n\\n1. In the DevRev app, go to **Settings > Integrations > Snap-ins** and click **Connections**.\\n2.", - "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev" + "id": "ART-16804_KNOWLEDGE_NODE-8", + "text": "tracking](/docs/plug/cross-domain-session)\\n + [Nudges](/docs/plug/nudges)\\n* [Computer for Growth Teams](/docs/product/grow)\\n\\n + [Accounts](/docs/product/account)\\n + [Opportunities](/docs/product/opportunity)\\n + [Contacts](/docs/product/customers)\\n + [Account and contact import](/docs/product/account-contact-import)\\n + [Grow snap-ins](/docs/product/snapins-grow)\\n* [Snap-ins](/docs/snapins)\\n\\n + [Automate](/docs/automate)\\n\\n - [Account", + "title": "Google Calendar AirSync | Integrate | Snap-ins | DevRev" }, { - "id": "ART-2032_KNOWLEDGE_NODE-27", - "text": "toggle on **Make public** to make the connection public for your organization.\\n\\n#### Organization calendar sync\\n\\n1. Update the snap-in configurations as needed.\\n\\n * **Internal Domains**: List of internal domains to be considered as internal users.\\n * **Calendar ID**: ID of Google calendar to be synced to DevRev. The default is primary.\\n * **Exclude Matching Events**: Excludes event if their title starts or ends with the specified string. Default is -.\\n * **Skip Events With", - "title": "Google Calendar | Integrate | Snap-ins | DevRev" + "id": "ART-16804_KNOWLEDGE_NODE-27", + "text": "already exists, you can reuse it; otherwise, click **Add\\n Connection**. \\n In the connection modal, click **Sign in with snap-in** (with the Google\\n Calendar icon), enter a connection name, and proceed to **authorize via your\\n Google account using OAuth**. \\n Provide the necessary permissions and click **Continue** to complete the\\n setup.\\n5. Once the connection is established, select the calendars you want to import\\n and specify the DevRev part that should be used for any", + "title": "Google Calendar AirSync | Integrate | Snap-ins | DevRev" }, { - "id": "ART-2032_KNOWLEDGE_NODE-29", - "text": "as customers.\\n\\n* **Track meetings from free email domains**: Enable this feature to capture meetings scheduled by non-work email addresses, such as those from gmail.com or yahoo.com.\\n* **Recurring days**: Number of days in advance for recurring events to be synced. Default is 7 days.\\n\\n The recurring events inside the specified advance days are created, that is, if 7 days is specified, then all recurring events in next 7 days are created.\\n\\n1. Install the snap-in.\\n\\n#### User calendar", - "title": "Google Calendar | Integrate | Snap-ins | DevRev" + "id": "ART-16804_KNOWLEDGE_NODE-3", + "text": "- [Workflow nodes](/docs/product/workflow-nodes)\\n - [Troubleshooting](/docs/product/troubleshooting-workflows)\\n + [Templates](/docs/product/template)\\n + [Accessing DevRev](/docs/product/ui)\\n + [External identity provider setup](/docs/product/sso-saml)\\n + [Remote MCP server](/docs/product/remote-mcp)\\n* [Computer for Support Teams](/docs/product/support)\\n\\n + [Inbox](/docs/product/inbox)\\n + [Support analytics](/docs/product/support-analytics)\\n\\n - [Conversation", + "title": "Google Calendar AirSync | Integrate | Snap-ins | DevRev" }, { "id": "ART-2025_KNOWLEDGE_NODE-26", @@ -4244,14 +4239,19 @@ "title": "Calendly | Integrate | Snap-ins | DevRev" }, { - "id": "ART-2032_KNOWLEDGE_NODE-16", - "text": "snap-in configuration](/docs/integrations/email-config)\\n - [Exotel](/docs/integrations/exotel)\\n - [Slack](/docs/integrations/slack)\\n - [WhatsApp](/docs/integrations/whatsapp)\\n - [GitHub](/docs/integrations/github)\\n - [GitLab](/docs/integrations/gitlab)\\n - [Harness](/docs/integrations/harness)\\n - [Marker.io](/docs/integrations/marker-io)\\n - [Instabug](/docs/integrations/instabug)\\n - [Qase](/docs/integrations/qase)\\n - [Tracxn", + "id": "ART-2032_KNOWLEDGE_NODE-7", + "text": "[Enhancements](/docs/product/enhancements)\\n + [Roadmap](/docs/product/roadmap)\\n + [Build best practices](/docs/product/build-bp)\\n + [Build snap-ins](/docs/product/snapins-build)\\n* [Grow](/docs/product/grow)\\n\\n + [Accounts](/docs/product/account)\\n + [Opportunities](/docs/product/opportunity)\\n + [Contacts](/docs/product/customers)\\n + [Account and contact import](/docs/product/account-contact-import)\\n + [Grow snap-ins](/docs/product/snapins-grow)\\n* [Snap-ins](/docs/snapins)\\n\\n", "title": "Google Calendar | Integrate | Snap-ins | DevRev" }, { - "id": "ART-16804_KNOWLEDGE_NODE-33", - "text": "Sync](#set-up-periodic-sync)\\n* [Delete an import](#delete-an-import)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer works](/how-computer-works)\\n\\nApps\\n\\n* [For Support Teams](/for-support-teams)\\n* [For Builders](/for-builders)\\n* [For Customers](/for-customers)\\n* [For User Insights](/for-user-insights)\\n*", - "title": "Google Calendar AirSync | Integrate | Snap-ins | DevRev" + "id": "ART-2032_KNOWLEDGE_NODE-25", + "text": "DevRev ecosystem.\\n\\n![]()\\n\\nTo install, visit [Google Calendar snap-in](https://marketplace.devrev.ai/google-calendar) on the DevRev marketplace.\\n\\nLet's set up Google Calendar for you\\n------------------------------------\\n\\n### Installation\\n\\nWe support two types of Google Calendar configuration:\\n\\n* **Organization calendar sync**: Sync your organization's Google Calendar with DevRev.\\n* **User calendar sync**: Sync your personal Google Calendar with DevRev.\\n\\n1. Go to the **Snap-ins**", + "title": "Google Calendar | Integrate | Snap-ins | DevRev" + }, + { + "id": "ART-2032_KNOWLEDGE_NODE-3", + "text": "management](/docs/product/workflow-management)\\n - [Troubleshooting](/docs/product/troubleshooting-workflows)\\n + [Templates](/docs/product/template)\\n + [Accessing DevRev](/docs/product/ui)\\n + [External identity provider setup](/docs/product/sso-saml)\\n + [AI use cases in DevRev](/docs/product/ai-use-cases)\\n + [Remote MCP server](/docs/product/remote-mcp)\\n* [Support](/docs/product/support)\\n\\n + [Inbox](/docs/product/inbox)\\n + [Support", + "title": "Google Calendar | Integrate | Snap-ins | DevRev" } ] }, @@ -4265,18 +4265,13 @@ "title": "Links | DevRev | Docs" }, { - "id": "ART-15664_KNOWLEDGE_NODE-8", - "text": "created from (ticket)\\n* Target types that the link can be created to (campaign custom object)\\n* Forward name (\\xe2\\x80\\x9cis parent of\\xe2\\x80\\x9d) describing the relationship from ticket to campaign\\n* Backward name (\\xe2\\x80\\x9cis child of\\xe2\\x80\\x9d) describing the relationship from campaign to ticket\\n\\nCreate links between objects\\n----------------------------\\n\\nOnce you have defined a link type, you can create links between objects:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl", + "id": "ART-15664_KNOWLEDGE_NODE-12", + "text": "application/json\\' \\\\ |\\n| > | --header \\'Authorization: Bearer \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"id\": \"don:core:dvrv-us-1:devo/demo:custom_link_type/1\", |\\n| > | \"name\": \"Link type between issue/ticket and campaign\", |\\n| > | \"source_types_v2\": [ |\\n| > | { |\\n| > | \"leaf_type\": \"issue\" |\\n| > | }, |\\n| > | { |\\n| > | \"leaf_type\": \"ticket\" |\\n| > | } |\\n| > | ] |\\n| > | }\\' |\\n```\\n\\nCreate links between objects with subtypes\\n------------------------------------------\\n\\n#####", "title": "Links | DevRev | Docs" }, { - "id": "ART-12390_KNOWLEDGE_NODE-39", - "text": "to update * subtype: (Optional) Ticket subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields * stage: (Optional) New stage | Updated ticket object |\\n\\nObject links\\n------------\\n\\n| Operation | Description | Input Parameters | Output |\\n| --- | --- | --- | --- |\\n| LinkConversationWithTicket | Creates a link between a conversation and a ticket. | * source: Conversation ID * link\\\\_type: Type of link (usually \"is\\\\_related\\\\_to\") * target: Ticket ID | Empty", - "title": "Workflow action library | Workflows | Computer by DevRev | DevRev" - }, - { - "id": "ART-15664_KNOWLEDGE_NODE-5", - "text": "Supported object types\\n\\nLinks can be created between the following object types:\\n\\n* custom object\\n* work (issue, ticket, task, opportunity)\\n* account, user\\n* part (product, capability, feature, enhancement)\\n\\nFor more details on customization or custom object concepts, please refer to the documentation below:\\n\\n* [Customization](/beta/guides/object-customization)\\n* [Custom objects](/beta/guides/custom-objects)\\n\\nCreate link types\\n-----------------\\n\\n##### \\n\\nLet\\xe2\\x80\\x99s say", + "id": "ART-15664_KNOWLEDGE_NODE-8", + "text": "created from (ticket)\\n* Target types that the link can be created to (campaign custom object)\\n* Forward name (\\xe2\\x80\\x9cis parent of\\xe2\\x80\\x9d) describing the relationship from ticket to campaign\\n* Backward name (\\xe2\\x80\\x9cis child of\\xe2\\x80\\x9d) describing the relationship from campaign to ticket\\n\\nCreate links between objects\\n----------------------------\\n\\nOnce you have defined a link type, you can create links between objects:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl", "title": "Links | DevRev | Docs" }, { @@ -4285,29 +4280,34 @@ "title": "Links | DevRev | Docs" }, { - "id": "ART-15664_KNOWLEDGE_NODE-13", - "text": "\\n\\nYou may want to restrict links to specific subtypes of objects. For example, only allowing issues\\nof a particular subtype to be linked to tickets.\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl --location \\'https://api.devrev.ai/link-types.custom.create\\' \\\\ |\\n| > | --header \\'Content-Type: application/json\\' \\\\ |\\n| > | --header \\'Authorization: Bearer \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"name\": \"Link between social media issues and tickets\", |\\n| > | \"source_types\": [ |\\n| > | { |\\n|", - "title": "Links | DevRev | Docs" + "id": "ART-12390_KNOWLEDGE_NODE-39", + "text": "to update * subtype: (Optional) Ticket subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields * stage: (Optional) New stage | Updated ticket object |\\n\\nObject links\\n------------\\n\\n| Operation | Description | Input Parameters | Output |\\n| --- | --- | --- | --- |\\n| LinkConversationWithTicket | Creates a link between a conversation and a ticket. | * source: Conversation ID * link\\\\_type: Type of link (usually \"is\\\\_related\\\\_to\") * target: Ticket ID | Empty", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev" }, { - "id": "ART-15664_KNOWLEDGE_NODE-12", - "text": "application/json\\' \\\\ |\\n| > | --header \\'Authorization: Bearer \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"id\": \"don:core:dvrv-us-1:devo/demo:custom_link_type/1\", |\\n| > | \"name\": \"Link type between issue/ticket and campaign\", |\\n| > | \"source_types_v2\": [ |\\n| > | { |\\n| > | \"leaf_type\": \"issue\" |\\n| > | }, |\\n| > | { |\\n| > | \"leaf_type\": \"ticket\" |\\n| > | } |\\n| > | ] |\\n| > | }\\' |\\n```\\n\\nCreate links between objects with subtypes\\n------------------------------------------\\n\\n#####", - "title": "Links | DevRev | Docs" + "id": "ART-1605_KNOWLEDGE_NODE-196", + "text": "an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type Get Post.\\n\\nPOST https:// api.devrev.ai / link-types.custom.get\\nGets a custom link type.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of the custom link type to get.\\nResponse.\\n\\nThis endpoint returns an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type List.\\n\\nGET https:// api.devrev.ai /", + "title": "Create \u2014 DevRev | Docs" + }, + { + "id": "ART-1649_KNOWLEDGE_NODE-196", + "text": "an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type Get Post.\\n\\nPOST https:// api.devrev.ai / link-types.custom.get\\nGets a custom link type.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of the custom link type to get.\\nResponse.\\n\\nThis endpoint returns an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type List.\\n\\nGET https:// api.devrev.ai /", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-2139_KNOWLEDGE_NODE-0", - "text": "b'Create Link Types Custom | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nBeta\\n\\nBeta\\n\\nBeta\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/beta/api-reference/accounts/create)[customization](/beta/api-reference/customization/custom-objects-count)\\n\\nCreate Link Types Custom\\n========================\\n\\nBeta\\n\\nCopy page\\n\\nPOST\\n\\nhttps://api.devrev.ai/link-types.custom.create\\n\\nPOST\\n\\n/link-types.custom.create\\n\\ncURL\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl -X POST", - "title": "Create Link Types Custom | DevRev | Docs" + "id": "ART-1651_KNOWLEDGE_NODE-196", + "text": "an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type Get Post.\\n\\nPOST https:// api.devrev.ai / link-types.custom.get\\nGets a custom link type.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of the custom link type to get.\\nResponse.\\n\\nThis endpoint returns an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type List.\\n\\nGET https:// api.devrev.ai /", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-2139_KNOWLEDGE_NODE-8", - "text": "helpful?\\n\\nYesNo\\n\\n[Previous](/beta/api-reference/customization/custom-objects-update)[#### Get Link Types Custom\\n\\nNext](/beta/api-reference/customization/custom-link-type-get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Create Link Types Custom | DevRev | Docs" + "id": "ART-1822_KNOWLEDGE_NODE-196", + "text": "an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type Get Post.\\n\\nPOST https:// api.devrev.ai / link-types.custom.get\\nGets a custom link type.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of the custom link type to get.\\nResponse.\\n\\nThis endpoint returns an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type List.\\n\\nGET https:// api.devrev.ai /", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-2139_KNOWLEDGE_NODE-1", - "text": "https://api.devrev.ai/link-types.custom.create \\\\ |\\n| > | -H \"Authorization: Bearer \" \\\\ |\\n| > | -H \"Content-Type: application/json\" \\\\ |\\n| > | -d \\'{ |\\n| > | \"backward_name\": \"string\", |\\n| > | \"forward_name\": \"string\", |\\n| > | \"name\": \"string\", |\\n| > | \"source_types\": [ |\\n| > | {} |\\n| > | ], |\\n| > | \"target_types\": [ |\\n| > | {} |\\n| > | ] |\\n| > | }\\' |\\n```\\n\\n[Try it](/beta/api-reference/customization/custom-link-type-create?explorer=true)\\n\\n201Created\\n\\n```\\n| | |\\n|", - "title": "Create Link Types Custom | DevRev | Docs" + "id": "ART-1832_KNOWLEDGE_NODE-196", + "text": "an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type Get Post.\\n\\nPOST https:// api.devrev.ai / link-types.custom.get\\nGets a custom link type.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of the custom link type to get.\\nResponse.\\n\\nThis endpoint returns an object.\\ncustom_link_type object\\nShow 6 properties\\nAPI Reference customization Custom Link Type List.\\n\\nGET https:// api.devrev.ai /", + "title": "Create \u2014 DevRev | Docs" } ] }, @@ -4321,49 +4321,49 @@ "title": "Delete Article \u2014 DevRev | Docs" }, { - "id": "ART-4064_KNOWLEDGE_NODE-19", - "text": "[Documentation](https://docs.devrev.ai/)\\n * [API Reference](https://docs.devrev.ai/api/)\\n * [The Book of DevRev](https://thebook.devrev.ai/)\\n * [Partner Program](https://devrev.ai/partners)\\n * [Startup Program](https://devrev.ai/startups)\\n\\nCompany\\n\\n * [About](https://devrev.ai/about)\\n * [People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why", - "title": "Create Article \u2014 DevRev | Docs" + "id": "ART-4065_KNOWLEDGE_NODE-9", + "text": "demo](https://devrev.ai/request-a-demo)\\n\\n'", + "title": "Delete Article \u2014 DevRev | Docs" }, { - "id": "ART-4065_KNOWLEDGE_NODE-8", - "text": "Inc.\\n\\n[](https://devrev.ai)\\n\\n * Product\\n * Platform\\n * Solutions\\n * Marketplace\\n * Company\\n * Resources\\n * [Pricing](https://devrev.ai/pricing)\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[](https://devrev.ai)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nSolutions __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources __\\n\\n[Pricing](https://devrev.ai/pricing)\\n\\n[Login](https://app.devrev.ai/login)[Book a", - "title": "Delete Article \u2014 DevRev | Docs" + "id": "ART-1980_KNOWLEDGE_NODE-29", + "text": "by customers through the Plug widget and customer portal.\\n\\nIn the Plug widget, articles are available in two places: the search bar and the Help section.\\n\\n**Search bar**\\n\\n![]()\\n\\n**Help section**\\n\\n![]()\\n\\nUsers can also view articles grouped into collections by visiting your help center hosted on your website. The visibility of collections and articles depends on the **Visible to** settings configured.\\n\\n[### Articles](/docs/product/articles)[###", + "title": "Knowledge Base | Computer for Support Teams | DevRev" }, { - "id": "ART-4070_KNOWLEDGE_NODE-21", - "text": "__\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[](https://devrev.ai)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nSolutions __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources __\\n\\n[Pricing](https://devrev.ai/pricing)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n'", - "title": "Update Article \u2014 DevRev | Docs" + "id": "ART-4067_KNOWLEDGE_NODE-14", + "text": "[Documentation](https://docs.devrev.ai/)\\n * [API Reference](https://docs.devrev.ai/api/)\\n * [The Book of DevRev](https://thebook.devrev.ai/)\\n * [Partner Program](https://devrev.ai/partners)\\n * [Startup Program](https://devrev.ai/startups)\\n\\nCompany\\n\\n * [About](https://devrev.ai/about)\\n * [People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why", + "title": "Get Article (POST) \u2014 DevRev | Docs" }, { - "id": "ART-4065_KNOWLEDGE_NODE-5", - "text": "[People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why How](https://devrev.ai/what-why-how)\\n\\nConnect\\n\\n * [Contact ](mailto:humansofdevrev@devrev.ai)\\n * [Instagram ](https://www.instagram.com/devrev)\\n * [Medium ](https://medium.com/devrev)\\n * [Linkedin ](https://www.linkedin.com/company/devrev)\\n * [X (formerly Twitter)](https://twitter.com/devrev)\\n *", - "title": "Delete Article \u2014 DevRev | Docs" + "id": "ART-15295_KNOWLEDGE_NODE-0", + "text": "b'List Articles | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[articles](/api-reference/articles/create-article)\\n\\nList Articles\\n=============\\n\\nCopy page\\n\\nGET\\n\\nhttps://api.devrev.ai/articles.list\\n\\nGET\\n\\n/articles.list\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl https://api.devrev.ai/articles.list \\\\ |\\n| > | -H \"Authorization: Bearer \" |\\n```\\n\\n[Try", + "title": "List Articles | DevRev | Docs" }, { - "id": "ART-1985_KNOWLEDGE_NODE-51", - "text": "Submitted for review\\n + *Ready to Publish*: All reviewers have approved\\n\\nArticle analytics\\n-----------------\\n\\nArticle analytics in DevRev provides a customized prebuilt dashboard to assess whether customers can find relevant articles to address their queries.\\n\\nAccess analytics under **Settings** > **Support** > **Article analytics**.\\n\\nThe dashboard shows the effectiveness of your knowledge base for both customers and internal employees with these metrics:\\n\\n* Viewership: Total", - "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" + "id": "ART-15294_KNOWLEDGE_NODE-0", + "text": "b'Get Article | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\n[API Reference](/api-reference/getting-started)[articles](/api-reference/articles/create-article)\\n\\nGet Article\\n===========\\n\\nCopy page\\n\\nGET\\n\\nhttps://api.devrev.ai/articles.get\\n\\nGET\\n\\n/articles.get\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl -G https://api.devrev.ai/articles.get \\\\ |\\n| > | -H \"Authorization: Bearer \" \\\\ |\\n| > | -d id=ARTICLE-12345 |\\n```\\n\\n[Try", + "title": "Get Article | DevRev | Docs" }, { - "id": "ART-1985_KNOWLEDGE_NODE-24", - "text": "[Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Article management](#article-management)\\n* [Create an article](#create-an-article)\\n* [Edit article content and settings](#edit-article-content-and-settings)\\n* [Delete articles](#delete-articles)\\n* [Bulk change options](#bulk-change-options)\\n* [Status settings](#status-settings)\\n* [Visibility settings](#visibility-settings)\\n* [Article visibility](#article-visibility)\\n* [Storage limits for", - "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev" + "id": "ART-4067_KNOWLEDGE_NODE-0", + "text": "b'[](/public/api-reference/articles/get-article-post)\\n\\nPublic\\n\\n[](https://devrev.ai)\\n\\n * Product\\n * Platform\\n * Solutions\\n * Marketplace\\n * Company\\n * Resources\\n * [Pricing](https://devrev.ai/pricing)\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[](https://devrev.ai)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nSolutions __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources", + "title": "Get Article (POST) \u2014 DevRev | Docs" }, { - "id": "ART-4065_KNOWLEDGE_NODE-9", - "text": "demo](https://devrev.ai/request-a-demo)\\n\\n'", - "title": "Delete Article \u2014 DevRev | Docs" + "id": "ART-2666_KNOWLEDGE_NODE-29", + "text": "views\\n\\nAn **Explore** section has been introduced where all your shared, personal, and sprint boards are now conveniently located.\\n\\nTo access your boards and views, navigate to **Explore** in the left navigation menu. The **Explore** section is divided into three categories:\\n\\n * **Stock Views** : Default views provided by DevRev.\\n * **My Views** : Views that you have created.\\n * **Shared** : Views that have been shared with you or your organization.\\n\\n#### Search and filter options", + "title": "October 5: Left navigation | Changelog | DevRev" + }, + { + "id": "ART-1783_KNOWLEDGE_NODE-42", + "text": "directory for the article.\\npublished_version string Optional\\nUpdates the the latest published version.\\nreorder object Optional\\nShow 2 properties\\nshared_with object Optional\\nShow property\\nstatus enum Optional\\nAllowed values: archived draft published review_needed\\nStatus of the article.\\ntags object Optional\\nShow property\\ntitle string Optional\\nUpdated title of the article object, or unchanged if not provided.\\nurl string Optional\\nUpdates the URL of the external", + "title": "Locate \u2014 DevRev | Docs" }, { "id": "ART-4066_KNOWLEDGE_NODE-0", "text": "b'[](/public/api-reference/articles/get-article)\\n\\nPublic\\n\\n[](https://devrev.ai)\\n\\n * Product\\n * Platform\\n * Solutions\\n * Marketplace\\n * Company\\n * Resources\\n * [Pricing](https://devrev.ai/pricing)\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](https://devrev.ai/request-a-demo)\\n\\n[](https://devrev.ai)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nSolutions __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources", "title": "Get Article \u2014 DevRev | Docs" - }, - { - "id": "ART-4068_KNOWLEDGE_NODE-19", - "text": "[About](https://devrev.ai/about)\\n * [People](https://devrev.ai/people)\\n * [Careers](https://devrev.ai/careers)\\n * [Places](https://devrev.ai/places)\\n * [Invest](https://revd.devrev.ai/)\\n * [What Why How](https://devrev.ai/what-why-how)\\n\\nConnect\\n\\n * [Contact ](mailto:humansofdevrev@devrev.ai)\\n * [Instagram ](https://www.instagram.com/devrev)\\n * [Medium ](https://medium.com/devrev)\\n * [Linkedin ](https://www.linkedin.com/company/devrev)\\n * [X (formerly", - "title": "List Articles \u2014 DevRev | Docs" } ] }, @@ -4372,54 +4372,54 @@ "query": "Next Best Action recommendations based on case context and history", "retrievals": [ { - "id": "ART-2133_KNOWLEDGE_NODE-56", - "text": "now.\\n\\n\\n\\nTime Travel (Context | Hisory) Hyper-Personalized Ontology | Fine-Tuning Predictive vs. Proactive Beyond SLAs Gustomer-Centric Lowest Latency Notifications Mobile-First User-over-Buyer Grassrocts Community | Word-of-Mouth Design-First | Consumer- Grade\\n\\n\\n\\nDeep Work | LLIs before Channels Cravi-n-index Everything Enterprise Shortcuts Discern Real Time Iterventions No Human-inthe-Loop Defloct L Deduplicate Text2SQL | Text2Visualization | TextdManagers Toxt2Logacy Voice for", - "title": "The Essential Methodology: Less but Better" + "id": "ART-1592_KNOWLEDGE_NODE-171", + "text": "Optional\\nComma-separated fields to sort the incidents by.\\nsource long Optional\\nFilters for incidents with any of the provided sources.\\nstage string Optional\\nFilters for incidents in any of the provided stages.\\ntitle string Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-2133_KNOWLEDGE_NODE-22", - "text": "suboptimal decisions. Only by going back in time can best decisions be taken.\\n\\n\\n\\nFine Tuning Customer ontologies \\xe2\\x80\\x93 {product, process, organization, skills} taxonomy, and people identities \\xe2\\x80\\x93 are extremely important in this day and age of AI to make models accurate and relevant within an enterprise. The Essential methodology embraces model \\xef\\xac\\x81ne-tuning as a necessary tenet of hyper-personalization.\\n\\nPredictive Servicing A large proportion of businesses are", - "title": "The Essential Methodology: Less but Better" + "id": "ART-1597_KNOWLEDGE_NODE-171", + "text": "Optional\\nComma-separated fields to sort the incidents by.\\nsource long Optional\\nFilters for incidents with any of the provided sources.\\nstage string Optional\\nFilters for incidents in any of the provided stages.\\ntitle string Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-13178_KNOWLEDGE_NODE-44", - "text": "action demonstrates this approach.\\n * **Goal-based agents** evaluate actions based on how they contribute to achieving specific objectives. DevRev\\xe2\\x80\\x99s product development AI agents exemplify this approach by coordinating activities specifically designed to meet release deadlines and quality targets.\\n * **Utility-based agents** use sophisticated evaluation mechanisms to maximize overall benefit across multiple objectives. For instance, a marketing campaign optimizer might balance", - "title": "Understanding Agentic AI: Capabilities and Implications for the Future" + "id": "ART-1636_KNOWLEDGE_NODE-171", + "text": "Optional\\nComma-separated fields to sort the incidents by.\\nsource long Optional\\nFilters for incidents with any of the provided sources.\\nstage string Optional\\nFilters for incidents in any of the provided stages.\\ntitle string Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-15621_KNOWLEDGE_NODE-17", - "text": "activity patterns for context-aware results\"\\n\\nBattle Tactic : Demonstrate comprehensive data access in head-to-head comparisons\\n\\n2. Conversational Analytics & Workflows\\n\\nPositioning : \"DevRev\\'s Search Agent combines search with deep object relationships, delivering conversational analytics and RCA through natural conversations while proactively surfacing business-critical patterns\"\\n\\nBattle Tactic : Show workflow automation and analytics capabilities that Glean cannot deliver\\n\\n3.", - "title": "Glean - Competitive - for the PLuG on website" + "id": "ART-1655_KNOWLEDGE_NODE-171", + "text": "Optional\\nComma-separated fields to sort the incidents by.\\nsource long Optional\\nFilters for incidents with any of the provided sources.\\nstage string Optional\\nFilters for incidents in any of the provided stages.\\ntitle string Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-13178_KNOWLEDGE_NODE-43", - "text": "business scenarios:\\n\\n * **Simple reflex agents** operate on straightforward condition-action rules without considering past experiences. For example, a basic customer inquiry routing system that assigns tickets based on predefined keywords falls into this category.\\n * **Model-based reflex agents** incorporate an internal model of the world, tracking the environment\\xe2\\x80\\x99s current state. A sales automation tool that considers past customer interactions when determining the next best", - "title": "Understanding Agentic AI: Capabilities and Implications for the Future" + "id": "ART-1827_KNOWLEDGE_NODE-171", + "text": "Optional\\nComma-separated fields to sort the incidents by.\\nsource long Optional\\nFilters for incidents with any of the provided sources.\\nstage string Optional\\nFilters for incidents in any of the provided stages.\\ntitle string Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-1954_KNOWLEDGE_NODE-35", - "text": "determined by the type of action, rather than solely by the actor performing the action.\\n\\nExamples:\\n\\n* If mentions are set to **Important** and a bot's notifications are set to **Others**, then bot mentions will only appear in the **Others** tab.\\n* If mentions are set to **Important** and a bot's notifications are also set to **Important**, then bot mentions will appear in the **Important** tab.\\n* If mentions are set to **Others** and a bot's notifications are set to **Important**, then", - "title": "Updates | Computer by DevRev | DevRev" + "id": "ART-1837_KNOWLEDGE_NODE-171", + "text": "Optional\\nComma-separated fields to sort the incidents by.\\nsource long Optional\\nFilters for incidents with any of the provided sources.\\nstage string Optional\\nFilters for incidents in any of the provided stages.\\ntitle string Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-1989_KNOWLEDGE_NODE-37", - "text": "follow a common structure for easy categorization and search. If you have common themes or categories, the exact convention is up to you to standardize for your teams.\\n\\n One possible convention is Category-Subcategory-Specific command subject. For example:\\n\\n + Rerouting-Reroute to payments-Refund\\n + Rerouting-Reroute to payments-Payment failure\\n + Rerouting-Reroute to Sales\\n\\n[PreviousBest practices for documentation that supports AI](/docs/product/writing-bp)[NextService-level", - "title": "Commands | Computer for Support Teams | DevRev" + "id": "ART-1308_KNOWLEDGE_NODE-182", + "text": "sources.\\nstage list of strings Optional\\nFilters for incidents in any of the provided stages.\\ntarget_close_date object Optional\\nProvides ways to specify date ranges on objects.\\nShow 2 variants\\ntitle list of strings Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort order. If", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-1995_KNOWLEDGE_NODE-30", - "text": "a continuous planning approach that allows you to prioritize work in a more intuitive way.\\n\\n When creating an issue, you can categorize it under the following buckets:\\n\\n + **Now:** What is currently being executed.\\n + **Next:** Estimate of what will be worked on within a specific timeframe.\\n + **Backlog/Later:** Prioritized issues expected to be committed to in a later timeframe.\\n + **Triage:** Triage is a process to prioritize work items (issues or tickets) based on severity, risk,", - "title": "Build best practices | Computer for Builders | DevRev" + "id": "ART-1792_KNOWLEDGE_NODE-183", + "text": "sources.\\nstage list of strings Optional\\nFilters for incidents in any of the provided stages.\\ntarget_close_date object Optional\\nProvides ways to specify date ranges on objects.\\nShow 2 variants\\ntitle list of strings Optional\\nFilters for incidents by the provided titles.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 4 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort order. If", + "title": "Update \u2014 DevRev | Docs" }, { - "id": "ART-1990_KNOWLEDGE_NODE-26", - "text": "worked on. This approach directly enables developers to pick up work that drives customer and business impact on a continuous basis. The power of continuous planning comes through deconstructing complex processes in favor of more intuitive and integrated workflows.\\n\\n\\xf0\\x9f\\x8e\\xa5 Video: Prioritize backlog by customer impact\\n\\nPrioritized work\\n----------------\\n\\nInstead of antiquated concepts requiring domain knowledge, prioritized work is defined by a state machine into *Now*, *Next*,", - "title": "Now, Next, Later | Computer for Builders | DevRev" + "id": "ART-1560_KNOWLEDGE_NODE-261", + "text": "sources.\\n\\nstage list of strings Optional\\n\\nFilters for incidents in any of the provided stages.\\n\\ntarget_close_date object Optional\\n\\nProvides ways to specify date ranges on objects.\\n\\nShow 2 variants\\ntitle list of strings Optional\\n\\nFilters for incidents by the provided titles.\\n\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\n\\nThe list of groups.\\n\\nShow 4 properties\\nnext_cursor string Optional\\n\\nThe cursor used to iterate subsequent results in accordance to", + "title": "Assign (Beta) \u2014 DevRev | Docs" }, { - "id": "ART-12390_KNOWLEDGE_NODE-6", - "text": "+ [Turing AI agent](/docs/product/conversational-bot)\\n\\n - [Best practices for documentation that supports AI](/docs/product/writing-bp)\\n + [Commands](/docs/product/commands)\\n + [Service-level agreement](/docs/product/sla)\\n + [Operational-level agreement](/docs/product/ola)\\n + [Support snap-ins](/docs/product/snapins-support)\\n* [Computer for Builders](/docs/product/build)\\n\\n + [Issues](/docs/product/issues)\\n + [Now, Next, Later](/docs/product/nnl)\\n + [Sprint", - "title": "Workflow action library | Workflows | Computer by DevRev | DevRev" + "id": "ART-4131_KNOWLEDGE_NODE-21", + "text": "properties\\n\\ntarget\\\\_close\\\\_dateobjectOptional\\n\\nProvides ways to specify date ranges on objects.\\n\\nShow 2 variants\\n\\ntitlelist of stringsOptional\\n\\nFilters for incidents by the provided titles.\\n\\nsourcelist of longsOptionalDeprecated\\n\\nFilters for incidents with any of the provided sources.\\n\\n### Response\\n\\nSuccess.\\n\\nincidentslist of objects\\n\\nThe matching incidents.\\n\\nShow 29 properties\\n\\nnext\\\\_cursorstring or null`format: \"text\"`\\n\\nThe cursor used to iterate subsequent", + "title": "List Incidents (POST) | DevRev | Docs" } ] }, @@ -4428,28 +4428,23 @@ "query": "Pro license pricing cost subscription plan", "retrievals": [ { - "id": "ART-962_KNOWLEDGE_NODE-0", - "text": "b'1. Core Pricing Plans:\\n\\nStarter: Ideal for small teams (up to 15 users) navigating product-market fit.\\n\\nLimited Time Offer: $1,000 credits.\\n\\nPlatform License: $9.99 per monthly active user (MAU).\\n\\nSupport License: $9.99 per MAU.\\n\\nFeatures:\\n\\nUnlimited viewers at no extra charge.\\n\\nConverge Issue and Ticket Management.\\n\\nMap your product features with Parts and Trails\\n\\nCustomize your data and insights with Vistas.\\n\\nCustomer and user management.\\n\\nLive chat and deflection", - "title": "DevRev Pricing" - }, - { - "id": "ART-962_KNOWLEDGE_NODE-2", - "text": "offer).\\n\\n24/5 customer support.\\n\\nPricing: Platform license at $24.99 per MAU, support license at $34.99 per MAU.\\n\\nUltimate: Tailored for complex organizations with strict requirements.\\n\\nAll features from Pro, plus:\\n\\nAudit logging.\\n\\nEnhanced storage and retention.\\n\\nSLA-driven support response times.\\n\\nAdvanced object, subtype, and attribute customization.\\n\\nMulti-region high availability.\\n\\nLive read replica sandboxes.\\n\\nCustom pricing based on specific needs.\\n\\n2.", - "title": "DevRev Pricing" + "id": "ART-15627_KNOWLEDGE_NODE-4", + "text": "based on requirements\\n\\nDevRev Build Pricing For detailed pricing and to get started: \\xc2\\xa0 https://devrev.ai/pricing/build What are the Build pricing plans?\\n\\nStarter : $9.99 per user/month\\n\\nPro : $24.99 per user/month\\n\\nUltimate : Custom pricing (contact sales)\\n\\nWhat\\'s included in Build Starter ($9.99/month)?\\n\\nAI agents, assistants, and issue tracking\\n\\nSprint management\\n\\nRoadmapping and dependency tracking\\n\\nReady-to-go reporting and analytics\\n\\n45-day free trial\\n\\nWhat\\'s", + "title": "DevRev Pricing - for the PLuG on the website" }, { - "id": "ART-15627_KNOWLEDGE_NODE-1", - "text": "Starter, Pro, and Ultimate. This ensures flexibility and scalability as your business needs evolve. Most plans are priced per user per month, while PLuG offers usage-based pricing options. Is there a free trial available? Yes, DevRev offers a\\xc2\\xa0 45-day free trial \\xc2\\xa0for both Build and Support paid plans (Starter and Pro tiers). What are my payment options? You can use your credit card to pay for any plan. If you sign up for a Pro Plan, DevRev can invoice you annually and offer a", - "title": "DevRev Pricing - for the PLuG on the website" + "id": "ART-15621_KNOWLEDGE_NODE-22", + "text": "excels in providing granular, field-level access controls per user role\" Pricing & Value Proposition Strategy Glean\\'s Pricing Challenges\\n\\nHigh Cost Structure : $25/user/month for keyword-based search\\n\\nSeat-Based Limitations : Unused license burden and scaling constraints\\n\\nPremium for Basic Features : Expensive pricing for document search capabilities DevRev\\'s Pricing Advantages\\n\\nZero-Cost Static Search : Disrupting market by offering basic search capabilities at no cost\\n\\nUsage-Based", + "title": "Glean - Competitive - for the PLuG on website" }, { - "id": "ART-15627_KNOWLEDGE_NODE-13", - "text": "tier or contact sales for custom arrangements. Is there an enterprise discount for annual payments? Yes, for Pro Plans and above, DevRev can invoice annually and offers discounts. Contact\\xc2\\xa0 support@devrev.ai \\xc2\\xa0to discuss annual pricing options.'", + "id": "ART-15627_KNOWLEDGE_NODE-2", + "text": "discount. Contact\\xc2\\xa0 support@devrev.ai \\xc2\\xa0to discuss annual pricing. DevRev Support Pricing For detailed pricing and to get started: \\xc2\\xa0 https://devrev.ai/pricing/support What are the Support pricing plans?\\n\\nStarter : $19.99 per user/month (up to 10 users)\\n\\nPro : $59.99 per user/month\\n\\nUltimate : Custom pricing (contact sales)\\n\\nWhat\\'s included in Support Starter ($19.99/month)?\\n\\nAI agents, assistants, and deflection\\n\\nModern omnichannel ticketing platform\\n\\nData", "title": "DevRev Pricing - for the PLuG on the website" }, { - "id": "ART-962_KNOWLEDGE_NODE-3", - "text": "Usage-Based Costs:\\n\\nOn top of the core plans, DevRev charges for specific usage:\\n\\nUser and Customer Management: $0.20 per user, per month.\\n\\nConversations:\\n\\n$0.01 per anonymous user conversation, per month.\\n\\n$0.45 per verified user conversation, per month.\\n\\nStorage:\\n\\n$2.00 per extra GB of file storage, per month.\\n\\n$25.00 per extra GB of base storage, per month.\\n\\n3. Additional Considerations:\\n\\nAuthorization roles and profiles: $10.00 per MAU (optional add-on).\\n\\nFree tier:", + "id": "ART-962_KNOWLEDGE_NODE-2", + "text": "offer).\\n\\n24/5 customer support.\\n\\nPricing: Platform license at $24.99 per MAU, support license at $34.99 per MAU.\\n\\nUltimate: Tailored for complex organizations with strict requirements.\\n\\nAll features from Pro, plus:\\n\\nAudit logging.\\n\\nEnhanced storage and retention.\\n\\nSLA-driven support response times.\\n\\nAdvanced object, subtype, and attribute customization.\\n\\nMulti-region high availability.\\n\\nLive read replica sandboxes.\\n\\nCustom pricing based on specific needs.\\n\\n2.", "title": "DevRev Pricing" }, { @@ -4458,24 +4453,29 @@ "title": "DevRev Pricing - for the PLuG on the website" }, { - "id": "ART-15627_KNOWLEDGE_NODE-5", - "text": "included in Build Pro ($24.99/month)?\\n\\nEverything in Starter\\n\\nCustomizable issue management\\n\\nAdvanced reporting & analytics\\n\\n45-day free trial\\n\\nWhat\\'s included in Build Ultimate?\\n\\nEverything in Pro\\n\\nFull object model customization and unlimited integrations\\n\\nEnterprise-grade security, compliance, controls, and policies\\n\\nDevRev PLuG Pricing For detailed pricing and to get started: \\xc2\\xa0 https://devrev.ai/pricing/plug What are the PLuG pricing options?\\n\\nFree : AI-powered", + "id": "ART-15627_KNOWLEDGE_NODE-1", + "text": "Starter, Pro, and Ultimate. This ensures flexibility and scalability as your business needs evolve. Most plans are priced per user per month, while PLuG offers usage-based pricing options. Is there a free trial available? Yes, DevRev offers a\\xc2\\xa0 45-day free trial \\xc2\\xa0for both Build and Support paid plans (Starter and Pro tiers). What are my payment options? You can use your credit card to pay for any plan. If you sign up for a Pro Plan, DevRev can invoice you annually and offer a", "title": "DevRev Pricing - for the PLuG on the website" }, { - "id": "ART-15627_KNOWLEDGE_NODE-9", - "text": "that time, DevRev starts charging your credit card for subscription and consumption costs. What is a Platform vs. Support User?\\n\\nPlatform users : Have full access to the Build App and gain visibility across an organization to understand the context between product and customer\\n\\nSupport Users : Users that create or update customer-related records. The per-seat pricing is in addition to the platform license cost and includes customer records (RevO or RevU), plus other related records like", - "title": "DevRev Pricing - for the PLuG on the website" + "id": "ART-962_KNOWLEDGE_NODE-0", + "text": "b'1. Core Pricing Plans:\\n\\nStarter: Ideal for small teams (up to 15 users) navigating product-market fit.\\n\\nLimited Time Offer: $1,000 credits.\\n\\nPlatform License: $9.99 per monthly active user (MAU).\\n\\nSupport License: $9.99 per MAU.\\n\\nFeatures:\\n\\nUnlimited viewers at no extra charge.\\n\\nConverge Issue and Ticket Management.\\n\\nMap your product features with Parts and Trails\\n\\nCustomize your data and insights with Vistas.\\n\\nCustomer and user management.\\n\\nLive chat and deflection", + "title": "DevRev Pricing" }, { - "id": "ART-15627_KNOWLEDGE_NODE-2", - "text": "discount. Contact\\xc2\\xa0 support@devrev.ai \\xc2\\xa0to discuss annual pricing. DevRev Support Pricing For detailed pricing and to get started: \\xc2\\xa0 https://devrev.ai/pricing/support What are the Support pricing plans?\\n\\nStarter : $19.99 per user/month (up to 10 users)\\n\\nPro : $59.99 per user/month\\n\\nUltimate : Custom pricing (contact sales)\\n\\nWhat\\'s included in Support Starter ($19.99/month)?\\n\\nAI agents, assistants, and deflection\\n\\nModern omnichannel ticketing platform\\n\\nData", + "id": "ART-15627_KNOWLEDGE_NODE-5", + "text": "included in Build Pro ($24.99/month)?\\n\\nEverything in Starter\\n\\nCustomizable issue management\\n\\nAdvanced reporting & analytics\\n\\n45-day free trial\\n\\nWhat\\'s included in Build Ultimate?\\n\\nEverything in Pro\\n\\nFull object model customization and unlimited integrations\\n\\nEnterprise-grade security, compliance, controls, and policies\\n\\nDevRev PLuG Pricing For detailed pricing and to get started: \\xc2\\xa0 https://devrev.ai/pricing/plug What are the PLuG pricing options?\\n\\nFree : AI-powered", "title": "DevRev Pricing - for the PLuG on the website" }, { - "id": "ART-15627_KNOWLEDGE_NODE-7", - "text": "session record)\\n\\nWhat\\'s included in PLuG Ultimate?\\n\\nAll Pay-as-you-go features\\n\\nAdvanced functionality for scale\\n\\nVolume discounting\\n\\nUnderstanding users wherever they are\\n\\nDevRev AgentOS Pricing For detailed pricing and to get started: \\xc2\\xa0 https://devrev.ai/pricing/agentos How is AgentOS priced? AgentOS is available only through custom pricing. Contact sales for a quote. What\\'s included in AgentOS?\\n\\nFlexible pricing models: usage-based or predictable fixed pricing\\n\\nFull", + "id": "ART-15627_KNOWLEDGE_NODE-13", + "text": "tier or contact sales for custom arrangements. Is there an enterprise discount for annual payments? Yes, for Pro Plans and above, DevRev can invoice annually and offers discounts. Contact\\xc2\\xa0 support@devrev.ai \\xc2\\xa0to discuss annual pricing options.'", "title": "DevRev Pricing - for the PLuG on the website" + }, + { + "id": "ART-15258_KNOWLEDGE_NODE-5", + "text": "users per product. While the $10K credits typically cover around 14 pro-level licenses based on current pricing, you\\xe2\\x80\\x99re free to use as many licenses based on your business needs. Q:-How do my credits get consumed throughout the year?\\n\\nA:- Credits are consumed monthly, primarily based on the number of licenses you provision and any custom integrations you request for. To make the most of your credits, we recommend starting with just the minimum number of licenses you need and", + "title": "DevRev - Website - FAQs" } ] }, @@ -4483,25 +4483,20 @@ "query_id": "4097c810-fcbe-42a6-93bb-79a94adf0faa", "query": "count tickets with customer CSAT review", "retrievals": [ - { - "id": "ART-2011_KNOWLEDGE_NODE-26", - "text": "**CSAT on ticket** > **Configure**.\\n2. Select the channel you want to send the survey on in **Survey channel**.\\n3. Write introductory text for the survey in **Survey introductory text**.\\n\\n ![]()\\n\\n To include the customer's name in the CSAT survey emails, add a key {{customer\\\\_name}} to the introductory text configuration of the CSAT.\\n4. Customize your survey response scale which is shown to the customers to select from in **Survey response scale**.\\n5. To collect additional feedback", - "title": "CSAT on ticket | Automate | Snap-ins | DevRev" - }, { "id": "ART-2011_KNOWLEDGE_NODE-24", "text": "[Snap-ins](/docs/snapins)\\n[Automate](/docs/automate)\\n[CSAT on ticket](/docs/automations/csat-tickets)\\n\\nCSAT on ticket\\n==============\\n\\n[CSAT on ticket](/marketplace/csat_on_ticket_dwx7b2bp) offers a simplified approach to measure customer satisfaction level for the ticket resolved with the help of surveys which can be utilized to enhance the overall customer experience.\\n\\nThis snap-in displays a customer satisfaction survey to customers after their ticket gets resolved. The questions can", "title": "CSAT on ticket | Automate | Snap-ins | DevRev" }, { - "id": "ART-2011_KNOWLEDGE_NODE-27", - "text": "from the customer along with the scale rating, ensure that the toggle for **Additional Feedback Request** configuration is enabled.\\n6. Write a query for the customers after the survey is populated in **Survey query**.\\n7. Write a message for the customers after the survey response is submitted in **Survey response message**.\\n8. Specify the time for the survey to expire (in minutes) in **Survey expires after**.\\n\\n ![]()\\n9. If you want to send the survey only once, enable the **Send survey", - "title": "CSAT on ticket | Automate | Snap-ins | DevRev" + "id": "ART-1975_KNOWLEDGE_NODE-28", + "text": "conversations against standalone tickets.\\n* **Tickets linked to issues**\\n\\n The percentage of tickets linked to product issues.\\n* **Active tickets by owner**\\n\\n The number of Open or In Progress tickets grouped by owner.\\n* **Tickets created vs. closed**\\n\\n The trend of tickets created against those closed.\\n\\nCustomer satisfaction (CSAT)\\n----------------------------\\n\\n* **CSAT score distribution**\\n\\n A distribution of customer satisfaction scores on tickets.\\n\\nTime spent per", + "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-2013_KNOWLEDGE_NODE-27", - "text": "customer's name in the CSAT survey emails, add a key {{customer\\\\_name}} to the introductory text configuration of the CSAT.\\n4. Customize your survey response scale which is shown to the customers to select from in **Survey response scale**.\\n5. To collect additional feedback from the customer along with the scale rating, ensure that the toggle for **Additional Feedback Request** configuration is enabled.\\n6. Write a query for the customers after the survey is populated in **Survey", - "title": "CSAT on conversation | Automate | Snap-ins | DevRev" + "id": "ART-1977_KNOWLEDGE_NODE-25", + "text": "Average CSAT rating for ticket Owners.\\n* **SLA breaches by Customer tier**\\n\\n Number of Tickets with SLA breaches for ticket owners.\\n* **Active Tickets**\\n\\n A distribution of tickets in Open and In Progress states and the respective owners.\\n* **Closed Tickets**\\n\\n A distribution of tickets in Closed state and the respective owners.\\n* **SLA breaches**\\n\\n Number of Tickets with SLA breaches for ticket owners.\\n* **Tickets Escalated**\\n\\n Number of tickets that are escalated by", + "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev" }, { "id": "ART-2011_KNOWLEDGE_NODE-25", @@ -4509,28 +4504,33 @@ "title": "CSAT on ticket | Automate | Snap-ins | DevRev" }, { - "id": "ART-2011_KNOWLEDGE_NODE-28", - "text": "only once per ticket** toggle.\\n10. If you want to automatically send CSAT surveys when tickets reach the *Resolved* stage, keep the **Trigger the CSAT survey based on configured rules** toggle turned off.\\n11. If you want to send CSAT at a specific ticket stage, turn the **Trigger the CSAT survey based on configured rules** toggle on and set up a custom workflow with the following configuration:\\n\\n| **Component** | **Details** |\\n| --- | --- |\\n| Trigger | Update Ticket |\\n| Stage Control |", + "id": "ART-2011_KNOWLEDGE_NODE-4", + "text": "insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n + [Conversations](/docs/product/conversation)\\n\\n - [Conversation to", "title": "CSAT on ticket | Automate | Snap-ins | DevRev" }, { - "id": "ART-2011_KNOWLEDGE_NODE-29", - "text": "If Else |\\n| Condition | When: Ticket Updated / Output > Stage > Name (Make sure that the stage name is in snake case.) |\\n| Action | Update Ticket |\\n| ID | Ticket Updated > Output > Id |\\n| List of Integrations | CSAT |\\n| Integrations | App CSAT Send Survey > Yes |\\n\\n1. Click **Save** > **Next** and deploy the snap-in.\\n\\n[PreviousCSAT on conversation](/docs/automations/csat-conv)[NextCSV work item uploader](/docs/automations/csv-work-item-uploader)\\n\\n#### On this page\\n\\n*", - "title": "CSAT on ticket | Automate | Snap-ins | DevRev" + "id": "ART-1975_KNOWLEDGE_NODE-26", + "text": "resolve tickets.\\n* **Tickets awaiting response**\\n\\n The number of active tickets awaiting response to customer.\\n* **Unassigned tickets**\\n\\n The number of tickets not yet assigned to a support agent.\\n* **Active blocker tickets**\\n\\n The number of tickets with severity Blocker that are in the Open or In Progress state.\\n* **SLA compliance rate**\\n\\n The percentage of tickets where the SLA was met out of all tickets where the SLA was applied.\\n* **Average CSAT score**\\n\\n The average", + "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-2011_KNOWLEDGE_NODE-5", - "text": "ticket conversion](/docs/product/conversation-ticket)\\n + [Tickets](/docs/product/tickets)\\n + [Routing](/docs/product/routing)\\n + [Support best practices](/docs/product/support-bp)\\n + [Customer portal](/docs/product/support-portal)\\n + [Questions & answers](/docs/product/qa)\\n + [Knowledge Base](/docs/product/knowledge-base)\\n\\n - [Articles](/docs/product/articles)\\n - [Collections](/docs/product/collection)\\n + [Turing AI agent](/docs/product/conversational-bot)\\n\\n - [Best", - "title": "CSAT on ticket | Automate | Snap-ins | DevRev" + "id": "ART-1972_KNOWLEDGE_NODE-27", + "text": "by Channel**\\n\\n Number of tickets where SLA was breached for each source channel.\\n* **SLA breaches by Subtype**\\n\\n Number of tickets where SLA was breached for each ticket subtype.\\n* **SLA breaches by Owner**\\n\\n Number of Tickets with SLA breaches for ticket owners.\\n* **Avg CSAT by SLA status**\\n\\n Average CSAT rating of tickets w.r.t. their SLA status and severity.\\n* **Unassigned Tickets with SLA breaches per Customer**\\n\\n Number of Unassigned Tickets with SLA breaches for each", + "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1977_KNOWLEDGE_NODE-25", - "text": "Average CSAT rating for ticket Owners.\\n* **SLA breaches by Customer tier**\\n\\n Number of Tickets with SLA breaches for ticket owners.\\n* **Active Tickets**\\n\\n A distribution of tickets in Open and In Progress states and the respective owners.\\n* **Closed Tickets**\\n\\n A distribution of tickets in Closed state and the respective owners.\\n* **SLA breaches**\\n\\n Number of Tickets with SLA breaches for ticket owners.\\n* **Tickets Escalated**\\n\\n Number of tickets that are escalated by", + "id": "ART-1003_KNOWLEDGE_NODE-20", + "text": "AverageResolutionTime\\nFROM tickets t\\nWHERE t.status = 'resolved'\\nAND EXTRACT(@period FROM t.created_at) = EXTRACT(@period FROM CURRENT_DATE);\\n-- NOTE: Replace @period with 'DAY', 'WEEK', 'MONTH', or 'QUARTER'.\\n\\n\\nCustomer Satisfaction Score (CSAT)\\n\\n\\n Definition\\n \\n A metric that gauges customer satisfaction with the support provided, typically collected through surveys.\\n \\n \\n Calculation\\n \\n (Number of satisfied responses) / (Total number of responses) * 100\\n", + "title": "Understanding a Support Lead's Pain Points and KPIs" + }, + { + "id": "ART-1977_KNOWLEDGE_NODE-24", + "text": "[Product demos](/docs/DevRevU/demos)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Support analytics](/docs/product/support-analytics)\\n[Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n\\nTicket-Team Performance\\n=======================\\n\\n* **Number of Owners**\\n\\n Total number of ticket owners.\\n* **Avg SLA breaches by Owner**\\n\\n Number of Tickets with SLA breaches divided by number of ticket owners.\\n* **Average CSAT rating**\\n\\n", "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-2011_KNOWLEDGE_NODE-4", - "text": "insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n + [Conversations](/docs/product/conversation)\\n\\n - [Conversation to", + "id": "ART-2011_KNOWLEDGE_NODE-26", + "text": "**CSAT on ticket** > **Configure**.\\n2. Select the channel you want to send the survey on in **Survey channel**.\\n3. Write introductory text for the survey in **Survey introductory text**.\\n\\n ![]()\\n\\n To include the customer's name in the CSAT survey emails, add a key {{customer\\\\_name}} to the introductory text configuration of the CSAT.\\n4. Customize your survey response scale which is shown to the customers to select from in **Survey response scale**.\\n5. To collect additional feedback", "title": "CSAT on ticket | Automate | Snap-ins | DevRev" } ] @@ -4539,54 +4539,54 @@ "query_id": "490c9edc-3bd6-40c6-9fc1-381ffa7f0dc0", "query": "save filters in support portal", "retrievals": [ - { - "id": "ART-1978_KNOWLEDGE_NODE-11", - "text": "[CSV comments uploader](/docs/automations/csv-comments-uploader)\\n - [CSV commands uploader](/docs/automations/csv-commands-uploader)\\n - [Descope identity validation](/docs/automations/descope-identity-validation)\\n - [Effort logger](/docs/automations/effort-logger)\\n - [HTTP archive file upload & sanitization](/docs/automations/har-sanitization)\\n - [Link preview](/docs/automations/link-preview)\\n - [Org tags sync](/docs/automations/org-tags-sync)\\n - [Search", - "title": "Customer portal | Computer for Support Teams | DevRev" - }, - { - "id": "ART-15716_KNOWLEDGE_NODE-35", - "text": "filters\\n\\nYou can create a simple report by clicking on the Smart Icon at the top right corner and selecting \\'Create New report.\\' Create a dashboard and a widget by giving a name. Select the dimensions and measures and finalize the visualization of the widget and click on the preview widget to test it out.\\n\\nEach widget can be customized with filters, groupings, and visualizations (charts, tables, etc.)4. Create a dashboard for tracking ticket resolution time\\n\\nCreate a new dashboard in", - "title": "Support queries related playbook" - }, { "id": "ART-1978_KNOWLEDGE_NODE-37", "text": "portal\\n-----------------------------\\n\\nYou can customize the look of your support portal to match your branding goals.\\n\\n1. Go to **Settings** > **Plug & Portal** > **Portal Settings**.\\n2. Under **Configuration**, enter your site name and upload your company logo.\\n * (Optional) Enable the footer and add your social media and text links in their respective fields.\\n * (Optional) Enable **Search** to get answers in search results.\\n * (Optional) Enable Plug widget to facilitate", "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-10697_KNOWLEDGE_NODE-30", - "text": "New filtering options let agents view tickets tied to specific articles, while updated analytics reveal the most and least linked articles, improving knowledge sharing and support strategy.\\n* Plug is our live chat widget designed for real-time conversations in your customer portal. It reduces ticket volume by resolving common queries instantly, enhancing self-service and speeding up issue resolution. Use spotlight cards or banners to notify customers about incidents, updates, or promotions,", - "title": "February 2025 | Changelog | DevRev" + "id": "ART-1978_KNOWLEDGE_NODE-0", + "text": "b\"Customer portal | Computer for Support Teams | DevRev\\n\\n* Computer\\n* Resources\\n* [Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nComputer\\n\\nResources\\n\\n[Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nSearch\\n\\n`CTRL`\\xc2\\xa0+\\xc2\\xa0`K`\\n\\n* [Introduction](/docs)\\n* [Computer by DevRev](/docs/intro)\\n\\n + [Core concepts](/docs/product/core)\\n + [Apps](/docs/product/apps)\\n +", + "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1452_KNOWLEDGE_NODE-4", - "text": "users.\\n\\nstageobjectOptional\\n\\nThe filter for stages.\\n\\nShow property\\n\\nstaged_infoobjectOptional\\n\\nShow property\\n\\nstatelist of stringsOptional\\n\\nFilters for work with any of the provided states.\\n\\nsync_metadataobjectOptional\\n\\nShow 4 properties\\n\\ntagslist of stringsOptional\\n\\nFilters for work with any of the provided tags.\\n\\ntarget_close_dateobjectOptional\\n\\nProvides ways to specify date ranges on objects.\\n\\nShow 2 variants\\n\\nticketobjectOptional\\n\\nShow 13 properties\\n\\n###", - "title": "Export Works (POST) \u2014 DevRev | Docs" + "id": "ART-1995_KNOWLEDGE_NODE-28", + "text": "matter to you by applying filters. You can also share them with your team members.\\n* Create and save a custom roadmap to track enhancements of your product by applying filters. Share custom roadmap with key stakeholders to drive alignment.\\n\\nPlan your work\\n--------------\\n\\n* Set up [Trails](./parts#trails), a hierarchical structure of your products, capabilities, and features as perceived by your customers.\\n* You can create [sprint boards](./sprint) in the following ways:\\n\\n + Go to", + "title": "Build best practices | Computer for Builders | DevRev" }, { - "id": "ART-1952_KNOWLEDGE_NODE-34", - "text": "filters from your vista will be transferred to your widget definition. If any filters are not carried over, a message will indicate the reason, and you will have the option to add the missing vista filters to your widget filter definition.\\n* **Widget Filters**: These filters are for your widget definition and include all filters from the vista, as well as other objects.\\n\\n![]()\\n\\nThe filters and dimensions are interlinked. To have filterable values, you must select them in dimensions as", - "title": "Vista Reports | Vistas | Computer by DevRev | DevRev" + "id": "ART-1991_KNOWLEDGE_NODE-28", + "text": "| | |\\n| [Work duration](/docs/automations/work-duration) | | |\\n| [Spam Shield](/docs/automations/spam-shield) | | |\\n| [Operational SLA Metrics](/docs/automations/operational-sla-metrics) | | |\\n| [Account deduplication](/docs/automations/account-deduplication) | | |\\n| [Set user preference](/docs/automations/set-user-preference) | | |\\n| [Ticket reported by](/docs/automations/ticket-reported-by) | | |\\n| [Org tags sync](/docs/automations/org-tags-sync) | | |\\n| [Commands", + "title": "Support snap-ins | Computer for Support Teams | DevRev" }, { - "id": "ART-10697_KNOWLEDGE_NODE-31", - "text": "boosting engagement and reducing repetitive inquiries. To enable Plug, go to **Settings > Portal Settings**, activate Plug widget, and **Save** and **Publish**.\\n\\n![]()\\xc2\\xa0For more information about *Support App*, refer to the following articles: \\xe2\\x80\\xa3 [Support snap-ins | Support](/docs/product/snapins-support) \\xe2\\x80\\xa3 [Support best practices | Support](/docs/product/support-bp) \\xe2\\x80\\xa3 [Support](/docs/product/support) \\xe2\\x80\\xa3", - "title": "February 2025 | Changelog | DevRev" + "id": "ART-1978_KNOWLEDGE_NODE-6", + "text": "practices for documentation that supports AI](/docs/product/writing-bp)\\n + [Commands](/docs/product/commands)\\n + [Service-level agreement](/docs/product/sla)\\n + [Operational-level agreement](/docs/product/ola)\\n + [Support snap-ins](/docs/product/snapins-support)\\n* [Computer for Builders](/docs/product/build)\\n\\n + [Issues](/docs/product/issues)\\n + [Now, Next, Later](/docs/product/nnl)\\n + [Sprint mode](/docs/product/sprint)\\n + [Enhancements](/docs/product/enhancements)\\n +", + "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-10", - "text": "data](/docs/automations/bulk-delete)\\n - [Bulk work item uploader](/docs/automations/bulk-upload)\\n - [Commands surface expander](/docs/automations/commands-surface-expander)\\n - [Convergence](/docs/automations/converge)\\n - [Conversation reminder](/docs/automations/conversation-reminder)\\n - [CSAT on conversation](/docs/automations/csat-conv)\\n - [CSAT on ticket](/docs/automations/csat-tickets)\\n - [CSV work item uploader](/docs/automations/csv-work-item-uploader)\\n -", + "id": "ART-1978_KNOWLEDGE_NODE-25", + "text": "articles](#integrating-your-knowledge-base-articles)\\n* [Customize the customer portal](#customize-the-customer-portal)\\n* [Customize portal URL](#customize-portal-url)\\n* [Just-in-time access to the customer portal](#justintime-access-to-the-customer-portal)\\n* [Troubleshooting](#troubleshooting)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Customer portal](/docs/product/support-portal)\\n\\nCustomer portal\\n===============\\n\\nThe customer portal is an", "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-27", - "text": "portal\\n-------------------------------------\\n\\n* **Enhanced customer experience**: Customers can access self-service options, track their tickets, and receive timely updates, leading to improved satisfaction.\\n* **Efficient ticket management**: The portal streamlines the ticket creation, assignment, and tracking process, ensuring faster resolution times.\\n* **Seamless, timely, and transparent communication**: Customers and support teams can engage in threaded conversations within the portal,", + "id": "ART-1978_KNOWLEDGE_NODE-2", + "text": "[Object customization](/docs/product/object-customization)\\n + [Glossary \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://support.devrev.ai/devrev/article/ART-16784-glossary)\\n + [Search](/docs/product/search)\\n + [Workflows](/docs/product/workflow-engine)\\n\\n - [Workflow action library](/docs/product/action-library)\\n - [Triggers](/docs/product/trigger-library)\\n - [Conversational workflows](/docs/product/conversational-workflows)\\n - [Workflow management](/docs/product/workflow-management)\\n", "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-13", - "text": "group](/docs/automations/set-user-preference)\\n - [SLA status change Slack notifier](/docs/automations/sla-change-notifier)\\n - [Slash commands](/docs/automations/slash-commands)\\n - [Spam Shield](/docs/automations/spam-shield)\\n - [Subtype Migration](/docs/automations/subtype-migration)\\n - [Ticket age in engineering](/docs/automations/ticket-age-in-engineering)\\n - [Ticket issue field migrator](/docs/automations/ticket-issue-field-migrator)\\n - [Ticket", + "id": "ART-1979_KNOWLEDGE_NODE-27", + "text": "also be used to engage customers for feedback/ideas (such as new feature ideas). Scoping is important for broadcast tickets as there needs to be a differentiation between broadcast (all revs) vs. multicast (particular revs).\\n\\nViews of tickets can be found under **Support** in the DevRev app.\\n\\n![]()\\n\\nYou can export views to CSV or JSON by selecting **Actions** in the upper-right corner and choosing the format.\\n\\nAttributes\\n----------\\n\\nTickets have attributes that can be used to filter", + "title": "Tickets | Computer for Support Teams | DevRev" + }, + { + "id": "ART-10697_KNOWLEDGE_NODE-31", + "text": "boosting engagement and reducing repetitive inquiries. To enable Plug, go to **Settings > Portal Settings**, activate Plug widget, and **Save** and **Publish**.\\n\\n![]()\\xc2\\xa0For more information about *Support App*, refer to the following articles: \\xe2\\x80\\xa3 [Support snap-ins | Support](/docs/product/snapins-support) \\xe2\\x80\\xa3 [Support best practices | Support](/docs/product/support-bp) \\xe2\\x80\\xa3 [Support](/docs/product/support) \\xe2\\x80\\xa3", + "title": "February 2025 | Changelog | DevRev" + }, + { + "id": "ART-1978_KNOWLEDGE_NODE-3", + "text": "- [Workflow nodes](/docs/product/workflow-nodes)\\n - [Troubleshooting](/docs/product/troubleshooting-workflows)\\n + [Templates](/docs/product/template)\\n + [Accessing DevRev](/docs/product/ui)\\n + [External identity provider setup](/docs/product/sso-saml)\\n + [Remote MCP server](/docs/product/remote-mcp)\\n* [Computer for Support Teams](/docs/product/support)\\n\\n + [Inbox](/docs/product/inbox)\\n + [Support analytics](/docs/product/support-analytics)\\n\\n - [Conversation", "title": "Customer portal | Computer for Support Teams | DevRev" } ] @@ -4596,53 +4596,53 @@ "query": "unable to convert conversation into ticket and can't fill customer information", "retrievals": [ { - "id": "ART-4271_KNOWLEDGE_NODE-26", - "text": "conversation metadata including: \\n * Source channel\\n * Customer account information\\n * External members added as **reported by** on the ticket\\n * An AI-generated ticket title and description based on customer messages.\\n\\n### How to convert Conversations to Tickets\\n\\n**Manual Conversion**\\n\\nTo manually convert a conversation to a ticket:\\n\\n 1. Open the conversation record pane view.\\n 2. Click **Convert to Ticket** to initiate the conversion.\\n\\n**Automated Conversion", - "title": "Convert Conversations to Tickets | Conversations | Support | DevRev" - }, - { - "id": "ART-4271_KNOWLEDGE_NODE-31", - "text": "AI-handled conversation reaches its capability limits and needs human expertise.\\n * **Extended troubleshooting** : Issues requiring multiple steps or follow-ups over time.\\n\\n## Key information\\n\\n * **Channel support** : Currently, the conversion feature is only available for PLuG and Slack conversations. Other channels still use the traditional **Link Ticket** functionality.\\n\\n * **CSAT surveys** : CSAT surveys are not sent when a conversation is converted to a ticket. Surveys are only", - "title": "Convert Conversations to Tickets | Conversations | Support | DevRev" + "id": "ART-6174_KNOWLEDGE_NODE-28", + "text": "tickets\\n--------------------------------\\n\\n**Manual conversion**\\n\\nGo to the conversation record pane and select **Convert to Ticket** to create a new ticket from the conversation.\\n\\n![]()\\n\\n**Automated conversion via workflows**\\n\\nSet up automated [workflows](./workflow-engine) to convert conversations to tickets based on specific triggers:\\n\\n* When a conversation meets defined criteria\\n* When the AI agent identifies an issue requiring escalation\\n* According to custom business", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-28", - "text": "tickets\\n--------------------------------\\n\\n**Manual conversion**\\n\\nGo to the conversation record pane and select **Convert to Ticket** to create a new ticket from the conversation.\\n\\n![]()\\n\\n**Automated conversion via workflows**\\n\\nSet up automated [workflows](./workflow-engine) to convert conversations to tickets based on specific triggers:\\n\\n* When a conversation meets defined criteria\\n* When the AI agent identifies an issue requiring escalation\\n* According to custom business", + "id": "ART-6174_KNOWLEDGE_NODE-27", + "text": "happens automatically:\\n\\n* The original conversation moves to *Archived* stage and cannot be reopened.\\n* A new ticket is created with:\\n + All internal discussions and customer messages copied from the conversation\\n + Equivalent metadata as the conversation, including source channel, customer account information, and external members added as **reported by** on the ticket\\n + An AI-generated ticket title and description based on customer messages\\n\\nConvert conversations to", "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-26", - "text": "functionality is replaced with a new **Convert to Ticket** feature. Currently, the conversion feature is available only for Plug and Slack conversations. Other channels still use the traditional **Link Ticket** functionality.\\n\\nConversion cannot be undone. Once a conversation is converted to a ticket, this action is permanent and the conversation remains archived.\\n\\nConversation conversion process\\n-------------------------------\\n\\nWhen you convert a conversation to a ticket, the following", + "id": "ART-6174_KNOWLEDGE_NODE-0", + "text": "b\"Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev\\n\\n* Computer\\n* Resources\\n* [Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nComputer\\n\\nResources\\n\\n[Our Customers](/case-study)\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nSearch\\n\\n`CMD`\\xc2\\xa0+\\xc2\\xa0`K`\\n\\n* [Introduction](/docs)\\n* [Computer by DevRev](/docs/intro)\\n\\n + [Core concepts](/docs/product/core)\\n +", "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-4271_KNOWLEDGE_NODE-29", - "text": "end user.\\n\\n## Why you should convert a Conversation to a Ticket\\n\\nConsider converting a conversation to a ticket in these scenarios:\\n\\n * **Complex issues** : When a customer inquiry requires in-depth investigation that can't be resolved in a quick conversation.\\n * **Cross-team collaboration** : Issues requiring input from multiple departments or specialists.\\n * **Escalation needs** : When a conversation needs to be escalated to a higher support tier.\\n * **Feature requests** :", + "id": "ART-4271_KNOWLEDGE_NODE-26", + "text": "conversation metadata including: \\n * Source channel\\n * Customer account information\\n * External members added as **reported by** on the ticket\\n * An AI-generated ticket title and description based on customer messages.\\n\\n### How to convert Conversations to Tickets\\n\\n**Manual Conversion**\\n\\nTo manually convert a conversation to a ticket:\\n\\n 1. Open the conversation record pane view.\\n 2. Click **Convert to Ticket** to initiate the conversion.\\n\\n**Automated Conversion", "title": "Convert Conversations to Tickets | Conversations | Support | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-27", - "text": "happens automatically:\\n\\n* The original conversation moves to *Archived* stage and cannot be reopened.\\n* A new ticket is created with:\\n + All internal discussions and customer messages copied from the conversation\\n + Equivalent metadata as the conversation, including source channel, customer account information, and external members added as **reported by** on the ticket\\n + An AI-generated ticket title and description based on customer messages\\n\\nConvert conversations to", + "id": "ART-6174_KNOWLEDGE_NODE-2", + "text": "control](/docs/product/access-control)\\n + [Object customization](/docs/product/object-customization)\\n + [Glossary \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://support.devrev.ai/devrev/article/ART-16784-glossary)\\n + [Search](/docs/product/search)\\n + [Workflows](/docs/product/workflow-engine)\\n\\n - [Workflow action library](/docs/product/action-library)\\n - [Triggers](/docs/product/trigger-library)\\n - [Conversational workflows](/docs/product/conversational-workflows)\\n - [Workflow", "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-31", - "text": "Cross-team collaboration needs\\n* Escalation requirements\\n* Feature requests\\n* Bug reports\\n* SLA tracking requirements\\n* Documentation needs\\n* Resource allocation requirements\\n* AI capability limitations\\n* Extended troubleshooting needs\\n\\nSupport workflows\\n-----------------\\n\\n* **CSAT surveys**: CSAT surveys are not sent when a conversation is converted to a ticket. Surveys are only triggered when a conversation is resolved, not when it's archived through conversion.\\n* **SLA", + "id": "ART-6174_KNOWLEDGE_NODE-25", + "text": "Teams](/docs/product/support)\\n[Conversations](/docs/product/conversation)\\n[Conversation to ticket conversion](/docs/product/conversation-ticket)\\n\\nConversation to ticket conversion\\n=================================\\n\\nYou can convert conversations from Plug and Slack directly into tickets. Previously, conversations were only linked to tickets. This update streamlines workflows and enhances the customer experience.\\n\\nFor conversations originating from Plug or Slack, the **Link to Ticket**", "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-32", - "text": "handling**: Conversation and ticket SLAs operate independently. When converting:\\n\\n + The new ticket starts with its own response and resolution SLA timers\\n + All active SLA metrics on the original conversation are marked as completed\\n\\n[PreviousConversations](/docs/product/conversation)[NextTickets](/docs/product/tickets)\\n\\n#### On this page\\n\\n* [Conversation conversion process](#conversation-conversion-process)\\n* [Convert conversations to tickets](#convert-conversations-to-tickets)\\n*", - "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" + "id": "ART-4271_KNOWLEDGE_NODE-31", + "text": "AI-handled conversation reaches its capability limits and needs human expertise.\\n * **Extended troubleshooting** : Issues requiring multiple steps or follow-ups over time.\\n\\n## Key information\\n\\n * **Channel support** : Currently, the conversion feature is only available for PLuG and Slack conversations. Other channels still use the traditional **Link Ticket** functionality.\\n\\n * **CSAT surveys** : CSAT surveys are not sent when a conversation is converted to a ticket. Surveys are only", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-25", + "text": "is being replaced with a new **Convert to Ticket** feature. This change provides a more seamless transition from conversation to ticket management.\\n\\n## How Conversation conversion works\\n\\nWhen you convert a conversation to a ticket, the following happens automatically:\\n\\n * The original conversation is moved to _Archived_ stage and cannot be reopened.\\n * A new ticket is created with: \\n * All internal discussions and customer messages copied from the conversation.\\n * Preserved", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-30", - "text": "there.\\n\\n![]()\\n\\nSlack end-user experience\\n-------------------------\\n\\nWhen a conversation is converted to a ticket in Slack:\\n\\n* Ticket information appears within the same thread.\\n* All subsequent messages sync with the newly created ticket.\\n* The transition is seamless for the end user.\\n\\nConversation conversion scenarios\\n---------------------------------\\n\\nConsider converting a conversation to a ticket in these scenarios:\\n\\n* Complex issues requiring in-depth investigation\\n*", + "id": "ART-6174_KNOWLEDGE_NODE-26", + "text": "functionality is replaced with a new **Convert to Ticket** feature. Currently, the conversion feature is available only for Plug and Slack conversations. Other channels still use the traditional **Link Ticket** functionality.\\n\\nConversion cannot be undone. Once a conversation is converted to a ticket, this action is permanent and the conversation remains archived.\\n\\nConversation conversion process\\n-------------------------------\\n\\nWhen you convert a conversation to a ticket, the following", "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" }, { - "id": "ART-6174_KNOWLEDGE_NODE-24", - "text": "[Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Conversation conversion process](#conversation-conversion-process)\\n* [Convert conversations to tickets](#convert-conversations-to-tickets)\\n* [Plug widget end-user experience](#plug-widget-enduser-experience)\\n* [Slack end-user experience](#slack-enduser-experience)\\n* [Conversation conversion scenarios](#conversation-conversion-scenarios)\\n* [Support workflows](#support-workflows)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support", + "id": "ART-6174_KNOWLEDGE_NODE-5", + "text": "[Conversations](/docs/product/conversation)\\n\\n - [Conversation to ticket conversion](/docs/product/conversation-ticket)\\n + [Tickets](/docs/product/tickets)\\n + [Routing](/docs/product/routing)\\n + [Support best practices](/docs/product/support-bp)\\n + [Customer portal](/docs/product/support-portal)\\n + [Questions & answers](/docs/product/qa)\\n + [Knowledge Base](/docs/product/knowledge-base)\\n\\n - [Articles](/docs/product/articles)\\n - [Collections](/docs/product/collection)\\n", "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev" } ] @@ -4652,49 +4652,49 @@ "query": "control email notifications for new conversation", "retrievals": [ { - "id": "ART-1953_KNOWLEDGE_NODE-30", - "text": "linked to a conversation\\n-------------------------------\\n\\n* **Trigger**: A ticket is linked to an existing conversation.\\n* **Action**: The system sends out a notification with the linked ticket number.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"\"\\n\\n![]()\\n\\nThis email is only sent to the organizations with [Convergence snap-in](https://docs.devrev.ai/automations/converge)\\n\\nChange of", + "id": "ART-1953_KNOWLEDGE_NODE-28", + "text": "**Configure** > **Notification Sender Email Address** and select the required option.\\n\\nReply to the customer on a conversation\\n---------------------------------------\\n\\n* **Trigger**: When a reply is made to a customer on a conversation and they are not online anymore.\\n* **Action**: The system sends out a notification to the customer with the recent messages while highlighting the latest message that triggered the email.\\n* **Sender**: {Sender\\\\_Name}", "title": "Customer email notifications | Computer by DevRev | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-27", - "text": "conversation, ensuring seamless and continuous communication.\\n\\nBy default, notifications are sent from [notifications@devrev.ai](mailto:notifications@devrev.ai). However, this setting can be overridden to use the organization\\xe2\\x80\\x99s primary email address as the sender, or notifications can be turned off entirely.\\n\\nTo configure the notifications setting, under [**Settings** > **Snap-ins** > **Email Integration**](https://app.devrev.ai/devrev/settings/snap-ins/email-with-tickets), go to", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-2035_KNOWLEDGE_NODE-36", + "text": "Slack Channel ID in the **Channel ID to send conversation notifications** snap-in configuration as the target to post notifications.\\n\\n* Any new message within tickets in the customer messages panel is also subjected to the same automation.\\n* To prevent notification overload, each conversation or ticket is subject to a five minute cooldown period between notifications. Multiple consecutive messages within this window will not trigger additional notifications.\\n* Notification threads are not", + "title": "Slack | Integrate | Snap-ins | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-32", - "text": "\\xe2\\x80\\x9cUpdate on your Conversation with {Company\\\\_Name}\"\\n\\n![]()\\n\\nThis email is only sent to organizations that have installed [Convergence snap-in](https://docs.devrev.ai/automations/converge).\\n\\nCSAT survey for conversation/ticket\\n-----------------------------------\\n\\n* **Trigger**: A CSAT survey is sent for a conversation or ticket.\\n* **Action**: The system sends out a notification with the ticket/conversation number and CSAT form.\\n* **Sender**: DevRev", + "id": "ART-1953_KNOWLEDGE_NODE-30", + "text": "linked to a conversation\\n-------------------------------\\n\\n* **Trigger**: A ticket is linked to an existing conversation.\\n* **Action**: The system sends out a notification with the linked ticket number.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**: \"\"\\n\\n![]()\\n\\nThis email is only sent to the organizations with [Convergence snap-in](https://docs.devrev.ai/automations/converge)\\n\\nChange of", "title": "Customer email notifications | Computer by DevRev | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-28", - "text": "**Configure** > **Notification Sender Email Address** and select the required option.\\n\\nReply to the customer on a conversation\\n---------------------------------------\\n\\n* **Trigger**: When a reply is made to a customer on a conversation and they are not online anymore.\\n* **Action**: The system sends out a notification to the customer with the recent messages while highlighting the latest message that triggered the email.\\n* **Sender**: {Sender\\\\_Name}", + "id": "ART-1953_KNOWLEDGE_NODE-32", + "text": "\\xe2\\x80\\x9cUpdate on your Conversation with {Company\\\\_Name}\"\\n\\n![]()\\n\\nThis email is only sent to organizations that have installed [Convergence snap-in](https://docs.devrev.ai/automations/converge).\\n\\nCSAT survey for conversation/ticket\\n-----------------------------------\\n\\n* **Trigger**: A CSAT survey is sent for a conversation or ticket.\\n* **Action**: The system sends out a notification with the ticket/conversation number and CSAT form.\\n* **Sender**: DevRev", "title": "Customer email notifications | Computer by DevRev | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-31", - "text": "stage of a ticket/conversation\\n----------------------------------------\\n\\n* **Trigger**: When there\\'s a change of stage in a ticket or conversation.\\n* **Action**: The system sends out a notification detailing the Ticket/Conversation number and stage change.\\n* **Sender**: {Company\\\\_Name} [support@yourdomain.com](mailto:support@yourdomain.com)\\n* **Subject**:\\n + For ticket: \"[{Company\\\\_Name}] Update on TKT-XXX - Ticket Title\"\"\"\\n + For conversations:", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-1954_KNOWLEDGE_NODE-29", + "text": "notifications.\\n\\n* Unread vs All: Toggle between **Unread** and **All** updates, with **Unread** as the default to achieve inbox zero.\\n* Subscription management: Unsubscribe using the bell icon on hover if a specific record is no longer relevant.\\n* Mark as read: Use the check mark icon on hover to mark notifications as read.\\n* Filters: Filter notifications by record type (such as ticket or Issue), notification type (mentions, comments, assignments, etc.), or notified by (select from your", + "title": "Updates | Computer by DevRev | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-36", - "text": "conversation](#ticket-linked-to-a-conversation)\\n* [Change of stage of a ticket/conversation](#change-of-stage-of-a-ticketconversation)\\n* [CSAT survey for conversation/ticket](#csat-survey-for-conversationticket)\\n* [Auto customer reply](#auto-customer-reply)\\n* [Auto reply on email](#auto-reply-on-email)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-2015_KNOWLEDGE_NODE-29", + "text": "the user during OTP collection.\\n * Customize the message that is shown to the user on successful verification\\n of email.\\n * You can trigger this either for all new conversations from an unverified\\n user or when Computer is unable to deflect a conversation.\\n\\n + To activate the automation for every new conversation, toggle on **Send\\n on Create**.\\n + If you prefer the automation to only be triggered when Computer is unable\\n to deflect a conversation, make", + "title": "Descope identity validation | Automate | Snap-ins | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-4", - "text": "insights](/docs/dashboards/conversation-insights)\\n - [Conversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)\\n - [Conversation-Team Performance](/docs/dashboards/conversation-team-performance)\\n - [Ticket insights](/docs/dashboards/ticket-insights)\\n - [Ticket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n - [Ticket-Team Performance](/docs/dashboards/ticket-team-performance)\\n + [Conversations](/docs/product/conversation)\\n\\n - [Conversation to", + "id": "ART-1953_KNOWLEDGE_NODE-27", + "text": "conversation, ensuring seamless and continuous communication.\\n\\nBy default, notifications are sent from [notifications@devrev.ai](mailto:notifications@devrev.ai). However, this setting can be overridden to use the organization\\xe2\\x80\\x99s primary email address as the sender, or notifications can be turned off entirely.\\n\\nTo configure the notifications setting, under [**Settings** > **Snap-ins** > **Email Integration**](https://app.devrev.ai/devrev/settings/snap-ins/email-with-tickets), go to", "title": "Customer email notifications | Computer by DevRev | DevRev" }, { - "id": "ART-1953_KNOWLEDGE_NODE-24", - "text": "conversation](#reply-to-the-customer-on-a-conversation)\\n* [Reply to the customer on a ticket](#reply-to-the-customer-on-a-ticket)\\n* [Ticket linked to a conversation](#ticket-linked-to-a-conversation)\\n* [Change of stage of a ticket/conversation](#change-of-stage-of-a-ticketconversation)\\n* [CSAT survey for conversation/ticket](#csat-survey-for-conversationticket)\\n* [Auto customer reply](#auto-customer-reply)\\n* [Auto reply on email](#auto-reply-on-email)\\n\\n1. [Documentation](/docs)\\n3.", - "title": "Customer email notifications | Computer by DevRev | DevRev" + "id": "ART-1954_KNOWLEDGE_NODE-32", + "text": "workflow.\\n\\nPersonalizing notifications\\n---------------------------\\n\\nDevRev allows users to personalize their notification preferences to ensure they receive only relevant updates. Follow these steps to personalize your notifications.\\n\\n1. Go to [**Settings > Notifications**](https://app.devrev.ai/devrev/settings/user-preferences) page.\\n2. Under the **General** panel, enable the following options as required:\\n\\n * Reminders: Set notifications for reminders.\\n * Assignments: Enable", + "title": "Updates | Computer by DevRev | DevRev" }, { - "id": "ART-1820_KNOWLEDGE_NODE-3", - "text": "Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/beta/api-reference/notifications/content-template-list-post)[#### Create Conversation\\n\\nNext](/beta/api-reference/conversations/create)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Send Notifications | DevRev | Docs" + "id": "ART-2035_KNOWLEDGE_NODE-35", + "text": "the channel will not sync to DevRev.\\n\\nConversation notifications\\n--------------------------\\n\\nAny new message added to a conversation within your DevRev workspace, regardless of its originating source channel or platform, can trigger a notification in a designated Slack channel, helping your team stay updated on customer interactions.\\n\\n### To enable conversation notifications\\n\\n1. Turn on **Enable the conversation notification feature** in the Slack snap-in configuration.\\n2. Provide a", + "title": "Slack | Integrate | Snap-ins | DevRev" }, { "id": "ART-1953_KNOWLEDGE_NODE-35", @@ -4708,54 +4708,54 @@ "query": "create mandatory field time log spent on a ticket", "retrievals": [ { - "id": "ART-15688_KNOWLEDGE_NODE-29", - "text": "system automatically validates:\\n\\n * Date format and range (within last 10 days to next 10 days)\\n * Hours and minutes values\\n * Prevents logging when both hours and minutes are zero\\n3. **Confirmation**: After successful validation, the effort is logged and a confirmation message appears in the timeline.\\n\\nSupported object types\\n----------------------\\n\\nThe Effort logger snap-in works with the following object types:\\n\\n* **Tickets**: Log effort against support tickets, bug reports,", - "title": "Effort logger | Automate | Snap-ins | DevRev" + "id": "ART-2021_KNOWLEDGE_NODE-26", + "text": "Install the\\n [Ticket age in engineering](/marketplace/ticket-age-in-engineering)\\n from the DevRev marketplace.\\n2. Add all of the **stage names** that reflect that engineering work is planned\\n or is being done for that ticket. The stages you specify are the ones that\\n track time spent on engineering. The default values are the default DevRev\\n engineering stages for tickets.\\n3. Select whether time spent on engineering should be displayed in hours or\\n days.\\n4. Click **Install", + "title": "Ticket age in engineering | Automate | Snap-ins | DevRev" }, { - "id": "ART-2021_KNOWLEDGE_NODE-24", - "text": "[Documentation](/docs)\\n3. [Snap-ins](/docs/snapins)\\n[Automate](/docs/automate)\\n[Ticket age in engineering](/docs/automations/ticket-age-in-engineering)\\n\\nTicket age in engineering\\n=========================\\n\\n[Ticket age in engineering](/marketplace/ticket-age-in-engineering)\\noffers the ability to track how much time tickets spend on engineering, measured\\nby ticket time spent on engineering stages.\\n\\nThe snap-in adds a new attribute to tickets which automatically calculates the\\ntime", - "title": "Ticket age in engineering | Automate | Snap-ins | DevRev" + "id": "ART-15688_KNOWLEDGE_NODE-28", + "text": "effort logs as custom objects with structured data\\n\\nHow to use\\n----------\\n\\n1. **Access the command**: In the timeline of any ticket or conversation, type the following command:\\n\\n```\\n```\\n1 /log_effort\\n```\\n```\\n\\n1. **Enter effort details**: The snap-in prompts you to enter:\\n\\n * **Date**: The date when the effort was performed (MM/DD/YYYY format)\\n * **Hours**: Number of hours worked (0 or positive number)\\n * **Minutes**: Number of minutes worked (0-59)\\n2. **Validation**: The", + "title": "Effort logger | Automate | Snap-ins | DevRev" }, { - "id": "ART-2021_KNOWLEDGE_NODE-25", - "text": "spent on engineering for that ticket. There can be multiple engineering\\nsessions. An engineering session starts when a ticket moves from a\\nnon-engineering stage to an engineering stage and it ends when it moves from an\\nengineering stage to a non-engineering stage. You should select which ticket\\nstages reflect engineering work and if the time spent should be shown in hours\\nor days.\\n\\nInstalling the Ticket age in engineering snap-in\\n------------------------------------------------\\n\\n1.", - "title": "Ticket age in engineering | Automate | Snap-ins | DevRev" + "id": "ART-1822_KNOWLEDGE_NODE-447", + "text": "spam.\\nticket.needs_response boolean Optional\\nFilters for tickets that need response.\\nticket.rev_org string Optional\\nFilters for tickets that are associated with any of the provided Rev organizations.\\nticket.severity enum Optional\\nFilters for tickets with any of the provided severities.\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-1961_KNOWLEDGE_NODE-37", - "text": "\\n{{Ticket\\xc2\\xa0Created\\xc2\\xa0>\\xc2\\xa0Output\\xc2\\xa0>\\xc2\\xa0Reported\\xc2\\xa0By\\xc2\\xa0>\\xc2\\xa0Rev\\xc2\\xa0Org\\xc2\\xa0>\\xc2\\xa0Display\\xc2\\xa0Name}}.\\xe2\\x80\\x9d\\n\\n\\n\\nDelay\\n\\n\\n\\nDuration: 2 minutes\\n\\n\\n\\nIf-else\\n\\n\\n\\nAttribute:\\xc2\\xa0Ticket\\xc2\\xa0Created/Output\\xc2\\xa0>\\xc2\\xa0Applies\\xc2\\xa0to\\xc2\\xa0part\\xc2\\xa0>\\xc2\\xa0Display\\xc2\\xa0ID \\nOperator: Equals \\nOperand: CAPL-18\\n\\n\\n\\nTicket \\ncreated\\n\\n\\n\\nEnd\\n```\\n\\n[### Workflow action", - "title": "Workflows | Computer by DevRev | DevRev" + "id": "ART-15716_KNOWLEDGE_NODE-36", + "text": "the Dashboards section.\\n\\nAdd a widget for \\xe2\\x80\\x9cTicket Resolution Time\\xe2\\x80\\x9d or \\xe2\\x80\\x9cAverage Time to Resolution.\\xe2\\x80\\x9d\\n\\nConfigure the widget to display data by agent, team, or time period.\\n\\nUse filters to focus on specific ticket types, priorities, or customer segments.\\n\\nFor more granular analysis, use a table or chart widget with custom SQL or filters.\\n\\nThis will help you monitor and improve your team\\xe2\\x80\\x99s responsiveness.5. Configuring branding of the", + "title": "Support queries related playbook" }, { - "id": "ART-15688_KNOWLEDGE_NODE-28", - "text": "effort logs as custom objects with structured data\\n\\nHow to use\\n----------\\n\\n1. **Access the command**: In the timeline of any ticket or conversation, type the following command:\\n\\n```\\n```\\n1 /log_effort\\n```\\n```\\n\\n1. **Enter effort details**: The snap-in prompts you to enter:\\n\\n * **Date**: The date when the effort was performed (MM/DD/YYYY format)\\n * **Hours**: Number of hours worked (0 or positive number)\\n * **Minutes**: Number of minutes worked (0-59)\\n2. **Validation**: The", + "id": "ART-15688_KNOWLEDGE_NODE-26", + "text": "set, the default is 365 days.\\n\\n![]()\\n\\nConfigure the appropriate roles and permissions to access and modify the custom effort log objects based on your organization's requirements.\\n\\nFeatures\\n--------\\n\\n* **Effort logging**: Log hours and minutes worked against objects\\n* **Date validation**: Automatic date format validation with MM/DD/YYYY support\\n* **Custom schema management**: Automatic creation and validation of custom schema fragments\\n* **Timeline integration**: Create timeline", "title": "Effort logger | Automate | Snap-ins | DevRev" }, { - "id": "ART-2021_KNOWLEDGE_NODE-26", - "text": "Install the\\n [Ticket age in engineering](/marketplace/ticket-age-in-engineering)\\n from the DevRev marketplace.\\n2. Add all of the **stage names** that reflect that engineering work is planned\\n or is being done for that ticket. The stages you specify are the ones that\\n track time spent on engineering. The default values are the default DevRev\\n engineering stages for tickets.\\n3. Select whether time spent on engineering should be displayed in hours or\\n days.\\n4. Click **Install", - "title": "Ticket age in engineering | Automate | Snap-ins | DevRev" + "id": "ART-1961_KNOWLEDGE_NODE-36", + "text": "\\xe2\\x80\\x9cWe have received your request for help with the following: \\n{{Ask AI > Output > Output string}}. \\nA support agent will review the request and respond within your organization's SLA.\\xe2\\x80\\x9d\\n\\n\\n\\nAsk AI\\n\\n\\n\\nPrompt: \\xe2\\x80\\x9cSummarize the ticket based on \\n{{Ticket Created > Output > Description}}, \\n{{Ticket Created > Output > Title}}, \\n{{Ticket Created > Output > Applies to Part > Name}}, and", + "title": "Workflows | Computer by DevRev | DevRev" }, { - "id": "ART-2665_KNOWLEDGE_NODE-13", - "text": "creator](/docs/automations/smart-issue-creator)\\n - [Set user preference for group](/docs/automations/set-user-preference)\\n - [SLA status change Slack notifier](/docs/automations/sla-change-notifier)\\n - [Slash commands](/docs/automations/slash-commands)\\n - [Spam Shield](/docs/automations/spam-shield)\\n - [Subtype Migration](/docs/automations/subtype-migration)\\n - [Ticket age in engineering](/docs/automations/ticket-age-in-engineering)\\n - [Ticket issue field", - "title": "Session recording options | Session analytics | Computer for Your Customers | DevRev" + "id": "ART-1975_KNOWLEDGE_NODE-29", + "text": "stage\\n--------------------\\n\\n* **Average time spent per stage**\\n\\n The average time tickets spent in each stage.\\n\\n[PreviousConversation-Team Performance](/docs/dashboards/conversation-team-performance)[NextTicket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)\\n\\n#### On this page\\n\\n* [Customer & product impact](#customer-product-impact)\\n* [Ticket distribution](#ticket-distribution)\\n* [Customer satisfaction (CSAT)](#customer-satisfaction-csat)\\n* [Time spent per", + "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-2028_KNOWLEDGE_NODE-24", - "text": "[Snap-ins](/docs/snapins)\\n[Automate](/docs/automate)\\n[Work duration](/docs/automations/work-duration)\\n\\nWork duration\\n=============\\n\\n[Work duration](/marketplace/work-duration) offers the ability\\nto track how much work issues and tickets took to complete, measured by time\\nspent in work sessions.\\n\\nThe snap-in adds a new attribute to tickets and issues which automatically\\ncalculates the work duration for that item. Work duration is meassured in time\\nspent through work sessions. A work", - "title": "Work duration | Automate | Snap-ins | DevRev" + "id": "ART-1605_KNOWLEDGE_NODE-461", + "text": "need response.\\nticket.rev_org string Optional\\nFilters for tickets that are associated with any of the provided Rev organizations.\\nticket.severity enum Optional\\nFilters for tickets with any of the provided severities.\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-2665_KNOWLEDGE_NODE-14", - "text": "migrator](/docs/automations/ticket-issue-field-migrator)\\n - [Ticket Immutability](/docs/automations/ticket-immutability)\\n - [Ticket email notifier](/docs/automations/ticket-email-notifier)\\n - [Task tracker](/docs/automations/task-tracker)\\n - [Ticket Tagger](/docs/automations/ticket-tagger)\\n - [Tracxn sync](/docs/automations/tracxn-sync)\\n - [User group validator](/docs/automations/user-group-validator)\\n - [Work duration](/docs/automations/work-duration)\\n -", - "title": "Session recording options | Session analytics | Computer for Your Customers | DevRev" + "id": "ART-1785_KNOWLEDGE_NODE-459", + "text": "need response.\\nticket.rev_org string Optional\\nFilters for tickets that are associated with any of the provided Rev organizations.\\nticket.severity enum Optional\\nFilters for tickets with any of the provided severities.\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the", + "title": "Create \u2014 DevRev | Docs" }, { - "id": "ART-1003_KNOWLEDGE_NODE-26", - "text": "support tickets, which helps measure workload balance and resource allocation.\\n \\n \\n Calculation\\n \\n (Total hours spent on support tasks) / (Total working hours) * 100\\n \\n \\n\\n\\nSELECT (SUM(TIMESTAMPDIFF(MINUTE, t.start_time, t.end_time)) * 100) / (COUNT(DISTINCT t.engineer_id) * 8 * 60) AS AgentUtilizationRate\\nFROM ticket_work_times\\n\\n\"", - "title": "Understanding a Support Lead's Pain Points and KPIs" + "id": "ART-1832_KNOWLEDGE_NODE-468", + "text": "need response.\\nticket.rev_org string Optional\\nFilters for tickets that are associated with any of the provided Rev organizations.\\nticket.severity enum Optional\\nFilters for tickets with any of the provided severities.\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\nFilters for records with any of the provided SLA stages.\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\nFilters for tickets with any of the", + "title": "Create \u2014 DevRev | Docs" } ] }, @@ -4764,54 +4764,54 @@ "query": "Just-in-time (JIT) provisioning for dynamic access", "retrievals": [ { - "id": "ART-1978_KNOWLEDGE_NODE-41", - "text": "If no such contact is found, JIT provisioning automatically creates a user account, allowing immediate access to the portal. This means users can sign up and log in without manual contact creation within the app.\\n* **Existing contacts without mapped accounts**: If a user is already a contact within the app but does not have a mapped account, they can still log in and create a ticket. In this scenario, the login is performed under the default workspace assigned to the contact.\\n* **Account", + "id": "ART-1978_KNOWLEDGE_NODE-40", + "text": " portion is based on your company name.\\n\\nIf you want to host your customer portal on a custom domain, please contact our support team.\\n\\nJust-in-time access to the customer portal\\n------------------------------------------\\n\\nDevRev offers just-in-time (JIT) provisioning to streamline login processes by automatically handling user account management.\\n\\n* **Automatic account creation**: When a user logs in, the system verifies if the user exists as a contact within an account.", "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-738_KNOWLEDGE_NODE-17", - "text": "level\\n Also, some vendors who didn\\xe2\\x80\\x99t grow up in the \\xe2\\x80\\x9cas a service\\xe2\\x80\\x9d era will need to change processes to embrace CI/CD (some may have)\\n A good ask here is how frequently changes are deployed\\n When something new comes out, we can react and enable rapidly; others may be slower to enable, leading to a gap between when something is \\xe2\\x80\\x9cavailable\\xe2\\x80\\x9d and \\xe2\\x80\\x9creally available\\xe2\\x80\\x9d\\n \\n \\n\\n\\nMost of the available", - "title": "DevRev | Built for AI (not by AI... yet)" + "id": "ART-1978_KNOWLEDGE_NODE-41", + "text": "If no such contact is found, JIT provisioning automatically creates a user account, allowing immediate access to the portal. This means users can sign up and log in without manual contact creation within the app.\\n* **Existing contacts without mapped accounts**: If a user is already a contact within the app but does not have a mapped account, they can still log in and create a ticket. In this scenario, the login is performed under the default workspace assigned to the contact.\\n* **Account", + "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-40", - "text": " portion is based on your company name.\\n\\nIf you want to host your customer portal on a custom domain, please contact our support team.\\n\\nJust-in-time access to the customer portal\\n------------------------------------------\\n\\nDevRev offers just-in-time (JIT) provisioning to streamline login processes by automatically handling user account management.\\n\\n* **Automatic account creation**: When a user logs in, the system verifies if the user exists as a contact within an account.", - "title": "Customer portal | Computer for Support Teams | DevRev" + "id": "ART-8441_KNOWLEDGE_NODE-31", + "text": "issue:\\n\\n* ISSUE:123\\n* Issue:123\\n* issue:123\\n* ISS-123\\n* Iss-123\\n* iss-123\\n\\n### Automation\\n\\nAfter a GitLab event is associated with an issue, the status of that issue is automatically updated according to the stages you have selected and configured in the snap-in configuration screen. An example configuration of GitLab event-to-stage mapping can be:\\n\\n| GitLab Event | Stage to assign to |\\n| --- | --- |\\n| New commit | *In Development* |\\n| New branch | *In Development* |\\n| PR", + "title": "GitLab | Integrate | Snap-ins | DevRev" }, { - "id": "ART-1687_KNOWLEDGE_NODE-3", - "text": "Jira, simplifying the process.\\n2. **Provide credentials:** During development, you\\xe2\\x80\\x99ll provide your developer keyring of type `oauth-secret` which contains client ID and client secret for the chosen service within the keyring definition. These credentials are securely stored and not distributed with your published snap-in.\\n3. **OAuth 2.0 flow:** When your snap-in needs to access user data from the external service, it initiates the OAuth flow. This typically involves redirecting the", - "title": "OAuth 2.0 configuration: Securely storing access tokens | DevRev | Docs" + "id": "ART-1996_KNOWLEDGE_NODE-29", + "text": "on the top right corner.\\n* Dynamically adjust schedules within the Gantt view. Optimize your timeline based on project priorities and completion estimates.\\n* Link customer requests (tickets) to in-development features to get an estimate of customer impact.\\n\\n![]()\\n\\n[PreviousEnhancements](/docs/product/enhancements)[NextBuild best practices](/docs/product/build-bp)\\n\\n#### On this page\\n\\n* [List view](#list-view)\\n* [Gantt view](#gantt-view)\\n\\n[Enterprise grade security to protect", + "title": "Roadmap | Computer for Builders | DevRev" }, { - "id": "ART-992_KNOWLEDGE_NODE-13", - "text": "delivery model where we can offload the burden of requests from hitting origin and push more to the edge (more to come here!).\\n\\nIn our case we are using a mix of edge compute (C@E) which allows us to compile and execute RUST code on Fastly\\xe2\\x80\\x99s edge, which can also take advantage of their CDN which can cache content from origin.\\n\\nA quick note on WebAssembly (WASM)\\xe2\\x80\\xa6 this is one thing that is very interesting/exciting and will be one of the core enablers to making clients", - "title": "Perimeter security with Fastly edge and AWS \u2014 Part I" + "id": "ART-17221_KNOWLEDGE_NODE-25", + "text": "loop.\\n* Use `async/await` for I/O operations such as API calls or file reads.\\n* Add periodic async breaks in tight loops using `Promise.resolve()`, `setTimeout()`, or `setImmediate()`.\\n\\nYou can find examples of correct timeout-safe code in the [timeout-handling test suite](https://github.com/devrev/adaas-sdk/tree/main/src/tests/timeout-handling).\\n\\nTo test how your snap-in responds to timeouts, you can configure a shorter timeout using the `spawn` function:\\n\\n```\\n| | |\\n| --- | ---", + "title": "Data extraction | DevRev | Docs" }, { - "id": "ART-992_KNOWLEDGE_NODE-12", - "text": "0 IN A 151.101.194.137\\n;; Query time: 50 msec\\n;; SERVER: 172.29.208.1#53(172.29.208.1)\\n;; WHEN: Thu Apr 14 09:29:47 CDT 2022\\n;; MSG SIZE rcvd: 168\\n\\n\\nRequest handling/caching\\n\\nTraditionally a lot of delivery models would rely on CDNs only for their static asset caching and DDoS mitigation, still relying on origin to handle the majority of requests.\\n\\nHowever, I do believe with edge compute and the ability to execute logic efficiently on the edge via WASM we will see an inverting of the", - "title": "Perimeter security with Fastly edge and AWS \u2014 Part I" + "id": "ART-1276_KNOWLEDGE_NODE-12", + "text": "any) => { |\\n| 2 | // Function logic goes here. |\\n| 3 | }; |\\n```\\n\\nWithin this handler, the initial step involves extracting the GitHub token provided as input in the keyring. Subsequently, the [Octokit](https://github.com/octokit/octokit.js), responsible for managing GitHub API requests, is initialized:\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | const githubPAT = event.input_data.keyrings.github_connection; |\\n| 2 | const octokit = new Octokit({ |\\n| 3 | auth: githubPAT, |\\n| 4 | });", + "title": "Using a snap-in to perform an external action | DevRev | Docs" }, { - "id": "ART-738_KNOWLEDGE_NODE-13", - "text": "customization in from the start\\n \\n We knew extensibility would be key for any platform\\n Given the simplicity of customization, we can easily extend our object model with new annotations or context that can be used and fed into models\\n This means, that a customer or vendor, can easily extend our object model with new data on objects which can be used by models, new object types, or with the output of a model\\n \\n \\n We built multi-tenancy into the object\\n \\n", - "title": "DevRev | Built for AI (not by AI... yet)" + "id": "ART-1988_KNOWLEDGE_NODE-30", + "text": "capability to have a sprint board.\\n\\n\\xf0\\x9f\\x94\\x81 Integrations with other systems\\n---------------------------------\\n\\nSnap-ins provide integration with other systems that you use for build activities:\\n\\n* [Jira](../integrations/jira)\\n* [Linear](../integrations/linear)\\n* [GitHub](../integrations/github)\\n\\nInstall and configure the snap-ins that are relevant to your business.\\n\\n[PreviousSupport snap-ins](/docs/product/snapins-support)[NextIssues](/docs/product/issues)\\n\\n#### On this", + "title": "Computer for Builders | DevRev" }, { - "id": "ART-992_KNOWLEDGE_NODE-8", - "text": "any security groups with inbound rules allowing 0.0.0.0/0 with any/all port/protocols, or inbound SSH (yikes) you should consider evaluating things :)\\n\\nFastly CDN/C@E\\n\\n\\n\\nCDNs are not a new concept and have been around for years providing static asset caching and DDoS prevention.\\n\\nHowever, in the past few years, these have expanded to now include capabilities like web-application firewalls (WAFs) and edge compute (logic execution in the CDN) capabilities.\\n\\nIn this section,", - "title": "Perimeter security with Fastly edge and AWS \u2014 Part I" + "id": "ART-3905_KNOWLEDGE_NODE-37", + "text": "basis. By default, the sync occurs once an hour.\\n\\nTo configure periodic sync, follow these steps:\\n\\n1. Go to **Settings** > **Integrations** > **AirSyncs**.\\n2. Locate the previously imported project.\\n3. Select the **\\xe2\\x8b\\xae** > **Set Periodic Sync** option.\\n\\nThe **Enable automations for synced items** setting is optional and can be activated during periodic sync configuration. When enabled, newly created or updated items trigger events, which can initiate webhooks, notifications,", + "title": "Jira Service Management AirSync | AirSync | Snap-ins | DevRev" }, { - "id": "ART-738_KNOWLEDGE_NODE-14", - "text": "Rather than physically segmenting tenant data, we built tenancy into the objects using specific attributes which act as partitions\\n This allows us to create macro partitions (e.g., customer) or extremely granular partitions (e.g., user level)\\n This gives us a ton of flexibility as all data is in one place and the granularity can range from macro to micro\\n \\n \\n We designed our services for the cloud\\n \\n Being built in the \\xe2\\x80\\x9cera of cloud\\xe2\\x80\\x9d we had a", - "title": "DevRev | Built for AI (not by AI... yet)" + "id": "ART-1966_KNOWLEDGE_NODE-21", + "text": "AirSync](/docs/integrations/servicenow-kb)\\n - [Notion AirSync](/docs/integrations/notion)\\n - [SharePoint AirSync](/docs/integrations/sharepoint)\\n - [Zoho Projects AirSync](/docs/integrations/zoho)\\n - [Microsoft Teams AirSync](/docs/integrations/ms-teams)\\n - [Azure DevOps Wikis AirSync](/docs/integrations/azure-wiki)\\n - [Jira Software AirSync](/docs/integrations/jira)\\n\\n * [DevRev for Jira app](/docs/integrations/jira-plugin)\\n - [Linear", + "title": "External identity provider setup | Computer by DevRev | DevRev" }, { - "id": "ART-970_KNOWLEDGE_NODE-102", - "text": "groundwork, ensuring we possessed the requisite keys to partition and segment data effectively. This profound understanding of the structure empowered us to fashion granular and precise authorization mechanisms. By dedicating upfront effort to this aspect, we\\xe2\\x80\\x99ve endowed our system with authorization capabilities that some mature companies can only envision, including support for role-based access control (RBAC), attribute-based access control (ABAC), policy-based access control", - "title": "The Story" + "id": "ART-2053_KNOWLEDGE_NODE-32", + "text": "Transition Diagram of Issue/Ticket/Enhancements | \\xe2\\x9d\\x8c | \\xe2\\x9d\\x8c |\\n| User | DevUser | \\xe2\\x9c\\x85 | \\xe2\\x9d\\x8c |\\n| Permission Scheme | Access Control Entries | \\xe2\\x9d\\x8c | \\xe2\\x9d\\x8c |\\n| Sprint | Sprint | \\xe2\\x9d\\x8c | \\xe2\\x9d\\x8c |\\n| Filter | Vista | \\xe2\\x9d\\x8c | \\xe2\\x9d\\x8c |\\n| Automation | Snap-in | \\xe2\\x9d\\x8c | \\xe2\\x9d\\x8c |\\n\\n![]()\\n\\nThis snap-in has been tested with and supports Jira Data Center 10.\\n\\nMigrate from Jira to", + "title": "Jira Software AirSync | AirSync | Snap-ins | DevRev" } ] }, @@ -4820,54 +4820,54 @@ "query": "Audit logging for all customer portal activities", "retrievals": [ { - "id": "ART-1978_KNOWLEDGE_NODE-32", - "text": "on the following URL: support.devrev.ai/.\\n* Your customers can log in on the portal by entering their registered email address and OTP sent to that email address.\\n\\n![]()\\n\\n### Customer roles and permissions\\n\\nThe customer portal has two levels of customer roles and permissions:\\n\\n* **Verified customers**: Customers who can log in on the portal and see the tickets that they have created.\\n* **Customer admins**: Customers who can log in on the portal and see not just their own", - "title": "Customer portal | Computer for Support Teams | DevRev" + "id": "ART-4171_KNOWLEDGE_NODE-5", + "text": "that is intent-aware, drafts responses from internal and external sources, and gets better with every conversation\\n\\n###\\n\\n#### Debug with your customers\\n\\n#### Get the full context of customer queries with session recordings\\n\\n[Book a Demo](/request-a-demo)[Discover PLuG Observability](/plug-observability)\\n\\n![]()\\n\\nView session recordings attached to every customer ticket so you can do RCA and troubleshoot more effectively. Instantly identify usability issues so you can proactively fix", + "title": "Make customer support real-time and personalized" }, { - "id": "ART-1978_KNOWLEDGE_NODE-46", - "text": "tracking, and team collaboration](#ticket-creation-tracking-and-team-collaboration)\\n* [Conversations and messaging](#conversations-and-messaging)\\n* [Article search](#article-search)\\n* [SEO compatibility](#seo-compatibility)\\n* [Get started](#get-started)\\n* [Customer roles and permissions](#customer-roles-and-permissions)\\n* [Set up customer admins](#set-up-customer-admins)\\n* [Customer portal login methods](#customer-portal-login-methods)\\n* [Integrating your knowledge base", - "title": "Customer portal | Computer for Support Teams | DevRev" + "id": "ART-16789_KNOWLEDGE_NODE-34", + "text": "controls, activity logging, and dedicated customer success management for enterprise customers.'", + "title": "Computer General FAQs" }, { - "id": "ART-1978_KNOWLEDGE_NODE-34", - "text": "registered email address and go to **Settings** > **User management** > **Groups > Customer Admins**.\\n2. Select the **Add User** option in the top-right corner to search for the customer whom you want to designate as a customer admin.\\n\\n### Customer portal login methods\\n\\nThe customer portal supports three login methods:\\n\\n1. Email OTP (One-Time Password): User enters their email, receives a one-time code, and enters it to log in.\\n2. SSO: Users log in through organization\\xe2\\x80\\x99s", - "title": "Customer portal | Computer for Support Teams | DevRev" + "id": "ART-2050_KNOWLEDGE_NODE-27", + "text": "[methods](https://developer.devrev.ai/public/sdks/web/methods) providing the framework for customer support interactions.\\n\\n### \\xf0\\x9f\\x8e\\x9e\\xef\\xb8\\x8f Session recording and analytics\\n\\n[Session analytics](/docs/plug/session-analytics-intro) captures user website interactions through recordings and detailed logging, enabling businesses to visualize behavior patterns, analyze conversion funnels, and optimize user experience through Computer for User Insights.\\n\\n### \\xf0\\x9f\\x93\\x9d", + "title": "Computer for Your Customers | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-24", - "text": "creation, tracking, and team collaboration](#ticket-creation-tracking-and-team-collaboration)\\n* [Conversations and messaging](#conversations-and-messaging)\\n* [Article search](#article-search)\\n* [SEO compatibility](#seo-compatibility)\\n* [Get started](#get-started)\\n* [Customer roles and permissions](#customer-roles-and-permissions)\\n* [Set up customer admins](#set-up-customer-admins)\\n* [Customer portal login methods](#customer-portal-login-methods)\\n* [Integrating your knowledge base", - "title": "Customer portal | Computer for Support Teams | DevRev" + "id": "ART-4955_KNOWLEDGE_NODE-2", + "text": "what our enhanced session analytics offers: Sessions List and Replay\\n\\nWith the new session list, you can access a comprehensive log of all recorded user sessions in your application. A rich set of filters allows you to quickly narrow down sessions based on date, exception, page name, and more\\xe2\\x80\\x94helping you find the most relevant recordings with ease.\\n\\nThe session replay feature provides an in-depth view of each session, including:\\n\\nSession recording \\xe2\\x80\\x93 A replay of the", + "title": "Transitioning to the New PLuG Sessions Experience" }, { - "id": "ART-16789_KNOWLEDGE_NODE-34", - "text": "controls, activity logging, and dedicated customer success management for enterprise customers.'", - "title": "Computer General FAQs" + "id": "ART-2050_KNOWLEDGE_NODE-24", + "text": "Session recording and analytics](#-session-recording-and-analytics)\\n* [\\xf0\\x9f\\x93\\x9d Nudges](#-nudges)\\n* [\\xf0\\x9f\\x94\\x8d Search](#-search)\\n* [Integration](#integration)\\n* [\\xf0\\x9f\\x8c\\x90 Web SDK](#-web-sdk)\\n* [\\xf0\\x9f\\x93\\xb2 Mobile SDKs](#-mobile-sdks)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Your Customers](/docs/plug)\\n\\nComputer for Your Customers\\n===========================\\n\\nComputer for Your Customers, which comprises the Plug widget and SDK, empowers your customers", + "title": "Computer for Your Customers | DevRev" }, { - "id": "ART-2664_KNOWLEDGE_NODE-27", - "text": "your\\n [website](https://developer.devrev.ai/sdks/web/installation) or\\n [mobile app](https://developer.devrev.ai/sdks/mobile).\\n2. For web applications, configure\\n [user identification](https://developer.devrev.ai/sdks/web/user-identity).\\n3. Enable session recording for your users, go to **Settings** > **PluG and Portal** >\\n **Session Replays** and enable recording for your desired platform.\\n\\n **Note**: Alternatively, you can enable session recording during Plug SDK\\n", - "title": "Session analytics | Computer for Your Customers | DevRev" + "id": "ART-1978_KNOWLEDGE_NODE-46", + "text": "tracking, and team collaboration](#ticket-creation-tracking-and-team-collaboration)\\n* [Conversations and messaging](#conversations-and-messaging)\\n* [Article search](#article-search)\\n* [SEO compatibility](#seo-compatibility)\\n* [Get started](#get-started)\\n* [Customer roles and permissions](#customer-roles-and-permissions)\\n* [Set up customer admins](#set-up-customer-admins)\\n* [Customer portal login methods](#customer-portal-login-methods)\\n* [Integrating your knowledge base", + "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-2665_KNOWLEDGE_NODE-1", - "text": "[Apps](/docs/product/apps)\\n + [Groups](/docs/product/groups)\\n + [Parts & trails](/docs/product/parts)\\n + [Vistas](/docs/product/vistas)\\n\\n - [Vista Reports](/docs/product/vista-reports)\\n - [Board view](/docs/product/board-view)\\n + [Tasks](/docs/product/tasks)\\n + [Updates](/docs/product/updates)\\n + [Customer email notifications](/docs/product/customer-emails)\\n + [Roles](/docs/product/roles)\\n\\n - [Default privileges by group](/docs/product/privs)\\n + [Access", - "title": "Session recording options | Session analytics | Computer for Your Customers | DevRev" + "id": "ART-1978_KNOWLEDGE_NODE-24", + "text": "creation, tracking, and team collaboration](#ticket-creation-tracking-and-team-collaboration)\\n* [Conversations and messaging](#conversations-and-messaging)\\n* [Article search](#article-search)\\n* [SEO compatibility](#seo-compatibility)\\n* [Get started](#get-started)\\n* [Customer roles and permissions](#customer-roles-and-permissions)\\n* [Set up customer admins](#set-up-customer-admins)\\n* [Customer portal login methods](#customer-portal-login-methods)\\n* [Integrating your knowledge base", + "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-25", - "text": "articles](#integrating-your-knowledge-base-articles)\\n* [Customize the customer portal](#customize-the-customer-portal)\\n* [Customize portal URL](#customize-portal-url)\\n* [Just-in-time access to the customer portal](#justintime-access-to-the-customer-portal)\\n* [Troubleshooting](#troubleshooting)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Customer portal](/docs/product/support-portal)\\n\\nCustomer portal\\n===============\\n\\nThe customer portal is an", + "id": "ART-1978_KNOWLEDGE_NODE-7", + "text": "[Roadmap](/docs/product/roadmap)\\n + [Build best practices](/docs/product/build-bp)\\n + [Build snap-ins](/docs/product/snapins-build)\\n* [Computer for Your Customers](/docs/plug)\\n\\n + [Plug widget customization](/docs/plug/customize)\\n + [Session analytics](/docs/plug/session-analytics-intro)\\n\\n - [Computer for User Insights](/docs/plug/observability)\\n - [Session recording options](/docs/plug/session-recording)\\n - [Cross-domain session", "title": "Customer portal | Computer for Support Teams | DevRev" }, { - "id": "ART-2664_KNOWLEDGE_NODE-1", - "text": "[Groups](/docs/product/groups)\\n + [Parts & trails](/docs/product/parts)\\n + [Vistas](/docs/product/vistas)\\n\\n - [Vista Reports](/docs/product/vista-reports)\\n - [Board view](/docs/product/board-view)\\n + [Tasks](/docs/product/tasks)\\n + [Updates](/docs/product/updates)\\n + [Customer email notifications](/docs/product/customer-emails)\\n + [Roles](/docs/product/roles)\\n\\n - [Default privileges by group](/docs/product/privs)\\n + [Access control](/docs/product/access-control)\\n +", - "title": "Session analytics | Computer for Your Customers | DevRev" + "id": "ART-12398_KNOWLEDGE_NODE-7", + "text": "mode](/docs/product/sprint)\\n + [Enhancements](/docs/product/enhancements)\\n + [Roadmap](/docs/product/roadmap)\\n + [Build best practices](/docs/product/build-bp)\\n + [Build snap-ins](/docs/product/snapins-build)\\n* [Computer for Your Customers](/docs/plug)\\n\\n + [Plug widget customization](/docs/plug/customize)\\n + [Session analytics](/docs/plug/session-analytics-intro)\\n\\n - [Computer for User Insights](/docs/plug/observability)\\n - [Session recording", + "title": "Cross-domain session tracking | Session analytics | Computer for Your Customers | DevRev" }, { - "id": "ART-1978_KNOWLEDGE_NODE-1", - "text": "[Groups](/docs/product/groups)\\n + [Parts & trails](/docs/product/parts)\\n + [Vistas](/docs/product/vistas)\\n\\n - [Vista Reports](/docs/product/vista-reports)\\n - [Board view](/docs/product/board-view)\\n + [Tasks](/docs/product/tasks)\\n + [Updates](/docs/product/updates)\\n + [Customer email notifications](/docs/product/customer-emails)\\n + [Roles](/docs/product/roles)\\n\\n - [Default privileges by group](/docs/product/privs)\\n + [Access control](/docs/product/access-control)\\n +", - "title": "Customer portal | Computer for Support Teams | DevRev" + "id": "ART-1972_KNOWLEDGE_NODE-8", + "text": "options](/docs/plug/session-recording)\\n - [Cross-domain session tracking](/docs/plug/cross-domain-session)\\n + [Nudges](/docs/plug/nudges)\\n* [Computer for Growth Teams](/docs/product/grow)\\n\\n + [Accounts](/docs/product/account)\\n + [Opportunities](/docs/product/opportunity)\\n + [Contacts](/docs/product/customers)\\n + [Account and contact import](/docs/product/account-contact-import)\\n + [Grow snap-ins](/docs/product/snapins-grow)\\n* [Snap-ins](/docs/snapins)\\n\\n +", + "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" } ] }, @@ -4885,45 +4885,45 @@ "text": "highlight something to your users.\\n\\n#### **Turing search**\\n\\nHere's how Turing search works in Plug.\\n\\n![]()\\n\\nSpotlight cards\\n---------------\\n\\nSpotlight cards are top-level cards on the Plug widget. You can use them for showcasing PR articles, product releases, blog posts, or any other marketing/product-related content that can educate your users about things happening in your company.\\n\\nHere is how a spotlight card looks.\\n\\n![]()\\n\\n### Add a spotlight card\\n\\n1. In the DevRev app,", "title": "Plug widget customization | Computer for Your Customers | DevRev" }, + { + "id": "ART-15506_KNOWLEDGE_NODE-25", + "text": "8 | }) |\\n```\\n\\n##### \\n\\nNote that the `updateIdentity` method cannot be used to update the `user_ref` of the user. In order to change the identity of the user completely to a new one, you need to re-initialize Plug. See the [Changing the user identity](/sdks/web/user-identity#changing-the-user-identity) section for more details.\\n\\nChanging the user identity\\n--------------------------\\n\\nAs described in the above sections, to identify a user, you need to initialize the Plug SDK with the", + "title": "Identify your users with Plug | DevRev | Docs" + }, + { + "id": "ART-15506_KNOWLEDGE_NODE-24", + "text": "[\\'+1234567890\\'] |\\n| 10 | } |\\n| 11 | } |\\n| 12 | }); |\\n```\\n\\nYou can add or update the data in `user_traits` by using the `updateIdentity` method on the Plug SDK. Attached is a sample code snippet for the same.\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | window.plugSDK.updateIdentity({ |\\n| 2 | user_traits: { |\\n| 3 | custom_fields?: object; // optional |\\n| 4 | display_name?: string; // optional |\\n| 5 | email?: string; // optional |\\n| 6 | phone_numbers?: string[]; // optional |\\n| 7 | } |\\n|", + "title": "Identify your users with Plug | DevRev | Docs" + }, { "id": "ART-3109_KNOWLEDGE_NODE-27", "text": "shown at the top of your widget.\\n* Search: Enables users to search for articles through the widget.\\n* Search bar title: The text shown in the search bar.\\n\\n* [Turing search](#turing-search): Computer answers search queries of the users.\\n* Open articles in Plug: Open your linked articles within the Plug Widget.\\n* Recent conversations: Show recent conversations card on Plug Home.\\n* Recent tickets: Show recent tickets card on Plug Home.\\n* Add a Card: Create a Spotlight card to announce or", "title": "Plug widget customization | Computer for Your Customers | DevRev" }, { - "id": "ART-3109_KNOWLEDGE_NODE-24", - "text": "[Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Configuration](#configuration)\\n* [Styling](#styling)\\n* [Layout](#layout)\\n* [\\\\*\\\\*Turing search\\\\*\\\\*](#turing-search)\\n* [Spotlight cards](#spotlight-cards)\\n* [Add a spotlight card](#add-a-spotlight-card)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Your Customers](/docs/plug)\\n[Plug widget customization](/docs/plug/customize)\\n\\nPlug widget customization\\n=========================\\n\\nYou can customize the look and feel of your", + "id": "ART-3109_KNOWLEDGE_NODE-30", + "text": "up.\\n\\n[PreviousComputer for Your Customers](/docs/plug)[NextSession analytics](/docs/plug/session-analytics-intro)\\n\\n#### On this page\\n\\n* [Configuration](#configuration)\\n* [Styling](#styling)\\n* [Layout](#layout)\\n* [Spotlight cards](#spotlight-cards)\\n* [Add a spotlight card](#add-a-spotlight-card)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer", "title": "Plug widget customization | Computer for Your Customers | DevRev" }, { - "id": "ART-10697_KNOWLEDGE_NODE-31", - "text": "boosting engagement and reducing repetitive inquiries. To enable Plug, go to **Settings > Portal Settings**, activate Plug widget, and **Save** and **Publish**.\\n\\n![]()\\xc2\\xa0For more information about *Support App*, refer to the following articles: \\xe2\\x80\\xa3 [Support snap-ins | Support](/docs/product/snapins-support) \\xe2\\x80\\xa3 [Support best practices | Support](/docs/product/support-bp) \\xe2\\x80\\xa3 [Support](/docs/product/support) \\xe2\\x80\\xa3", + "id": "ART-10697_KNOWLEDGE_NODE-30", + "text": "New filtering options let agents view tickets tied to specific articles, while updated analytics reveal the most and least linked articles, improving knowledge sharing and support strategy.\\n* Plug is our live chat widget designed for real-time conversations in your customer portal. It reduces ticket volume by resolving common queries instantly, enhancing self-service and speeding up issue resolution. Use spotlight cards or banners to notify customers about incidents, updates, or promotions,", "title": "February 2025 | Changelog | DevRev" }, { - "id": "ART-1360_KNOWLEDGE_NODE-1", - "text": "application/json\" \\\\ |\\n| > | -d \\'{}\\' |\\n```\\n\\n[Try it](/api-reference/parts/update?explorer=true)\\n\\n200Successful\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"part\": { |\\n| 3 | \"created_by\": { |\\n| 4 | \"display_id\": \"string\", |\\n| 5 | \"id\": \"string\", |\\n| 6 | \"display_name\": \"string\", |\\n| 7 | \"display_picture\": { |\\n| 8 | \"display_id\": \"string\", |\\n| 9 | \"id\": \"string\", |\\n| 10 | \"file\": { |\\n| 11 | \"type\": \"string\", |\\n| 12 | \"name\": \"string\", |\\n| 13 | \"size\": 1 |\\n| 14 | } |\\n| 15", - "title": "Update Part | DevRev | Docs" - }, - { - "id": "ART-1290_KNOWLEDGE_NODE-17", - "text": "[Card](/snapin-development/references/snapkit#card) snap.\\n\\n![]()\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"elements\": [ |\\n| 3 | { |\\n| 4 | \"direction\": \"row\", |\\n| 5 | \"elements\": [ |\\n| 6 | { |\\n| 7 | \"action_id\": \"PRIMARY\", |\\n| 8 | \"action_type\": \"remote\", |\\n| 9 | \"style\": \"primary\", |\\n| 10 | \"text\": { |\\n| 11 | \"text\": \"PRIMARY\", |\\n| 12 | \"type\": \"plain_text\" |\\n| 13 | }, |\\n| 14 | \"type\": \"button\", |\\n| 15 | \"value\": \"PRIMARY\" |\\n| 16 | }, |\\n| 17 | { |\\n| 18 | \"action_id\":", - "title": "Snapkit | DevRev | Docs" - }, - { - "id": "ART-2897_KNOWLEDGE_NODE-24", - "text": "\"Credit Card\", \\n 6| \"expiry_date\" : \"2024-12-12\" \\n 7| } \\n 8| window.plugSDK.trackEvent(\"signed_up\",properties)\\n[/code] \\n \\nTo learn more about tracking events, visit [Track events](/public/sdks/web/track-events).\\n\\n## Restart session recording\\n\\nThe `restartSessionRecording` method is used to restart session recording.\\n\\n[code]\\n\\n 1| window.plugSDK.restartSessionRecording(); \\n ---|---\\n[/code] \\n \\nWas this page helpful?YesNo\\n\\n[Custom implementationUp", - "title": "Methods \u2014 DevRev | Docs" + "id": "ART-1551_KNOWLEDGE_NODE-469", + "text": "Optional\\n\\nUpdated display name for the system user.\\n\\ndisplay_picture string Optional\\n\\nArtifact ID of the system user\\xe2\\x80\\x99s new display picture.\\n\\nfull_name string Optional\\n\\nUpdated full name for the system user.\\n\\nResponse.\\n\\nThis endpoint returns an object.\\nsys_user object\\nShow 12 properties\\nAPI Reference tags Create.\\n\\nPOST https://api.devrev.ai / tags.create\\n\\nCreates a new tag, which is used to create associations between objects and a logical concept denoted by the", + "title": "Update (Beta) \u2014 DevRev | Docs" }, { - "id": "ART-15496_KNOWLEDGE_NODE-1", - "text": "SDK](/sdks/web/installation)\\n\\nCustom implementation\\n=====================\\n\\nCopy page\\n\\nPlug has a completely [no-code way](https://docs.devrev.ai/plug/customize#branding-style-and-layout) of changing the look and interaction of your widget. In case you wish to make your Plug widget more interactive and customized to how your app is structured, you can use these customization properties to set up your widget.\\n\\n##### \\n\\nIf you have customized these properties of the widget through the", - "title": "Custom implementation | DevRev | Docs" + "id": "ART-1790_KNOWLEDGE_NODE-412", + "text": "sys-users.update\\nUpdates the system user.\\nRequest.\\n\\nThis endpoint expects an object.\\nid string Required\\nThe ID of system user to update.\\ndisplay_name string Optional\\nUpdated display name for the system user.\\ndisplay_picture string Optional\\nArtifact ID of the system user\\'s new display picture.\\nfull_name string Optional\\nUpdated full name for the system user.\\nResponse.\\n\\nThis endpoint returns an object.\\nsys_user object\\nShow 12 properties\\nAPI Reference tags Create.\\n\\nPOST", + "title": "List Post \u2014 DevRev | Docs" }, { - "id": "ART-15506_KNOWLEDGE_NODE-25", - "text": "8 | }) |\\n```\\n\\n##### \\n\\nNote that the `updateIdentity` method cannot be used to update the `user_ref` of the user. In order to change the identity of the user completely to a new one, you need to re-initialize Plug. See the [Changing the user identity](/sdks/web/user-identity#changing-the-user-identity) section for more details.\\n\\nChanging the user identity\\n--------------------------\\n\\nAs described in the above sections, to identify a user, you need to initialize the Plug SDK with the", - "title": "Identify your users with Plug | DevRev | Docs" + "id": "ART-1597_KNOWLEDGE_NODE-319", + "text": "information.\\n\\nRequest.\\n\\nThis endpoint expects an object.\\nCapability Show 9 properties\\nOR\\nEnhancement Show 10 properties\\nOR\\nFeature Show 9 properties\\nOR\\nNone Show 9 properties\\nOR\\nProduct Show 9 properties\\nResponse.\\n\\nThis endpoint returns an object.\\npart object\\nShow 4 variants\\nPOST / parts.update\\ncURL\\n$ curl -X POST https://api.devrev.ai/parts.update \\\\ > -H \" Authorization: Bearer \" \\\\ > -H \" Content-Type: application/json \" \\\\ > -d \\' { > \"type\": \"capability\", >", + "title": "Update \u2014 DevRev | Docs" } ] }, @@ -4932,54 +4932,54 @@ "query": "ticket resolution time close to breach after ticket resolved", "retrievals": [ { - "id": "ART-1979_KNOWLEDGE_NODE-48", - "text": "engineer can directly close and cancel such tickets.\\n* *Accepted* (A)\\n\\n The ticket requires a new feature development on the platform for resolution. However, there is no active work on the ticket but the feature addition required to meet the ticket will be done in the future. This stage is added to ensure that feature requests do not linger in the APA queue and to ensure that the right features are prioritized during roadmap planning.\\n* *Resolved* (R)\\n\\n The goal target stage for", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1986_KNOWLEDGE_NODE-43", + "text": "tickets that have been in breach for more than one hour.\\n + **Over a day**: Filters all tickets that have been in breach for more than one day.\\n + **Custom**: Filters all tickets that have been in breach from a given date.\\n* **Will breach in**:\\n\\n + **Any**: Filters all tickets that are currently not in breach.\\n + **Over an hour**: Filters all tickets that have less than 1 hour left for breach.\\n + **Over a day**: Filters all tickets that have less than 1 day left for breach.\\n +", + "title": "Service-level agreement | Computer for Support Teams | DevRev" }, { - "id": "ART-1979_KNOWLEDGE_NODE-47", - "text": "validate the fix with the user and then to *resolved*. If the user wants to cancel the ticket then the stage moves to *canceled*.\\n\\n**Closed**\\n\\n* *Canceled* (C)\\n\\n The ticket is determined to be invalid either by the user or the customer experience engineer. In certain scenarios, a ticket may have been created by accident and may be canceled by the creator. In other scenarios, garbage tickets may be created through automation or because of spam. Automation or the customer experience", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1972_KNOWLEDGE_NODE-25", + "text": "SLA breaches**\\n\\n Number of Active Tickets that breached an SLA.\\n* **Tickets with SLA warning**\\n\\n Number of Active Tickets that about to breach an SLA.\\n* **Resolution compliance rate**\\n\\n Percentage of tickets where Resolution SLA was met out of all tickets where Resolution SLA is applied.\\n* **First Response compliance rate**\\n\\n Percentage of tickets where First Response SLA was met out of all tickets where First Response SLA is applied.\\n* **Next Response compliance rate**\\n\\n", + "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1986_KNOWLEDGE_NODE-43", - "text": "tickets that have been in breach for more than one hour.\\n + **Over a day**: Filters all tickets that have been in breach for more than one day.\\n + **Custom**: Filters all tickets that have been in breach from a given date.\\n* **Will breach in**:\\n\\n + **Any**: Filters all tickets that are currently not in breach.\\n + **Over an hour**: Filters all tickets that have less than 1 hour left for breach.\\n + **Over a day**: Filters all tickets that have less than 1 day left for breach.\\n +", - "title": "Service-level agreement | Computer for Support Teams | DevRev" + "id": "ART-1972_KNOWLEDGE_NODE-26", + "text": "Percentage of tickets where Next Response SLA was met out of all tickets where Next Response SLA is applied.\\n* **SLA compliance rate**\\n\\n Percentage of tickets where SLA was met, missed, or still in progress out of all tickets where SLA is applied.\\n* **SLA breaches by Customer tier**\\n\\n Number of Tickets where SLA was breached distributed over customer type and severity.\\n* **SLA Breached Tickets per Customer**\\n\\n Number of Tickets with SLA breaches for each customer.\\n* **SLA breaches", + "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1979_KNOWLEDGE_NODE-41", - "text": "progress\\n\\n\\n\\nOpen\\n\\n\\n\\nEscalate\\n\\n\\n\\nValidate the fix\\n\\n\\n\\nAdditional detail needed\\n\\n\\n\\nCustomer responds\\n\\n\\n\\nStart\\n\\n\\n\\nFeature request accepted\\n\\n\\n\\nResolved\\n\\n\\n\\nNot valid\\n\\n\\n\\nQueued\\n\\n\\n\\nWork in progress\\n\\n\\n\\nAwaiting product assist\\n\\n\\n\\nAwaiting development\\n\\n\\n\\nAwating customer response\\n\\n\\n\\nIn development\\n\\n\\n\\nAccepted\\n\\n\\n\\nResolved\\n\\n\\n\\nCanceled\\n```\\n\\n**Open**\\n\\n* *Queued* (Q)\\n The initial stage for all tickets. When a new ticket is created,", - "title": "Tickets | Computer for Support Teams | DevRev" + "id": "ART-1970_KNOWLEDGE_NODE-26", + "text": "Conversations with SLA breaches with breach type for ticket owners.\\n* **SLA breaches w.r.t. Customer Tier**\\n\\n Number of Conversations with SLA breaches per owner.\\n* **Average Resolution Time**\\n\\n Indicates the average time taken to resolve requests for each conversation owner.\\n\\n[PreviousConversation-SLA Analytics](/docs/dashboards/conversation-sla-analytics)[NextTicket insights](/docs/dashboards/ticket-insights)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about", + "title": "Conversation-Team Performance | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-2012_KNOWLEDGE_NODE-24", - "text": "customer comments on permanently closed tickets. It allows you to configure the time after which a ticket stage should be marked as closed and creates a new follow-up ticket along with all the attachments and a custom message to let the customers know that the ticket is permanently closed automatically if required.\\n\\nFor more information, refer to the [Follow-up ticket snap-in](https://marketplace.devrev.ai/followup?) on the DevRev marketplace.\\n\\nLet\\xe2\\x80\\x99s say your ticket has the", - "title": "Follow-up ticket | Automate | Snap-ins | DevRev" + "id": "ART-1977_KNOWLEDGE_NODE-26", + "text": "owner.\\n* **Average Resolution Time**\\n\\n Average time taken to resolve tickets by ticket owners.\\n\\n[PreviousTicket-SLA Analytics](/docs/dashboards/ticket-sla-analytics)[NextConversations](/docs/product/conversation)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet Computer](/meet-computer)\\n* [How Computer works](/how-computer-works)\\n\\nApps\\n\\n* [For Support Teams](/for-support-teams)\\n* [For", + "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev" }, { - "id": "ART-1986_KNOWLEDGE_NODE-41", - "text": "resolution is due in one day, the vista displays five minutes. In the case where the first response isn't provided within five minutes, the timer displays negative values (such as -10m), which indicates that it's been 10 minutes since the first response was due. Conversations or tickets can also be grouped by SLA stages.\\n\\nIn the **Detailed View**, all metrics applied to the ticket or conversation can be viewed along with their current stage.\\n\\nFiltering tickets by Next SLA", + "id": "ART-1986_KNOWLEDGE_NODE-42", + "text": "Target\\n------------------------------------\\n\\nIn order to filter tickets based on SLA, you can use the **Next SLA Target** filter.\\nHere\\xe2\\x80\\x99s how the filter works:\\n\\n* **All**: Filters all tickets that currently have an SLA applied to them. It will not filter tickets that had an SLA applied in the past and have been completed.\\n* **Breached since**:\\n\\n + **Any**: Filters all tickets that breached SLA, irrespective of when they were breached.\\n + **Over an hour**: Filters all", "title": "Service-level agreement | Computer for Support Teams | DevRev" }, { - "id": "ART-1981_KNOWLEDGE_NODE-32", - "text": "assigned; tickets should be assigned only to revenue team members.\\n\\nManage tickets\\n--------------\\n\\n* Regularly follow up with the customer on any ticket in the *awaiting customer* stage. If no response is forthcoming in a reasonable amount of time as defined by your SLA, mark the ticket as *resolved*.\\n* Critically assess the severity of the ticket according to the impact on the customer\\xe2\\x80\\x99s business. Blockers are those tickets that are critical to customer adoption or operations.", - "title": "Support best practices | Computer for Support Teams | DevRev" + "id": "ART-1004_KNOWLEDGE_NODE-7", + "text": "time it takes for a specific support engineer to resolve a customer issue from the moment it\\xe2\\x80\\x99s reported.\\n \\n \\n Calculation\\n \\n (Sum of resolution times for all resolved tickets by the engineer) / (Total number of resolved tickets by the engineer)\\n \\n \\n\\n\\nSELECT engineer_id, AVG(TIMESTAMPDIFF(MINUTE, t.created_at, t.resolved_at)) AS IndividualAverageResolutionTime\\nFROM tickets t\\nWHERE t.status = 'resolved'\\nAND EXTRACT(@period FROM t.created_at) =", + "title": "Understanding a Support Engineer's Pain Points and KPIs" }, { - "id": "ART-1986_KNOWLEDGE_NODE-36", - "text": "conversations:\\n\\n**Tickets**\\n\\n| Metric | Default conditions | Start event | End event | Pause event | Resume event |\\n| --- | --- | --- | --- | --- | --- |\\n| First response time | * Ticket created by a customer * The ticket was created by a customer experience engineer but reported by a customer | Ticket created | * The agent added a comment to the customer chat * The ticket is moved to Awaiting Customer Response, or the ticket is closed | | |\\n| Next response time | * Ticket created by", + "id": "ART-1986_KNOWLEDGE_NODE-41", + "text": "resolution is due in one day, the vista displays five minutes. In the case where the first response isn't provided within five minutes, the timer displays negative values (such as -10m), which indicates that it's been 10 minutes since the first response was due. Conversations or tickets can also be grouped by SLA stages.\\n\\nIn the **Detailed View**, all metrics applied to the ticket or conversation can be viewed along with their current stage.\\n\\nFiltering tickets by Next SLA", "title": "Service-level agreement | Computer for Support Teams | DevRev" }, { - "id": "ART-1986_KNOWLEDGE_NODE-38", - "text": "ticket is moved to the Closed state | The ticket was moved to Awaiting Customer Response state | The ticket moves to any state except Closed |\\n\\n**Conversations**\\n\\n| Metric | Default conditions | Start event | End event | Pause event | Resume event |\\n| --- | --- | --- | --- | --- | --- |\\n| First response time | The first message sent by a customer | Conversation created | * The agent replied to the conversation * The conversation is moved to Waiting on User/Resolved * The conversation is", - "title": "Service-level agreement | Computer for Support Teams | DevRev" + "id": "ART-2695_KNOWLEDGE_NODE-35", + "text": "the breach occurred.\\n + **Over an Hour**: Filters issues that have been in breach for more than one hour.\\n + **Over a Day**: Filters issues that have been in breach for more than one day.\\n + **Custom**: Filters issues that have been in breach since a specified date.\\n* **Will Breach In:**\\n\\n + **Any**: Filters all issues that are currently not in breach.\\n + **Over an Hour**: Filters issues with less than one hour left before breaching.\\n + **Over a Day**: Filters issues with less", + "title": "Operational-level agreement | Computer for Support Teams | DevRev" }, { - "id": "ART-1975_KNOWLEDGE_NODE-25", - "text": "insights\\n===============\\n\\n* **Tickets created**\\n\\n The number of tickets created within the date range that meet the other filtering criteria.\\n* **Active tickets**\\n\\n The number of tickets that are in the Open or In Progress state.\\n* **Closed tickets**\\n\\n The number of tickets closed within the date range that meet the other filtering criteria.\\n* **Average resolution time**\\n\\n The average time taken to resolve tickets.\\n* **Median resolution time**\\n\\n The median time taken to", - "title": "Ticket insights | Support analytics | Computer for Support Teams | DevRev" + "id": "ART-1986_KNOWLEDGE_NODE-35", + "text": "of schedule when they remain at the same stage, but time spent out of schedule isn't included in the calculation.\\n\\n![]()\\n\\nIf the customer account is updated after the ticket is created, all SLA metrics will be recalculated based on the updated customer account information. Any previous SLA breaches or achievements will be discarded, and new calculations will be applied according to the updated SLA.\\n\\nThe following table describes how each metric works for tickets and", + "title": "Service-level agreement | Computer for Support Teams | DevRev" } ] }, @@ -4987,44 +4987,44 @@ "query_id": "b580c85d-067a-47f0-951d-58b0360254a1", "query": "link single contact to multiple accounts using csv import", "retrievals": [ - { - "id": "ART-2575_KNOWLEDGE_NODE-26", - "text": "the sample CSV.\\n\\n ![]()\\n\\n Columns with headers that do not conform to the predefined schema will not be imported.\\n4. In the dialog box, upload the populated CSV file.\\n5. (Optional) Configure import settings.\\n\\n * **Add tags to identify new imports**: Attach any existing tags to new imports for easy identification post-import.\\n * **Update existing accounts**: Select to update existing accounts by appending new values, rather than creating new objects.\\n6. Click **Import** to", - "title": "Account and contact import | Computer for Growth Teams | DevRev" - }, { "id": "ART-2575_KNOWLEDGE_NODE-25", "text": "contact import\\n==========================\\n\\nYou can upload and manage accounts and contacts by importing data from CSV files.\\n\\n![]()\\n\\nImport data\\n-----------\\n\\n1. Go to the top-right corner of the **Accounts and Contacts** vista and click the \\xe2\\x9a\\xa1 button.\\n2. Click **Download sample CSV**. The sample CSV file includes all the necessary headers and sample values supported by DevRev.\\n3. Open the downloaded sample CSV file. Fill in the required headers and values as specified in", "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-2575_KNOWLEDGE_NODE-30", - "text": "CSV import feature currently supports a maximum of 500 rows per request. For larger datasets, split the CSV into smaller files containing up to 500 rows each.\\n\\nTroubleshooting\\n---------------\\n\\nThe following table describes the errors you may encounter during import and how to troubleshoot them:\\n\\n| Error | Resolution |\\n| --- | --- |\\n| Invalid format for phone numbers | Validate the phone number is in E164 Format. For example, +12014631690. |\\n| Tags not found in organization |", + "id": "ART-2575_KNOWLEDGE_NODE-27", + "text": "initiate the process. Notifications about successful imports and any errors will appear in the form of toasts at the bottom left.\\n\\nCSV file requirements\\n---------------------\\n\\n### Mandatory fields\\n\\nTo ensure a successful import, certain fields are required.\\n\\n**Accounts**:\\n\\n* display\\\\_name\\n* external\\\\_refs (a unique identifier for the account, such as the company\\'s website domain.)\\n\\n**Contacts:**\\n\\n* display\\\\_name\\n* external\\\\_ref (a unique identifier for the contact, such as", "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-2575_KNOWLEDGE_NODE-28", - "text": "a database identifier or an email address.)\\n* account\\\\_external\\\\_reference (the external reference of the contact\\'s parent account)\\n\\n### Array fields\\n\\nFor fields that accept multiple values, such as **owners** and **industry**, values should be separated by commas (,). For example, Agriculture and Forestry should be written as Agriculture,Forestry.\\n\\n![]()\\n\\nIf a value contains a comma, enclose it in backticks. For example, enter \"Rail, Bus & Taxi\" as `Rail, Bus & Taxi`.\\n\\n###", + "id": "ART-2575_KNOWLEDGE_NODE-26", + "text": "the sample CSV.\\n\\n ![]()\\n\\n Columns with headers that do not conform to the predefined schema will not be imported.\\n4. In the dialog box, upload the populated CSV file.\\n5. (Optional) Configure import settings.\\n\\n * **Add tags to identify new imports**: Attach any existing tags to new imports for easy identification post-import.\\n * **Update existing accounts**: Select to update existing accounts by appending new values, rather than creating new objects.\\n6. Click **Import** to", "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-2575_KNOWLEDGE_NODE-27", - "text": "initiate the process. Notifications about successful imports and any errors will appear in the form of toasts at the bottom left.\\n\\nCSV file requirements\\n---------------------\\n\\n### Mandatory fields\\n\\nTo ensure a successful import, certain fields are required.\\n\\n**Accounts**:\\n\\n* display\\\\_name\\n* external\\\\_refs (a unique identifier for the account, such as the company\\'s website domain.)\\n\\n**Contacts:**\\n\\n* display\\\\_name\\n* external\\\\_ref (a unique identifier for the contact, such as", - "title": "Account and contact import | Computer for Growth Teams | DevRev" + "id": "ART-2000_KNOWLEDGE_NODE-26", + "text": "description, websites, domains, type, annual revenue, forecast category, tags, tier, etc.\\n3. Fill in the required fields like external references and owner of the account.\\n4. Click **Create**.\\n\\n### Bulk import accounts\\n\\nTo bulk import accounts, see [Account and contact import](/docs/product/account-contact-import).\\n\\nYou can also use [AirSync](https://docs.devrev.ai/import) to migrate your accounts from various platforms such as Hubspot, Salesforce, Zendesk, Jira, Linear, ServiceNow and", + "title": "Accounts | Computer for Growth Teams | DevRev" }, { - "id": "ART-2575_KNOWLEDGE_NODE-32", - "text": "required headers | Include headers for the required fields in the CSV. |\\n\\n[PreviousContacts](/docs/product/customers)[NextGrow snap-ins](/docs/product/snapins-grow)\\n\\n#### On this page\\n\\n* [Import data](#import-data)\\n* [CSV file requirements](#csv-file-requirements)\\n* [Mandatory fields](#mandatory-fields)\\n* [Array fields](#array-fields)\\n* [Tags](#tags)\\n* [Owner fields](#owner-fields)\\n* [Limitations](#limitations)\\n* [Troubleshooting](#troubleshooting)\\n\\n[Enterprise grade security to", + "id": "ART-2575_KNOWLEDGE_NODE-30", + "text": "CSV import feature currently supports a maximum of 500 rows per request. For larger datasets, split the CSV into smaller files containing up to 500 rows each.\\n\\nTroubleshooting\\n---------------\\n\\nThe following table describes the errors you may encounter during import and how to troubleshoot them:\\n\\n| Error | Resolution |\\n| --- | --- |\\n| Invalid format for phone numbers | Validate the phone number is in E164 Format. For example, +12014631690. |\\n| Tags not found in organization |", "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-2575_KNOWLEDGE_NODE-31", - "text": "Pre-create the tag in the app before importing. |\\n| Account with external reference \\'non-existing-account\\' not found | Ensure the parent account exists in the app before importing. |\\n| Mandatory field \\'external\\\\_refs\\' is empty | Fill all mandatory fields in the CSV. |\\n| Found non utf-8 character | Export the CSV with UTF-8 encoding. |\\n| Input CSV has no rows | Ensure the CSV contains data rows. |\\n| No user found with email | Ensure the email is correct and not a name. |\\n| Missing", + "id": "ART-2002_KNOWLEDGE_NODE-27", + "text": "Plug, email, and WhatsApp) can be matched to the right customer record.\\n\\n![]()\\n\\nYou can create a contact using DevRev's rev-users.create API. Follow the [Create accounts and contacts in DevRev](https://developer.devrev.ai/beta/guides/create-accounts-and-contacts-in-dev-rev) tutorial.\\n\\n### Bulk import customer records\\n\\nTo bulk import customer records, see [Account and contact import](/docs/product/account-contact-import).\\n\\nYou can also use [AirSync](https://docs.devrev.ai/import) to", + "title": "Contacts | Computer for Growth Teams | DevRev" + }, + { + "id": "ART-2575_KNOWLEDGE_NODE-28", + "text": "a database identifier or an email address.)\\n* account\\\\_external\\\\_reference (the external reference of the contact\\'s parent account)\\n\\n### Array fields\\n\\nFor fields that accept multiple values, such as **owners** and **industry**, values should be separated by commas (,). For example, Agriculture and Forestry should be written as Agriculture,Forestry.\\n\\n![]()\\n\\nIf a value contains a comma, enclose it in backticks. For example, enter \"Rail, Bus & Taxi\" as `Rail, Bus & Taxi`.\\n\\n###", "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { - "id": "ART-2575_KNOWLEDGE_NODE-11", - "text": "uploader](/docs/automations/csv-work-item-uploader)\\n - [CSV comments uploader](/docs/automations/csv-comments-uploader)\\n - [CSV commands uploader](/docs/automations/csv-commands-uploader)\\n - [Descope identity validation](/docs/automations/descope-identity-validation)\\n - [Effort logger](/docs/automations/effort-logger)\\n - [HTTP archive file upload & sanitization](/docs/automations/har-sanitization)\\n - [Link preview](/docs/automations/link-preview)\\n - [Org tags", + "id": "ART-2575_KNOWLEDGE_NODE-31", + "text": "Pre-create the tag in the app before importing. |\\n| Account with external reference \\'non-existing-account\\' not found | Ensure the parent account exists in the app before importing. |\\n| Mandatory field \\'external\\\\_refs\\' is empty | Fill all mandatory fields in the CSV. |\\n| Found non utf-8 character | Export the CSV with UTF-8 encoding. |\\n| Input CSV has no rows | Ensure the CSV contains data rows. |\\n| No user found with email | Ensure the email is correct and not a name. |\\n| Missing", "title": "Account and contact import | Computer for Growth Teams | DevRev" }, { @@ -5044,53 +5044,53 @@ "query": "how to build an agent", "retrievals": [ { - "id": "ART-15618_KNOWLEDGE_NODE-9", - "text": "reduced barriers to entry\\n\\nAgentExchange Marketplace : Largest marketplace of ready-made agents, actions, and topics for faster deployment\\n\\nEnterprise Security : Field-based data masking, RBAC, Einstein Trust Layer battle-tested at Fortune 100 scale\\n\\nMultilingual Support : Supports AI prompts and agent behavior across 25+ languages natively\\n\\nNative Integrations : Extensive integration ecosystem due to market dominance and longevity\\n\\nAdvanced Tooling : Deep debugging tools, bulk", - "title": "SF Agentforce - Competitive - for the PLuG on website" + "id": "ART-4206_KNOWLEDGE_NODE-23", + "text": "events to see which skills were invoked\\n* Check if any skills returned error outputs\\n* Verify your agent\\xe2\\x80\\x99s configuration in the DevRev agent builder\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/beta/guides/account-creation)[#### Links\\n\\nNext](/beta/guides/links)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", + "title": "Agents async API | DevRev | Docs" }, { - "id": "ART-13178_KNOWLEDGE_NODE-69", - "text": "data.\\n\\n * Define your agent\\xe2\\x80\\x99s specific goal and purpose.\\n * Write clear instructions for its operation.\\n * Connect your business knowledge and existing workflows.\\n\\nEvery team gains powerful capabilities without technical skills. It\\xe2\\x80\\x99s like having expert analysts and operators working 24/7.\\n\\nNeed to route customer requests? Create sales materials? Recommend support actions? All possible without writing a single line of code, including the generation of original", - "title": "Understanding Agentic AI: Capabilities and Implications for the Future" + "id": "ART-4206_KNOWLEDGE_NODE-15", + "text": "\"don:core:dvrv-us-1:devo/xyz:ai_agent_session/3810\", |\\n| 13 | \"session_object\": \"unique_conversation_identifier\" |\\n| 14 | }, |\\n| 15 | \"type\": \"ai_agent_response\" |\\n| 16 | } |\\n| 17 | } |\\n```\\n\\nImplementation patterns\\n-----------------------\\n\\n### Custom applications\\n\\n##### \\n\\nThis pattern is ideal for custom chat interfaces, backend systems, or any\\napplication that needs to interact with DevRev agents.\\n\\nFor building custom applications with the async API:\\n\\n1. Create a webhook", + "title": "Agents async API | DevRev | Docs" }, { - "id": "ART-15618_KNOWLEDGE_NODE-15", - "text": "behavior\\n\\nDevRev : AI-native architecture offering outcome-driven workflows and intuitive, conversational agents User Experience\\n\\nAgentforce : Multiple tabs, nested screens, fragmented multi-stage agent creation process\\n\\nDevRev : Consolidated actions, modern agent-first UX, single cohesive screen for agent building Learning Capabilities\\n\\nAgentforce : Manual improvements, no learning from real usage or customer interactions\\n\\nDevRev : Auto-learning by identifying knowledge gaps", - "title": "SF Agentforce - Competitive - for the PLuG on website" + "id": "ART-12391_KNOWLEDGE_NODE-26", + "text": "with *Conversation created* or *Ticket\\n created*.\\n\\n This trigger is whenever a conversation or ticket gets created by your\\n customers from Portal or Plug, or any of your integration which supports\\n conversation syncing, like Slack, WhatsApp, or email. You can find the\\n integrations in our marketplace.\\n2. Add the *Talk to agent* step as the next action. Fill all the required values\\n of this step. The values needed to fill here are explained below.\\n3. Deploy the", + "title": "Conversational workflows | Workflows | Computer by DevRev | DevRev" }, { - "id": "ART-13178_KNOWLEDGE_NODE-19", - "text": "interact with the agentic AI system using natural language. Unlike traditional systems requiring precise commands, you communicate conversationally. The autonomous agents interpret your intent and may ask clarifying questions.\\n 2. **Agent system plans, allocates, and executes work:** The system transforms your request into [structured workflows](/blog/native-workflow-engine), dividing it into tasks and subtasks. A managing component assigns these to specialized subagents.\\n 3. **Agent system", - "title": "Understanding Agentic AI: Capabilities and Implications for the Future" + "id": "ART-12391_KNOWLEDGE_NODE-27", + "text": "workflow.\\n\\nNow, your workflow runs whenever a conversation or a ticket gets created and it\\nassigns it to an AI agent, which handles the conversation. No brittle rules.\\n\\nFind below a detailed explanation of all the fields needed to configure in the\\n\"Talk to Agent\" Step\\n\\n| Parameter | Type | Description |\\n| --- | --- | --- |\\n| agent | String | ID of the AI agent to use. Use the dropdown to select one. |\\n| object | String | ID of the conversation or ticket where the agent operate.s |\\n|", + "title": "Conversational workflows | Workflows | Computer by DevRev | DevRev" }, { - "id": "ART-15618_KNOWLEDGE_NODE-10", - "text": "testing via CSV uploads, auto-generation of test cases\\n\\nOutbound Capabilities : Supports automated outreach campaigns and lead nurturing sequences\\n\\nRich UI Elements : Agents can display buttons, forms, and visuals across different platforms\\n\\nMuleSoft Integration : Can turn existing APIs into agent actions using plain language Agentforce Weaknesses\\n\\nForced Migration : With Live Agent being deprecated, customers are pushed toward Agentforce with a \"take it or leave it\"", - "title": "SF Agentforce - Competitive - for the PLuG on website" + "id": "ART-4206_KNOWLEDGE_NODE-4", + "text": "create a webhook to receive agent execution events:\\n\\nBashJavaScript\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl --location \\'https://api.devrev.ai/internal/webhooks.create\\' \\\\ |\\n| > | --header \\'Content-Type: application/json\\' \\\\ |\\n| > | --header \\'Authorization: Bearer \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"url\": \"https://your-application.com/webhook-endpoint\", |\\n| > | \"event_types\": [\"ai_agent_response\"], |\\n| > | \"headers\": [ |\\n| > | { |\\n| > | \"name\": \"x-api-key\", |\\n| >", + "title": "Agents async API | DevRev | Docs" }, { - "id": "ART-13178_KNOWLEDGE_NODE-39", - "text": "agents incorporate medical knowledge and compliance requirements, while financial agents understand regulatory frameworks and transaction patterns.\\n\\n### 3\\\\. Orchestration frameworks\\n\\nOrchestration components coordinate multiple AI agents working together. They manage workflows, handle exceptions, and maintain performance standards. This capability is crucial when deploying complex multi-agent systems across departments.\\n\\n### 4\\\\. Integration capabilities\\n\\nYour platform must connect", - "title": "Understanding Agentic AI: Capabilities and Implications for the Future" + "id": "ART-4167_KNOWLEDGE_NODE-3", + "text": "agents summarize critical context and escalate to the right person.\\n\\n![]()\\n\\nSet up is simple. Maintenance is simpler.\\n\\nSet up Computer in minutes and build agents using plain English. No PhD in AI required.\\n\\n### A few lines of code\\n\\nA few lines of code\\n\\nGet Computer's CX agent running with just a few lines of code and automatically track real performance metrics to measure progress against your goals.\\n\\n![]()\\n\\n### Built-in integrations\\n\\n### Agent", + "title": "Computer for Your Customers: AI Self-Service Support | DevRev" }, { - "id": "ART-15618_KNOWLEDGE_NODE-8", - "text": "doesn\\'t inherit legacy tech debt.\\n\\nShield 2: AgentExchange Offers the Largest Marketplace\\n\\nSalesforce buyers can customize and use prebuilt agents across industries, making it easy to go live quickly. DevRev offers a growing set of templates, but the depth and breadth of AgentExchange are currently unmatched. Detailed Strengths and Weaknesses Analysis Agentforce Strengths\\n\\nMarket Position : Service Cloud is one of the most common systems of record, making Agentforce an easy upsell with", - "title": "SF Agentforce - Competitive - for the PLuG on website" + "id": "ART-15799_KNOWLEDGE_NODE-3", + "text": "agents summarize critical context and escalate to the right person.\\n\\n![]()\\n\\nSet up is simple. Maintenance is simpler.\\n\\nSet up Computer in minutes and build agents using plain English. No PhD in AI required.\\n\\n### A few lines of code\\n\\nA few lines of code\\n\\nGet Computer's CX agent running with just a few lines of code and automatically track real performance metrics to measure progress against your goals.\\n\\n![]()\\n\\n### Built-in integrations\\n\\n### Agent", + "title": "Computer for Your Customers: AI Self-Service Support | DevRev" }, { - "id": "ART-15618_KNOWLEDGE_NODE-11", - "text": "approach\\n\\nPlatform Dependency : Cannot run without Salesforce as system of record, incompatible with modern tools like Zendesk and Intercom\\n\\nComplex Setup : Overwhelms users with dozens of setup steps and dependencies, steep learning curve even for skilled users\\n\\nLegacy Architecture : Built on traditional CRM architecture with rigid underlying schema resulting in slower, more brittle agents\\n\\nPartner Dependency : 70% of implementations require partners, demanding heavy admin", - "title": "SF Agentforce - Competitive - for the PLuG on website" + "id": "ART-13178_KNOWLEDGE_NODE-68", + "text": "across society.\\n\\n## Future outlook: Evolving agentic AI with DevRev\\n\\nThe future of agentic AI promises autonomous agents collaboration, advanced reasoning capabilities, and seamless ecosystem integration.\\n\\nDevRev\\xe2\\x80\\x99s innovation positions organizations to capitalize on these emerging trends.\\n\\nBuild powerful agents without coding expertise with DevRev\\xe2\\x80\\x99s no-code tools, anyone can create AI intelligent agents in three simple steps that can analyze vast amounts of", + "title": "Understanding Agentic AI: Capabilities and Implications for the Future" }, { - "id": "ART-13178_KNOWLEDGE_NODE-41", - "text": "reasons.\\n\\n### 6\\\\. Development tools\\n\\nThe platform\\xe2\\x80\\x99s development environment significantly impacts customization capabilities. Low-code interfaces enable business users to modify agent behavior without technical expertise. Developer-focused systems offer greater flexibility but require coding skills. DevRev provides both options, supporting different organizational capabilities.\\n\\n### 7\\\\. Pricing structures\\n\\nPricing models vary significantly between vendors.", - "title": "Understanding Agentic AI: Capabilities and Implications for the Future" + "id": "ART-4206_KNOWLEDGE_NODE-6", + "text": "OK |\\n| 2 | { |\\n| 3 | \"challenge\": \"DlrVaK7zRyZWwbJhj5dZHDlrVaK7Jhj5dZZjH\" |\\n| 4 | } |\\n```\\n\\nYou should follow the documentation provided for webhooks [here](https://developer.devrev.ai/public/guides/webhooks)\\n\\nMake async API calls\\n--------------------\\n\\n**Key parameters:**\\n\\n* `agent`: Your agent\\xe2\\x80\\x99s ID.\\n* `event.input_message.message`: The query for your agent.\\n* `session_object`: A unique identifier for the conversation session (maintains agent memory).\\n*", + "title": "Agents async API | DevRev | Docs" }, { - "id": "ART-4206_KNOWLEDGE_NODE-4", - "text": "create a webhook to receive agent execution events:\\n\\nBashJavaScript\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | curl --location \\'https://api.devrev.ai/internal/webhooks.create\\' \\\\ |\\n| > | --header \\'Content-Type: application/json\\' \\\\ |\\n| > | --header \\'Authorization: Bearer \\' \\\\ |\\n| > | --data \\'{ |\\n| > | \"url\": \"https://your-application.com/webhook-endpoint\", |\\n| > | \"event_types\": [\"ai_agent_response\"], |\\n| > | \"headers\": [ |\\n| > | { |\\n| > | \"name\": \"x-api-key\", |\\n| >", + "id": "ART-4206_KNOWLEDGE_NODE-17", + "text": "|\\n| 3 | // Show loading indicator |\\n| 4 | displayLoadingIndicator(); |\\n| 5 | |\\n| 6 | // Make async API call |\\n| 7 | fetch(\"https://api.devrev.ai/internal/ai-agents.events.execute-async\", { |\\n| 8 | method: \"POST\", |\\n| 9 | headers: { |\\n| 10 | \"Content-Type\": \"application/json\", |\\n| 11 | Authorization: Bearer \"YOUR_API_KEY\", |\\n| 12 | }, |\\n| 13 | body: JSON.stringify({ |\\n| 14 | agent: \"your_agent_id\", |\\n| 15 | event: { |\\n| 16 | input_message: { |\\n| 17 | message: message, |\\n| 18 |", "title": "Agents async API | DevRev | Docs" } ] @@ -5100,54 +5100,54 @@ "query": "multiple messages sent quickly AI interpretation delay", "retrievals": [ { - "id": "ART-990_KNOWLEDGE_NODE-1", - "text": "and is a good thing; it alerts us that a fundamental shift is happening, just like the internet had done previously. And, no, this isn\\xe2\\x80\\x99t the beginning of SkyNet.\\n\\n\\n\\nLet\\xe2\\x80\\x99s face it; support is moving to a more asynchronous communication model (a-la chat). With the ability for ChatGPT to \\xe2\\x80\\x9cstream\\xe2\\x80\\x9d messages similar to how a user would, backed by the knowledge of the internet, the result can be a very powerful one-two punch. Plus, it can eliminate a lot", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-15643_KNOWLEDGE_NODE-2", + "text": "testing bolted-on AI from existing vendors - but that means more tools, all of which that work differently, and don\\xe2\\x80\\x99t talk to one another.\\n\\nBut the space is moving too fast, too soon, and it makes any effort a moving target.\\n\\nThe core problem is that your structured and unstructured data exists in silos, and AI can\\xe2\\x80\\x99t be effective until data from across all of those silos are unified, organized, and connected.\\n\\nWithout it, you get AI that remains siloed, so it", + "title": "DevRev Corp Narrative - for PLuG on website" }, { - "id": "ART-990_KNOWLEDGE_NODE-5", - "text": "assistance whenever they need it, irrespective of geographical and time zone differences.\\n For a follow-the-sun model this may be less important, however, if you don\\xe2\\x80\\x99t have this coverage in place, an AI-assist can be extremely valuable to provide coverage between gaps\\n\\n\\nPersonalization\\n\\n\\n By leveraging natural language processing and machine learning, ChatGPT and similar tools can understand customers\\xe2\\x80\\x99 needs and preferences, providing personalized and contextually", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-1003_KNOWLEDGE_NODE-3", + "text": "transfer session (KT) with teams as new features go out?\\n\\nHow to resolve them:\\n\\n\\n Leverage intelligent deflection and AI offloads\\n \\n For example, don\\xe2\\x80\\x99t waste time making a human gather context, AI can now very accurately gather context and/or suggest articles.\\n \\n \\n Leverage load in terms of routing\\n \\n Normally routing is statically done or done in a round-robin manner, however, that doesn\\xe2\\x80\\x99t work when cases may be differing in complexity.\\n", + "title": "Understanding a Support Lead's Pain Points and KPIs" }, { - "id": "ART-990_KNOWLEDGE_NODE-3", - "text": "multiple customer queries simultaneously, significantly reducing response times and providing instant support, resulting in higher customer satisfaction levels.\\n By offloading the initial responses to an intelligent system, you can buffer the amount of time a traditional agent has to respond\\n This may also help ensure you meet you SLA requirements\\n\\n\\nCost-Effectiveness\\n\\n\\n AI-driven customer support tools can minimize the need for large customer service teams, reducing operational", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-4206_KNOWLEDGE_NODE-9", + "text": "state\\nacross multiple calls.\\n\\nHandle webhook events\\n---------------------\\n\\nYour webhook endpoint receives three types of events.\\n\\n### Progress messages\\n\\nThese show which skills are being triggered and executed.\\n\\nSkill triggered\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"payload\": { |\\n| 3 | \"ai_agent_response\": { |\\n| 4 | \"agent\": \"don:core:dvrv-us-1:devo/xyz:ai_agent/123\", |\\n| 5 | \"agent_response\": \"progress\", |\\n| 6 | \"client_metadata\": { /* your original metadata */ },", + "title": "Agents async API | DevRev | Docs" }, { - "id": "ART-990_KNOWLEDGE_NODE-9", - "text": "While this is likely a edge case, you can easily account for this with logic in the system than can allow the user or system to automatically switch the interaction to a support engineer.\\n\\n\\nLack of empathy\\n\\n\\n Chatbots may struggle to replicate the empathy and human touch that customer service representatives provide. In sensitive or emotionally charged situations, an AI-driven response may appear impersonal or unsympathetic, negatively impacting customer relations.\\n This is both a good", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-15510_KNOWLEDGE_NODE-27", + "text": "\"message\": { |\\n| 3 | \"title\": \"New Message\", |\\n| 4 | \"body\": \"You have received a new message.\", |\\n| 5 | \"data\": { |\\n| 6 | \"messageId\": \"12345\", |\\n| 7 | \"sender\": \"John Doe\" |\\n| 8 | } |\\n| 9 | } |\\n| 10 | }; |\\n| 11 | |\\n| 12 | const messageJson = notificationPayload[\"message\"]; |\\n| 13 | |\\n| 14 | DevRev.processPushNotification(messageJson, function() { |\\n| 15 | console.log(\"Push notification processed successfully.\"); |\\n| 16 | }, function(error) { |\\n| 17 | console.error(\"Failed to", + "title": "Features | DevRev | Docs" }, { - "id": "ART-4206_KNOWLEDGE_NODE-19", - "text": "const conversationId = |\\n| 38 | event.payload.ai_agent_response.client_metadata.conversation_id; |\\n| 39 | |\\n| 40 | if (event.payload.ai_agent_response.agent_response === \"message\") { |\\n| 41 | // Final message |\\n| 42 | const message = event.payload.ai_agent_response.message; |\\n| 43 | sendToClient(conversationId, { |\\n| 44 | type: \"agent_response\", |\\n| 45 | message: message, |\\n| 46 | }); |\\n| 47 | } else if (event.payload.ai_agent_response.agent_response === \"error\") { |\\n| 48 | // Error", - "title": "Agents async API | DevRev | Docs" + "id": "ART-1364_KNOWLEDGE_NODE-3", + "text": "\\n`429`| `Too Many Requests`| The user is currently throttled due to exceeding their permitted rate limit. The `Retry-After` response header contains the number of seconds before the user should retry. \\n`500`| `Internal Server Error`| An internal error was encountered in the handling of the request which couldn\\xe2\\x80\\x99t be processed to completion. DevRev is automatically alerted to any occurrence of this error. The user should retry after a short delay and contact DevRev support if the", + "title": "Errors \u2014 DevRev | Docs" }, { - "id": "ART-4109_KNOWLEDGE_NODE-5", - "text": "Error\\n\\n429\\n\\nToo Many Requests Error\\n\\n500\\n\\nInternal Server Error\\n\\n503\\n\\nService Unavailable Error\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/beta/api-reference/accounts/update)[#### Get Airdrop Sync Unit\\n\\nNext](/beta/api-reference/airdrop/sync-units-get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'", - "title": "Execute-Async Ai Agents Events | DevRev | Docs" + "id": "ART-4206_KNOWLEDGE_NODE-13", + "text": "2 | \"payload\": { |\\n| 3 | \"ai_agent_response\": { |\\n| 4 | \"agent\": \"don:core:dvrv-us-1:devo/xyz:ai_agent/123\", |\\n| 5 | \"agent_response\": \"message\", |\\n| 6 | \"client_metadata\": { |\\n| 7 | /* your original metadata */ |\\n| 8 | }, |\\n| 9 | \"message\": \"The agent\\'s final response message\", |\\n| 10 | \"session\": \"don:core:dvrv-us-1:devo/xyz:ai_agent_session/3810\", |\\n| 11 | \"session_object\": \"unique_conversation_identifier\" |\\n| 12 | }, |\\n| 13 | \"type\": \"ai_agent_response\" |\\n| 14 | } |\\n| 15 | }", + "title": "Agents async API | DevRev | Docs" }, { - "id": "ART-990_KNOWLEDGE_NODE-0", - "text": "b'\\n\\n\\n \\xe2\\x80\\x9cThe greatest danger in times of turbulence is not the turbulence; it is to act with yesterday\\xe2\\x80\\x99s logic.\\xe2\\x80\\x9d - Peter Drucker\\n\\n\\n\\n\\n\\xe2\\x80\\xa6\\n\\nAt this point, you\\xe2\\x80\\x99ve likely been inundated with with the news of AI, LLM, GPT, or ChatGPT. Hint: GPT stands for \"Generative Pre-trained Transformer\". And it likely begs a few questions\\xe2\\x80\\xa6 Is this the start of SkyNet? Will I become irrelevant? And a multitude of others. This anxiety is OK", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-15510_KNOWLEDGE_NODE-25", + "text": "notificationPayload = { |\\n| 2 | \"message\": { |\\n| 3 | \"title\": \"New Message\", |\\n| 4 | \"body\": \"You have received a new message.\", |\\n| 5 | \"data\": { |\\n| 6 | \"messageId\": \"12345\", |\\n| 7 | \"sender\": \"John Doe\" |\\n| 8 | } |\\n| 9 | } |\\n| 10 | }; |\\n| 11 | |\\n| 12 | const messageJson = notificationPayload[\"message\"]; |\\n| 13 | |\\n| 14 | DevRev.processPushNotification(messageJson, function() { |\\n| 15 | console.log(\"Push notification processed successfully.\"); |\\n| 16 | }, function(error) {", + "title": "Features | DevRev | Docs" }, { - "id": "ART-4206_KNOWLEDGE_NODE-20", - "text": "occurred |\\n| 49 | sendToClient(conversationId, { |\\n| 50 | type: \"agent_error\", |\\n| 51 | error: event.payload.ai_agent_response.error.error, |\\n| 52 | }); |\\n| 53 | } |\\n| 54 | |\\n| 55 | res.status(200).send(\"OK\"); |\\n| 56 | }); |\\n```\\n\\n##### \\n\\nUsing WebSockets or Server-Sent Events can provide real-time updates to your\\nUI as events are received.\\n\\n### Talk to agent node in workflows\\n\\n##### \\n\\nThis is in early access, please contact support to have it enabled for you.\\n\\nIf", - "title": "Agents async API | DevRev | Docs" + "id": "ART-4181_KNOWLEDGE_NODE-22", + "text": "breach\\n\\n![]()\\n\\nSLA timers on Conversation and Ticket panel\\n\\nEquip agents with the comprehensive context they need to prioritize based on service level commitments\\n\\n![]()\\n\\nSLA timers on Conversation and Ticket panel\\n\\nEquip agents with the comprehensive context they need to prioritize based on service level commitments\\n\\n![]()\\n\\nView SLA targets in Inbox view\\n\\nSee critical SLA information directly on your Omnichannel Inbox to prioritize and take action before breach", + "title": "Support like a lightning fast pit-crew" }, { - "id": "ART-990_KNOWLEDGE_NODE-2", - "text": "of the \\xe2\\x80\\x9cgrunt work\\xe2\\x80\\x9d (aka work \\xe2\\x80\\x9csuck\\xe2\\x80\\x9d) that support engineers commonly deal with, allowing them to focus on the real problems at hand.\\n\\nAlso, with this evolution to a semi-sentient system, the experience for end-users is far superior, sometimes to the point where you may not even know you\\xe2\\x80\\x99re conversing with a computer.\\n\\nBenefits\\n\\nHere are some of the potential benefits:\\n\\nEfficient Response Times\\n\\n\\n AI-powered chatbots can handle", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-4181_KNOWLEDGE_NODE-20", + "text": "breach\\n\\n![]()\\n\\nSLA timers on Conversation and Ticket panel\\n\\nEquip agents with the comprehensive context they need to prioritize based on service level commitments\\n\\n![]()\\n\\nSLA timers on Conversation and Ticket panel\\n\\nEquip agents with the comprehensive context they need to prioritize based on service level commitments\\n\\n![]()\\n\\nView SLA targets in Inbox view\\n\\nSee critical SLA information directly on your Omnichannel Inbox to prioritize and take action before breach", + "title": "Support like a lightning fast pit-crew" }, { - "id": "ART-990_KNOWLEDGE_NODE-8", - "text": "natively\\n\\n\\n\\n\\nPotential Risks\\n\\n\\n\\nWhile the use of artificial intelligence and tools like ChatGPT offers numerous benefits in the realm of customer support, it is crucial to consider potential risks that may arise.\\n\\nSome of these risks include:\\n\\nMisunderstandings\\n\\n\\n AI-driven chatbots might misunderstand complex customer queries or interpret context inaccurately, leading to incorrect or irrelevant responses. This can result in customer frustration and diminished satisfaction.\\n", - "title": "To AI, or Not to AI for Support, It's Not a Question" + "id": "ART-4181_KNOWLEDGE_NODE-18", + "text": "breach\\n\\n![]()\\n\\nSLA timers on Conversation and Ticket panel\\n\\nEquip agents with the comprehensive context they need to prioritize based on service level commitments\\n\\n![]()\\n\\nSLA timers on Conversation and Ticket panel\\n\\nEquip agents with the comprehensive context they need to prioritize based on service level commitments\\n\\n![]()\\n\\nView SLA targets in Inbox view\\n\\nSee critical SLA information directly on your Omnichannel Inbox to prioritize and take action before breach", + "title": "Support like a lightning fast pit-crew" } ] } diff --git a/test_queries_results.parquet b/test_queries_results.parquet new file mode 100644 index 0000000000000000000000000000000000000000..197fe90adf5215fc00769d09d7c72c36b0dd2c1a GIT binary patch literal 166052 zcmce;dwdh++AjP|JAp}>OqjKo05#}%g*)eu4?pC|5f#sr&-cStsu zlaJdZ*(cd}S#ZiRrx^3NqRM@qSj-~}5tq&9bop#9(J9)z4u{9a$2<f^$EP!V~fTlv=oNU)vD6SqZVmt;fd?x-k5R>kx2-0aeyGfe^PFwsukdrxy5R7g~uq;3@Rx z5`Zbm8I9T;XivF>nLd-|?JG?%xFsuzhw9d5TWPjB2CkBR8U=ZWGzPdow`!S^!e zCr1UZ%LBLjf8GS6@v=K^6C6H_%?Y4Iq^Qg0=Hm_lu5vr$JayY9A>#D7FaR4bC?In9 zU^O2`=#-sNA50f@MQS@YNp4_Vi1=)xfIxKl#F)(+i^ps{kFmzw5OLEw6#9=C`dMLq)5 zMFF9hjJu+|08)xZ;B{xr;T3q%E2-)#1UM}ki~FdXwdjyHe_4ZIvI!WU9H%zXP7ifz zlY>{{DTbL#62QoVL?Q@n8(fVLamZd#R=ofx32t6M{0d+PpiICl0617r;$sNlXiS#B z*yQy{j;Kp?*hHU*5O$(7$pZwteGVTSCVPAy)#AFS+vD@fF$9U|e|>?M2fswT5hdO{ zvd1fVoI-8cCO+bcBY2%QF)G514yO$NU~Ga5bQSaQkqCxW|g&MG;o_@DeE05yjg`H0I&sG2W$mVWU%W zAkKUa8$u%nTft0{8~ow|A;ugqYWKlYHwg}h><|!Gl7t-Lg2@r*FooolqPzrd^7 zoWa3@>;?D71fLW4p+&F&>=0GVgB%o%jh^l>*_ecL9lR{#=yZa~YSARYnj^UB7>h`?A3Jy;E3UAv9G9cg7jvC9Zxs0Px@AO&EP}IZ z%e*l@3Me_Fwy5kze}nrQr8ub58IyTOOoj;^hqi8tc|CH>=XTnBf)e&_5i}`)cjdT4 zbh{%0P^_vWZfY>=Mso5>2x}Mtg#*xHL$TtM+%8u14Sxsf%**eFwmlnsja4({hf)F6Pj6l-D{#CSyFePAp3%;1ofiT>>dJ{4;lB3raam8UMgd*;C0bdaZ@E(sz5iuftvB?<$-$y|5 zazv>;M6ZmR0uXgdZimzBboiXk+Q&EfJou@I%prpK*O#*q^T$137qBIg?f~u|& zMS|=QeW;&eNOP_jyItKV^B5%(3LlNjg3QOL{?#5H9mD{)xPY3+B>~Sq7bYB)HkSba zakz@Alc+MU5kH#OAGK;|!F<&eqAomJ}7c@1nryO&j7MA^gTI`aLry{PH(+2nOZuG&&oK4F% zMR+0VlTe3vF*qcC5RBK2g2>BD0`EXdbqlI~4&#>M$j3HG&jC0Q@Si9QZs$Z00tOLr zs`_gH@d&CguPr+A?qXD!D5gahnnXeAMP=r2d+N6~A_P$>pdOC^cPI?m6>5Y4iY^Cg zHMHic?<_)s_e4j|7*v{8z{-t674G!-Bp<9D$3P^%qt4}XL@_%Qh!JUikt2$`*ef)3 zPB3U30|Ixd`Zu|KNM+!0kQi=oIg}z*6hxaF8Qd8K)5M&K8*ALCrXnucCOiF(Vi)R= zNW}kJ4YD)p2$6U3dq^EpiQB6bre4n=N__+m>M-Cm>X1d*{9t{V1M`l!qHeSe_A__R zbs#|~wRl884dRN&-0~hWJBlWpBI-!qrv#SdHkWZ;PDVWx^GZ>-*H`F0eIfa0FP?>Eih~%BF~DB*rHw<3XxHS+^A##~H^}xJg}2 z{Qq>fQo{Z>cSpTtHUA%qpNL+Mm|b;hWjOC!jT=|bt}A0VT^1SX^j3kC1NSbo z-*|QWuP6Fv-L|!Ju61Ylp6f0+bisl1_TAVOy#HwO@mrFIzxw5(gSYj}Zz#X^g*($n zx~AXy`aRju-sKOy|3Gg68pi7L!?5vn@xNA|4^BC?A&4*JWQ>dEGTBtOoaR#L4k?+q zP|7A!NiHdM%Um**<)oe-SxP689b6*GWfRdgau#=T(NwZmPG`n$o`#nE$yhp-h;d8j zp3PPx4R9lABA7Fp12x0IARWKN1k(IzKhxIO7aZ=y@?kTc4F=E}V-a_=nMxpe6wbezrg za7+CQ7jVsU7jxZm7AZF?DT7VQQPqb`CYz>SZ=IJ)b#%$xxvBJ;Opk<&h@Yors&Z~L zJ2tos7f+|UxvoTV4drM^_4K6D*<3P_O~~p^4c)Swg*7s@_>pe4mpivp%4YmMJzOA{ zNhGO9w8~s{ds;bs?_b=^#bK=GWHb?zlUc5{zKw~d<=Skn{nRTK4&Qu?lO>y1Q8kt+z zywsd!FjDo-BB>XqRRy)m+h2i=F4bq&ceg3 zVf4`lZ^XMWp^O5`Zn&FjbN~)ZyI>72)gz~C*A#PdzZ}gq6@x5+0iX@Q&32l}B*pR8-&3H-=U!JhtZ={{|5B9rjfswUTPU8#;lvJMR`d6s0GI+_m@Co-9woT=@p0j|3S5KbA< zysu2bXj;zrcRHd20Bd(oS3*igW!2Q;L=s&jYp2sv*RZ!HQ;oJ_alJ&dmBrcLpNwKJu$@*{9N=YuUt&o8!%r_5S*z}9GCzt7zE+DC#WWKL1 z144>+a`9X;>OTm}m>Wq-KO}rk)y3o

Di0l{>X0C#|Y)e7Z?H1D!qm7~%9kEb*y! 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�fn``lS}ga2(FSLe()!v|B2qHme1gxoa*QVRc)}# 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 literal 0 HcmV?d00001