From f0a574ba5c0e5d6d5aecba4dd81c4d7996819af1 Mon Sep 17 00:00:00 2001 From: Shreya Mishra <59368657+shrey2003@users.noreply.github.com> Date: Wed, 11 Mar 2026 07:22:02 -0700 Subject: [PATCH 1/9] Deleted devrev_search.ipynb --- devrev_search.ipynb | 1142 ------------------------------------------- 1 file changed, 1142 deletions(-) delete mode 100644 devrev_search.ipynb diff --git a/devrev_search.ipynb b/devrev_search.ipynb deleted file mode 100644 index 11d47a8..0000000 --- a/devrev_search.ipynb +++ /dev/null @@ -1,1142 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# DevRev Search Dataset\n", - "\n", - "Loading and exploring the `devrev/search` dataset from Hugging Face.\n", - "\n", - "**Dataset Structure:**\n", - "- `annotated_queries` — Queries paired with annotated (golden) article chunks\n", - "- `knowledge_base` — Article chunks from DevRev's customer-facing support documentation\n", - "- `test_queries` — Held-out queries used for evaluation" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "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", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], - "source": [ - "from datasets import load_dataset\n", - "import pandas as pd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Load Annotated Queries\n", - "Queries paired with annotated (golden) article chunks for training/validation." - ] - }, - { - "cell_type": "code", - "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", - "text": [ - "DatasetDict({\n", - " train: Dataset({\n", - " features: ['query_id', 'query', 'retrievals'],\n", - " num_rows: 291\n", - " })\n", - "})\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# Load annotated queries\n", - "annotated_queries = load_dataset(\"devrev/search\", \"annotated_queries\")\n", - "print(annotated_queries)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
query_idqueryretrievals
00ae94217-c6a0-4895-83a2-841a95f01637create DevRev ticket from Microsoft Teams[{'id': 'ART-4216_KNOWLEDGE_NODE-26', 'text': ...
1d0b209b3-6cea-46d8-bfac-bd0e286ea21bworkflow builder auto close ticket after 48 ho...[{'id': 'ART-2012_KNOWLEDGE_NODE-24', 'text': ...
240c1aa6f-cd21-46ab-8f6f-76fdc267b584automated reminder to customer ticket will be ...[{'id': 'ART-3068_KNOWLEDGE_NODE-24', 'text': ...
3e47d883f-b712-4f98-bd06-14ade143e3c2connect Bitbucket account to DevRev account[{'id': 'ART-2030_KNOWLEDGE_NODE-27', 'text': ...
42e6f9413-15ac-4974-a380-7aa22fc98a61use of workflows in DevRev[{'id': 'ART-1961_KNOWLEDGE_NODE-28', 'text': ...
\n", - "
" - ], - "text/plain": [ - " query_id \\\n", - "0 0ae94217-c6a0-4895-83a2-841a95f01637 \n", - "1 d0b209b3-6cea-46d8-bfac-bd0e286ea21b \n", - "2 40c1aa6f-cd21-46ab-8f6f-76fdc267b584 \n", - "3 e47d883f-b712-4f98-bd06-14ade143e3c2 \n", - "4 2e6f9413-15ac-4974-a380-7aa22fc98a61 \n", - "\n", - " query \\\n", - "0 create DevRev ticket from Microsoft Teams \n", - "1 workflow builder auto close ticket after 48 ho... \n", - "2 automated reminder to customer ticket will be ... \n", - "3 connect Bitbucket account to DevRev account \n", - "4 use of workflows in DevRev \n", - "\n", - " retrievals \n", - "0 [{'id': 'ART-4216_KNOWLEDGE_NODE-26', 'text': ... \n", - "1 [{'id': 'ART-2012_KNOWLEDGE_NODE-24', 'text': ... \n", - "2 [{'id': 'ART-3068_KNOWLEDGE_NODE-24', 'text': ... \n", - "3 [{'id': 'ART-2030_KNOWLEDGE_NODE-27', 'text': ... \n", - "4 [{'id': 'ART-1961_KNOWLEDGE_NODE-28', 'text': ... " - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Convert to DataFrame and display\n", - "annotated_df = annotated_queries[\"train\"].to_pandas()\n", - "annotated_df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'query_id': '0ae94217-c6a0-4895-83a2-841a95f01637',\n", - " 'query': 'create DevRev ticket from Microsoft Teams',\n", - " 'retrievals': [{'id': 'ART-4216_KNOWLEDGE_NODE-26',\n", - " 'text': 'DevRev Object | Sync to DevRev |\\\\n| --- | --- | --- |\\\\n| Plan | Parts | \\\\xe2\\\\x9c\\\\x85 |\\\\n| User | Identity/DevUser | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Channel | Chat | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Attachments in Message/Thread/Task | Artifacts on Article | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Message | Comment | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Thread | Comment | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Task | Issue/Ticket | \\\\xe2\\\\x9c\\\\x85 |\\\\n\\\\nImporting from Microsoft Teams\\\\n------------------------------\\\\n\\\\nFollow the steps below to import from Microsoft Teams:\\\\n\\\\n1. Go to',\n", - " 'title': 'Microsoft Teams AirSync | AirSync | Snap-ins | DevRev'},\n", - " {'id': 'ART-4216_KNOWLEDGE_NODE-29',\n", - " 'text': 'with many\\\\nattachments. DevRev honors the Microsoft Graph API rate limits and back-off and resumes automatically.\\\\n\\\\nPost import options\\\\n-------------------\\\\n\\\\nAfter a successful import, you have the following options available for the imported account:\\\\n\\\\n* **Sync to DevRev** \\\\n This option allows you to synchronize any modifications made in Microsoft Teams with the corresponding items previously imported into DevRev. It also creates new items in DevRev for any new data in Microsoft Teams',\n", - " 'title': 'Microsoft Teams AirSync | AirSync | Snap-ins | DevRev'}]}" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Sample a single annotated query example\n", - "annotated_queries[\"train\"][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Load Test Queries\n", - "Held-out queries used for evaluation." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "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]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "DatasetDict({\n", - " test: Dataset({\n", - " features: ['query_id', 'query'],\n", - " num_rows: 92\n", - " })\n", - "})\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# Load test queries\n", - "test_queries = load_dataset(\"devrev/search\", \"test_queries\")\n", - "print(test_queries)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
query_idquery
0a97f93d2-410a-431f-ae9a-1e23ed35d74cend customer organization name not appearing i...
17dd7e2b4-9349-4535-8007-1d706e0fabffAndroid SDK session generated with Unknown user
24bc92187-cdaa-4c20-b189-abd1672e5a71email reply received on wrong ticket
34d9878e8-f746-4df5-8bf6-f9444989b385manage access and privileges in DevRev
4483151ec-aff4-4569-b3df-651f578b61d8SSO setup SAML IDP metadata connection string ...
\n", - "
" - ], - "text/plain": [ - " query_id \\\n", - "0 a97f93d2-410a-431f-ae9a-1e23ed35d74c \n", - "1 7dd7e2b4-9349-4535-8007-1d706e0fabff \n", - "2 4bc92187-cdaa-4c20-b189-abd1672e5a71 \n", - "3 4d9878e8-f746-4df5-8bf6-f9444989b385 \n", - "4 483151ec-aff4-4569-b3df-651f578b61d8 \n", - "\n", - " query \n", - "0 end customer organization name not appearing i... \n", - "1 Android SDK session generated with Unknown user \n", - "2 email reply received on wrong ticket \n", - "3 manage access and privileges in DevRev \n", - "4 SSO setup SAML IDP metadata connection string ... " - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Convert to DataFrame and display\n", - "test_df = test_queries[\"test\"].to_pandas()\n", - "test_df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'query_id': 'a97f93d2-410a-431f-ae9a-1e23ed35d74c',\n", - " 'query': 'end customer organization name not appearing in ticket or conversation'}" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Sample a single test query example\n", - "test_queries[\"test\"][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Load Knowledge Base\n", - "Article chunks from DevRev's customer-facing support documentation." - ] - }, - { - "cell_type": "code", - "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", - "text": [ - "DatasetDict({\n", - " corpus: Dataset({\n", - " features: ['id', 'text', 'title'],\n", - " num_rows: 65224\n", - " })\n", - "})\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# Load knowledge base\n", - "knowledge_base = load_dataset(\"devrev/search\", \"knowledge_base\")\n", - "print(knowledge_base)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtexttitle
0ART-17711_KNOWLEDGE_NODE-0b'We ran into a case where an AirSync was star...Sync fails when original sync owners loses per...
1ART-17711_KNOWLEDGE_NODE-1access.\\n\\nOnce Person A was re-added with the...Sync fails when original sync owners loses per...
2ART-17650_KNOWLEDGE_NODE-0b\"American cybersecurity leader unifies securi...American cybersecurity leader unifies security...
3ART-17650_KNOWLEDGE_NODE-1DevRev\\n======================================...American cybersecurity leader unifies security...
4ART-17650_KNOWLEDGE_NODE-2solutions help organisations build and deploy ...American cybersecurity leader unifies security...
\n", - "
" - ], - "text/plain": [ - " id \\\n", - "0 ART-17711_KNOWLEDGE_NODE-0 \n", - "1 ART-17711_KNOWLEDGE_NODE-1 \n", - "2 ART-17650_KNOWLEDGE_NODE-0 \n", - "3 ART-17650_KNOWLEDGE_NODE-1 \n", - "4 ART-17650_KNOWLEDGE_NODE-2 \n", - "\n", - " text \\\n", - "0 b'We ran into a case where an AirSync was star... \n", - "1 access.\\n\\nOnce Person A was re-added with the... \n", - "2 b\"American cybersecurity leader unifies securi... \n", - "3 DevRev\\n======================================... \n", - "4 solutions help organisations build and deploy ... \n", - "\n", - " title \n", - "0 Sync fails when original sync owners loses per... \n", - "1 Sync fails when original sync owners loses per... \n", - "2 American cybersecurity leader unifies security... \n", - "3 American cybersecurity leader unifies security... \n", - "4 American cybersecurity leader unifies security... " - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Convert to DataFrame and display\n", - "knowledge_df = knowledge_base[\"corpus\"].to_pandas()\n", - "knowledge_df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'id': 'ART-17711_KNOWLEDGE_NODE-0',\n", - " 'text': \"b'We ran into a case where an AirSync was started by one person (Person A) and later failed. Another user (Person B) tried to click Retry, but it didn\\\\xe2\\\\x80\\\\x99t work. The logs showed 401 and 403 errors in communication between the snap-in and the snap-in manager.\\\\n\\\\nIt turned out that AirSync assigns the sync owner to whoever started it. Since Person A had been removed from the org or lost permissions, the retry failed \\\\xe2\\\\x80\\\\x94 the system still expected the original owner to have valid\",\n", - " 'title': 'Sync fails when original sync owners loses permissions'}" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Sample a single knowledge base chunk\n", - "knowledge_base[\"corpus\"][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Dataset Summary" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "============================================================\n", - "DevRev Search Dataset Summary\n", - "============================================================\n", - "\n", - "Annotated Queries:\n", - "DatasetDict({\n", - " train: Dataset({\n", - " features: ['query_id', 'query', 'retrievals'],\n", - " num_rows: 291\n", - " })\n", - "})\n", - "\n", - "Test Queries:\n", - "DatasetDict({\n", - " test: Dataset({\n", - " features: ['query_id', 'query'],\n", - " num_rows: 92\n", - " })\n", - "})\n", - "\n", - "Knowledge Base:\n", - "DatasetDict({\n", - " corpus: Dataset({\n", - " features: ['id', 'text', 'title'],\n", - " num_rows: 65224\n", - " })\n", - "})\n", - "\n", - "============================================================\n" - ] - } - ], - "source": [ - "print(\"=\" * 60)\n", - "print(\"DevRev Search Dataset Summary\")\n", - "print(\"=\" * 60)\n", - "print(f\"\\nAnnotated Queries:\")\n", - "print(annotated_queries)\n", - "print(f\"\\nTest Queries:\")\n", - "print(test_queries)\n", - "print(f\"\\nKnowledge Base:\")\n", - "print(knowledge_base)\n", - "print(\"\\n\" + \"=\" * 60)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "## 5. Index Knowledge Base with FAISS\n", - "\n", - "Use either OpenAI (`text-embedding-3-small`) or Ollama (`qwen3-embedding:0.6b`) embeddings with the same FAISS pipeline." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "try:\n", - " from openai import OpenAI\n", - "except ImportError:\n", - " OpenAI = None\n", - "\n", - "import faiss\n", - "import numpy as np\n", - "from tqdm import tqdm\n", - "import time\n", - "import os\n", - "import json\n", - "import pickle" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using model: qwen3-embedding:0.6b\n", - "Provider: ollama\n" - ] - } - ], - "source": [ - "# Embedding backend configuration\n", - "# Switch this to \"ollama\" to run the same FAISS pipeline locally.\n", - "EMBEDDING_PROVIDER = \"ollama\" # \"openai\" | \"ollama\"\n", - "\n", - "OPENAI_MODEL_ID = \"text-embedding-3-small\"\n", - "OLLAMA_MODEL_ID = \"qwen3-embedding:0.6b\"\n", - "\n", - "client = None\n", - "if EMBEDDING_PROVIDER == \"openai\":\n", - " if OpenAI is None:\n", - " raise ImportError(\"openai package is not installed. Run: pip install openai\")\n", - "\n", - " # Set your API key as an environment variable: export OPENAI_API_KEY=\"your-key-here\"\n", - " OPENAI_API_KEY = os.environ.get(\"OPENAI_API_KEY\")\n", - " if not OPENAI_API_KEY:\n", - " raise ValueError(\"Please set OPENAI_API_KEY when EMBEDDING_PROVIDER='openai'\")\n", - "\n", - " client = OpenAI(api_key=OPENAI_API_KEY)\n", - " MODEL_ID = OPENAI_MODEL_ID\n", - "elif EMBEDDING_PROVIDER == \"ollama\":\n", - " import ollama\n", - " MODEL_ID = OLLAMA_MODEL_ID\n", - "else:\n", - " raise ValueError(\"EMBEDDING_PROVIDER must be either 'openai' or 'ollama'\")\n", - "\n", - "print(f\"Using model: {MODEL_ID}\")\n", - "print(f\"Provider: {EMBEDDING_PROVIDER}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "def get_embedding_openai(text: str) -> np.ndarray:\n", - " response = client.embeddings.create(\n", - " model=MODEL_ID,\n", - " input=text\n", - " )\n", - " return np.array(response.data[0].embedding, dtype=np.float32)\n", - "\n", - "\n", - "def get_embedding_ollama(text: str) -> np.ndarray:\n", - " response = ollama.embed(\n", - " model=MODEL_ID,\n", - " input=text,\n", - " )\n", - " embeddings = response.embeddings if hasattr(response, \"embeddings\") else response[\"embeddings\"]\n", - " embedding = embeddings[0] if embeddings and isinstance(embeddings[0], list) else embeddings\n", - " return np.array(embedding, dtype=np.float32)\n", - "\n", - "\n", - "def get_embedding(text: str) -> np.ndarray:\n", - " \"\"\"Get embedding for a single text using the configured provider.\"\"\"\n", - " if EMBEDDING_PROVIDER == \"openai\":\n", - " return get_embedding_openai(text)\n", - " return get_embedding_ollama(text)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "def get_embeddings_batch(texts: list) -> np.ndarray:\n", - " \"\"\"Get embeddings for a batch of texts using the configured provider.\"\"\"\n", - " if EMBEDDING_PROVIDER == \"openai\":\n", - " response = client.embeddings.create(\n", - " model=MODEL_ID,\n", - " input=texts\n", - " )\n", - " return np.array([d.embedding for d in response.data], dtype=np.float32)\n", - "\n", - " # Ollama Python client does not provide a stable batch API shape across versions,\n", - " # so we embed one-by-one and stack.\n", - " return np.vstack([get_embedding_ollama(text) for text in texts]).astype(np.float32)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "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" - ] - } - ], - "source": [ - "# Test the configured embedding provider\n", - "test_embedding = get_embedding(\"This is a test sentence.\")\n", - "print(f\"Provider: {EMBEDDING_PROVIDER}\")\n", - "print(f\"Test embedding shape: {test_embedding.shape}\")\n", - "print(f\"Embedding dimension: {len(test_embedding)}\")\n", - "print(f\"First 5 values: {test_embedding[:5]}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Preparing documents: 100%|██████████| 65224/65224 [00:00<00:00, 97638.25it/s] " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Total documents: 65,224\n", - "\n", - "Sample document:\n", - "Sync fails when original sync owners loses permissions\n", - "\n", - "b'We ran into a case where an AirSync was started by one person (Person A) and later failed. Another user (Person B) tried to click Retry, but it didn\\xe2\\x80\\x99t work. The logs showed 401 and 403 errors in communication between the snap-in and the snap-in manager.\\n\\nIt turned out that AirSync assigns the sync owner to whoever started it. Since Person A had been removed from the org or lost permissions, the retry failed \\xe2\\x80\\x94 the s\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "# Prepare documents: concatenate title with text\n", - "corpus = knowledge_base[\"corpus\"]\n", - "\n", - "documents = []\n", - "doc_ids = []\n", - "doc_titles = []\n", - "doc_texts = []\n", - "\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", - " documents.append(doc_text)\n", - " doc_ids.append(item['id'])\n", - " doc_titles.append(item['title'])\n", - " doc_texts.append(item['text'])\n", - "\n", - "print(f\"\\nTotal documents: {len(documents):,}\")\n", - "print(f\"\\nSample document:\")\n", - "print(documents[0][:500])" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "def get_all_embeddings(texts, batch_size=100, max_retries=3):\n", - " \"\"\"Get embeddings for all texts using the configured provider.\"\"\"\n", - " all_embeddings = []\n", - " embedding_dim = None\n", - "\n", - " for i in tqdm(range(0, len(texts), batch_size), desc=\"Generating embeddings\"):\n", - " batch = texts[i:i + batch_size]\n", - "\n", - " # Keep OpenAI requests under practical input limits.\n", - " if EMBEDDING_PROVIDER == \"openai\":\n", - " batch = [text[:8000] if len(text) > 8000 else text for text in batch]\n", - "\n", - " retries = 0\n", - " while retries < max_retries:\n", - " try:\n", - " embeddings = get_embeddings_batch(batch)\n", - " if embedding_dim is None:\n", - " embedding_dim = embeddings.shape[1]\n", - " all_embeddings.append(embeddings)\n", - " break\n", - " except Exception as e:\n", - " retries += 1\n", - " if retries >= max_retries:\n", - " print(f\"Error embedding batch {i}: {e}\")\n", - " fallback_dim = embedding_dim if embedding_dim is not None else len(get_embedding(\"dimension probe\"))\n", - " all_embeddings.append(np.zeros((len(batch), fallback_dim), dtype=np.float32))\n", - " else:\n", - " print(f\"Retry {retries} for batch {i}...\")\n", - " time.sleep(2)\n", - "\n", - " time.sleep(0.1) # light rate limiting\n", - "\n", - " return np.vstack(all_embeddings)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "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", - "\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", - "\n", - "# Save embeddings\n", - "np.save(\"embeddings.npy\", embeddings)\n", - "print(\"Embeddings saved to embeddings.npy\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load embeddings if already saved\n", - "# embeddings = np.load(\"embeddings.npy\")\n", - "# print(f\"Loaded embeddings shape: {embeddings.shape}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "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": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Save the index and document mapping\n", - "INDEX_DIR = \"faiss_index\"\n", - "os.makedirs(INDEX_DIR, exist_ok=True)\n", - "\n", - "# Save FAISS index\n", - "faiss.write_index(index, os.path.join(INDEX_DIR, \"knowledge_base.index\"))\n", - "\n", - "# Save document mapping\n", - "with open(os.path.join(INDEX_DIR, \"doc_mapping.pkl\"), \"wb\") as f:\n", - " pickle.dump({\n", - " \"doc_ids\": doc_ids,\n", - " \"documents\": documents,\n", - " \"doc_titles\": doc_titles,\n", - " \"doc_texts\": doc_texts\n", - " }, f)\n", - "\n", - "print(f\"✓ Index saved to {INDEX_DIR}/knowledge_base.index\")\n", - "print(f\"✓ Document mapping saved to {INDEX_DIR}/doc_mapping.pkl\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 6. Search the Knowledge Base" - ] - }, - { - "cell_type": "code", - "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": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Test search with a sample query\n", - "query = \"How do I set up AirSync?\"\n", - "results = search(query, k=5)\n", - "\n", - "print(f\"Query: {query}\")\n", - "print(\"=\" * 60)\n", - "\n", - "for r in results:\n", - " print(f\"\\n[Rank {r['rank']}] Score: {r['score']:.4f}\")\n", - " print(f\"Doc ID: {r['id']}\")\n", - " print(f\"Title: {r['title']}\")\n", - " print(f\"Text: {r['text'][:300]}...\")\n", - " print(\"-\" * 40)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "## 7. Run Evaluation on Test Queries\n", - "\n", - "Run search against all test queries and save results in the same format as annotated_queries." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Run search on all test queries - DIRECT VERSION (no dependency on search function)\n", - "TOP_K = 10 # Number of retrievals per query\n", - "\n", - "# Get corpus data for lookups\n", - "corpus_data = knowledge_base[\"corpus\"]\n", - "\n", - "test_results = []\n", - "\n", - "for item in tqdm(test_queries[\"test\"], desc=\"Processing test queries\"):\n", - " query_id = item[\"query_id\"]\n", - " query = item[\"query\"]\n", - " \n", - " # Get query embedding directly\n", - " query_embedding = get_embedding(query).astype('float32').reshape(1, -1)\n", - " faiss.normalize_L2(query_embedding)\n", - " \n", - " # Search FAISS index\n", - " scores, indices = index.search(query_embedding, TOP_K)\n", - " \n", - " # Format retrievals using corpus data directly\n", - " retrievals = []\n", - " for idx in indices[0]:\n", - " doc = corpus_data[int(idx)]\n", - " retrievals.append({\n", - " \"id\": doc[\"id\"],\n", - " \"text\": doc[\"text\"],\n", - " \"title\": doc[\"title\"]\n", - " })\n", - " \n", - " test_results.append({\n", - " \"query_id\": query_id,\n", - " \"query\": query,\n", - " \"retrievals\": retrievals\n", - " })\n", - "\n", - "print(f\"\\nProcessed {len(test_results)} test queries\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Preview a sample result\n", - "import json\n", - "print(\"Sample result:\")\n", - "print(json.dumps(test_results[0], indent=2, default=str)[:1500])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Save results to JSON file\n", - "OUTPUT_FILE = \"test_queries_results.json\"\n", - "\n", - "with open(OUTPUT_FILE, \"w\") as f:\n", - " json.dump(test_results, f, indent=2)\n", - "\n", - "print(f\"✓ Results saved to {OUTPUT_FILE}\")\n", - "print(f\" - {len(test_results)} queries\")\n", - "print(f\" - {TOP_K} retrievals per query\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Also save as a parquet file for easier loading\n", - "results_df = pd.DataFrame(test_results)\n", - "results_df.to_parquet(\"test_queries_results.parquet\", index=False)\n", - "print(\"✓ Results also saved to test_queries_results.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Display results summary\n", - "print(\"=\" * 60)\n", - "print(\"Test Queries Results Summary\")\n", - "print(\"=\" * 60)\n", - "print(f\"Total queries: {len(test_results)}\")\n", - "print(f\"Retrievals per query: {TOP_K}\")\n", - "print(f\"\\nOutput files:\")\n", - "print(f\" - test_queries_results.json\")\n", - "print(f\" - test_queries_results.parquet\")\n", - "print(\"\\nFormat matches annotated_queries structure:\")\n", - "print(\" - query_id: string\")\n", - "print(\" - query: string\")\n", - "print(\" - retrievals: list of {id, text, title}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 8. Load Saved Index (Optional)\n", - "Use this to load a previously saved index without re-embedding." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# 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\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} From c26d85c98691e1952d38045401a3d511173da108 Mon Sep 17 00:00:00 2001 From: Shreya Mishra <59368657+shrey2003@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:54:42 +0530 Subject: [PATCH 2/9] Added Hybrid Search pipeline These are the details for my current pipeline System Description: Hybrid Search pipeline combining dense embeddings (VoyageAI voyage-4-large 2048-dim) via Alibaba's Zvec database, with sparse lexical retrieval (BM25), fused together and passed through a cross-encoder reranker (VoyageAI Rerank-2.5). System Type: Hybrid / RAG Retriever Open Source: Not open source (rerankers and the embedding models are closed source, vector db and sparse retrieval is open source) --- devrev_search.ipynb | 1106 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1106 insertions(+) create mode 100644 devrev_search.ipynb diff --git a/devrev_search.ipynb b/devrev_search.ipynb new file mode 100644 index 0000000..b440c79 --- /dev/null +++ b/devrev_search.ipynb @@ -0,0 +1,1106 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DevRev Search Dataset\n", + "\n", + "Loading and exploring the `devrev/search` dataset from Hugging Face.\n", + "\n", + "**Dataset Structure:**\n", + "- `annotated_queries` — Queries paired with annotated (golden) article chunks\n", + "- `knowledge_base` — Article chunks from DevRev's customer-facing support documentation\n", + "- `test_queries` — Held-out queries used for evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install -r requirements.txt\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_dataset\n", + "import pandas as pd\n", + "import voyageai\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "import zvec\n", + "import numpy as np\n", + "from tqdm import tqdm\n", + "import time\n", + "import os\n", + "import json\n", + "import pickle\n", + "from rank_bm25 import BM25Okapi\n", + "from collections import defaultdict\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Load Annotated Queries\n", + "Queries paired with annotated (golden) article chunks for training/validation." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "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" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['query_id', 'query', 'retrievals'],\n", + " num_rows: 291\n", + " })\n", + "})\n" + ] + } + ], + "source": [ + "# Load annotated queries\n", + "annotated_queries = load_dataset(\"devrev/search\", \"annotated_queries\")\n", + "print(annotated_queries)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
query_idqueryretrievals
00ae94217-c6a0-4895-83a2-841a95f01637create DevRev ticket from Microsoft Teams[{'id': 'ART-4216_KNOWLEDGE_NODE-26', 'text': ...
1d0b209b3-6cea-46d8-bfac-bd0e286ea21bworkflow builder auto close ticket after 48 ho...[{'id': 'ART-2012_KNOWLEDGE_NODE-24', 'text': ...
240c1aa6f-cd21-46ab-8f6f-76fdc267b584automated reminder to customer ticket will be ...[{'id': 'ART-3068_KNOWLEDGE_NODE-24', 'text': ...
3e47d883f-b712-4f98-bd06-14ade143e3c2connect Bitbucket account to DevRev account[{'id': 'ART-2030_KNOWLEDGE_NODE-27', 'text': ...
42e6f9413-15ac-4974-a380-7aa22fc98a61use of workflows in DevRev[{'id': 'ART-1961_KNOWLEDGE_NODE-28', 'text': ...
\n", + "
" + ], + "text/plain": [ + " query_id \\\n", + "0 0ae94217-c6a0-4895-83a2-841a95f01637 \n", + "1 d0b209b3-6cea-46d8-bfac-bd0e286ea21b \n", + "2 40c1aa6f-cd21-46ab-8f6f-76fdc267b584 \n", + "3 e47d883f-b712-4f98-bd06-14ade143e3c2 \n", + "4 2e6f9413-15ac-4974-a380-7aa22fc98a61 \n", + "\n", + " query \\\n", + "0 create DevRev ticket from Microsoft Teams \n", + "1 workflow builder auto close ticket after 48 ho... \n", + "2 automated reminder to customer ticket will be ... \n", + "3 connect Bitbucket account to DevRev account \n", + "4 use of workflows in DevRev \n", + "\n", + " retrievals \n", + "0 [{'id': 'ART-4216_KNOWLEDGE_NODE-26', 'text': ... \n", + "1 [{'id': 'ART-2012_KNOWLEDGE_NODE-24', 'text': ... \n", + "2 [{'id': 'ART-3068_KNOWLEDGE_NODE-24', 'text': ... \n", + "3 [{'id': 'ART-2030_KNOWLEDGE_NODE-27', 'text': ... \n", + "4 [{'id': 'ART-1961_KNOWLEDGE_NODE-28', 'text': ... " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Convert to DataFrame and display\n", + "annotated_df = annotated_queries[\"train\"].to_pandas()\n", + "annotated_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'query_id': '0ae94217-c6a0-4895-83a2-841a95f01637',\n", + " 'query': 'create DevRev ticket from Microsoft Teams',\n", + " 'retrievals': [{'id': 'ART-4216_KNOWLEDGE_NODE-26',\n", + " 'text': 'DevRev Object | Sync to DevRev |\\\\n| --- | --- | --- |\\\\n| Plan | Parts | \\\\xe2\\\\x9c\\\\x85 |\\\\n| User | Identity/DevUser | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Channel | Chat | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Attachments in Message/Thread/Task | Artifacts on Article | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Message | Comment | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Thread | Comment | \\\\xe2\\\\x9c\\\\x85 |\\\\n| Task | Issue/Ticket | \\\\xe2\\\\x9c\\\\x85 |\\\\n\\\\nImporting from Microsoft Teams\\\\n------------------------------\\\\n\\\\nFollow the steps below to import from Microsoft Teams:\\\\n\\\\n1. Go to',\n", + " 'title': 'Microsoft Teams AirSync | AirSync | Snap-ins | DevRev'},\n", + " {'id': 'ART-4216_KNOWLEDGE_NODE-29',\n", + " 'text': 'with many\\\\nattachments. DevRev honors the Microsoft Graph API rate limits and back-off and resumes automatically.\\\\n\\\\nPost import options\\\\n-------------------\\\\n\\\\nAfter a successful import, you have the following options available for the imported account:\\\\n\\\\n* **Sync to DevRev** \\\\n This option allows you to synchronize any modifications made in Microsoft Teams with the corresponding items previously imported into DevRev. It also creates new items in DevRev for any new data in Microsoft Teams',\n", + " 'title': 'Microsoft Teams AirSync | AirSync | Snap-ins | DevRev'}]}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sample a single annotated query example\n", + "annotated_queries[\"train\"][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Load Test Queries\n", + "Held-out queries used for evaluation." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DatasetDict({\n", + " test: Dataset({\n", + " features: ['query_id', 'query'],\n", + " num_rows: 92\n", + " })\n", + "})\n" + ] + } + ], + "source": [ + "# Load test queries\n", + "test_queries = load_dataset(\"devrev/search\", \"test_queries\")\n", + "print(test_queries)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
query_idquery
0a97f93d2-410a-431f-ae9a-1e23ed35d74cend customer organization name not appearing i...
17dd7e2b4-9349-4535-8007-1d706e0fabffAndroid SDK session generated with Unknown user
24bc92187-cdaa-4c20-b189-abd1672e5a71email reply received on wrong ticket
34d9878e8-f746-4df5-8bf6-f9444989b385manage access and privileges in DevRev
4483151ec-aff4-4569-b3df-651f578b61d8SSO setup SAML IDP metadata connection string ...
\n", + "
" + ], + "text/plain": [ + " query_id \\\n", + "0 a97f93d2-410a-431f-ae9a-1e23ed35d74c \n", + "1 7dd7e2b4-9349-4535-8007-1d706e0fabff \n", + "2 4bc92187-cdaa-4c20-b189-abd1672e5a71 \n", + "3 4d9878e8-f746-4df5-8bf6-f9444989b385 \n", + "4 483151ec-aff4-4569-b3df-651f578b61d8 \n", + "\n", + " query \n", + "0 end customer organization name not appearing i... \n", + "1 Android SDK session generated with Unknown user \n", + "2 email reply received on wrong ticket \n", + "3 manage access and privileges in DevRev \n", + "4 SSO setup SAML IDP metadata connection string ... " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Convert to DataFrame and display\n", + "test_df = test_queries[\"test\"].to_pandas()\n", + "test_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'query_id': 'a97f93d2-410a-431f-ae9a-1e23ed35d74c',\n", + " 'query': 'end customer organization name not appearing in ticket or conversation'}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sample a single test query example\n", + "test_queries[\"test\"][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Load Knowledge Base\n", + "Article chunks from DevRev's customer-facing support documentation." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DatasetDict({\n", + " corpus: Dataset({\n", + " features: ['id', 'text', 'title'],\n", + " num_rows: 65224\n", + " })\n", + "})\n" + ] + } + ], + "source": [ + "# Load knowledge base\n", + "knowledge_base = load_dataset(\"devrev/search\", \"knowledge_base\")\n", + "print(knowledge_base)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtexttitle
0ART-17711_KNOWLEDGE_NODE-0b'We ran into a case where an AirSync was star...Sync fails when original sync owners loses per...
1ART-17711_KNOWLEDGE_NODE-1access.\\n\\nOnce Person A was re-added with the...Sync fails when original sync owners loses per...
2ART-17650_KNOWLEDGE_NODE-0b\"American cybersecurity leader unifies securi...American cybersecurity leader unifies security...
3ART-17650_KNOWLEDGE_NODE-1DevRev\\n======================================...American cybersecurity leader unifies security...
4ART-17650_KNOWLEDGE_NODE-2solutions help organisations build and deploy ...American cybersecurity leader unifies security...
\n", + "
" + ], + "text/plain": [ + " id \\\n", + "0 ART-17711_KNOWLEDGE_NODE-0 \n", + "1 ART-17711_KNOWLEDGE_NODE-1 \n", + "2 ART-17650_KNOWLEDGE_NODE-0 \n", + "3 ART-17650_KNOWLEDGE_NODE-1 \n", + "4 ART-17650_KNOWLEDGE_NODE-2 \n", + "\n", + " text \\\n", + "0 b'We ran into a case where an AirSync was star... \n", + "1 access.\\n\\nOnce Person A was re-added with the... \n", + "2 b\"American cybersecurity leader unifies securi... \n", + "3 DevRev\\n======================================... \n", + "4 solutions help organisations build and deploy ... \n", + "\n", + " title \n", + "0 Sync fails when original sync owners loses per... \n", + "1 Sync fails when original sync owners loses per... \n", + "2 American cybersecurity leader unifies security... \n", + "3 American cybersecurity leader unifies security... \n", + "4 American cybersecurity leader unifies security... " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Convert to DataFrame and display\n", + "knowledge_df = knowledge_base[\"corpus\"].to_pandas()\n", + "knowledge_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'id': 'ART-17711_KNOWLEDGE_NODE-0',\n", + " 'text': \"b'We ran into a case where an AirSync was started by one person (Person A) and later failed. Another user (Person B) tried to click Retry, but it didn\\\\xe2\\\\x80\\\\x99t work. The logs showed 401 and 403 errors in communication between the snap-in and the snap-in manager.\\\\n\\\\nIt turned out that AirSync assigns the sync owner to whoever started it. Since Person A had been removed from the org or lost permissions, the retry failed \\\\xe2\\\\x80\\\\x94 the system still expected the original owner to have valid\",\n", + " 'title': 'Sync fails when original sync owners loses permissions'}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sample a single knowledge base chunk\n", + "knowledge_base[\"corpus\"][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Dataset Summary" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "============================================================\n", + "DevRev Search Dataset Summary\n", + "============================================================\n", + "\n", + "Annotated Queries:\n", + "DatasetDict({\n", + " train: Dataset({\n", + " features: ['query_id', 'query', 'retrievals'],\n", + " num_rows: 291\n", + " })\n", + "})\n", + "\n", + "Test Queries:\n", + "DatasetDict({\n", + " test: Dataset({\n", + " features: ['query_id', 'query'],\n", + " num_rows: 92\n", + " })\n", + "})\n", + "\n", + "Knowledge Base:\n", + "DatasetDict({\n", + " corpus: Dataset({\n", + " features: ['id', 'text', 'title'],\n", + " num_rows: 65224\n", + " })\n", + "})\n", + "\n", + "============================================================\n" + ] + } + ], + "source": [ + "print(\"=\" * 60)\n", + "print(\"DevRev Search Dataset Summary\")\n", + "print(\"=\" * 60)\n", + "print(f\"\\nAnnotated Queries:\")\n", + "print(annotated_queries)\n", + "print(f\"\\nTest Queries:\")\n", + "print(test_queries)\n", + "print(f\"\\nKnowledge Base:\")\n", + "print(knowledge_base)\n", + "print(\"\\n\" + \"=\" * 60)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "## 5. Index Knowledge Base with Zvec and BM25\n", + "\n", + "Using Voyage for dense embeddings/reranking, Zvec for vector search, and BM25 for sparse retrieval." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using model: voyage-4-large\n" + ] + } + ], + "source": [ + "VOYAGE_API_KEY = os.environ.get(\"VOYAGE_API_KEY\")\n", + "if not VOYAGE_API_KEY:\n", + " print(\"Please set VOYAGE_API_KEY environment variable. Using dummy API key for offline execution.\")\n", + " VOYAGE_API_KEY = \"DUMMY\"\n", + " \n", + "vo = voyageai.Client(api_key=VOYAGE_API_KEY)\n", + "\n", + "MODEL_ID = \"voyage-4-large\" \n", + "print(f\"Using model: {MODEL_ID}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Preparing documents: 100%|██████████| 65224/65224 [00:01<00:00, 51325.14it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Total documents: 65,224\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "corpus = knowledge_base[\"corpus\"]\n", + "\n", + "documents = []\n", + "doc_ids = []\n", + "doc_titles = []\n", + "doc_texts = []\n", + "\n", + "for item in tqdm(corpus, desc=\"Preparing documents\"):\n", + " doc_text = f\"{item['title']}\\n\\n{item['text']}\"\n", + " documents.append(doc_text)\n", + " doc_ids.append(item['id'])\n", + " doc_titles.append(item['title'])\n", + " doc_texts.append(item['text'])\n", + "\n", + "print(f\"\\nTotal documents: {len(documents):,}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Building BM25 index...\n", + "BM25 index built!\n" + ] + } + ], + "source": [ + "print(\"Building BM25 index...\")\n", + "tokenized_corpus = [doc.lower().split() for doc in documents]\n", + "bm25 = BM25Okapi(tokenized_corpus)\n", + "print(\"BM25 index built!\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def get_all_embeddings(texts, batch_size=100):\n", + " \"\"\"Get embeddings for all texts using Voyage API.\"\"\"\n", + " all_embeddings = []\n", + " for i in tqdm(range(0, len(texts), batch_size), desc=\"Generating embeddings\"):\n", + " batch = texts[i:i + batch_size]\n", + " try:\n", + " response = vo.embed(batch, model=MODEL_ID, output_dimension=2048, input_type=\"document\")\n", + " all_embeddings.extend(response.embeddings)\n", + " except Exception as e:\n", + " print(f\"Error: {e}\")\n", + " all_embeddings.extend([np.zeros(2048).tolist()] * len(batch))\n", + " time.sleep(0.1)\n", + " return np.array(all_embeddings)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating or loading embeddings...\n", + "Embeddings shape: (65224, 2048)\n" + ] + } + ], + "source": [ + "print(\"Generating or loading embeddings...\")\n", + "embed_path = \"voyage_embeddings.npy\"\n", + "if os.path.exists(embed_path):\n", + " embeddings = np.load(embed_path)\n", + "else:\n", + " embeddings = get_all_embeddings(documents, batch_size=128)\n", + " np.save(embed_path, embeddings)\n", + "\n", + "print(f\"Embeddings shape: {embeddings.shape}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Inserting into Zvec (this replaces faiss.Index.add)...\n", + "Successfully populated Zvec collection!\n" + ] + } + ], + "source": [ + "schema = zvec.CollectionSchema(\n", + " name=\"devrev_kb\",\n", + " fields=[\n", + " zvec.FieldSchema(\"title\", zvec.DataType.STRING),\n", + " zvec.FieldSchema(\"text\", zvec.DataType.STRING),\n", + " zvec.FieldSchema(\"doc_id\", zvec.DataType.STRING)\n", + " ],\n", + "\n", + " vectors=zvec.VectorSchema(\"embedding\", zvec.DataType.VECTOR_FP32, 2048),\n", + ")\n", + "\n", + "collection = zvec.create_and_open(path=\"./zvec_devrev\", schema=schema)\n", + "\n", + "print(\"Inserting into Zvec (this replaces faiss.Index.add)...\")\n", + "batch_docs = []\n", + "for i, (doc_id, doc, title, text) in enumerate(zip(doc_ids, documents, doc_titles, doc_texts)):\n", + " emb = embeddings[i]\n", + " batch_docs.append(zvec.Doc(\n", + " id=str(i),\n", + " vectors={\"embedding\": emb.tolist()},\n", + " fields={\"doc_id\": doc_id, \"title\": title, \"text\": text}\n", + " ))\n", + " if len(batch_docs) >= 1000:\n", + " collection.insert(batch_docs)\n", + " batch_docs = []\n", + "if batch_docs:\n", + " collection.insert(batch_docs)\n", + "\n", + "print(\"Successfully populated Zvec collection!\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Hybrid Search Implementation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def min_max_normalize(scores):\n", + " min_val, max_val = np.min(scores), np.max(scores)\n", + " if max_val == min_val:\n", + " return [0 for _ in scores]\n", + " return [(s - min_val) / (max_val - min_val) for s in scores]\n", + "\n", + "def hybrid_search(query, k_recall=100, k_final=10, alpha=0.65):\n", + " try:\n", + " q_emb = vo.embed([query], model=\"voyage-4\", output_dimension=2048, input_type=\"query\").embeddings[0]\n", + " except Exception:\n", + " q_emb = np.zeros(2048).tolist()\n", + " \n", + " dense_results = collection.query(\n", + " zvec.VectorQuery(\"embedding\", vector=q_emb), topk=k_recall\n", + " )\n", + " dense_dict = {res.id: res.score for res in dense_results}\n", + " \n", + " bm25_scores = bm25.get_scores(query.lower().split())\n", + " bm25_top_idx = np.argsort(bm25_scores)[::-1][:k_recall]\n", + " bm25_dict = {idx: bm25_scores[idx] for idx in bm25_top_idx}\n", + " \n", + " all_candidates = set(dense_dict.keys()).union(set(bm25_dict.keys()))\n", + " \n", + " dense_vals = [dense_dict.get(c, 0) for c in all_candidates]\n", + " bm25_vals = [bm25_dict.get(c, 0) for c in all_candidates]\n", + " \n", + " norm_dense = min_max_normalize(dense_vals)\n", + " norm_bm25 = min_max_normalize(bm25_vals)\n", + " \n", + " candidate_items = list(all_candidates)\n", + " fused_scores = { \n", + " candidate_items[i]: alpha * norm_dense[i] + (1 - alpha) * norm_bm25[i]\n", + " for i in range(len(candidate_items))\n", + " }\n", + " \n", + " fused_top_idx = sorted(candidate_items, key=lambda x: fused_scores[x], reverse=True)[:k_final]\n", + " \n", + " final_docs = [documents[int(idx)] for idx in fused_top_idx]\n", + " \n", + " try:\n", + " rerank_results = vo.rerank(query, final_docs, model=\"rerank-2.5\", top_k=k_final)\n", + " final_results = []\n", + " for r in rerank_results.results:\n", + " orig_idx = fused_top_idx[r.index]\n", + " final_results.append({\n", + " \"id\": doc_ids[int(orig_idx)],\n", + " \"title\": doc_titles[int(orig_idx)],\n", + " \"text\": doc_texts[int(orig_idx)],\n", + " \"score\": r.relevance_score\n", + " })\n", + " return final_results\n", + " except Exception:\n", + " final_results = []\n", + " for orig_idx in fused_top_idx:\n", + " final_results.append({\n", + " \"id\": doc_ids[int(orig_idx)],\n", + " \"title\": doc_titles[int(orig_idx)],\n", + " \"text\": doc_texts[int(orig_idx)],\n", + " \"score\": fused_scores[orig_idx]\n", + " })\n", + " return final_results\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.87890625 ART-2045_KNOWLEDGE_NODE-29 AirSync | Snap-ins | DevRev\n", + "0.765625 ART-16807_KNOWLEDGE_NODE-33 BrowserStack AirSync | AirSync | Snap-ins | DevRev\n", + "0.69140625 ART-2045_KNOWLEDGE_NODE-60 AirSync | Snap-ins | DevRev\n", + "0.6875 ART-4272_KNOWLEDGE_NODE-27 OneDrive AirSync | AirSync | Snap-ins | DevRev\n", + "0.61328125 ART-17215_KNOWLEDGE_NODE-6 Local development | DevRev | Docs\n" + ] + } + ], + "source": [ + "# Test search\n", + "res = hybrid_search(\"How do I set up AirSync?\", k_final=5)\n", + "for r in res:\n", + " print(r[\"score\"], r[\"id\"], r[\"title\"][:50])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7. Evaluate on Annotated Queries\n", + "Calculate Recall@K" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from tqdm import tqdm\n", + "\n", + "def evaluate_true(annotated_df, search_fn, Ks=[1, 3, 5, 10]):\n", + " results = {f\"recall@{k}\": [] for k in Ks}\n", + " results.update({f\"mrr@{k}\": [] for k in Ks})\n", + " ndcg_scores = []\n", + "\n", + " for _, row in tqdm(annotated_df.iterrows(), total=len(annotated_df), desc=\"Evaluating\"):\n", + " golden_ids = {r[\"id\"] for r in row[\"retrievals\"]}\n", + " max_k = max(Ks)\n", + " \n", + " res = search_fn(row[\"query\"], k_final=max_k)\n", + " preds = [r[\"id\"] for r in res]\n", + "\n", + " for k in Ks:\n", + " preds_k = preds[:k]\n", + " # Recall@K\n", + " results[f\"recall@{k}\"].append(\n", + " 1 if golden_ids & set(preds_k) else 0\n", + " )\n", + " # MRR@K\n", + " mrr = 0.0\n", + " for rank, pid in enumerate(preds_k, 1):\n", + " if pid in golden_ids:\n", + " mrr = 1 / rank\n", + " break\n", + " results[f\"mrr@{k}\"].append(mrr)\n", + "\n", + " # nDCG@10\n", + " gains = [1 if pid in golden_ids else 0 for pid in preds[:10]]\n", + " dcg = sum(g / np.log2(i + 2) for i, g in enumerate(gains))\n", + " ideal = sum(1 / np.log2(i + 2) for i in range(min(len(golden_ids), 10)))\n", + " ndcg_scores.append(dcg / ideal if ideal > 0 else 0)\n", + "\n", + " print(\"=\" * 40)\n", + " for k in Ks:\n", + " print(f\"Recall@{k:<3} {np.mean(results[f'recall@{k}']):.4f}\")\n", + " print(f\"MRR@{k:<5} {np.mean(results[f'mrr@{k}']):.4f}\")\n", + " print(f\"nDCG@10 {np.mean(ndcg_scores):.4f}\")\n", + " print(\"=\" * 40)\n", + " return results\n", + "\n", + "# Run the evaluation on the annotated set\n", + "evaluate_true(annotated_df, hybrid_search, Ks=[1, 3, 5, 10])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8. Generate Output for Test Queries" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing test queries: 100%|██████████| 92/92 [01:21<00:00, 1.12it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Results saved to test_queries_results.json\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "test_results = []\n", + "TOP_K = 10\n", + " \n", + "for item in tqdm(test_queries[\"test\"], desc=\"Processing test queries\"):\n", + " query_id = item[\"query_id\"]\n", + " query = item[\"query\"]\n", + " \n", + " res = hybrid_search(query, k_final=TOP_K)\n", + " retrievals = [{\"id\": r[\"id\"], \"title\": r[\"title\"], \"text\": r[\"text\"]} for r in res]\n", + " \n", + " test_results.append({\n", + " \"query_id\": query_id,\n", + " \"query\": query,\n", + " \"retrievals\": retrievals\n", + " })\n", + "\n", + "with open(\"test_queries_results.json\", \"w\") as f:\n", + " json.dump(test_results, f, indent=2)\n", + "\n", + "print(\"Results saved to test_queries_results.json\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 9. Comprehensive Evaluation on Annotated Queries (nDCG & MRR)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Evaluating: 100%|██████████| 291/291 [04:44<00:00, 1.02it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "========================================\n", + "Recall@1 0.5155\n", + "MRR@1 0.5155\n", + "Recall@3 0.6323\n", + "MRR@3 0.5693\n", + "Recall@5 0.6632\n", + "MRR@5 0.5760\n", + "Recall@10 0.7010\n", + "MRR@10 0.5815\n", + "nDCG@10 0.3861\n", + "========================================\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "import json\n", + "import numpy as np\n", + "from tqdm import tqdm\n", + "\n", + "annotated = [row for row in annotated_queries[\"train\"]]\n", + "\n", + "def evaluate_true(annotated_data, search_fn, Ks=[1, 3, 5, 10]):\n", + " results = {f\"recall@{k}\": [] for k in Ks}\n", + " results.update({f\"mrr@{k}\": [] for k in Ks})\n", + " ndcg_scores = []\n", + "\n", + " for item in tqdm(annotated_data, desc=\"Evaluating\"):\n", + " golden_ids = {r[\"id\"] for r in item[\"retrievals\"]}\n", + " max_k = max(Ks)\n", + " preds = [r[\"id\"] for r in search_fn(item[\"query\"], k_final=max_k)]\n", + "\n", + " for k in Ks:\n", + " preds_k = preds[:k]\n", + " # Recall@K\n", + " results[f\"recall@{k}\"].append(\n", + " 1 if set(golden_ids) & set(preds_k) else 0\n", + " )\n", + " # MRR@K\n", + " mrr = 0.0\n", + " for rank, pid in enumerate(preds_k, 1):\n", + " if pid in golden_ids:\n", + " mrr = 1 / rank\n", + " break\n", + " results[f\"mrr@{k}\"].append(mrr)\n", + "\n", + " # nDCG@10\n", + " gains = [1 if pid in golden_ids else 0 for pid in preds[:10]]\n", + " dcg = sum(g / np.log2(i + 2) for i, g in enumerate(gains))\n", + " ideal = sum(1 / np.log2(i + 2) for i in range(min(len(golden_ids), 10)))\n", + " ndcg_scores.append(dcg / ideal if ideal > 0 else 0)\n", + "\n", + " print(\"=\" * 40)\n", + " for k in Ks:\n", + " print(f\"Recall@{k:<3} {np.mean(results[f'recall@{k}']):.4f}\")\n", + " print(f\"MRR@{k:<5} {np.mean(results[f'mrr@{k}']):.4f}\")\n", + " print(f\"nDCG@10 {np.mean(ndcg_scores):.4f}\")\n", + " print(\"=\" * 40)\n", + " return results\n", + "\n", + "metrics = evaluate_true(annotated, hybrid_search, Ks=[1, 3, 5, 10])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 431eb8f570de9cb0b543565fc6f4b40a4fcc603e Mon Sep 17 00:00:00 2001 From: Shreya Mishra <59368657+shrey2003@users.noreply.github.com> Date: Wed, 11 Mar 2026 07:26:33 -0700 Subject: [PATCH 3/9] renamed original file to avoid confusion --- test_queries_results.json => test_queries_results_original.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename test_queries_results.json => test_queries_results_original.json (99%) diff --git a/test_queries_results.json b/test_queries_results_original.json similarity index 99% rename from test_queries_results.json rename to test_queries_results_original.json index 74c199a..e5bb070 100644 --- a/test_queries_results.json +++ b/test_queries_results_original.json @@ -5151,4 +5151,4 @@ } ] } -] \ No newline at end of file +] From beb859d7792b5f3c8a2f6e8fba9d257aca9b6c76 Mon Sep 17 00:00:00 2001 From: Shreya Mishra <59368657+shrey2003@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:58:01 +0530 Subject: [PATCH 4/9] Added test queries result for the current hybrid pipeline --- test_queries_results.json | 5154 +++++++++++++++++++++++++++++++++++++ 1 file changed, 5154 insertions(+) create mode 100644 test_queries_results.json diff --git a/test_queries_results.json b/test_queries_results.json new file mode 100644 index 0000000..dcc8c32 --- /dev/null +++ b/test_queries_results.json @@ -0,0 +1,5154 @@ +[ + { + "query_id": "a97f93d2-410a-431f-ae9a-1e23ed35d74c", + "query": "end customer organization name not appearing in ticket or conversation", + "retrievals": [ + { + "id": "ART-1981_KNOWLEDGE_NODE-34", + "title": "Support best practices | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1981_KNOWLEDGE_NODE-30", + "title": "Support best practices | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1978_KNOWLEDGE_NODE-44", + "title": "Customer portal | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-2040_KNOWLEDGE_NODE-27", + "title": "Zendesk AirSync | AirSync | Snap-ins | DevRev", + "text": "| \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Category/Status of Ticket | State/Stage of Ticket | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Attachments on Ticket | Attachments on Ticket | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Tag on Ticket | Tag on Ticket | \\xe2\\x9c\\x85 | \\xe2\\x9d\\x8c |\\n| Organization | Account | \\xe2\\x9c\\x85 | \\xe2\\x9d\\x8c |\\n| Agent | DevUser | \\xe2\\x9c\\x85 | \\xe2\\x9d\\x8c |\\n| End User | Contact | \\xe2\\x9c\\x85 | \\xe2\\x9d\\x8c |\\n| Chat | Conversation | \\xe2\\x9d\\x8c | \\xe2\\x9d\\x8c |\\n| Conversation |" + }, + { + "id": "ART-15327_KNOWLEDGE_NODE-10", + "title": "Update Conversation | DevRev | Docs", + "text": "\"name\": \"string\", |\\n| 168 | \"size\": 1 |\\n| 169 | } |\\n| 170 | }, |\\n| 171 | \"email\": \"string\", |\\n| 172 | \"full_name\": \"string\", |\\n| 173 | \"state\": \"active\" |\\n| 174 | } |\\n| 175 | ], |\\n| 176 | \"sla_summary\": { |\\n| 177 | \"closest_to_breach_metric\": \"string\", |\\n| 178 | \"org_schedule\": { |\\n| 179 | \"id\": \"string\", |\\n| 180 | \"status\": \"archived\", |\\n| 181 | \"display_id\": \"string\", |\\n| 182 | \"name\": \"string\", |\\n| 183 | \"timezone\": \"string\", |\\n| 184 | \"valid_until\":" + }, + { + "id": "ART-15320_KNOWLEDGE_NODE-10", + "title": "Create Conversation | DevRev | Docs", + "text": "\"name\": \"string\", |\\n| 168 | \"size\": 1 |\\n| 169 | } |\\n| 170 | }, |\\n| 171 | \"email\": \"string\", |\\n| 172 | \"full_name\": \"string\", |\\n| 173 | \"state\": \"active\" |\\n| 174 | } |\\n| 175 | ], |\\n| 176 | \"sla_summary\": { |\\n| 177 | \"closest_to_breach_metric\": \"string\", |\\n| 178 | \"org_schedule\": { |\\n| 179 | \"id\": \"string\", |\\n| 180 | \"status\": \"archived\", |\\n| 181 | \"display_id\": \"string\", |\\n| 182 | \"name\": \"string\", |\\n| 183 | \"timezone\": \"string\", |\\n| 184 | \"valid_until\":" + }, + { + "id": "ART-15319_KNOWLEDGE_NODE-10", + "title": "Get Conversation (POST) | DevRev | Docs", + "text": "167 | \"name\": \"string\", |\\n| 168 | \"size\": 1 |\\n| 169 | } |\\n| 170 | }, |\\n| 171 | \"email\": \"string\", |\\n| 172 | \"full_name\": \"string\", |\\n| 173 | \"state\": \"active\" |\\n| 174 | } |\\n| 175 | ], |\\n| 176 | \"sla_summary\": { |\\n| 177 | \"closest_to_breach_metric\": \"string\", |\\n| 178 | \"org_schedule\": { |\\n| 179 | \"id\": \"string\", |\\n| 180 | \"status\": \"archived\", |\\n| 181 | \"display_id\": \"string\", |\\n| 182 | \"name\": \"string\", |\\n| 183 | \"timezone\": \"string\", |\\n| 184 | \"valid_until\":" + }, + { + "id": "ART-16264_KNOWLEDGE_NODE-27", + "title": "June 2025 | Changelog | DevRev", + "text": "articles: \\xe2\\x80\\xa3 [Search Node | Automate | Snap-ins](/docs/automations/search-node) \\xe2\\x80\\xa3 [Search | AgentOS platform](/docs/product/search)\\n\\n![]()\\n\\n### Support App\\n\\nImproved Customer Information Management on a Ticket\\n----------------------------------------------------\\n\\nWe've enhanced the way users view and update customer information on tickets.\\n\\n**New improvements:**\\n\\n* **Consolidated fields:** Customer information is now organized under two primary fields:" + }, + { + "id": "ART-6174_KNOWLEDGE_NODE-36", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "text": "Status](/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n![]()\\n\\n![]()\"" + }, + { + "id": "ART-984_KNOWLEDGE_NODE-10", + "title": "Why you Should be Looking at Support Differently", + "text": "indicator to the customer that the vendor obviously has some problems internally. Do you think the customer will be happy? Do you think the customer will trust what the sales rep says in the future? Simply put, no.\\n\\nNow, let\\xe2\\x80\\x99s handle this a little differently and look at the result\\xe2\\x80\\xa6\\n\\nIn this scenario, let\\xe2\\x80\\x99s say the customer files the same ticket and asks their sales rep for an update. The support engineer working on the ticket and the sales rep communicate" + } + ] + }, + { + "query_id": "7dd7e2b4-9349-4535-8007-1d706e0fabff", + "query": "Android SDK session generated with Unknown user", + "retrievals": [ + { + "id": "ART-4255_KNOWLEDGE_NODE-9", + "title": "DevRev SDK for Android \u2014 DevRev | Docs", + "text": "organization, and account traits. These fields must be configured through the DevRev app before they can be utilized. For more information, refer to [Object customization](https://devrev.ai/docs/product/object-customization).\\n\\n### Anonymous 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|" + }, + { + "id": "ART-2898_KNOWLEDGE_NODE-10", + "title": "Android integration \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-4255_KNOWLEDGE_NODE-10", + "title": "DevRev SDK for Android \u2014 DevRev | Docs", + "text": "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 identity with the DevRev backend.\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1| DevRev.identifyUnverifiedUser( \\n ---|--- \\n 2| identity: Identity \\n 3| )\\n[/code] \\n \\nThe function accepts the `Identity` object, where the user" + }, + { + "id": "ART-15513_KNOWLEDGE_NODE-8", + "title": "Features | DevRev | Docs", + "text": "create an anonymous user with an optional user identifier, ensuring that no other data is stored or associated with the user.\\n\\n###### Kotlin\\n\\n###### Java\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | DevRev.identifyAnonymousUser( |\\n| 2 | userId: String |\\n| 3 | ) |\\n```\\n\\n### Identify an unverified user\\n\\nThe unverified identification method identifies users with a unique identifier, but it does not verify their identity with the DevRev backend.\\n\\n###### Kotlin\\n\\n###### Java\\n\\n```\\n| | |\\n|" + }, + { + "id": "ART-15513_KNOWLEDGE_NODE-0", + "title": "Features | DevRev | Docs", + "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*" + }, + { + "id": "ART-12449_KNOWLEDGE_NODE-8", + "title": "Features \u2014 DevRev | Docs", + "text": "more information, refer to [Object customization](https://devrev.ai/docs/product/object-customization).\\n\\n### Anonymous identification\\n\\nThe anonymous identification method allows you to create an anonymous user with an optional 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" + }, + { + "id": "ART-2898_KNOWLEDGE_NODE-11", + "title": "Android integration \u2014 DevRev | Docs", + "text": "identity with the DevRev backend.\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1| DevRev.identifyUnverifiedUser( \\n ---|--- \\n 2| identity: Identity \\n 3| )\\n[/code] \\n \\nThe function accepts the `Identity` object, where the user identifier (`userId`) is the only required property; all other properties are optional.\\n\\nFor example:\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1| // Identify an unverified user using their email address as the user identifier. \\n" + }, + { + "id": "ART-2898_KNOWLEDGE_NODE-1", + "title": "Android integration \u2014 DevRev | Docs", + "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 *" + }, + { + "id": "ART-4255_KNOWLEDGE_NODE-11", + "title": "DevRev SDK for Android \u2014 DevRev | Docs", + "text": "identifier (`userId`) is the only required property; all other properties are optional.\\n\\nFor example:\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1| // Identify an unverified user using their email address as the user identifier. \\n ---|--- \\n 2| DevRev.identifyUnverifiedUser(Identity(userId = \"user@example.org\"))\\n[/code] \\n \\n## Update user information\\n\\nTo update a user\\xe2\\x80\\x99s information, use the following method:\\n\\n###### Kotlin\\n\\n###### Java\\n\\n[code]\\n\\n 1|" + }, + { + "id": "ART-15513_KNOWLEDGE_NODE-1", + "title": "Features | DevRev | Docs", + "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" + } + ] + }, + { + "query_id": "4bc92187-cdaa-4c20-b189-abd1672e5a71", + "query": "email reply received on wrong ticket", + "retrievals": [ + { + "id": "ART-1979_KNOWLEDGE_NODE-61", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "following scenarios can lead to the creation of follow up ticket:\\n\\n* Customers communicated on an archived/immutable ticket from any channel such as email.\\n* Customer communicated on a merged ticket and the primary ticket is also archived.\\n\\nAfter creation of a follow up ticket the customer messages will reflect only on the new followup ticket and the customer will continue to see response on the same thread in channels like email & slack. The user can continue responding on the new follow" + }, + { + "id": "ART-2027_KNOWLEDGE_NODE-43", + "title": "Email | Integrate | Snap-ins | DevRev", + "text": "recipients in the **To** or **Cc**\\n\\nThreading\\n---------\\n\\nEmail integration preserves threading by using the **References** and **In-Reply-To** email headers and by correlating the email **Subject** field and the ticket title. If either the ticket title or the email subject is changed at any point after ticket creation, follow up emails may cause a new ticket to be created.\\n\\n![]()\\n\\nOnce a ticket is created from an email, it is recommended to avoid changing the email subject or the" + }, + { + "id": "ART-2027_KNOWLEDGE_NODE-37", + "title": "Email | Integrate | Snap-ins | DevRev", + "text": "If Channel is not email, it is sent from the email address configured in the snap-in under **Notification sender email address**. - If no email snap-in is installed, the reply is sent from [notifications@devrev.ai](mailto:notifications@devrev.ai). | Yes |\\n| Replies to notification emails | Email reply | Response added to ticket thread | Yes |\\n\\n![]()\\n\\nEven when a reply comes via email, it\\xe2\\x80\\x99s always synced into the customer\\xe2\\x80\\x99s portal view.\\n\\nEmail experience from an" + }, + { + "id": "ART-1953_KNOWLEDGE_NODE-29", + "title": "Customer email notifications | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-59", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "duplicate tickets transfer to the primary ticket.\\n* The older messages and attachments on the duplicate ticket remains within the duplicate ticket post merge.\\n* Any new customer message on duplicate tickets post merge sync to the primary ticket.\\n* Duplicate tickets remain accessible through the **Linked Objects** section of the primary ticket.\\n* CSAT triggers only for the primary ticket resolution.\\n* Merge actions cannot be reversed, and merged tickets cannot be merged again.\\n\\nFollow up" + }, + { + "id": "ART-1953_KNOWLEDGE_NODE-24", + "title": "Customer email notifications | Computer by DevRev | DevRev", + "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." + }, + { + "id": "ART-1953_KNOWLEDGE_NODE-35", + "title": "Customer email notifications | Computer by DevRev | DevRev", + "text": "installed [Auto-reply snap-in](https://docs.devrev.ai/automations/auto-reply).\\n\\n[PreviousUpdates](/docs/product/updates)[NextRoles](/docs/product/roles)\\n\\n#### On this page\\n\\n* [White-label customer email notifications](#whitelabel-customer-email-notifications)\\n* [Reply to the customer on a 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" + }, + { + "id": "ART-1478_KNOWLEDGE_NODE-50", + "title": "Event sources \u2014 DevRev | Docs", + "text": "href=\\\\\"mailto:test@example.com\\\\\">test@example.com> wrote:
test email body
\\\\r\\\\n
\\\\r\\\\n\", \\n 12| \"inReplyToId\": { \\n 13| \"stringValues\": [ \\n 14| \"jksdnfjnsflkdsfkjaabcdefghiuK8BA@mail.gmail.com\" \\n 15| ] \\n 16| }, \\n 17|" + }, + { + "id": "ART-2027_KNOWLEDGE_NODE-44", + "title": "Email | Integrate | Snap-ins | DevRev", + "text": "ticket title.\\n\\nSpecifically, threading breaks when the order of words in the subject is changed, when words are replaced, or when words or symbols are inserted in the middle or appended. Threading is maintained if the subject change is limited to the addition of words before :, words between [], words between ##, or common prefixes, such as Re or Fwd.\\n\\nRate limiting\\n-------------\\n\\nTo ensure that your support system is protected from potential spam attacks as well as from issues arising" + }, + { + "id": "ART-1953_KNOWLEDGE_NODE-30", + "title": "Customer email notifications | Computer by DevRev | DevRev", + "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" + } + ] + }, + { + "query_id": "4d9878e8-f746-4df5-8bf6-f9444989b385", + "query": "manage access and privileges in DevRev", + "retrievals": [ + { + "id": "ART-1955_KNOWLEDGE_NODE-66", + "title": "Default privileges by group | Roles | Computer by DevRev | DevRev", + "text": "Privileges: devu object ['CREATE', 'READ', 'UPDATE', 'DELETE']\\n* *revu Admin:* Contains privileges for admins on revus.\\n\\n Privileges: revu object ['CREATE', 'READ', 'UPDATE', 'DELETE']\\n* *devo Admin:* Contains privileges for admins on devos.\\n\\n Privileges: devo object ['CREATE', 'READ', 'UPDATE', 'DELETE']\\n* *flow Admin:* Contains privileges for admins on flows.\\n\\n Privileges: flow object ['CREATE', 'READ', 'UPDATE', 'DELETE']\\n* *webhook Admin:* Contains privileges for admins on" + }, + { + "id": "ART-1958_KNOWLEDGE_NODE-24", + "title": "Access control | Computer by DevRev | DevRev", + "text": "policies](#mfz-policies)\\n* [Sharing](#sharing)\\n* [Vista privileges](#vista-privileges)\\n\\n1. [Documentation](/docs)\\n3. [Computer by DevRev](/docs/intro)\\n[Access control](/docs/product/access-control)\\n\\nAccess control\\n==============\\n\\nAccess control in DevRev is a system that authorizes an actor to perform actions on different targets within the application. In this context, an actor is any entity that interacts with the app, such as an organization member, a customer, a system user, or a" + }, + { + "id": "ART-1958_KNOWLEDGE_NODE-33", + "title": "Access control | Computer by DevRev | DevRev", + "text": "privileges by group](/docs/product/privs)[NextObject customization](/docs/product/object-customization)\\n\\n#### On this page\\n\\n* [Privilege determination](#privilege-determination)\\n* [Granting access permissions](#granting-access-permissions)\\n* [MFZ policies](#mfz-policies)\\n* [Sharing](#sharing)\\n* [Vista privileges](#vista-privileges)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about it.\\n\\n![]()](/blog/soc-compliance)\\n\\nComputer\\n\\n* [Meet" + }, + { + "id": "ART-1958_KNOWLEDGE_NODE-1", + "title": "Access control | Computer by DevRev | DevRev", + "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 +" + }, + { + "id": "ART-1958_KNOWLEDGE_NODE-25", + "title": "Access control | Computer by DevRev | DevRev", + "text": "service account.\\n\\nWhen an actor attempts to carry out an action, such as creating an issue, the access control system checks the actor\\'s role to determine if the actor has the necessary privileges to perform the desired action.\\n\\nPrivilege determination\\n-----------------------\\n\\nEach role consists of two essential parts: caveats and privileges. *Caveats* represent specific conditions that must be met for the role to be applicable. *Privileges* outline the actions or operations that the" + }, + { + "id": "ART-1963_KNOWLEDGE_NODE-1", + "title": "Accessing DevRev | Computer by DevRev | DevRev", + "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 +" + }, + { + "id": "ART-1958_KNOWLEDGE_NODE-23", + "title": "Access control | Computer by DevRev | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Privilege determination](#privilege-determination)\\n* [Granting access permissions](#granting-access-permissions)\\n* [MFZ" + }, + { + "id": "ART-1955_KNOWLEDGE_NODE-0", + "title": "Default privileges by group | Roles | Computer by DevRev | DevRev", + "text": "b\"Default privileges by group | Roles | Computer by DevRev | 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 +" + }, + { + "id": "ART-1955_KNOWLEDGE_NODE-95", + "title": "Default privileges by group | Roles | Computer by DevRev | DevRev", + "text": "Status](/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\"" + }, + { + "id": "ART-1955_KNOWLEDGE_NODE-23", + "title": "Default privileges by group | Roles | Computer by DevRev | DevRev", + "text": "AirSync](/docs/integrations/browserstack)\\n* [Changelog](/docs/changelog)\\n\\n + [August 2025](/docs/changelog/latest)\\n + [July 2025](/docs/changelog/_2025-07-01)\\n + [June 2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n +" + } + ] + }, + { + "query_id": "483151ec-aff4-4569-b3df-651f578b61d8", + "query": "SSO setup SAML IDP metadata connection string Google Workspace", + "retrievals": [ + { + "id": "ART-1966_KNOWLEDGE_NODE-29", + "title": "External identity provider setup | Computer by DevRev | DevRev", + "text": "are some common examples:\\n\\nAzure ADGoogle WorkspaceJump CloudOkta\\n\\n1. Log in to Azure Active Directory and select **Enterprise applications > + New application**.\\n2. Search for \"Azure AD SAML Toolkit\" in the **Browse Azure AD Gallery** and select it.\\n3. Enter DevRev as the name and click **Create**.\\n4. Select **Single sign-on > SAML**.\\n5. Edit the **Basic SAML Configuration** and enter the following parameters.\\n\\n * **Identifier** (Entity ID):" + }, + { + "id": "ART-1966_KNOWLEDGE_NODE-35", + "title": "External identity provider setup | Computer by DevRev | DevRev", + "text": "false,\\n\\n\\n\\n6 \"type\": \"samlp\",\\n\\n\\n\\n7 \"sign_in_endpoint\": \"\",\\n\\n\\n\\n8 \"connection_name\": \"\",\\n\\n\\n\\n9 }\\n\\n\\n\\n10 }\\n```\\n\\nShow more\\n```\\n\\nImportant\\n\\n* The connection\\\\_name must follow the naming pattern described earlier.\\n* Save the id field from the response\\xe2\\x80\\x94you need it for the next step.\\n* The connection is created with enabled: false by default for security.\\n\\n### Step 2: Enable the authentication connection\\n\\nAfter" + }, + { + "id": "ART-1545_KNOWLEDGE_NODE-177", + "title": "Create (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + }, + { + "id": "ART-1566_KNOWLEDGE_NODE-177", + "title": "Transition (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + }, + { + "id": "ART-1562_KNOWLEDGE_NODE-177", + "title": "Get (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + }, + { + "id": "ART-1564_KNOWLEDGE_NODE-177", + "title": "List (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + }, + { + "id": "ART-1560_KNOWLEDGE_NODE-177", + "title": "Assign (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + }, + { + "id": "ART-1966_KNOWLEDGE_NODE-39", + "title": "External identity provider setup | Computer by DevRev | DevRev", + "text": "authentication methods to enforce SSO-only login. This is commonly done to ensure all users authenticate through your organization\\'s identity provider.\\n\\n**Common scenario**: If users were previously logging in with Google OAuth and you\\'ve now enabled SSO, you can disable Google authentication to force all users to use SSO.\\n\\nFirst, get the Google OAuth connection ID:\\n\\n```\\n```\\n1 curl --location --request GET \\'https://api.devrev.ai/dev-orgs.auth-connections.list\\' \\\\\\n\\n\\n\\n2 --header" + }, + { + "id": "ART-1558_KNOWLEDGE_NODE-177", + "title": "Metric Definitions List (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + }, + { + "id": "ART-1543_KNOWLEDGE_NODE-177", + "title": "Metric Definitions List Post (Beta) \u2014 DevRev | Docs", + "text": "Apps\\n\\nObject encapsulating the configuration parameters for a Google Apps authentication connection.\\n\\nShow 6 properties\\nOR\\nNone Show 4 properties\\nOR\\nOidc\\n\\nObject encapsulating the configuration parameters for an OIDC authentication connection.\\n\\nShow 6 properties\\nOR\\nSamlp\\n\\nObject encapsulating the configuration parameters for a SAML authentication connection.\\n\\nShow 5 properties\\nOR\\nWaad\\n\\nObject encapsulating the configuration parameters for an Azure AD authentication" + } + ] + }, + { + "query_id": "0f148fcd-ec0b-43d6-b172-32b843a8dbd2", + "query": "restrict users from linking opportunities and meetings", + "retrievals": [ + { + "id": "ART-12471_KNOWLEDGE_NODE-5", + "title": "May 19, 2025 | DevRev | Docs", + "text": "by `created_by`, `name`, and `sync_metadata` fields to [`/groups.list`](/beta/api-reference/groups/list-post)\\n\\n### Links\\n\\n* Added `custom_link_type` property to link objects in [`/links.create`](/beta/api-reference/links/create) and related endpoints\\n\\n### Meetings\\n\\n* Added `sync_metadata` property to meeting objects in [`/meetings.create`](/beta/api-reference/meetings/create) and related endpoints\\n\\n### Opportunities\\n\\n* Added `contacts` property to opportunity objects in work-related" + }, + { + "id": "ART-3197_KNOWLEDGE_NODE-11", + "title": "Changelog | DevRev | Docs", + "text": "by `created_by`, `name`, and `sync_metadata` fields to [`/groups.list`](/beta/api-reference/groups/list-post)\\n\\n### Links\\n\\n* Added `custom_link_type` property to link objects in [`/links.create`](/beta/api-reference/links/create) and related endpoints\\n\\n### Meetings\\n\\n* Added `sync_metadata` property to meeting objects in [`/meetings.create`](/beta/api-reference/meetings/create) and related endpoints\\n\\n### Opportunities\\n\\n* Added `contacts` property to opportunity objects in work-related" + }, + { + "id": "ART-13005_KNOWLEDGE_NODE-2", + "title": "Count Meetings \u2014 DevRev | Docs", + "text": "stringsOptional\\n\\nFilters for meetings created by the specified user(s).\\n\\nexternal_reflist of stringsOptional\\n\\nFilters for meetings with the provided external_ref(s).\\n\\nlinks.link_typestringOptional`format: \"text\"`\\n\\nFilters for link type in links associated with the meeting.\\n\\nlinks.targetstringOptional`format: \"id\"`\\n\\nFilters for target id in links associated with the meeting.\\n\\nlinks.target_object_typestringOptional`format: \"text\"`\\n\\nFilters for target object type in links" + }, + { + "id": "ART-2032_KNOWLEDGE_NODE-28", + "title": "Google Calendar | Integrate | Snap-ins | DevRev", + "text": "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 creators. Enter multiple emails separated by commas.\\n * **Add non-existing customers**: Enable this to allow people in meeting that are not customer to be added as a customer.\\n\\nIf a meeting is scheduled with people who are neither part of the company nor customers, this option allows them to be added" + }, + { + "id": "ART-3003_KNOWLEDGE_NODE-1", + "title": "Count Meetings (Beta) \u2014 DevRev | Docs", + "text": "user(s).\\n\\ncustom_fieldsobjectOptional\\n\\nFilters for meeting on custom fields.\\n\\nexternal_reflist of stringsOptional\\n\\nFilters for meetings with the provided external_ref(s).\\n\\nlinks.link_typestringOptional`format: \"text\"`\\n\\nFilters for link type in links associated with the meeting.\\n\\nlinks.targetstringOptional`format: \"id\"`\\n\\nFilters for target id in links associated with the meeting.\\n\\nlinks.target_object_typestringOptional`format: \"text\"`\\n\\nFilters for target object type in links" + }, + { + "id": "ART-15416_KNOWLEDGE_NODE-2", + "title": "Count Meetings | DevRev | Docs", + "text": "created by the specified user(s).\\n\\nexternal\\\\_reflist of stringsOptional\\n\\nFilters for meetings with the provided external\\\\_ref(s).\\n\\nlinks.link\\\\_typestringOptional`format: \"text\"`\\n\\nFilters for link type in links associated with the meeting.\\n\\nlinks.targetstringOptional`format: \"id\"`\\n\\nFilters for target id in links associated with the meeting.\\n\\nlinks.target\\\\_object\\\\_typestringOptional`format: \"text\"`\\n\\nFilters for target object type in links associated with the" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-28", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "text": "like title, description, start\\\\_date, attendees, etc. * subtype: (Optional) Meeting subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields | Created meeting object |\\n| Create Opportunity | Creates a new opportunity in DevRev. | * Opportunity details like title, body, applies\\\\_to\\\\_part, etc. * subtype: (Optional) Opportunity subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields | Created opportunity object |\\n| Create" + }, + { + "id": "ART-13009_KNOWLEDGE_NODE-3", + "title": "List Meetings \u2014 DevRev | Docs", + "text": "meeting.\\n\\nlinks.targetstringOptional`format: \"id\"`\\n\\nFilters for target id in links associated with the meeting.\\n\\nlinks.target_object_typestringOptional`format: \"text\"`\\n\\nFilters for target object type in links associated with the meeting.\\n\\nmemberslist of stringsOptional\\n\\nFilter for meeting on specified Member Ids.\\n\\nmodeenumOptional\\n\\nThe iteration mode to use, otherwise if not set, then \\xe2\\x80\\x9cafter\\xe2\\x80\\x9d is used.\\n\\nAllowed values: afterbefore\\n\\norganizerlist of" + }, + { + "id": "ART-17231_KNOWLEDGE_NODE-22", + "title": "Supported DevRev object types | DevRev | Docs", + "text": "\\xe2\\x9c\\x94\\xef\\xb8\\x8e | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | |\\n| [link](/airsync/supported-object-types#link) | link | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | | |\\n| [linkable](/airsync/supported-object-types#linkable) | part\\xe2\\x86\\x92linkable | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | |\\n| [meeting](/airsync/supported-object-types#meeting) | meeting | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | | | |\\n|" + }, + { + "id": "ART-15422_KNOWLEDGE_NODE-5", + "title": "List Meetings | DevRev | Docs", + "text": "return.\\n\\nlinks.link\\\\_typestringOptional`format: \"text\"`\\n\\nFilters for link type in links associated with the meeting.\\n\\nlinks.targetstringOptional`format: \"id\"`\\n\\nFilters for target id in links associated with the meeting.\\n\\nlinks.target\\\\_object\\\\_typestringOptional`format: \"text\"`\\n\\nFilters for target object type in links associated with the meeting.\\n\\nmemberslist of stringsOptional\\n\\nFilter for meeting on specified Member Ids.\\n\\nmodeenumOptional\\n\\nThe iteration mode to use," + } + ] + }, + { + "query_id": "15acf954-22c2-4860-8fbb-e7e6dcc5c8c8", + "query": "connect WhatsApp Business with DevRev", + "retrievals": [ + { + "id": "ART-2029_KNOWLEDGE_NODE-29", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "Install the WhatsApp snap-in from the marketplace as mentioned above.\\n2. **Create a connection:** In the **Connections** tab, add your existing connection or create a new connection.\\n * Give your connection a name, and ensure that you completed the required steps in the prerequisites.\\n * Click **Connect**.\\n * Open the dialog and follow the process to finish creating a connection.\\n\\n ![]()\\n3. **Configure business phone number:** In the **Configuration** tab, enter the business" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-30", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "phone number to sync WhatsApp messages sent to the business with DevRev Inbox.\\n4. **Register for WhatsApp webhook:** In the **Discussion** tab, enter **/whatsapp** to register to the WhatsApp webhook URL to receive WhatsApp messages in the DevRev Inbox.\\n5. **Use template messages:** As per WhatsApp policies, template messages are required to communicate with customers once 24 hours have passed since their last message. To ensure continuity in customer conversations, the following template" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-27", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "work with 360dialog for WhatsApp Integration. If you have an existing WhatsApp for Business Account, follow the steps to [migrate to 360dialog](https://docs.360dialog.com/partner/account-setup/migrating-phone-numbers).\\n\\nInstalling the WhatsApp snap-in\\n-------------------------------\\n\\nTo use this snap-in, you\\'ll need to connect your WhatsApp with Business API with DevRev.\\n\\n1. Install [WhatsApp](/marketplace/whatsapp) from the DevRev marketplace.\\n2. Select the workspace to install the" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-24", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "[Limitations](#limitations)\\n* [Set up the snap-in](#set-up-the-snapin)\\n\\n1. [Documentation](/docs)\\n3. [Snap-ins](/docs/snapins)\\n[Integrate](/docs/integrate)\\n[WhatsApp](/docs/integrations/whatsapp)\\n\\nWhatsApp\\n========\\n\\nUsing DevRev, you can connect with your customers through WhatsApp. This new communication channel allows your customers to reach out with their questions and concerns directly on WhatsApp. The messages from WhatsApp seamlessly appear in your DevRev Inbox, making it easy" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-25", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "for you to manage all your customer conversations in one place. By adding WhatsApp to DevRev, you can streamline your support and offer a smoother experience to your customers.\\n\\nFor detailed information about WhatsApp for Business, refer to [WhatsApp Business Platform - Documentation](https://developers.facebook.com/docs/whatsapp/overview)\\n\\nPrerequisites\\n-------------\\n\\n1. **Create a business account:** Ensure you have a [Business Account](https://business.facebook.com/overview) in Meta" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-28", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "snap-in, confirm installation, and click **Deploy snap-in**.\\n\\nLimitations\\n-----------\\n\\n* Group Conversations are not supported by WhatsApp for Business API.\\n* If you do not respond to the customer\\xe2\\x80\\x99s message within 24 hours, you can only respond to the conversation using Meta-approved template messages.\\n\\nSet up the snap-in\\n------------------\\n\\nFollow these steps to ensure WhatsApp messages sent to your business are synced with the DevRev Inbox.\\n\\n1. **Install the snap-in:**" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-26", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "Business Manager. For detailed information, refer to [creating a Business Account](https://m.facebook.com/help/1710077379203657) in Meta Business Manager.\\n2. **Number compatibility:** Ensure the designated number isn\\'t linked to another WhatsApp account. If it is, either delete that account or [migrate your number](https://developers.facebook.com/docs/whatsapp/cloud-api/get-started/migrate-existing-whatsapp-number-to-a-business-account/) to a business account.\\n3. **Partner integration:** We" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-0", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "b'WhatsApp | Integrate | 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 +" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-31", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "messages are sent for Meta approval:\\n * **Reinitiate missed conversation:** \"Hi, sorry for not responding earlier. (Custom Message)\"\\n * **Share an update with the customer:** \"Hi, here is an update (Custom Message)\"\\n\\n[PreviousSlack](/docs/integrations/slack)[NextGitHub](/docs/integrations/github)\\n\\n#### On this page\\n\\n* [Prerequisites](#prerequisites)\\n* [Installing the WhatsApp snap-in](#installing-the-whatsapp-snapin)\\n* [Limitations](#limitations)\\n* [Set up the" + }, + { + "id": "ART-2029_KNOWLEDGE_NODE-23", + "title": "WhatsApp | Integrate | Snap-ins | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Prerequisites](#prerequisites)\\n* [Installing the WhatsApp snap-in](#installing-the-whatsapp-snapin)\\n*" + } + ] + }, + { + "query_id": "9a4adb6b-b6f7-430a-a599-07aea5d4c365", + "query": "API for Incident Ticket creation", + "retrievals": [ + { + "id": "ART-1300_KNOWLEDGE_NODE-166", + "title": "Create \u2014 DevRev | Docs", + "text": "Create.\\n\\nPOST https:// api.devrev.ai / incidents.create\\nCreates an incident.\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\nTitle of the incident.\\nacknowledged_date datetime Optional\\nTimestamp when the incident was acknowledged.\\napplies_to_parts list of strings Optional\\nParts to which the incident is applicable to.\\nartifacts list of strings Optional\\nArtifacts attached to the incident.\\nbody string Optional\\nBody of the incident.\\ncustom_fields map from strings to" + }, + { + "id": "ART-1788_KNOWLEDGE_NODE-166", + "title": "Get Post \u2014 DevRev | Docs", + "text": "Create.\\n\\nPOST https:// api.devrev.ai / incidents.create\\nCreates an incident.\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\nTitle of the incident.\\nacknowledged_date datetime Optional\\nTimestamp when the incident was acknowledged.\\napplies_to_parts list of strings Optional\\nParts to which the incident is applicable to.\\nartifacts list of strings Optional\\nArtifacts attached to the incident.\\nbody string Optional\\nBody of the incident.\\ncustom_fields map from strings to" + }, + { + "id": "ART-1801_KNOWLEDGE_NODE-168", + "title": "Get \u2014 DevRev | Docs", + "text": "Create.\\n\\nPOST https:// api.devrev.ai / incidents.create\\nCreates an incident.\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\nTitle of the incident.\\nacknowledged_date datetime Optional\\nTimestamp when the incident was acknowledged.\\napplies_to_parts list of strings Optional\\nParts to which the incident is applicable to.\\nartifacts list of strings Optional\\nArtifacts attached to the incident.\\nbody string Optional\\nBody of the incident.\\ncustom_fields map from strings to" + }, + { + "id": "ART-1789_KNOWLEDGE_NODE-166", + "title": "List \u2014 DevRev | Docs", + "text": "Create.\\n\\nPOST https:// api.devrev.ai / incidents.create\\nCreates an incident.\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\nTitle of the incident.\\nacknowledged_date datetime Optional\\nTimestamp when the incident was acknowledged.\\napplies_to_parts list of strings Optional\\nParts to which the incident is applicable to.\\nartifacts list of strings Optional\\nArtifacts attached to the incident.\\nbody string Optional\\nBody of the incident.\\ncustom_fields map from strings to" + }, + { + "id": "ART-1781_KNOWLEDGE_NODE-164", + "title": "List \u2014 DevRev | Docs", + "text": "Create.\\n\\nPOST https:// api.devrev.ai / incidents.create\\nCreates an incident.\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\nTitle of the incident.\\nacknowledged_date datetime Optional\\nTimestamp when the incident was acknowledged.\\napplies_to_parts list of strings Optional\\nParts to which the incident is applicable to.\\nartifacts list of strings Optional\\nArtifacts attached to the incident.\\nbody string Optional\\nBody of the incident.\\ncustom_fields map from strings to" + }, + { + "id": "ART-1803_KNOWLEDGE_NODE-167", + "title": "List \u2014 DevRev | Docs", + "text": "Create.\\n\\nPOST https:// api.devrev.ai / incidents.create\\nCreates an incident.\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\nTitle of the incident.\\nacknowledged_date datetime Optional\\nTimestamp when the incident was acknowledged.\\napplies_to_parts list of strings Optional\\nParts to which the incident is applicable to.\\nartifacts list of strings Optional\\nArtifacts attached to the incident.\\nbody string Optional\\nBody of the incident.\\ncustom_fields map from strings to" + }, + { + "id": "ART-4127_KNOWLEDGE_NODE-15", + "title": "Create Incident | DevRev | Docs", + "text": "\"string\" |\\n| 258 | } |\\n| 259 | ], |\\n| 260 | \"target_close_date\": \"2023-01-01T12:00:00.000Z\" |\\n| 261 | } |\\n| 262 | } |\\n```\\n\\nCreates an incident.\\n\\n### 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\\ntitlestringRequired`format: \"text\"`\\n\\nTitle of the incident.\\n\\nacknowledged\\\\_datestringOptional`format: \"date-time\"`\\n\\nTimestamp when the incident was" + }, + { + "id": "ART-1545_KNOWLEDGE_NODE-244", + "title": "Create (Beta) \u2014 DevRev | Docs", + "text": "owner.\\n\\nResponse.\\n\\nThis endpoint returns an object.\\ngroup object\\nShow 11 properties\\nAPI Reference operate Incidents Create.\\n\\nPOST https://api.devrev.ai / incidents.create\\n\\nCreates an incident.\\n\\nRequest.\\n\\nThis endpoint expects an object.\\ntitle string Required\\n\\nTitle of the incident.\\n\\nacknowledged_date datetime Optional\\n\\nTimestamp when the incident was acknowledged.\\n\\napplies_to_parts list of strings Optional\\n\\nParts to which the incident is applicable to.\\n\\nartifacts" + }, + { + "id": "ART-1785_KNOWLEDGE_NODE-193", + "title": "Create \u2014 DevRev | Docs", + "text": "Optional\\nSeverity of the incident.\\nsource long Optional\\nSource of where the incident was created. Only sys users and service accounts are supposed to set this field.\\nstage object Optional\\nUpdate object for Stage.\\nShow 2 properties\\nstakeholders object Optional\\nShow property\\ntags object Optional\\nShow property\\ntarget_close_date datetime Optional\\nTimestamp when the incident is expected to be resolved.\\ntitle string Optional\\nTitle of the incident.\\nResponse.\\n\\nThis endpoint returns an" + }, + { + "id": "ART-4127_KNOWLEDGE_NODE-10", + "title": "Create Incident | DevRev | Docs", + "text": "\"string\" |\\n| 166 | }, |\\n| 167 | \"sync_metadata\": { |\\n| 168 | \"external_reference\": \"string\", |\\n| 169 | \"origin_system\": \"string\" |\\n| 170 | }, |\\n| 171 | \"title\": \"string\" |\\n| 172 | } |\\n| 173 | ], |\\n| 174 | \"reported_by\": { |\\n| 175 | \"id\": 1, |\\n| 176 | \"label\": \"string\", |\\n| 177 | \"ordinal\": 1, |\\n| 178 | \"value\": null |\\n| 179 | }, |\\n| 180 | \"severity\": { |\\n| 181 | \"id\": 1, |\\n| 182 | \"label\": \"string\", |\\n| 183 | \"ordinal\": 1, |\\n| 184 | \"value\": null |\\n| 185 | }, |\\n| 186 |" + } + ] + }, + { + "query_id": "5f5bfe6b-5d49-4bd2-936a-73bebb960fae", + "query": "mark fields as readable from backend", + "retrievals": [ + { + "id": "ART-996_KNOWLEDGE_NODE-15", + "title": "An Example Object Model Style Guide (our actual style guide)", + "text": "field1\\n ...\\n gateway:\\n api_visibility: public\\n is_filterable: true\\n summary: true # NOTE: all fields marked as `summary: true`\\n...\\n - name: field2\\n ...\\n gateway:\\n api_visibility: public\\n is_filterable: true\\n summary: true # NOTE: all fields marked as `summary: true`\\n...\\n - name: field3\\n ...\\n gateway:\\n api_visibility:" + }, + { + "id": "ART-17219_KNOWLEDGE_NODE-28", + "title": "Metadata extraction | DevRev | Docs", + "text": "to a ticket.\\nAssigning a `reference_type` helps AirSync correctly handle such fields in case the end-user\\ndecides to filter some of the parent records out.\\n\\n[8](/airsync/metadata-extraction#define-field-attributes)\\n\\n### Define field attributes\\n\\nExternal system fields that shouldn\\xe2\\x80\\x99t be mapped in reverse should be marked as `is_read_only`.\\nDepending on their purpose, you can also mark fields as `is_indexed`, `is_identifier`, `is_filterable`,\\n`is_write_only`, etc. By default," + }, + { + "id": "ART-1645_KNOWLEDGE_NODE-37", + "title": "Object customization (Beta) \u2014 DevRev | Docs", + "text": "`is_filterable` to be true.\\n\\n * `is_groupable`: Whether the field is groupable. Requires `is_filterable` to be true.\\n\\n * `order`: The order in which the field appears in the side panel.\\n\\n * `is_read_only`: Whether the field is read-only in the UI. Once the object is created, this field cannot be updated in the UI.\\n\\n * `group_name`: The group title under which field(s) appear in the side panel. In the example below, the fields are grouped under groups titled **Group 1** and **Group" + }, + { + "id": "ART-15487_KNOWLEDGE_NODE-35", + "title": "Object customization | DevRev | Docs", + "text": "groupable. Requires `is_filterable` to be true.\\n* `order`: The order in which the field appears in the side panel.\\n* `is_read_only`: Whether the field is read-only in the UI. Once the object is created, this\\n field cannot be updated in the UI.\\n* `group_name`: The group title under which field(s) appear in the side panel. In the\\n example below, the fields are grouped under groups titled **Group 1** and **Group 2**.\\n\\n ![]()\\n* `unit`: The unit for the field. For example, days, kg. The" + }, + { + "id": "ART-1630_KNOWLEDGE_NODE-8", + "title": "List Schemas Stock (Beta) \u2014 DevRev | Docs", + "text": "\"is_hidden\": true \\n 39| }, \\n 40| \"group_name\": \"foo\", \\n 41| \"is_active_in_detail_view\": true, \\n 42| \"is_bulk_action_enabled\": true, \\n 43| \"is_currency_field\": true, \\n 44| \"is_groupable\": true, \\n 45| \"is_hidden\": true, \\n 46| \"is_hidden_during_create\": true, \\n 47| \"is_read_only\": true, \\n 48| \"is_required\": true, \\n" + }, + { + "id": "ART-1831_KNOWLEDGE_NODE-426", + "title": "Get \u2014 DevRev | Docs", + "text": "\" is_hidden \" : true 98 } , 99 \" display_name \" : \" string \" , 100 \" filter_view \" : { 101 \" is_hidden \" : true 102 } , 103 \" group_name \" : \" string \" , 104 \" is_active_in_detail_view \" : true , 105 \" is_bulk_action_enabled \" : true , 106 \" is_groupable \" : true , 107 \" is_hidden \" : true , 108 \" is_hidden_during_create \" : true , 109 \" is_read_only \" : true , 110 \" is_required \" : true , 111 \" is_shown_in_summary \" : true , 112 \" is_sortable \" : true , 113 \" list_view \" : { 114 \" is_hidden \"" + }, + { + "id": "ART-1602_KNOWLEDGE_NODE-9", + "title": "Get Schemas Aggregated (Beta) \u2014 DevRev | Docs", + "text": "\\n 69| \"is_active_in_detail_view\": true, \\n 70| \"is_bulk_action_enabled\": true, \\n 71| \"is_currency_field\": true, \\n 72| \"is_groupable\": true, \\n 73| \"is_hidden\": true, \\n 74| \"is_hidden_during_create\": true, \\n 75| \"is_read_only\": true, \\n 76| \"is_required\": true, \\n 77| \"is_shown_in_summary\": true, \\n 78| \"is_sortable\": true, \\n 79|" + }, + { + "id": "ART-1636_KNOWLEDGE_NODE-435", + "title": "Update \u2014 DevRev | Docs", + "text": "display_name \" : \" string \" , 100 \" filter_view \" : { 101 \" is_hidden \" : true 102 } , 103 \" group_name \" : \" string \" , 104 \" is_active_in_detail_view \" : true , 105 \" is_bulk_action_enabled \" : true , 106 \" is_groupable \" : true , 107 \" is_hidden \" : true , 108 \" is_hidden_during_create \" : true , 109 \" is_read_only \" : true , 110 \" is_required \" : true , 111 \" is_shown_in_summary \" : true , 112 \" is_sortable \" : true , 113 \" list_view \" : { 114 \" is_hidden \" : true 115 } , 116 \" placeholder" + }, + { + "id": "ART-1633_KNOWLEDGE_NODE-427", + "title": "List \u2014 DevRev | Docs", + "text": "is_read_only \" : true , 110 \" is_required \" : true , 111 \" is_shown_in_summary \" : true , 112 \" is_sortable \" : true , 113 \" list_view \" : { 114 \" is_hidden \" : true 115 } , 116 \" placeholder \" : \" string \" , 117 \" summary_view \" : { 118 \" is_hidden \" : true 119 } , 120 \" tooltip \" : \" string \" 121 } 122 } 123 } , 124 \" name \" : \" string \" , 125 \" new_value \" : { 126 \" type \" : \" bool \" , 127 \" value \" : true 128 } , 129 \" old_value \" : { 130 \" type \" : \" bool \" , 131 \" value \" : true 132 } 133" + }, + { + "id": "ART-1831_KNOWLEDGE_NODE-436", + "title": "Get \u2014 DevRev | Docs", + "text": "\" , 100 \" filter_view \" : { 101 \" is_hidden \" : true 102 } , 103 \" group_name \" : \" string \" , 104 \" is_active_in_detail_view \" : true , 105 \" is_bulk_action_enabled \" : true , 106 \" is_groupable \" : true , 107 \" is_hidden \" : true , 108 \" is_hidden_during_create \" : true , 109 \" is_read_only \" : true , 110 \" is_required \" : true , 111 \" is_shown_in_summary \" : true , 112 \" is_sortable \" : true , 113 \" list_view \" : { 114 \" is_hidden \" : true 115 } , 116 \" placeholder \" : \" string \" , 117 \"" + } + ] + }, + { + "query_id": "30eafcd8-2a68-4e61-85f7-63af6da417a8", + "query": "enable or configure Turing AI agent", + "retrievals": [ + { + "id": "ART-1987_KNOWLEDGE_NODE-26", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "[articles](./articles) for more information.\\n\\nOnce you have added your knowledge base, Turing can be switched on in two modes: suggestion or auto-response. You can configure Turing in **Settings > Turing Answers** and turn on the **Turing Answers** toggle.\\n\\nSuggest-only mode\\n-----------------\\n\\nComputer only suggests an answer to the user query. A support agent can accept or make edits to the answer, then send it to the user.\\n\\nContent-powered mode\\n--------------------\\n\\nComputer" + }, + { + "id": "ART-12391_KNOWLEDGE_NODE-25", + "title": "Conversational workflows | Workflows | Computer by DevRev | DevRev", + "text": "customer support conversations with our\\nworkflow engine. You can either build an AI agent handle to handle all or parts\\nof your customer support conversations, or you can also create deterministic\\nbutton-based flows.\\n\\nAI agents in your conversational workflow\\n-----------------------------------------\\n\\n![]()\\n\\nTo enable AI agents for customer support, please contact us through the\\nchat widget.\\n\\n### AI agents for conversations or tickets\\n\\n1. Set the trigger for workflow to start" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-27", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "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," + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-24", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "(Beta)](#goaloriented-mode-beta)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support Teams](/docs/product/support)\\n[Turing AI agent](/docs/product/conversational-bot)\\n\\nComputer for Your Customers and Turing\\n======================================\\n\\nUsing Turing, Computer can be used to deflect user queries in conversation or to suggest articles from your knowledge base for resolving tickets. It will try to answer customer queries based on the articles and QA pairs provided in the" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-25", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "Knowledge base, while keeping a support agent subscribed to conversations. If it cannot answer a certain query or you request it to connect to the team, it will redirect it to the default owner of the conversation.\\n\\nWhen looking for a source to inform its answer, it will prioritize the QA pairs, which are intended to serve as definitive answers to commonly repeated questions.\\n\\n![]()\\n\\nFor Computer to suggest articles, you need to add articles to your DevRev instance. Refer to" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-28", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "Computer either creates a ticket or routes the conversation using the relevant routing rule.\\n\\n![]()\\n\\nGoal-oriented mode (Beta)\\n-------------------------\\n\\nThe goal-oriented agent allows users to create complete workflows triggered by their actions.\\n\\nGoal-oriented mode is currently in beta. Contact our support team for more information.\\n\\n[PreviousCollections](/docs/product/collection)[NextBest practices for documentation that supports AI](/docs/product/writing-bp)\\n\\n#### On this" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-23", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Suggest-only mode](#suggestonly-mode)\\n* [Content-powered mode](#contentpowered-mode)\\n* [Goal-oriented mode" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-29", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "page\\n\\n* [Suggest-only mode](#suggestonly-mode)\\n* [Content-powered mode](#contentpowered-mode)\\n* [Goal-oriented mode (Beta)](#goaloriented-mode-beta)\\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" + }, + { + "id": "ART-3205_KNOWLEDGE_NODE-6", + "title": "Set user preference for group | Automate | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-13023_KNOWLEDGE_NODE-11", + "title": "Set-Future Org Schedules \u2014 DevRev | Docs", + "text": "Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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" + } + ] + }, + { + "query_id": "d5c89771-38ee-4ef6-8171-99b10fdd1ae3", + "query": "how to make MIS report with available data on DevRev", + "retrievals": [ + { + "id": "ART-1952_KNOWLEDGE_NODE-27", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "bring in data from other sources as well.\\n\\nDiscover\\n--------\\n\\nTo get started, click the \\xe2\\x9a\\xa1 button on a vista. The following options are available:\\n\\n* Create New Report\\n* View Past Reports: Created by me or shared with me\\n\\nYou can also search for reports and find more on the **Explore** page.\\n\\n![]()\\n\\n### Create\\n\\nYou can create your own reports by adding a name, description, and creating widgets. Here, you'll also be able to preview your report and make any necessary" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-35", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "well.\\n\\n### Save\\n\\nAdd measures, dimensions, and filters. Experiment with arranging them, preview your changes, and remember to **Save** your widget. This ensures the widget appears on the dashboard.\\n\\n### Custom fields\\n\\nYou can also create reports based on custom fields by creating them via Object Customization. You\\xe2\\x80\\x99ll be able to utilize these custom fields in report generation, as they can be used in measures, dimensions, and filters.\\n\\n### Cross-entity" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-29", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "together to form a dashboard.\\n\\n**Data source**\\n\\nA data source specifies the backing data that powers the widget. You don\\xe2\\x80\\x99t need to worry about the data source, as it\\xe2\\x80\\x99s all auto-populated.\\n\\n**Measures & Dimensions:**\\n\\nMeasures & Dimensions provide additional details about the required columns from the base SQL-constructed view.\\n\\n* Each column that needs to be part of the visualization in the chart must be specified as either a measure or a dimension.\\n* Columns" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-28", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "adjustments before finalizing it.\\n\\nWidget builder\\n--------------\\n\\nWith the widget builder, you can create custom widgets for your vista reports. You can define the widget's data source, construct measures, dimensions, and pick a suitable visualization. The widget builder offers a range of tools and options to help you create the ideal widget for your report.\\n\\nWidgets represent the building blocks of DevRev Dashboards. They are the leaf-level data visualizations which are composed" + }, + { + "id": "ART-1652_KNOWLEDGE_NODE-269", + "title": "Export \u2014 DevRev | Docs", + "text": "endpoint for DevRev metrics data from clients.\\nRequest.\\n\\nThis endpoint expects an object.\\nmetrics list of objects Required\\nMetrics data received from Dev orgs.\\nShow 5 properties\\nAPI Reference product-usage Uoms Count.\\n\\nGET https:// api.devrev.ai / uoms.count\\nCounts the number of Unit of Measurements based on the given filters.\\nQuery parameters.\\n\\naggregation_types enum Optional\\nList of aggregation types for filtering list of UOMs.\\nShow 8 enum values\\nids string Optional\\nList of" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-36", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "joins\\n\\nDevRev\\xe2\\x80\\x99s data model is a reflection of Computer's powerful Memory. Leveraging the data model is key to getting answers to key questions and obtaining strategic insights. Here\\xe2\\x80\\x99s the data model you\\xe2\\x80\\x99d need for constructing widgets and answer questions around a vista. For example, ticket-based vista.\\n\\nYou don\\xe2\\x80\\x99t have to worry about these join paths, as DevRev identifies the entity relationships and populate them for you. You just need to search" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-24", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "generator](#autovisualization-generator)\\n* [Preview](#preview)\\n* [Filters](#filters)\\n* [Save](#save)\\n* [Custom fields](#custom-fields)\\n* [Cross-entity joins](#crossentity-joins)\\n* [Edit](#edit)\\n* [Share](#share)\\n* [Authorization (MFZ)](#authorization-mfz)\\n\\n1. [Documentation](/docs)\\n3. [Computer by DevRev](/docs/intro)\\n[Vistas](/docs/product/vistas)\\n[Vista Reports](/docs/product/vista-reports)\\n\\nVista Reports\\n=============\\n\\nReal-time reporting represents a paradigm shift in the" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-33", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "can see a real-time representation of the data or elements you have chosen. This feature provides you with an opportunity to review and make any necessary adjustments to ensure everything is perfectly set up. It serves as a preventive measure to help avoid mistakes or misunderstandings, ultimately saving you time and effort in the long run. Utilize the **Preview** button effectively to maintain the quality and accuracy of your reports.\\n\\n### Filters\\n\\n* **Vista Filters**: Most or all of the" + }, + { + "id": "ART-13189_KNOWLEDGE_NODE-30", + "title": "March and April 2025 | Changelog | DevRev", + "text": "underlying object data seamlessly. This enhancement simplifies data interaction, making insights more accessible and customizable within Vista reports.\\n\\n **Features**:\\n\\n + Enables a default tabular view for widgets in Vista reports, carrying over the base query without the need for additional dashboard setup.\\n + Users can view underlying data in the drill-through view and apply additional filtering within the same view.\\n\\n **What's improved**:\\n\\n + Users' ability to analyze the" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-23", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Discover](#discover)\\n* [Create](#create)\\n* [Widget builder](#widget-builder)\\n* [Auto-visualization" + } + ] + }, + { + "query_id": "ed5940c0-01b1-45bc-8489-dccca3575588", + "query": "populate Timeline Comment Created trigger for a ticket object", + "retrievals": [ + { + "id": "ART-1277_KNOWLEDGE_NODE-6", + "title": "Snap-in triggered by a DevRev event | DevRev | Docs", + "text": "objects of type\\n **Issue** or **Ticket** are created in DevRev.\\n2. **Text command**: This manual trigger is achieved by utilizing a slash\\n command in the **Discussions** tab of the objects that support this feature.\\n\\n#### Action\\n\\nTo implement the desired action of adding a comment to the object timeline, it\\nis essential to identify the appropriate [API]\\nfor this task. In this scenario, the `/timeline-entries.create` API is the\\ndesignated choice for executing the action of adding a" + }, + { + "id": "ART-1485_KNOWLEDGE_NODE-10", + "title": "Snap-in triggered by a DevRev event \u2014 DevRev | Docs", + "text": "invoke the snap-in, two distinct triggers are implemented:\\n\\n 1. **Creation of work item** : This trigger is activated when new objects of type **Issue** or **Ticket** are created in DevRev.\\n\\n 2. **Text command** : This manual trigger is achieved by utilizing a slash command in the **Discussions** tab of the objects that support this feature.\\n\\n#### Action\\n\\nTo implement the desired action of adding a comment to the object timeline, it is essential to identify the appropriate [API] for" + }, + { + "id": "ART-1485_KNOWLEDGE_NODE-33", + "title": "Snap-in triggered by a DevRev event \u2014 DevRev | Docs", + "text": "19| const body = { \\n 20| object: workCreated, \\n 21| type: \"timeline_comment\", \\n 22| body: bodyComment, \\n 23| }; \\n 24| \\n 25| // Sending the request to create the timeline entry comment \\n 26| const response = await devrevSDK.timelineEntriesCreate(body as any); \\n 27| \\n 28| // Returning the response from the DevRev SDK \\n 29| return response; \\n 30| }\\n[/code] \\n" + }, + { + "id": "ART-1485_KNOWLEDGE_NODE-29", + "title": "Snap-in triggered by a DevRev event \u2014 DevRev | Docs", + "text": "38| object: workCreated.id, \\n 39| type: \"timeline_comment\", \\n 40| body: bodyComment, \\n 41| }; \\n 42| const response = await devrevSDK.timelineEntriesCreate(body as any); \\n 43| \\n 44| // Returning the response from the DevRev SDK \\n 45| return response; \\n 46| }\\n[/code] \\n \\nThis function illustrates the process of handling events, extracting necessary information from the payload, and utilizing the DevRev SDK to create a timeline" + }, + { + "id": "ART-1277_KNOWLEDGE_NODE-23", + "title": "Snap-in triggered by a DevRev event | DevRev | Docs", + "text": "= event.input_data.global_values.input_field_array; |\\n| 28 | |\\n| 29 | // Appending extra comments to the body if requested |\\n| 30 | if (extraComment) { |\\n| 31 | for (let comment of extraComments) { |\\n| 32 | bodyComment = bodyComment + \" \" + comment; |\\n| 33 | } |\\n| 34 | } |\\n| 35 | |\\n| 36 | // Creating the timeline entry comment using DevRev SDK |\\n| 37 | const body = { |\\n| 38 | object: workCreated.id, |\\n| 39 | type: \"timeline_comment\", |\\n| 40 | body: bodyComment, |\\n| 41 | }; |\\n|" + }, + { + "id": "ART-1473_KNOWLEDGE_NODE-25", + "title": "Snap-in triggered by an external source \u2014 DevRev | Docs", + "text": "append the commit message to the body of the comment \\n 18| let bodyComment = \"\"; \\n 19| for (const commit of commits) { \\n 20| bodyComment += commit.message + \"\\\\n\"; \\n 21| } \\n 22| \\n 23| // Prepare the body for creating a timeline comment \\n 24| const body = { \\n 25| body: bodyComment, \\n 26| object: partID, \\n 27| type: \"timeline_comment\", \\n 28| }; \\n 29| \\n 30| // Create a timeline comment using the DevRev" + }, + { + "id": "ART-1265_KNOWLEDGE_NODE-9", + "title": "Restricted messages on a timeline | DevRev | Docs", + "text": "timeline of an issue/ticket using the `timeline-entries.create` API with different visibilities. You can now use this to create comments on timeline using automation or manually based on your use case.\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/guides/webhooks)[#### Object customization\\n\\nNext](/guides/object-customization)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)\\n\\n![]()'" + }, + { + "id": "ART-1425_KNOWLEDGE_NODE-2", + "title": "Get Timeline Entry \u2014 DevRev | Docs", + "text": "id=don:core:dvrv-us-1:devo/example:ticket/123:comment/comment-id\\n[/code] \\n \\nTry it\\n\\n200getExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"timeline_entry\": { \\n 3| \"created_by\": { \\n 4| \"display_id\": \"foo\", \\n 5| \"id\": \"foo\", \\n 6| \"display_name\": \"foo\", \\n 7| \"display_picture\": { \\n 8| \"display_id\": \"foo\", \\n 9| \"id\": \"foo\", \\n 10| \"file\": { \\n 11| \"type\": \"foo\", \\n 12|" + }, + { + "id": "ART-1435_KNOWLEDGE_NODE-2", + "title": "Get Timeline Entry (POST) \u2014 DevRev | Docs", + "text": "\"Content-Type: application/json\" \\\\ \\n >| -d \\'{ \\n >| \"id\": \"don:core:dvrv-us-1:devo/example:ticket/123:comment/comment-id\" \\n >| }\\'\\n[/code] \\n \\nTry it\\n\\n200timelineEntriesGetPostExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"timeline_entry\": { \\n 3| \"created_by\": { \\n 4| \"display_id\": \"foo\", \\n 5| \"id\": \"foo\", \\n 6| \"display_name\": \"foo\", \\n 7| \"display_picture\": { \\n 8| \"display_id\": \"foo\", \\n" + }, + { + "id": "ART-1490_KNOWLEDGE_NODE-42", + "title": "Snap-in manifest \u2014 DevRev | Docs", + "text": "\"don:core::devo/:ticket/123:timeline_event/\" \\n 356| }, \\n 357| \"timeline_entry_updated\": { \\n 358| \"entry\": { \\n 359| \"created_by\": {}, \\n 360| \"created_date\": \"2023-01-01T12:00:00.000Z\", \\n 361| \"display_id\": \"string\", \\n 362| \"id\": \"string\", \\n 363| \"modified_by\": {}, \\n 364| \"modified_date\": \"2023-01-01T12:00:00.000Z\", \\n 365| \"object\": \"string\", \\n 366|" + } + ] + }, + { + "query_id": "3abb74c9-639f-4252-955c-3cfaa8bf6795", + "query": "DevRev Bot groups created from airdrops", + "retrievals": [ + { + "id": "ART-1545_KNOWLEDGE_NODE-230", + "title": "Create (Beta) \u2014 DevRev | Docs", + "text": "https://api.devrev.ai / groups.list\\n\\nLists the available groups.\\n\\nQuery parameters.\\n\\ncursor string Optional\\n\\nThe cursor to resume iteration from. If not provided, then iteration starts from the beginning.\\n\\ngroup_type \"dynamic\" or \"static\" Optional\\n\\nFilters the groups based on the group type.\\n\\nAllowed values: dynamic static\\ningestion_source \"airdrop\" or \"scim\" Optional\\n\\nFilter groups by ingestion source(s).\\n\\nAllowed values: airdrop scim\\nis_default boolean Optional\\n\\nWhether" + }, + { + "id": "ART-1545_KNOWLEDGE_NODE-233", + "title": "Create (Beta) \u2014 DevRev | Docs", + "text": "https://api.devrev.ai / groups.list\\n\\nLists the available groups.\\n\\nRequest.\\n\\nThis endpoint expects an object.\\ncursor string Optional\\n\\nThe cursor to resume iteration from. If not provided, then iteration starts from the beginning.\\n\\ngroup_type list of \"dynamic\" or \"static\" Optional\\nAllowed values: dynamic static\\n\\nFilters the groups based on the group type.\\n\\ningestion_source list of \"airdrop\" or \"scim\" Optional\\nAllowed values: airdrop scim\\n\\nFilter groups by ingestion" + }, + { + "id": "ART-8442_KNOWLEDGE_NODE-27", + "title": "January 2025 | Changelog | DevRev", + "text": "**Integrations** > **Airdrops**\\n\\n * URL: https://app.devrev.ai/(org-name)/settings/airdrops\\n\\nWe have implemented automatic redirects, so any bookmarked links or references to the previous URL will automatically redirect to the new location. All existing functionality for managing data imports, syncs, and migrations remains unchanged.\\n\\n * Added support for creating **Chat** objects in Airdrop. These objects facilitate capturing communication in group and direct messaging" + }, + { + "id": "ART-4078_KNOWLEDGE_NODE-7", + "title": "Create Group \u2014 DevRev | Docs", + "text": "[Marketplace](https://marketplace.devrev.ai/)\\n\\nPlatform\\n\\n * [Airdrop](https://devrev.ai/airdrop)\\n * [Analytics](https://devrev.ai/analytics)\\n * [Workflow 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 *" + }, + { + "id": "ART-4081_KNOWLEDGE_NODE-11", + "title": "List Groups \u2014 DevRev | Docs", + "text": "[Marketplace](https://marketplace.devrev.ai/)\\n\\nPlatform\\n\\n * [Airdrop](https://devrev.ai/airdrop)\\n * [Analytics](https://devrev.ai/analytics)\\n * [Workflow 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 *" + }, + { + "id": "ART-4082_KNOWLEDGE_NODE-11", + "title": "List Groups (POST) \u2014 DevRev | Docs", + "text": "[Marketplace](https://marketplace.devrev.ai/)\\n\\nPlatform\\n\\n * [Airdrop](https://devrev.ai/airdrop)\\n * [Analytics](https://devrev.ai/analytics)\\n * [Workflow 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 *" + }, + { + "id": "ART-4080_KNOWLEDGE_NODE-6", + "title": "Get Group (POST) \u2014 DevRev | Docs", + "text": "[Marketplace](https://marketplace.devrev.ai/)\\n\\nPlatform\\n\\n * [Airdrop](https://devrev.ai/airdrop)\\n * [Analytics](https://devrev.ai/analytics)\\n * [Workflow 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 *" + }, + { + "id": "ART-4079_KNOWLEDGE_NODE-7", + "title": "Get Group \u2014 DevRev | Docs", + "text": "[Marketplace](https://marketplace.devrev.ai/)\\n\\nPlatform\\n\\n * [Airdrop](https://devrev.ai/airdrop)\\n * [Analytics](https://devrev.ai/analytics)\\n * [Workflow 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 *" + }, + { + "id": "ART-1948_KNOWLEDGE_NODE-23", + "title": "Groups | Computer by DevRev | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Admin privileges](#admin-privileges)\\n* [Creating a new group](#creating-a-new-group)\\n* [Managing group" + }, + { + "id": "ART-4078_KNOWLEDGE_NODE-11", + "title": "Create Group \u2014 DevRev | Docs", + "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" + } + ] + }, + { + "query_id": "a15290e1-d40b-4422-b5ea-170576843e89", + "query": "SLA for Next Response stop when stage is moved back to Awaiting Customer", + "retrievals": [ + { + "id": "ART-1986_KNOWLEDGE_NODE-36", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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-34", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "target defined in the policy.\\n* *Breached*: The time spent by the SLA metric is greater than or equal to the breach target defined in the policy.\\n* *Paused*: The metric is currently paused based on some conditions. For example, when a ticket moves to awaiting customer response.\\n* *Completed*: The conversation or ticket has reached the completion condition.\\n\\nBased on business hours defined for an organization, *Active/Close to breach/Breached* metrics can change schedules. Metrics move out" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-43", + "title": "Tickets | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-37", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-38", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-39", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "marked as spam | | |\\n| Next response time | | A new message on the conversation with the customer after the customer experience engineer replied | * The agent replied to the conversation * The conversation is moved to Waiting on User/Resolved * The conversation is marked as spam | | |\\n| Full resolution time | | Conversation created | * The conversation has moved to the Resolved/Archived * The conversation is marked as spam | The conversation is moved to Waiting on User | The" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-35", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-2009_KNOWLEDGE_NODE-28", + "title": "Convergence | Automate | Snap-ins | DevRev", + "text": "ticket's stage when linked issue is linked or unlinked.\\n* Close pending tickets if they have remained in the *Awaiting customer response* stage for longer than x days.\\n* Update ticket's stage to waiting on user when user reverts on new conversation.\\n* Update ticket's stage to *Accepted* and notify owner and customers when an enhancement in ideation stage is linked.\\n* Update a spam conversation's stage to *Suspended*.\\n* Update a spam ticket's stage to" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-41", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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-2695_KNOWLEDGE_NODE-33", + "title": "Operational-level agreement | Computer for Support Teams | DevRev", + "text": "meets or exceeds the close-to-breach target set in the policy.\\n* **Breached**: The time spent meets or exceeds the breach target set in the policy.\\n* **Paused**: The metric is paused based on stage conditions in the snap-in.\\n* **Completed**: The *stop* condition has been met.\\n\\nMetrics in the *Active*, *Close to Breach*, or *Breached* stages may follow business hours, moving in and out of schedule without including out-of-schedule time in calculations.\\n\\nIn the **Detailed** view, all" + } + ] + }, + { + "query_id": "3cb75fc1-7ba2-447f-be4a-5bc6c5a58198", + "query": "workflow send message on Slack operation execution failed Something went wrong", + "retrievals": [ + { + "id": "ART-2035_KNOWLEDGE_NODE-51", + "title": "Slack | Integrate | Snap-ins | DevRev", + "text": "Slack.\\n\\nFor example:\\n\\n* /devrev view TKT-#\\n* /devrev view ISS-#\\n\\nThese commands open the specific object mentioned in the command.\\n\\nCreating custom workflows\\n-------------------------\\n\\nThe users can configure their own workflows around Slack using DevRev's workflow engine.\\n\\n| Workflow Action | Description | Inputs | Outputs |\\n| --- | --- | --- | --- |\\n| Send message on Slack | - Use this workflow node to send a message to any Slack channel as long as the DevRev app has access to" + }, + { + "id": "ART-4206_KNOWLEDGE_NODE-14", + "title": "Agents async API | DevRev | Docs", + "text": "|\\n```\\n\\n### Error message\\n\\nThis event indicates an error occurred during execution.\\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\": \"error\", |\\n| 6 | \"client_metadata\": { |\\n| 7 | /* your original metadata */ |\\n| 8 | }, |\\n| 9 | \"error\": { |\\n| 10 | \"error\": \"Error description\" |\\n| 11 | }, |\\n| 12 | \"session\":" + }, + { + "id": "ART-1289_KNOWLEDGE_NODE-12", + "title": "Hooks | DevRev | Docs", + "text": "the update hook isn\\xe2\\x80\\x99t executed.\\n\\nAn error can be returned by throwing the following from the function\\xe2\\x80\\x99s `run` method:\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | export const run = async (events: any[]) => { |\\n| 2 | if (events[0].execution_metadata.event_type === \"hook:snap_in_update\"){ |\\n| 3 | ... update logic |\\n| 4 | // throw an error to fail the hook |\\n| 5 | throw \"failed to update webhook on XYZ\"; |\\n| 6 | } |\\n| 7 | }; |\\n```\\n\\nThe following diagram illustrates the" + }, + { + "id": "ART-10697_KNOWLEDGE_NODE-28", + "title": "February 2025 | Changelog | DevRev", + "text": "'Send Slack Message' workflow node to include a DevRev object.\\n* Dependent field support in slack\\n\\n![]()\\xc2\\xa0For more information about *Channels*, refer to the following articles: \\xe2\\x80\\xa3 [WhatsApp | Integrate | Snap-ins](/docs/integrations/whatsapp) \\xe2\\x80\\xa3 [Slack | Integrate | Snap-ins](/docs/integrations/slack) \\xe2\\x80\\xa3 [SLA status change Slack notifier | Automate | Snap-ins](/docs/automations/sla-change-notifier)\\n\\n![]()\\n\\n### Slack App\\n\\nMulti-region Slack support" + }, + { + "id": "ART-1494_KNOWLEDGE_NODE-8", + "title": "Hooks \u2014 DevRev | Docs", + "text": "idempotent.\\n\\nThe event.payload field is an empty json object `{}`.\\n\\nAn error can be returned by throwing the following from the function\\xe2\\x80\\x99s `run` method:\\n\\n[code]\\n\\n 1| export const run = async (events: any[]) => { \\n ---|--- \\n 2| if (events[0].execution_metadata.event_type === \"hook:snap_in_activate\"){ \\n 3| ... activation logic \\n 4| // throw an error to fail the hook \\n 5| throw \"failed to activate webhook on XYZ\"; \\n 6| } \\n 7|" + }, + { + "id": "ART-1289_KNOWLEDGE_NODE-7", + "title": "Hooks | DevRev | Docs", + "text": "error can be returned by throwing the following from the function\\xe2\\x80\\x99s `run` method:\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | export const run = async (events: any[]) => { |\\n| 2 | if (events[0].execution_metadata.event_type === \"hook:snap_in_activate\"){ |\\n| 3 | ... activation logic |\\n| 4 | // throw an error to fail the hook |\\n| 5 | throw \"failed to activate webhook on XYZ\"; |\\n| 6 | } |\\n| 7 | }; |\\n```\\n\\n### Deactivate hook\\n\\nThe deactivate hook is executed when the snap-in user" + }, + { + "id": "ART-2035_KNOWLEDGE_NODE-52", + "title": "Slack | Integrate | Snap-ins | DevRev", + "text": "the channel. - Private channels are supported only if the DevRev app is a member of the channel. | - Slack connection - Slack channel id - Text message to send - Objects to mention with message - If any object is added here, a summary card of that object is sent with the message. | Slack message ID |\\n| Create new Slack channel | Use this workflow node to create a new Slack channel. | - Slack connection - Channel name Make sure this is unique. It is recommended to create this name" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-3", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "text": "management](/docs/product/workflow-management)\\n - [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" + }, + { + "id": "ART-1494_KNOWLEDGE_NODE-11", + "title": "Hooks \u2014 DevRev | Docs", + "text": "of the snap-in. \\n is_deletion: boolean; \\n }\\n[/code] \\n \\nAn error can be returned by throwing the following from the function\\xe2\\x80\\x99s `run` method:\\n\\n[code]\\n\\n 1| export const run = async (events: any[]) => { \\n ---|--- \\n 2| if (events[0].execution_metadata.event_type === \"hook:snap_in_deactivate\"){ \\n 3| ... deactivation logic \\n 4| // throw an error to fail the hook \\n 5| throw \"failed to deactivate webhook on XYZ\"; \\n 6| }" + }, + { + "id": "ART-17220_KNOWLEDGE_NODE-9", + "title": "Attachments extraction | DevRev | Docs", + "text": "console.warn(\\'Failed attachment metadata\\', item); |\\n| 22 | } |\\n| 23 | |\\n| 24 | return { |\\n| 25 | error: { |\\n| 26 | message: `Failed to fetch attachment ${id} from URL.`, |\\n| 27 | }, |\\n| 28 | }; |\\n| 29 | } |\\n| 30 | } |\\n```\\n\\nEmitting responses\\n------------------\\n\\nThe snap-in must send exactly one response to AirSync when extraction is complete:\\n\\nSuccess response\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | await adapter.emit(ExtractorEventType.ExtractionAttachmentsDone);" + } + ] + }, + { + "query_id": "04caf277-77d6-4bab-9409-739686bb6a63", + "query": "change and customize chat design", + "retrievals": [ + { + "id": "ART-3109_KNOWLEDGE_NODE-25", + "title": "Plug widget customization | Computer for Your Customers | DevRev", + "text": "Plug widget to reflect your unique identity truly.\\n\\nTo configure the appearance of your Plug widget, open your DevRev app and navigate to **Settings > Support > Plug Chat > Configuration, Styling, and Layout**.\\n\\n### Configuration\\n\\n* Hide Plug widget: Hide the Plug Widget on specific URLs by clicking **+ Rule** and adding the URLs you want to configure.\\n\\n### Styling\\n\\n* Launcher logo: The image that's visible as your widget icon. A 20-pixel square image is recommended.\\n* Alignment: The" + }, + { + "id": "ART-12974_KNOWLEDGE_NODE-2", + "title": "Update Chat \u2014 DevRev | Docs", + "text": "{ \\n ---|--- \\n 2| \"chat\": { \\n 3| \"type\": \"foo\" \\n 4| } \\n 5| }\\n[/code] \\n \\n[Create Code ChangeUp Next](/public/api-reference/code-changes/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 *" + }, + { + "id": "ART-15496_KNOWLEDGE_NODE-1", + "title": "Custom implementation | DevRev | Docs", + "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" + }, + { + "id": "ART-2900_KNOWLEDGE_NODE-2", + "title": "Custom implementation \u2014 DevRev | Docs", + "text": "theme](/public/sdks/web/customize#lightdark-theme)\\n\\n[SDKs](/public/sdks)[PLuG Web SDK](/public/sdks/web/installation)\\n\\n#\\n\\nCustom implementation\\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" + }, + { + "id": "ART-3109_KNOWLEDGE_NODE-26", + "title": "Plug widget customization | Computer for Your Customers | DevRev", + "text": "side of the screen you want to show your widget on (left or right).\\n* Spacing: The horizontal distance from the aligned side (left or right) and the vertical distance from the bottom of the screen.\\n* Brand logo: The image visible to your users in the top-right corner when they open the widget. A 20-pixel square image is recommended.\\n* Appearance: The theme of the widget (light or dark).\\n* Accent color: The color of the buttons on the widget.\\n\\n### Layout\\n\\n* Title: The greeting message" + }, + { + "id": "ART-1466_KNOWLEDGE_NODE-13", + "title": "Methods \u2014 DevRev | Docs", + "text": "color of the PLuG affects the launcher, new ticket and conversation buttons, conversation user text, and more. | String | \\n| A CSS selector string is used to match the element to which the widget will be attached. You can also set this selector from the PLuG settings on app.devrev.ai. If both sources" + }, + { + "id": "ART-1847_KNOWLEDGE_NODE-12", + "title": "Customizing snap-in configuration \u2014 DevRev | Docs", + "text": "\"value\": \"conversation\" \\n 36| } \\n 37| ], \\n 38| \"type\": \"static_select\" \\n 39| }, \\n 40| \"type\": \"input_layout\" \\n 41| } \\n 42| ], \\n 43| \"submit_action\": { \\n 44| \"action_id\": \"next\", \\n 45| \"style\": \"primary\", \\n 46| \"text\": { \\n 47|" + }, + { + "id": "ART-15496_KNOWLEDGE_NODE-0", + "title": "Custom implementation | DevRev | Docs", + "text": "b\"Custom implementation | DevRev | Docs\\n\\n[![]()![]()](https://developer.devrev.ai/)\\n\\nPublic\\n\\nPublic\\n\\nSearch\\n\\n`/`\\n\\nOn this page\\n\\n* [Code sandbox](/sdks/web/customize#code-sandbox)\\n* [Properties](/sdks/web/customize#properties)\\n* [Plug launcher](/sdks/web/customize#plug-launcher)\\n* [Widget alignment](/sdks/web/customize#widget-alignment)\\n* [Spacing](/sdks/web/customize#spacing)\\n* [Light/dark theme](/sdks/web/customize#lightdark-theme)\\n\\n[SDKs](/sdks)[Plug Web" + }, + { + "id": "ART-15496_KNOWLEDGE_NODE-6", + "title": "Custom implementation | DevRev | Docs", + "text": "from the bottom of the launcher.\\n\\n The default value is `10px`.\\n* The `side` property determines the spacing of the widget from the launcher icon.\\n\\n The default value is `0px`.\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | spacing?:{ |\\n| 2 | bottom?: '10px', |\\n| 3 | side?:'10px', |\\n| 4 | } |\\n```\\n\\n### Light/dark theme\\n\\nSet the theme of the Plug widget.\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | theme?: 'dark' | 'light'; |\\n```\\n\\nThe default value is `light`.\\n\\nWas this page" + }, + { + "id": "ART-1466_KNOWLEDGE_NODE-15", + "title": "Methods \u2014 DevRev | Docs", + "text": "| {bottom: string; side: string;} | \\n| The color scheme for the launcher and widget." + } + ] + }, + { + "query_id": "a929fcbe-9627-402e-9aa1-8535a766a594", + "query": "Vista export as CSV error invalid_field sort_groups_by", + "retrievals": [ + { + "id": "ART-1652_KNOWLEDGE_NODE-150", + "title": "Export \u2014 DevRev | Docs", + "text": "Optional\\nThe iteration mode to use, otherwise if not set, then \"after\" is used.\\nAllowed values: after before\\nsort_by string Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 11 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort order. If not set, then no later elements exist.\\nprev_cursor string Optional\\nThe cursor used to" + }, + { + "id": "ART-1302_KNOWLEDGE_NODE-161", + "title": "Export \u2014 DevRev | Docs", + "text": "will always be returned in the specified sort-by order.\\nsort_by list of strings Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 11 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort order. If not set, then no later elements exist.\\nprev_cursor string Optional\\nThe cursor used to iterate preceding results in accordance to the" + }, + { + "id": "ART-1652_KNOWLEDGE_NODE-153", + "title": "Export \u2014 DevRev | Docs", + "text": "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 provided cursor will be returned, or if no cursor is provided, then from the end. Entries will always be returned in the specified sort-by order.\\nsort_by list of strings Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of" + }, + { + "id": "ART-1639_KNOWLEDGE_NODE-150", + "title": "Export Post \u2014 DevRev | Docs", + "text": "Optional\\nThe iteration mode to use, otherwise if not set, then \"after\" is used.\\nAllowed values: after before\\nsort_by string Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 11 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort order. If not set, then no later elements exist.\\nprev_cursor string Optional\\nThe cursor used to" + }, + { + "id": "ART-1303_KNOWLEDGE_NODE-155", + "title": "Export Post \u2014 DevRev | Docs", + "text": "Optional\\nThe iteration mode to use, otherwise if not set, then \"after\" is used.\\nAllowed values: after before\\nsort_by string Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of groups.\\nShow 11 properties\\nnext_cursor string Optional\\nThe cursor used to iterate subsequent results in accordance to the sort order. If not set, then no later elements exist.\\nprev_cursor string Optional\\nThe cursor used to" + }, + { + "id": "ART-1639_KNOWLEDGE_NODE-153", + "title": "Export Post \u2014 DevRev | Docs", + "text": "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 provided cursor will be returned, or if no cursor is provided, then from the end. Entries will always be returned in the specified sort-by order.\\nsort_by list of strings Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of" + }, + { + "id": "ART-1303_KNOWLEDGE_NODE-158", + "title": "Export Post \u2014 DevRev | Docs", + "text": "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 provided cursor will be returned, or if no cursor is provided, then from the end. Entries will always be returned in the specified sort-by order.\\nsort_by list of strings Optional\\nComma-separated fields to sort the groups by.\\nResponse.\\n\\nThis endpoint returns an object.\\ngroups list of objects\\nThe list of" + }, + { + "id": "ART-15481_KNOWLEDGE_NODE-5", + "title": "List Vistas Groups | DevRev | Docs", + "text": "stringsOptional\\n\\nComma-separated fields to sort the objects by.\\n\\nstatelist of enumsOptional\\n\\nDenotes the state of the vista group item.\\n\\nAllowed values:activecompletedplanned\\n\\ntypelist of enumsOptional\\n\\nFilters for vista group items of the specific type.\\n\\nAllowed values:curateddynamic\\n\\n### Response\\n\\nThe response to listing the vistas group items.\\n\\nnext\\\\_cursorstring or null`format: \"text\"`\\n\\nThe cursor used to iterate subsequent results in accordance to the\\nsort order. If" + }, + { + "id": "ART-1652_KNOWLEDGE_NODE-171", + "title": "Export \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-15481_KNOWLEDGE_NODE-6", + "title": "List Vistas Groups | DevRev | Docs", + "text": "not set, then no later elements exist.\\n\\nprev\\\\_cursorstring or null`format: \"text\"`\\n\\nThe cursor used to iterate preceding results in accordance to the\\nsort order. If not set, then no prior elements exist.\\n\\nvista\\\\_grouplist of objects or null\\n\\nList of vista group items.\\n\\nShow 3 variants\\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" + } + ] + }, + { + "query_id": "9e47d6d0-487f-42aa-a3cc-0409522c3daf", + "query": "accounts.export API filter by created date after", + "retrievals": [ + { + "id": "ART-1303_KNOWLEDGE_NODE-6", + "title": "Export Post \u2014 DevRev | Docs", + "text": "exported accounts.\\nShow 18 properties\\nGET / 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 \"" + }, + { + "id": "ART-1302_KNOWLEDGE_NODE-11", + "title": "Export \u2014 DevRev | Docs", + "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 \" : \"" + }, + { + "id": "ART-1605_KNOWLEDGE_NODE-3", + "title": "Create \u2014 DevRev | Docs", + "text": "delete.\\nResponse.\\n\\nThis endpoint returns a map from strings to any.\\nAPI Reference accounts Export.\\n\\nGET https:// api.devrev.ai / accounts.export\\nExports a collection of accounts.\\nQuery parameters.\\n\\ncreated_by string Optional\\nFilters for accounts created by the specified user(s).\\ncreated_date.after datetime Optional\\nFilters for objects created after the provided timestamp (inclusive).\\ncreated_date.before datetime Optional\\nFilters for objects created before the provided timestamp" + }, + { + "id": "ART-1649_KNOWLEDGE_NODE-3", + "title": "Create \u2014 DevRev | Docs", + "text": "delete.\\nResponse.\\n\\nThis endpoint returns a map from strings to any.\\nAPI Reference accounts Export.\\n\\nGET https:// api.devrev.ai / accounts.export\\nExports a collection of accounts.\\nQuery parameters.\\n\\ncreated_by string Optional\\nFilters for accounts created by the specified user(s).\\ncreated_date.after datetime Optional\\nFilters for objects created after the provided timestamp (inclusive).\\ncreated_date.before datetime Optional\\nFilters for objects created before the provided timestamp" + }, + { + "id": "ART-1449_KNOWLEDGE_NODE-2", + "title": "Export Accounts \u2014 DevRev | Docs", + "text": "user(s).\\n\\ncreated_date.afterstringOptional`format: \"date-time\"`\\n\\nFilters for objects created after the provided timestamp (inclusive).\\n\\ncreated_date.beforestringOptional`format: \"date-time\"`\\n\\nFilters for objects created before the provided timestamp (inclusive).\\n\\ndisplay_namelist of stringsOptional\\n\\nArray of display names of accounts to be filtered.\\n\\nexternal_refslist of stringsOptional\\n\\nArray of references of accounts to be filtered.\\n\\nfirstintegerOptional`>=1``<=500`\\n\\nThe" + }, + { + "id": "ART-1652_KNOWLEDGE_NODE-10", + "title": "Export \u2014 DevRev | Docs", + "text": "Optional\\nFilters for accounts created by the specified user(s).\\ncreated_date.after datetime Optional\\nFilters for objects created after the provided timestamp (inclusive).\\ncreated_date.before datetime Optional\\nFilters for objects created before the provided timestamp (inclusive).\\ncursor string Optional\\nThe cursor to resume iteration from. If not provided, then iteration starts from the beginning.\\ncustom_fields map from strings to any Optional\\nFilters for custom fields.\\ndisplay_name" + }, + { + "id": "ART-1639_KNOWLEDGE_NODE-10", + "title": "Export Post \u2014 DevRev | Docs", + "text": "Optional\\nFilters for accounts created by the specified user(s).\\ncreated_date.after datetime Optional\\nFilters for objects created after the provided timestamp (inclusive).\\ncreated_date.before datetime Optional\\nFilters for objects created before the provided timestamp (inclusive).\\ncursor string Optional\\nThe cursor to resume iteration from. If not provided, then iteration starts from the beginning.\\ncustom_fields map from strings to any Optional\\nFilters for custom fields.\\ndisplay_name" + }, + { + "id": "ART-1303_KNOWLEDGE_NODE-15", + "title": "Export Post \u2014 DevRev | Docs", + "text": "Optional\\nFilters for accounts created by the specified user(s).\\ncreated_date.after datetime Optional\\nFilters for objects created after the provided timestamp (inclusive).\\ncreated_date.before datetime Optional\\nFilters for objects created before the provided timestamp (inclusive).\\ncursor string Optional\\nThe cursor to resume iteration from. If not provided, then iteration starts from the beginning.\\ncustom_fields map from strings to any Optional\\nFilters for custom fields.\\ndisplay_name" + }, + { + "id": "ART-1449_KNOWLEDGE_NODE-3", + "title": "Export Accounts \u2014 DevRev | Docs", + "text": "number of accounts to return. The default is \\xe2\\x80\\x9850\\xe2\\x80\\x99.\\n\\nmodified_date.afterstringOptional`format: \"date-time\"`\\n\\nFilters for objects created after the provided timestamp (inclusive).\\n\\nmodified_date.beforestringOptional`format: \"date-time\"`\\n\\nFilters for objects created before the provided timestamp (inclusive).\\n\\nsort_bylist of stringsOptional\\n\\nFields to sort the accounts by and the direction to sort them in.\\n\\nstagelist of stringsOptional\\n\\nFilters for accounts on" + }, + { + "id": "ART-1254_KNOWLEDGE_NODE-6", + "title": "Export Accounts | DevRev | Docs", + "text": "provided timestamp (inclusive).\\n\\ncreated\\\\_date.beforestringOptional`format: \"date-time\"`\\n\\nFilters for objects created before the provided timestamp\\n(inclusive).\\n\\ndisplay\\\\_namelist of stringsOptional\\n\\nArray of display names of accounts to be filtered.\\n\\nexternal\\\\_refslist of stringsOptional\\n\\nArray of references of accounts to be filtered.\\n\\nfirstintegerOptional`>=1``<=500`\\n\\nThe number of accounts to return. The default is \\'50\\'.\\n\\nmodified\\\\_date.afterstringOptional`format:" + } + ] + }, + { + "query_id": "5a83d35e-d1ba-4feb-b778-53b294f3bb0e", + "query": "Sales One App not visible after login", + "retrievals": [ + { + "id": "ART-17569_KNOWLEDGE_NODE-0", + "title": "Issues with Salesforce OAuth connection", + "text": "b'\"Starting in early September 2025, Salesforce will restrict the use of uninstalled connected apps. This usage restriction will block end users from using uninstalled connected apps. This change is part of Salesforce\\'s commitment to making our products and services secure-by-default.\"\\n\\n[Prepare for Connected App Usage Restrictions Change](https://help.salesforce.com/s/articleView?id=005132365&type=1)\\n\\n\"If API Access control isn\\xe2\\x80\\x99t enabled, end users see the following error" + }, + { + "id": "ART-17569_KNOWLEDGE_NODE-1", + "title": "Issues with Salesforce OAuth connection", + "text": "message in the UI if they try to access an uninstalled app: \\xe2\\x80\\x9cWe can\\xe2\\x80\\x99t authorize you because of an OAuth error. For more information, contact your Salesforce administrator.\\xe2\\x80\\x9d and the OAUTH_APPROVAL_ERROR_GENERIC message.\"\\n\\nDue to this, customers may experience issues when trying to create a new Salesforce connection and install the DevRev app on their Salesforce instance.\\n\\nRead more about this on the shared article above. Follow the next steps to enable the" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-0", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "b'Salesforce AirSync | AirSync | 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 +" + }, + { + "id": "ART-16192_KNOWLEDGE_NODE-0", + "title": "ServiceNow KB AirSync | AirSync | Snap-ins | DevRev", + "text": "b\"ServiceNow KB AirSync | AirSync | 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 +" + }, + { + "id": "ART-2044_KNOWLEDGE_NODE-0", + "title": "ServiceNow AirSync | AirSync | Snap-ins | DevRev", + "text": "b\"ServiceNow AirSync | AirSync | 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 +" + }, + { + "id": "ART-4272_KNOWLEDGE_NODE-0", + "title": "OneDrive AirSync | AirSync | Snap-ins | DevRev", + "text": "b'OneDrive AirSync | AirSync | 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 +" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-46", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "[Updates](#updates)\\n* [Knowledge articles](#knowledge-articles)\\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*" + }, + { + "id": "ART-2045_KNOWLEDGE_NODE-0", + "title": "AirSync | Snap-ins | DevRev", + "text": "b'AirSync | 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 +" + }, + { + "id": "ART-4217_KNOWLEDGE_NODE-0", + "title": "SharePoint AirSync | AirSync | Snap-ins | DevRev", + "text": "b'SharePoint AirSync | AirSync | 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 +" + }, + { + "id": "ART-3108_KNOWLEDGE_NODE-0", + "title": "Paligo AirSync | AirSync | Snap-ins | DevRev", + "text": "b\"Paligo AirSync | AirSync | 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 +" + } + ] + }, + { + "query_id": "a03f6885-a997-4546-bd74-be98466da2d9", + "query": "linking tickets and issues for analytics", + "retrievals": [ + { + "id": "ART-1947_KNOWLEDGE_NODE-36", + "title": "Apps | Computer by DevRev | DevRev", + "text": "Conversations can be immediately linked to a ticket, a ticket to an issue and subsequently to a part (product capabilities and features).\\n\\n| Link | Control |\\n| --- | --- |\\n| Conversation \\xe2\\x86\\x92 Ticket | Open the conversation and click **Tickets > + Link tickets**. Either create a new ticket or select an existing ticket. |\\n| Ticket \\xe2\\x86\\x92 Issue | Open the ticket and click **Issues > + Link issues**. Either create a new issue or select an existing issue. |\\n| Issue \\xe2\\x86\\x92" + }, + { + "id": "ART-1947_KNOWLEDGE_NODE-37", + "title": "Apps | Computer by DevRev | DevRev", + "text": "Ticket | Open the issue and click **Tickets > + Link tickets**. Either create a new ticket or select an existing ticket. |\\n| Issue \\xe2\\x86\\x92 Issue | Open the issue and click **Issues > + Link issues**. Either create a new issue or select an existing issue. |\\n\\n| Conversation | Ticket | Issue |\\n| --- | --- | --- |\\n| | | > |\\n\\nTo delete a ticket or issue, select the work item in the list view and click the **Delete** icon in the taskbar that appears.\\n\\n![]()\\n\\n[PreviousCore" + }, + { + "id": "ART-1947_KNOWLEDGE_NODE-34", + "title": "Apps | Computer by DevRev | DevRev", + "text": "necessary.\\n\\n> Example: \"Feature A on product Y exhibited unexpected behavior. This is a defect and needs to be fixed.\"\\n\\nTickets and issues are linked in many-to-many relationships. It may require multiple issues to resolve a ticket, or one issue may resolve multiple tickets if different external users experience and describe the same behavior in different ways.\\n\\nWork/state relationships\\n------------------------\\n\\nThe following figure shows how the various work object types" + }, + { + "id": "ART-4184_KNOWLEDGE_NODE-4", + "title": "Ticket linked issues comment sync | Automate | Snap-ins | DevRev", + "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 +" + }, + { + "id": "ART-3905_KNOWLEDGE_NODE-27", + "title": "Jira Service Management AirSync | AirSync | Snap-ins | DevRev", + "text": "|\\n| --- | --- | --- |\\n| Issue | Ticket | \\xe2\\x9c\\x85 |\\n| Private Comment on Issue | Internal Comment on Ticket | \\xe2\\x9c\\x85 |\\n| Public Comment on Issue | Customer Comment on Ticket | \\xe2\\x9c\\x85 |\\n| Label on Issue | Tag on Ticket | \\xe2\\x9c\\x85 |\\n| Link between Issues | Link between Tickets | \\xe2\\x9c\\x85 |\\n| Attachment on Issue | Attachment on Ticket | \\xe2\\x9c\\x85 |\\n| Status Category/States of Issue | State/Stage of Ticket | \\xe2\\x9c\\x85 |\\n| Workflow of Issue | Stage Transition" + }, + { + "id": "ART-15664_KNOWLEDGE_NODE-17", + "title": "Links | DevRev | Docs", + "text": "exhaustive list.\\n\\n### Links from tickets\\n\\nLinks from tickets\\n\\ntarget\\n\\nsource\\n\\nis dependent on\\n\\nis related to\\n\\nis related to\\n\\nis parent of\\n\\nis merged into\\n\\nticket\\n\\nissue\\n\\nticket\\n\\narticle\\n\\n##### \\n\\nOnly ticket \\xe2\\x86\\x92 issue is allowed for creating a link with \\xe2\\x80\\x9cis dependent on\\xe2\\x80\\x9d. Creating the link in reverse (issue \\xe2\\x86\\x92 ticket) is not possible; however, you can swap the source and target objects to achieve the same result.\\n\\n### Links" + }, + { + "id": "ART-4184_KNOWLEDGE_NODE-0", + "title": "Ticket linked issues comment sync | Automate | Snap-ins | DevRev", + "text": "b\"Ticket linked issues comment sync | 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 +" + }, + { + "id": "ART-2053_KNOWLEDGE_NODE-31", + "title": "Jira Software AirSync | AirSync | Snap-ins | DevRev", + "text": "\\xe2\\x9c\\x85 |\\n| Comment on Issue | Comment on Issue/Ticket | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Label on Issue | Tag on Issue/Ticket | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Link between Issues | Link between Issues/Tickets/Enhancements | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Attachment on Issue | Attachment on Issue/Ticket/Enhancements | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Status Category/States of Issue | State/Stage of Issue/Ticket/Enhancements | \\xe2\\x9c\\x85 | \\xe2\\x9c\\x85 |\\n| Workflow of Issue | Stage" + }, + { + "id": "ART-4184_KNOWLEDGE_NODE-30", + "title": "Ticket linked issues comment sync | Automate | Snap-ins | DevRev", + "text": "Insights](/for-user-insights)\\n* [Marketplace](https://marketplace.devrev.ai/)\\n\\nResources\\n\\n* [Blog](/blog)\\n* [Our Customers](/case-study)\\n* [Snap-In Extensions](https://developer.devrev.ai/public/snapin-development/concepts)\\n* [DevRevU training](/docs/DevRevU)\\n* [Documentation](https://docs.devrev.ai/)\\n* [API References](https://docs.devrev.ai/api/)\\n\\nCompany\\n\\n* [About](/about)\\n* [Events](/events)\\n* [Careers](/careers)\\n* [What Why How](/what-why-how)\\n\\nInitiatives\\n\\n* [Partner" + }, + { + "id": "ART-1540_KNOWLEDGE_NODE-2", + "title": "Get Link (POST) (Beta) \u2014 DevRev | Docs", + "text": "\"type\": \"ticket\", \\n 7| \"id\": \"source\", \\n 8| \"owned_by\": [ \\n 9| { \\n 10| \"type\": \"sys_user\", \\n 11| \"id\": \"source\" \\n 12| } \\n 13| ], \\n 14| \"title\": \"source\", \\n 15| \"display_id\": \"source\", \\n 16| \"rev_org\": { \\n 17| \"type\": \"rev_org\", \\n 18| \"id\": \"source\" \\n 19| }, \\n 20| \"severity\": \"blocker\", \\n 21| \"stage\": { \\n 22|" + } + ] + }, + { + "query_id": "898a4513-a682-43d5-acb5-9413bbd28ab5", + "query": "Data residency compliance for international customers", + "retrievals": [ + { + "id": "ART-12476_KNOWLEDGE_NODE-1", + "title": "The Future of Sessions - Powered By DevRev", + "text": "designed to meet GDPR and SOC 2 compliance requirements, with controls in place to support your data privacy needs.\\n\\nAdvanced enterprise login: Seamless SAML compliance for all enterprise logins regardless of your SSO provider.\\n\\nRegional data residency options: We offer data residency options in Europe, Australia, US East (Virginia), and India, with logical data isolation and access control features.\\n\\nSelf-serve user management: Easily add or remove users from your workspace and manage" + }, + { + "id": "ART-4174_KNOWLEDGE_NODE-10", + "title": "Data Processing Agreement | DevRev", + "text": "data privacy laws. To support this commitment, we use industry-standard frameworks and legal instruments to facilitate the lawful and secure transfer of personal data across borders.\\n\\n### EU Standard Contractual Clauses (SCCs)\\n\\nFor data transfers involving EU-based users, DevRev relies on the EU Standard Contractual Clauses (SCCs). These clauses, approved by the European Commission, provide contractual safeguards to ensure that personal data transferred outside the European Economic Area" + }, + { + "id": "ART-4174_KNOWLEDGE_NODE-9", + "title": "Data Processing Agreement | DevRev", + "text": "behalf, as well as explanations on how such parties safeguard your data.\\n* **Standard Contractual clauses and other country specific clauses:** Our DPA also includes the EU Commission's Standard Contractual clausesand other country specific clauses for transferring and processing data outside of the EEA, UK and USA.\\n\\n### How does DevRev handle International Data transfers?\\n\\nAt DevRev, we understand the importance of securely managing international data transfers in compliance with global" + }, + { + "id": "ART-888_KNOWLEDGE_NODE-42", + "title": "Privacy Policy", + "text": "spaces under your sole control.How we transfer information we collect internationallyInternational transfers of information we collectWe collect information globally and may transfer, process and store your information outside of your country of residence, to wherever we or our third-party service providers operate for the purpose of providing you the Services. Whenever we transfer your information, we take steps to protect it.International transfers within the DevRev Companies: To facilitate" + }, + { + "id": "ART-888_KNOWLEDGE_NODE-44", + "title": "Privacy Policy", + "text": "protection clauses, which have been largely adopted by countries worldwide or other appropriate legal mechanisms to safeguard the transfer.International transfers to third parties: Some of the third parties described in this privacy policy, which provide services to us under contract, are based in other countries that may not have equivalent privacy and data protection laws to the country in which you reside. When we share information of customers in the European Economic Area, the UK, or" + }, + { + "id": "ART-4174_KNOWLEDGE_NODE-8", + "title": "Data Processing Agreement | DevRev", + "text": "we implement to keep your data secure, such as encryption, access controls, and regular security audits.\\n* **Data Subject Rights:** Information on how we support you in responding to requests from individuals to exercise their rights under data protection laws.\\n* **Data Transfer:** Terms regarding international data transfers, ensuring compliance with GDPR and other regulatory frameworks.\\n* **Subprocessors:** A list of any third parties we partner we engage in order to process data on your" + }, + { + "id": "ART-4174_KNOWLEDGE_NODE-11", + "title": "Data Processing Agreement | DevRev", + "text": "(EEA) is adequately protected, even when transferred to countries that may not offer an equivalent level of data protection.\\n\\n### UK-Specific Clauses\\n\\nFollowing Brexit, we also apply tailored safeguards for personal data transferred from the United Kingdom. We leverage the UK\\xe2\\x80\\x99s International Data Transfer Addendum to the EU SCCs, which ensures compliance with UK-specific data transfer requirements and aligns with the standards established by the UK\\xe2\\x80\\x99s Information" + }, + { + "id": "ART-4174_KNOWLEDGE_NODE-12", + "title": "Data Processing Agreement | DevRev", + "text": "Commissioner\\xe2\\x80\\x99s Office (ICO).\\n\\n### United States Data Transfer Mechanisms\\n\\nFor personal data transfers to the United States, DevRev employs recognized contractual frameworks and implements additional measures, as necessary, to safeguard your information in accordance with evolving U.S. data protection guidelines. We work to align with relevant standards and best practices to address regulatory considerations around cross-border data transfers.\\n\\n### What about Personal Data use" + }, + { + "id": "ART-888_KNOWLEDGE_NODE-43", + "title": "Privacy Policy", + "text": "our global operations, we transfer information globally and allow access to that information from countries in which the DevRev owned or operated companies and have operations for the purposes described in this policy. These countries may not have equivalent privacy and data protection laws to the laws of many of the countries where our customers and users are based. When we share information about you within and among DevRev corporate affiliates, we make use of standard contractual data" + }, + { + "id": "ART-888_KNOWLEDGE_NODE-45", + "title": "Privacy Policy", + "text": "Switzerland, we make use of the European Commission-approved standard contractual data protection clauses, binding corporate rules for transfers to data processors, or other appropriate legal mechanisms to safeguard the transfer.Notice to End UsersMany of our products are intended for use by organizations. Where the Services are made available to you through an organization (e.g. your employer), that organization is the administrator of the Services and is responsible for the accounts and/or" + } + ] + }, + { + "query_id": "9f3be4d0-e1ae-46c5-be4f-b02edea516fb", + "query": "declarative pathing within the bot", + "retrievals": [ + { + "id": "ART-1961_KNOWLEDGE_NODE-34", + "title": "Workflows | Computer by DevRev | DevRev", + "text": "button toolbar.\\n4. Set your triggers. You can have multiple triggers within a single workflow.\\n5. To configure your workflow, utilize the data reference pane to select values from previous nodes.\\n6. Connect steps with multiple paths as needed, allowing for the management of complex workflows on one canvas.\\n7. To add conditional logic, use a control step.\\n\\n Select a value for the LHS; select the appropriate operator; and enter or select a value for the RHS, which can be a literal value" + }, + { + "id": "ART-1976_KNOWLEDGE_NODE-2", + "title": "Routing | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1976_KNOWLEDGE_NODE-23", + "title": "Routing | Computer for Support Teams | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Pick user node capabilities](#pick-user-node-capabilities)\\n* [Additional routing" + }, + { + "id": "ART-1989_KNOWLEDGE_NODE-37", + "title": "Commands | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-16803_KNOWLEDGE_NODE-5", + "title": "Workflow nodes | Workflows | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-12391_KNOWLEDGE_NODE-6", + "title": "Conversational workflows | Workflows | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-1989_KNOWLEDGE_NODE-2", + "title": "Commands | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-6", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-12394_KNOWLEDGE_NODE-6", + "title": "Workflow management | Workflows | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-3205_KNOWLEDGE_NODE-6", + "title": "Set user preference for group | Automate | Snap-ins | DevRev", + "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" + } + ] + }, + { + "query_id": "5e3a4b4a-89bf-4499-bf29-80f9d0420721", + "query": "resolution time grouped by Priority and Customer segment", + "retrievals": [ + { + "id": "ART-15716_KNOWLEDGE_NODE-36", + "title": "Support queries related playbook", + "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" + }, + { + "id": "ART-1004_KNOWLEDGE_NODE-7", + "title": "Understanding a Support Engineer's Pain Points and KPIs", + "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) =" + }, + { + "id": "ART-1003_KNOWLEDGE_NODE-19", + "title": "Understanding a Support Lead's Pain Points and KPIs", + "text": "t.created_at) = EXTRACT(@period FROM CURRENT_DATE);\\n-- NOTE: Replace @period with 'DAY', 'WEEK', 'MONTH', or 'QUARTER'.\\n\\n\\nAverage Resolution Time (ART)\\n\\n\\n Definition\\n \\n The average time it takes 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) / (Total number of resolved tickets)\\n \\n \\n\\n\\nSELECT AVG(TIMESTAMPDIFF(MINUTE, t.created_at, t.resolved_at)) AS" + }, + { + "id": "ART-1970_KNOWLEDGE_NODE-26", + "title": "Conversation-Team Performance | Support analytics | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1003_KNOWLEDGE_NODE-20", + "title": "Understanding a Support Lead's Pain Points and KPIs", + "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" + }, + { + "id": "ART-1004_KNOWLEDGE_NODE-6", + "title": "Understanding a Support Engineer's Pain Points and KPIs", + "text": "first responses by the engineer)\\n \\n \\n\\n\\nSELECT engineer_id, AVG(TIMESTAMPDIFF(MINUTE, t.created_at, r.created_at)) AS IndividualFirstResponseTime\\nFROM tickets t\\nJOIN responses r ON t.id = r.ticket_id\\nWHERE r.is_first_response = 1\\nAND EXTRACT(@period FROM t.created_at) = EXTRACT(@period FROM CURRENT_DATE)\\nGROUP BY engineer_id;\\n-- NOTE: Replace @period with 'DAY', 'WEEK', 'MONTH', or 'QUARTER'.\\n\\n\\nIndividual Average Resolution Time (ART)\\n\\n\\n Definition\\n \\n The average" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-37", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-39", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "marked as spam | | |\\n| Next response time | | A new message on the conversation with the customer after the customer experience engineer replied | * The agent replied to the conversation * The conversation is moved to Waiting on User/Resolved * The conversation is marked as spam | | |\\n| Full resolution time | | Conversation created | * The conversation has moved to the Resolved/Archived * The conversation is marked as spam | The conversation is moved to Waiting on User | The" + }, + { + "id": "ART-1977_KNOWLEDGE_NODE-26", + "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1972_KNOWLEDGE_NODE-27", + "title": "Ticket-SLA Analytics | Support analytics | Computer for Support Teams | DevRev", + "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" + } + ] + }, + { + "query_id": "9f26f4e6-a8e5-4813-ba95-36771c04c066", + "query": "add attributes in MSAT snap-in", + "retrievals": [ + { + "id": "ART-1281_KNOWLEDGE_NODE-4", + "title": "Snap-in manifest | DevRev | Docs", + "text": "the end-user.> |\\n| 7 | |\\n| 8 | - name: |\\n| 9 | description: |\\n| 10 | display_name: |\\n| 11 | types: |\\n| 12 | user: |\\n| 13 | - name: |\\n| 14 | description: |\\n| 15 |" + }, + { + "id": "ART-1281_KNOWLEDGE_NODE-5", + "title": "Snap-in manifest | DevRev | Docs", + "text": "display_name: |\\n| 16 | types: |\\n| 17 | |\\n| 18 | - name: |\\n| 19 | description: |\\n| 20 | display_name: |\\n| 21 | types: |\\n```\\n\\nFor example:\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | keyrings:" + }, + { + "id": "ART-1490_KNOWLEDGE_NODE-5", + "title": "Snap-in manifest \u2014 DevRev | Docs", + "text": "display_name: \\n 6| types: \\n 7| \\n 8| - name: \\n 9| description: \\n 10| display_name: \\n 11| types: \\n 12| user: \\n 13| -" + }, + { + "id": "ART-1281_KNOWLEDGE_NODE-17", + "title": "Snap-in manifest | DevRev | Docs", + "text": "|\\n| 29 | \"created_by\": {}, |\\n| 30 | \"created_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 31 | \"display_id\": \"string\", |\\n| 32 | \"id\": \"string\", |\\n| 33 | \"modified_by\": {}, |\\n| 34 | \"modified_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 35 | \"display_name\": \"string\", |\\n| 36 | \"description\": \"string\", |\\n| 37 | \"domains\": [ |\\n| 38 | null |\\n| 39 | ], |\\n| 40 | \"external_refs\": [ |\\n| 41 | null |\\n| 42 | ], |\\n| 43 | \"owned_by\": [ |\\n| 44 | {} |\\n| 45 | ], |\\n| 46 | \"tier\": \"string\" |\\n| 47 | } |\\n|" + }, + { + "id": "ART-1281_KNOWLEDGE_NODE-16", + "title": "Snap-in manifest | DevRev | Docs", + "text": "\"string\", |\\n| 8 | \"modified_by\": {}, |\\n| 9 | \"modified_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 10 | \"display_name\": \"string\", |\\n| 11 | \"description\": \"string\", |\\n| 12 | \"domains\": [ |\\n| 13 | null |\\n| 14 | ], |\\n| 15 | \"external_refs\": [ |\\n| 16 | null |\\n| 17 | ], |\\n| 18 | \"owned_by\": [ |\\n| 19 | {} |\\n| 20 | ], |\\n| 21 | \"tier\": \"string\" |\\n| 22 | } |\\n| 23 | }, |\\n| 24 | \"account_deleted\": { |\\n| 25 | \"id\": \"ACC-12345\" |\\n| 26 | }, |\\n| 27 | \"account_updated\": { |\\n| 28 | \"account\": {" + }, + { + "id": "ART-1281_KNOWLEDGE_NODE-33", + "title": "Snap-in manifest | DevRev | Docs", + "text": "\"created_by\": {}, |\\n| 317 | \"created_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 318 | \"display_id\": \"string\", |\\n| 319 | \"id\": \"string\", |\\n| 320 | \"modified_by\": {}, |\\n| 321 | \"modified_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 322 | \"allowed_values\": [ |\\n| 323 | null |\\n| 324 | ], |\\n| 325 | \"description\": \"string\", |\\n| 326 | \"name\": \"string\" |\\n| 327 | } |\\n| 328 | }, |\\n| 329 | \"timeline_entry_created\": { |\\n| 330 | \"entry\": { |\\n| 331 | \"created_by\": {}, |\\n| 332 | \"created_date\":" + }, + { + "id": "ART-1957_KNOWLEDGE_NODE-27", + "title": "Object customization | Computer by DevRev | DevRev", + "text": "[Issues](./issues#attributes)\\n* [Tickets](./tickets#attributes)\\n* [Opportunity](./grow#opportunity-attributes)\\n* [Account](./grow#account-attributes)\\n* [Contact](./grow#contact-attributes)\\n* [Parts](./parts#attributes)\\n\\n![]()\\n\\nAdding custom fields can be done by workspace admins only. Members of your organization can only view the custom fields and subtypes.\\n\\nTo get started with object customization, go to [**Settings** > **Object" + }, + { + "id": "ART-1281_KNOWLEDGE_NODE-27", + "title": "Snap-in manifest | DevRev | Docs", + "text": "\"2023-01-01T12:00:00.000Z\", |\\n| 218 | \"display_id\": \"string\", |\\n| 219 | \"id\": \"string\", |\\n| 220 | \"modified_by\": {}, |\\n| 221 | \"modified_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 222 | \"display_name\": \"string\", |\\n| 223 | \"description\": \"string\", |\\n| 224 | \"domain\": \"string\", |\\n| 225 | \"external_ref\": \"string\" |\\n| 226 | } |\\n| 227 | }, |\\n| 228 | \"rev_user_created\": { |\\n| 229 | \"rev_user\": { |\\n| 230 | \"created_by\": {}, |\\n| 231 | \"created_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 232 |" + }, + { + "id": "ART-1957_KNOWLEDGE_NODE-33", + "title": "Object customization | Computer by DevRev | DevRev", + "text": "text**: Add a placeholder text that will be visible to the users before they enter an input.\\n * **Group name**: You can use a group name to create a group accordion for the chosen attributes.\\n * **Field visibility**: Choose how you want the field to be visible to users.\\n * **Field actionables**: Select actions that you can perform after creating a field such as grouping, filtering, and sorting.\\n * **Tooltip**: Add information about the field which will be visible when hovered" + }, + { + "id": "ART-1281_KNOWLEDGE_NODE-40", + "title": "Snap-in manifest | DevRev | Docs", + "text": "429 | \"modified_by\": {}, |\\n| 430 | \"modified_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 431 | \"applies_to_part\": {}, |\\n| 432 | \"artifacts\": [ |\\n| 433 | null |\\n| 434 | ], |\\n| 435 | \"body\": \"string\", |\\n| 436 | \"owned_by\": [ |\\n| 437 | {} |\\n| 438 | ], |\\n| 439 | \"reported_by\": [ |\\n| 440 | {} |\\n| 441 | ], |\\n| 442 | \"stage\": {}, |\\n| 443 | \"tags\": [ |\\n| 444 | {} |\\n| 445 | ], |\\n| 446 | \"target_close_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 447 | \"title\": \"string\", |\\n| 448 |" + } + ] + }, + { + "query_id": "8f8fd54f-97c5-47fb-85bc-eb0eec284788", + "query": "Slack bot not working after multiple test tickets", + "retrievals": [ + { + "id": "ART-2035_KNOWLEDGE_NODE-41", + "title": "Slack | Integrate | Snap-ins | DevRev", + "text": "Slack threads, all the messages from both Slack threads reach only the primary ticket in DevRev, while messages from DevRev only sync to the primary ticket\\xe2\\x80\\x99s Slack thread.\\n* If only one ticket has a syncing Slack thread, that thread syncs with the primary ticket.\\n* No messages from the duplicate ticket sync to Slack.\\n* If a ticket is immutable but receives a new customer message in its Slack thread, a follow-up ticket is automatically created for future discussions.\\n\\n### New" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-26", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "text": "permissions: channel-read, groups-read, user.profile:read, users:read, users.read:email, chat-write, and userGroup-read.\\n4. Invite the bot to the workspace.\\n5. Save the bot access token as connection (snap-in secret) in DevRev app.\\n6. Invite the bot to the channels where the messages will be sent.\\n7. In the DevRev app, setup the connection in **Settings** > **Snap-ins** > **Connections** on top.\\n\\n * Search and choose an existing connection or create a new one by clicking **+" + }, + { + "id": "ART-4199_KNOWLEDGE_NODE-28", + "title": "Slack message agent | Automate | Snap-ins | DevRev", + "text": "**Trigger URL** that is displayed.\\n6. Paste the Trigger URL under **Enable Events** in the custom Slack bot.\\n\\n[PreviousTicket linked issues comment sync](/docs/automations/ticket-linked-issues-comment-sync)[NextIntegrate](/docs/integrate)\\n\\n#### On this page\\n\\n* [Install](#install)\\n* [Configure the custom Slack bot](#configure-the-custom-slack-bot)\\n* [Configure DevRev](#configure-devrev)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more about" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-25", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-12395_KNOWLEDGE_NODE-33", + "title": "Slack Broadcaster | Automate | Snap-ins | DevRev", + "text": "not support broadcasting to more than 650 channels at a time.\\n\\n[PreviousSlack scraper](/docs/automations/slack-scraper)[NextReported by enricher](/docs/automations/ticket-reported-by)\\n\\n#### On this page\\n\\n* [Configurations](#configurations)\\n* [Slack Connection](#slack-connection)\\n* [Features](#features)\\n* [Slash Commands](#slash-commands)\\n* [How to use](#how-to-use)\\n* [Inputs](#inputs)\\n* [CSV Format](#csv-format)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more" + }, + { + "id": "ART-968_KNOWLEDGE_NODE-4", + "title": "Rocketium: On call Tagging - Slack", + "text": "the tagging is\\nrequired.\\n3. To generate a DevRev Connection via Secret snap-in service to establish a link with\\nthe Snapin deployed to the instance. Please paste the Oauth token copied within\\n\\xe2\\x80\\x98Secret\\xe2\\x80\\x99 shown in the image below.\\n\\n4. To ensure that the share ticket acknowledgment checkbox is enabled at the time of\\nticket creation for the app to perform the tagging.\\n\\n\\xe2\\x97\\x8b Limitations:\\n> It takes between 5-10 seconds for the tagging to occur from the ticket" + }, + { + "id": "ART-12393_KNOWLEDGE_NODE-15", + "title": "Troubleshooting | Workflows | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-968_KNOWLEDGE_NODE-0", + "title": "Rocketium: On call Tagging - Slack", + "text": "b'Rocketium: Slack - On-call Tagging\\n\\n\\xe2\\x97\\x8f Problem statement:\\n\\xe2\\x97\\x8b Rocketium\\xe2\\x80\\x99s CS team creates tickets in DevRev from a specific Slack channel for their\\non-call team to address and work on them.\\n\\xe2\\x97\\x8b Currently, the users are required to manually tag the on-call Slack group members in\\nthe ticket description as shown in the image below.\\n\\n\\xe2\\x97\\x8b The requirement is to automatically tag the members without manual intervention.\\nNote: The requirement" + }, + { + "id": "ART-4199_KNOWLEDGE_NODE-13", + "title": "Slack message agent | Automate | Snap-ins | DevRev", + "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-2017_KNOWLEDGE_NODE-10", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "text": "- [Bulk delete 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" + } + ] + }, + { + "query_id": "17d61e6f-209e-43f7-bac4-61f02c5a63f1", + "query": "customizar severity de los tickets", + "retrievals": [ + { + "id": "ART-1837_KNOWLEDGE_NODE-447", + "title": "Update \u2014 DevRev | Docs", + "text": "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 source channels.\\nticket.subtype string Optional\\nFilters for tickets" + }, + { + "id": "ART-1837_KNOWLEDGE_NODE-460", + "title": "Update \u2014 DevRev | Docs", + "text": "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 source channels.\\nticket.subtype string Optional\\nFilters for tickets" + }, + { + "id": "ART-1308_KNOWLEDGE_NODE-449", + "title": "Update \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1792_KNOWLEDGE_NODE-450", + "title": "Update \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1592_KNOWLEDGE_NODE-449", + "title": "Update \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1592_KNOWLEDGE_NODE-462", + "title": "Update \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1308_KNOWLEDGE_NODE-462", + "title": "Update \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1792_KNOWLEDGE_NODE-463", + "title": "Update \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1655_KNOWLEDGE_NODE-457", + "title": "Update \u2014 DevRev | Docs", + "text": "specific groups.\\nticket.is_spam boolean Optional\\nFilters for tickets that are 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" + }, + { + "id": "ART-1636_KNOWLEDGE_NODE-468", + "title": "Update \u2014 DevRev | Docs", + "text": "specific groups.\\nticket.is_spam boolean Optional\\nFilters for tickets that are 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" + } + ] + }, + { + "query_id": "2b37472e-12b1-409b-b999-3e3c953bc4bf", + "query": "support engineer typing indicator in ticket conversation", + "retrievals": [ + { + "id": "ART-15716_KNOWLEDGE_NODE-7", + "title": "Support queries related playbook", + "text": "Tickets from Chat ConversationsYes, you can create a ticket from a conversation without leaving the chat. Some fields may be prefilled from the conversation.\\n\\nDetails:\\xc2\\xa0[Conv \\xe2\\x86\\x92 Ticket Creation](https://devrev.ai/docs/product/conversation-ticket)\\n\\n5. Viewing Ticket Activity to Avoid Duplicate Responses\\n\\nCurrently, there\\xe2\\x80\\x99s no direct feature to see who is viewing a ticket in real time. But, we can see if someone is typing on a ticket.\\n\\n6. Generating AI Summaries" + }, + { + "id": "ART-1967_KNOWLEDGE_NODE-26", + "title": "Inbox | Computer for Support Teams | DevRev", + "text": "assist customer experience engineers with managing the conversation. To get a list of the available commands, type / in the response text box in a conversation.\\n\\n![]()\\n\\n[PreviousComputer for Support Teams](/docs/product/support)[NextSupport analytics](/docs/product/support-analytics)\\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" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-42", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "it's automatically put into the *queued* stage, which indicates that it needs to be picked up by a customer experience engineer.\\n\\n**In-progress**\\n\\n* *Work in progress* (WIP)\\n\\n Work on the concern reported by the user has begun. When a customer experience engineer starts work on a ticket, the ticket's stage changes to *work in progress*. When they require more information, they may ask the customer for additional detail (such as logs or context), in which case the stage would change to" + }, + { + "id": "ART-1974_KNOWLEDGE_NODE-28", + "title": "Conversations | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1974_KNOWLEDGE_NODE-31", + "title": "Conversations | Computer for Support Teams | DevRev", + "text": "transitions to *hold* since the customer experience engineer is blocked by a dependent item.\\n\\n Conversations which need a response from the customer experience engineer shows a **Reply** button in the inbox.\\n* *Hold* (H)\\n\\n The resolution is waiting on some dependent item. Dependencies may include review from someone other than the customer experience engineer (for example, SME, manager, PM, developer) or the completion of other work items (tickets or issues).\\n\\n When the dependencies" + }, + { + "id": "ART-1974_KNOWLEDGE_NODE-30", + "title": "Conversations | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1974_KNOWLEDGE_NODE-27", + "title": "Conversations | Computer for Support Teams | DevRev", + "text": "towards addressing the user's concern.\\n* *Suspended*\\n\\n The initial stage for all invalid conversations, which may include spam or otherwise suspicious inquiries. This stage is used to minimize noise in the support inbox. If, upon review, the *suspended* item is deemed valid, it's transitioned to the *new* stage.\\n\\n**In-progress**\\n\\n* *Waiting on user* (WOU)\\n\\n Someone from the support team has responded and is waiting on a response from the user. For the initial response, the stage" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-44", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "progress* as the customer experience engineer continues to work on it.\\n* *Awaiting product assist* (APA)\\n\\n The customer experience engineer is waiting for a response or feedback from someone internally. They may need to escalate the ticket. There may be a corresponding [issue](./issues) created to fix the defect, which would transition the stage to *awaiting development*.\\n* Awaiting customer response (ACR)\\n\\n The customer experience engineer requires more detail or another response from" + }, + { + "id": "ART-1974_KNOWLEDGE_NODE-29", + "title": "Conversations | Computer for Support Teams | DevRev", + "text": "engineer to verify resolution. Once verified the customer experience engineer moves the stage to *resolved*. If the user does not validate the resolution, the customer experience engineer responds back to the user and the process continues.\\n\\n To calculate the time to initial response you can look at the duration between the conversation created timestamp and the time the stage transitions from *new* to *waiting on user*. Another method is to see how long the conversation was in the *new*" + }, + { + "id": "ART-6174_KNOWLEDGE_NODE-36", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "text": "Status](/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n![]()\\n\\n![]()\"" + } + ] + }, + { + "query_id": "a6f5b2b9-52ec-495d-8dfd-118e5d6a425b", + "query": "update the name that a broadcast on an incident comes from when pushed to a ticket", + "retrievals": [ + { + "id": "ART-1636_KNOWLEDGE_NODE-165", + "title": "Update \u2014 DevRev | Docs", + "text": "incident.\\nreported_by long Optional\\nThe entity that first reported the incident.\\nseverity long Optional\\nSeverity of the incident.\\nsource long Optional\\nSource of where the incident was created. Only sys users and service accounts are supposed to set this field.\\nstage object Optional\\nCreate object for stage.\\nShow 2 properties\\nstakeholders list of strings Optional\\nUsers, along with the incident commander, involved in resolving incidents and handling communication.\\ntags list of objects" + }, + { + "id": "ART-1827_KNOWLEDGE_NODE-165", + "title": "Update \u2014 DevRev | Docs", + "text": "incident.\\nreported_by long Optional\\nThe entity that first reported the incident.\\nseverity long Optional\\nSeverity of the incident.\\nsource long Optional\\nSource of where the incident was created. Only sys users and service accounts are supposed to set this field.\\nstage object Optional\\nCreate object for stage.\\nShow 2 properties\\nstakeholders list of strings Optional\\nUsers, along with the incident commander, involved in resolving incidents and handling communication.\\ntags list of objects" + }, + { + "id": "ART-1655_KNOWLEDGE_NODE-165", + "title": "Update \u2014 DevRev | Docs", + "text": "incident.\\nreported_by long Optional\\nThe entity that first reported the incident.\\nseverity long Optional\\nSeverity of the incident.\\nsource long Optional\\nSource of where the incident was created. Only sys users and service accounts are supposed to set this field.\\nstage object Optional\\nCreate object for stage.\\nShow 2 properties\\nstakeholders list of strings Optional\\nUsers, along with the incident commander, involved in resolving incidents and handling communication.\\ntags list of objects" + }, + { + "id": "ART-1597_KNOWLEDGE_NODE-165", + "title": "Update \u2014 DevRev | Docs", + "text": "incident.\\nreported_by long Optional\\nThe entity that first reported the incident.\\nseverity long Optional\\nSeverity of the incident.\\nsource long Optional\\nSource of where the incident was created. Only sys users and service accounts are supposed to set this field.\\nstage object Optional\\nCreate object for stage.\\nShow 2 properties\\nstakeholders list of strings Optional\\nUsers, along with the incident commander, involved in resolving incidents and handling communication.\\ntags list of objects" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-2", + "title": "Update Incident | DevRev | Docs", + "text": "\"string\", |\\n| 10 | \"id\": \"string\", |\\n| 11 | \"name\": \"string\", |\\n| 12 | \"owned_by\": [ |\\n| 13 | { |\\n| 14 | \"display_id\": \"string\", |\\n| 15 | \"id\": \"string\", |\\n| 16 | \"display_name\": \"string\", |\\n| 17 | \"display_picture\": { |\\n| 18 | \"display_id\": {}, |\\n| 19 | \"id\": {}, |\\n| 20 | \"file\": {} |\\n| 21 | }, |\\n| 22 | \"email\": \"string\", |\\n| 23 | \"full_name\": \"string\", |\\n| 24 | \"state\": \"active\" |\\n| 25 | } |\\n| 26 | ], |\\n| 27 | \"sync_metadata\": { |\\n| 28 | \"external_reference\": \"string\", |\\n|" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-10", + "title": "Update Incident | DevRev | Docs", + "text": "\"string\" |\\n| 166 | }, |\\n| 167 | \"sync_metadata\": { |\\n| 168 | \"external_reference\": \"string\", |\\n| 169 | \"origin_system\": \"string\" |\\n| 170 | }, |\\n| 171 | \"title\": \"string\" |\\n| 172 | } |\\n| 173 | ], |\\n| 174 | \"reported_by\": { |\\n| 175 | \"id\": 1, |\\n| 176 | \"label\": \"string\", |\\n| 177 | \"ordinal\": 1, |\\n| 178 | \"value\": null |\\n| 179 | }, |\\n| 180 | \"severity\": { |\\n| 181 | \"id\": 1, |\\n| 182 | \"label\": \"string\", |\\n| 183 | \"ordinal\": 1, |\\n| 184 | \"value\": null |\\n| 185 | }, |\\n| 186 |" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-11", + "title": "Update Incident | DevRev | Docs", + "text": "\"source\": { |\\n| 187 | \"id\": 1, |\\n| 188 | \"label\": \"string\", |\\n| 189 | \"ordinal\": 1, |\\n| 190 | \"value\": null |\\n| 191 | }, |\\n| 192 | \"stage\": { |\\n| 193 | \"stage\": { |\\n| 194 | \"id\": \"string\", |\\n| 195 | \"display_id\": \"string\", |\\n| 196 | \"name\": \"string\" |\\n| 197 | }, |\\n| 198 | \"state\": { |\\n| 199 | \"id\": \"string\", |\\n| 200 | \"display_id\": \"string\", |\\n| 201 | \"is_final\": true, |\\n| 202 | \"name\": \"string\" |\\n| 203 | } |\\n| 204 | }, |\\n| 205 | \"stock_schema_fragment\":" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-6", + "title": "Update Incident | DevRev | Docs", + "text": "|\\n| 86 | \"display_id\": \"string\", |\\n| 87 | \"id\": \"string\", |\\n| 88 | \"display_name\": \"string\", |\\n| 89 | \"display_picture\": { |\\n| 90 | \"display_id\": \"string\", |\\n| 91 | \"id\": \"string\", |\\n| 92 | \"file\": { |\\n| 93 | \"type\": \"string\", |\\n| 94 | \"name\": \"string\", |\\n| 95 | \"size\": 1 |\\n| 96 | } |\\n| 97 | }, |\\n| 98 | \"email\": \"string\", |\\n| 99 | \"full_name\": \"string\", |\\n| 100 | \"state\": \"active\" |\\n| 101 | }, |\\n| 102 | \"modified_date\": \"2023-01-01T12:00:00.000Z\", |\\n| 103 | \"owned_by\": [ |\\n|" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-3", + "title": "Update Incident | DevRev | Docs", + "text": "29 | \"origin_system\": \"string\" |\\n| 30 | } |\\n| 31 | } |\\n| 32 | ], |\\n| 33 | \"artifacts\": [ |\\n| 34 | { |\\n| 35 | \"id\": \"string\", |\\n| 36 | \"display_id\": \"string\", |\\n| 37 | \"file\": { |\\n| 38 | \"type\": \"string\", |\\n| 39 | \"name\": \"string\", |\\n| 40 | \"size\": 1 |\\n| 41 | } |\\n| 42 | } |\\n| 43 | ], |\\n| 44 | \"body\": \"string\", |\\n| 45 | \"created_by\": { |\\n| 46 | \"display_id\": \"string\", |\\n| 47 | \"id\": \"string\", |\\n| 48 | \"display_name\": \"string\", |\\n| 49 | \"display_picture\": { |\\n| 50 |" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-7", + "title": "Update Incident | DevRev | Docs", + "text": "104 | { |\\n| 105 | \"display_id\": \"string\", |\\n| 106 | \"id\": \"string\", |\\n| 107 | \"display_name\": \"string\", |\\n| 108 | \"display_picture\": { |\\n| 109 | \"display_id\": \"string\", |\\n| 110 | \"id\": \"string\", |\\n| 111 | \"file\": { |\\n| 112 | \"type\": \"string\", |\\n| 113 | \"name\": \"string\", |\\n| 114 | \"size\": 1 |\\n| 115 | } |\\n| 116 | }, |\\n| 117 | \"email\": \"string\", |\\n| 118 | \"full_name\": \"string\", |\\n| 119 | \"state\": \"active\" |\\n| 120 | } |\\n| 121 | ], |\\n| 122 | \"pia\": [ |\\n| 123 | { |\\n| 124 | \"id\":" + } + ] + }, + { + "query_id": "125f9761-a931-43b8-aa5a-1d865a512efc", + "query": "search functionality on tickets and issues deprecated", + "retrievals": [ + { + "id": "ART-1959_KNOWLEDGE_NODE-34", + "title": "Search | Computer by DevRev | DevRev", + "text": "subtype: :\\n```\\n```\\n\\n**Examples**\\n\\nSearch for tickets related to access issues with tenant field escalated:\\n\\n```\\n```\\n1 tnt__escalated:true access issues\\n```\\n```\\n\\nSearch for bugs related to access issues with subtype field customer\\\\_impact:\\n\\n```\\n```\\n1 subtype:Bug ctype__customer_impact:true access issues\\n```\\n```\\n\\nSearch across multiple subtypes for tickets related to access issues:\\n\\n```\\n```\\n1 subtype:Bug,Events access" + }, + { + "id": "ART-1959_KNOWLEDGE_NODE-29", + "title": "Search | Computer by DevRev | DevRev", + "text": "in:title crm |\\n| - | Acts as an exclusion in search results. \"-\" can be used for the same purpose. | type:issue -crm type:issue in:title -crm |\\n| state | Filters results based on the stage: open, closed, or in\\\\_progress. | state:open state:closed state:in\\\\_progress |\\n| severity | Filters out tickets with the desired severity level. Supports: blocker, high, medium, low. | severity:high type:ticket -severity:low (filters all tickets excluding the ones with low severity)" + }, + { + "id": "ART-1959_KNOWLEDGE_NODE-28", + "title": "Search | Computer by DevRev | DevRev", + "text": "of the ticket/issue/enhancement or title. | in:title crm in:title \"crm exp\" in:title crm exp in:body \"bot issues\" |\\n| type: | Enables users to filter by object type. Supported object types include: issue, enhancement, ticket, revu (for searching contacts), question\\\\_answer, conversation, article, devu (for searching internal contacts), account, feature, runnable. | type:issue type:enhancement in:title CRM type:revu type:enhancement, opportunity type:issue, enhancement" + }, + { + "id": "ART-1783_KNOWLEDGE_NODE-445", + "title": "Locate \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1959_KNOWLEDGE_NODE-24", + "title": "Search | Computer by DevRev | DevRev", + "text": "customization](#integrate-search-with-customization)\\n* [Search over custom fields](#search-over-custom-fields)\\n* [Search over custom objects](#search-over-custom-objects)\\n\\n1. [Documentation](/docs)\\n3. [Computer by DevRev](/docs/intro)\\n[Search](/docs/product/search)\\n\\nSearch\\n======\\n\\nSearch works across all DevRev apps, offering seamless navigation and access to issues, tickets, articles, customers, and more. It also allows you to search through timeline comments related to these items." + }, + { + "id": "ART-2065_KNOWLEDGE_NODE-28", + "title": "August 2025 | Changelog | DevRev", + "text": "been added to **Explore**, enabling you to quickly pin and manage your own work items.\\n* Case sensitivity issues in trail searches have been fixed, ensuring relevant results appear without requiring an exact keyword match.\\n* Now, when fields like **Sprint** or **Target Close Date** are cleared (unset) on issues and tickets, these changes, along with their timestamps, are visible in the **Events** tab.\\n\\n![]()\\xc2\\xa0For more information about *Build App*, refer to the following articles:" + }, + { + "id": "ART-3961_KNOWLEDGE_NODE-26", + "title": "Search Node | Automate | Snap-ins | DevRev", + "text": "Mandatory.\\n3. **Namespace**:\\n\\n * Description: Defines the category under which the search should be conducted.\\n * Requirement: Mandatory.\\n * Allowed Values: ticket, dev-user, conversation, part.\\n\\nOutput Parameters\\n-----------------\\n\\n1. **List of Relevant Object IDs**:\\n * Returns a list of IDs corresponding to objects that meet the provided search criteria.\\n\\n[PreviousOrg tags sync](/docs/automations/org-tags-sync)[NextSentiment" + }, + { + "id": "ART-16264_KNOWLEDGE_NODE-27", + "title": "June 2025 | Changelog | DevRev", + "text": "articles: \\xe2\\x80\\xa3 [Search Node | Automate | Snap-ins](/docs/automations/search-node) \\xe2\\x80\\xa3 [Search | AgentOS platform](/docs/product/search)\\n\\n![]()\\n\\n### Support App\\n\\nImproved Customer Information Management on a Ticket\\n----------------------------------------------------\\n\\nWe've enhanced the way users view and update customer information on tickets.\\n\\n**New improvements:**\\n\\n* **Consolidated fields:** Customer information is now organized under two primary fields:" + }, + { + "id": "ART-1959_KNOWLEDGE_NODE-27", + "title": "Search | Computer by DevRev | DevRev", + "text": "of possible objects that can be returned in search results.\\n\\nFull-text search terms/phrases are denoted by [term/phrase]\\\\* and are used to do full-text searches on object text fields.\\n\\n> Example: state:open,closed (field value)\\n\\nOperators\\n---------\\n\\nOperators are used to filter the search results. The following table shows the syntax of each operator along with examples.\\n\\n| Syntax | Description | Examples |\\n| --- | --- | --- |\\n| in: | Aids in searching within the body" + }, + { + "id": "ART-1959_KNOWLEDGE_NODE-23", + "title": "Search | Computer by DevRev | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Operators](#operators)\\n* [Fields](#fields)\\n* [Integrate search with" + } + ] + }, + { + "query_id": "3c9dd52b-a637-4fa2-8bd7-a42ec07c7655", + "query": "how to use snap-ins in DevRev", + "retrievals": [ + { + "id": "ART-1475_KNOWLEDGE_NODE-18", + "title": "DevRev CLI reference \u2014 DevRev | Docs", + "text": "Activate the snap-in\\n\\nTo activate a snap-in, run the following command:\\n\\n[code]\\n\\n $| devrev snap_in activate [id] \\n ---|---\\n[/code] \\n \\n`[id]` is optional. If not provided, it uses the ID stored in the local profile.\\n\\n###### Deactivate the snap-in\\n\\nTo deactivate a snap-in, run the following command:\\n\\n[code]\\n\\n $| devrev snap_in deactivate [id] [--force] \\n ---|---\\n[/code] \\n \\n`[id]` is optional. If not provided, it uses the ID stored in the local" + }, + { + "id": "ART-17215_KNOWLEDGE_NODE-5", + "title": "Local development | DevRev | Docs", + "text": "URL> |\\n ```\\n7. Create a snap-in draft using the DevRev CLI:\\n\\n ```\\n | | |\\n | --- | --- |\\n | $ | devrev snap_in draft |\\n ```\\n8. After the snap-in draft is created, install the snap-in:\\n\\n ```\\n | | |\\n | --- | --- |\\n | $ | devrev snap_in activate |\\n ```\\n\\nInitial sync\\n============\\n\\nNow that you have a running snap-in, you can start an import.\\nGo to DevRev app and click **AirSyncs** > **Start AirSync** > **Your snap-in**.\\n\\n1. Starting an import begins" + }, + { + "id": "ART-1280_KNOWLEDGE_NODE-18", + "title": "DevRev CLI reference | DevRev | Docs", + "text": "|\\n```\\n\\n`[id]` is optional. If not provided, it uses the ID stored in the local profile.\\n\\n###### List the snap-ins\\n\\nTo list the snap-ins, run the following command:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | devrev snap_in list |\\n```\\n\\nFor example:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | devrev snap_in list | jq . |\\n```\\n\\n###### Delete a snap-in\\n\\nTo delete a snap-in, run the following command:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | devrev snap_in delete-one [id] [--force] |\\n```\\n\\n`[id]`" + }, + { + "id": "ART-1274_KNOWLEDGE_NODE-14", + "title": "Getting started | DevRev | Docs", + "text": "devrev snap_in_version list |\\n```\\n\\nTo delete the snap-in version, run the following command:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | devrev snap_in_version delete-one |\\n```\\n\\n[6](/snapin-development/tutorials/getting-started#install-a-snap-in-from-a-snap-in-version)\\n\\n### Install a snap-in from a snap-in version\\n\\nTo create a snap-in from a snap-in version, run the following command:\\n\\n```\\n| | |\\n| --- | --- |\\n| $ | devrev snap_in draft |\\n```\\n\\n##### \\n\\n1. To install the snap-in," + }, + { + "id": "ART-1470_KNOWLEDGE_NODE-18", + "title": "Getting started \u2014 DevRev | Docs", + "text": "command:\\n\\n[code]\\n\\n $| devrev snap_in_version list \\n ---|---\\n[/code] \\n \\nTo delete the snap-in version, run the following command:\\n\\n[code]\\n\\n $| devrev snap_in_version delete-one \\n ---|---\\n[/code] \\n \\n[6](/public/snapin-development/tutorials/getting-started#install-a-snap-in-from-a-snap-in-version)\\n\\n### Install a snap-in from a snap-in version\\n\\nTo create a snap-in from a snap-in version, run the following command:\\n\\n[code]\\n\\n $| devrev snap_in draft \\n" + }, + { + "id": "ART-1470_KNOWLEDGE_NODE-3", + "title": "Getting started \u2014 DevRev | Docs", + "text": "snap-in](/public/snapin-development/tutorials/getting-started#deploy-the-snap-in)\\n * [Check snap-in logs](/public/snapin-development/tutorials/getting-started#check-snap-in-logs)\\n * [Delete the snap-in](/public/snapin-development/tutorials/getting-started#delete-the-snap-in)\\n * [Upgrade the snap-in](/public/snapin-development/tutorials/getting-started#upgrade-the-snap-in)\\n\\n[Snap-in" + }, + { + "id": "ART-1470_KNOWLEDGE_NODE-24", + "title": "Getting started \u2014 DevRev | Docs", + "text": "---|---\\n[/code] \\n \\nThe above expects the manifest file to be present in the current directory by the name `manifest.yaml` and the code to be present in the `code` directory.\\n\\nRefer to [upgrade command](/public/snapin-development/upgrade-snap-ins) for more information.\\n\\nWas this page helpful?YesNo\\n\\n[Using a snap-in to perform a DevRev actionUp Next](/public/snapin-development/tutorials/timer-ticket-creator)\\n\\n[Built" + }, + { + "id": "ART-1274_KNOWLEDGE_NODE-20", + "title": "Getting started | DevRev | Docs", + "text": "current directory by the name `manifest.yaml` and the code to be present in the `code` directory.\\n\\nRefer to [upgrade command](/snapin-development/upgrade-snap-ins) for more information.\\n\\nWas this page helpful?\\n\\nYesNo\\n\\n[Previous](/snapin-development/tutorials/overview)[#### Using a snap-in to perform a DevRev action\\n\\nNext](/snapin-development/tutorials/timer-ticket-creator)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-2036_KNOWLEDGE_NODE-23", + "title": "SendSafely | Integrate | Snap-ins | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Installation](#installation)\\n* [Configure the snap-in](#configure-the-snapin)\\n* [Using the" + }, + { + "id": "ART-2043_KNOWLEDGE_NODE-23", + "title": "Glean | Integrate | Snap-ins | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [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." + } + ] + }, + { + "query_id": "51b684c7-7de7-4c12-aecb-043d082158a5", + "query": "generate support tickets from slack messages with questions", + "retrievals": [ + { + "id": "ART-6174_KNOWLEDGE_NODE-25", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "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**" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-24", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "[Support](/docs/product/support?)\\n 4. [Conversations](/docs/product/conversation?)\\n 5. [Convert Conversations to Tickets](/docs/product/Conversation-Tickets?)\\n\\n# Convert Conversations to Tickets\\n\\nYou can now 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** functionality" + }, + { + "id": "ART-6174_KNOWLEDGE_NODE-30", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "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-24", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "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-4271_KNOWLEDGE_NODE-31", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "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" + }, + { + "id": "ART-4021_KNOWLEDGE_NODE-5", + "title": "Slack scraper | Automate | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-4199_KNOWLEDGE_NODE-5", + "title": "Slack message agent | Automate | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-4", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "Analytics](/docs/dashboards/ticket-sla-analytics?)\\n * [Ticket-Team Performance](/docs/dashboards/ticket-team-performance?)\\n\\n * [Conversations](/docs/product/conversation?)\\n\\n * [Convert Conversations to Tickets](/docs/product/Conversation-Tickets?)\\n\\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 &" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-3", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "[Support](/docs/product/support?)\\n\\n * [Inbox](/docs/product/inbox?)\\n * [Support 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" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-5", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "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" + } + ] + }, + { + "query_id": "2e98cdf9-4951-4185-a63a-295def43b837", + "query": "cron configuration for timer trigger schedule in DevRev", + "retrievals": [ + { + "id": "ART-1483_KNOWLEDGE_NODE-11", + "title": "Using a snap-in to perform a DevRev action \u2014 DevRev | Docs", + "text": "config: \\n 8| # CRON expression for triggering every 10 minutes. \\n 9| cron: \"*/10 * * * *\" \\n 10| metadata: \\n 11| event_key: ten_minute_event\\n[/code] \\n \\nFinally, update the `function` name to better reflect the behavior and `automation`name to use the event type corresponding to the `timer-events` event source.\\n\\nmanifest.yaml\\n\\n[code]\\n\\n 1| functions: \\n ---|--- \\n 2| - name: ticket_creator \\n 3|" + }, + { + "id": "ART-1478_KNOWLEDGE_NODE-42", + "title": "Event sources \u2014 DevRev | Docs", + "text": "source configuration.\\n\\n[code]\\n\\n 1| event_sources: \\n ---|--- \\n 2| organization: \\n 3| - name: daily-timer-source \\n 4| description: Timer event source based on Cron expression \\n 5| display_name: Timer source \\n 6| type: timer-events \\n 7| config: \\n 8| cron: \"0 0 * * *\" \\n 9| metadata: \\n 10| event_key: daily_events \\n 11| \\n 12| - name: hourly-events \\n 13|" + }, + { + "id": "ART-1284_KNOWLEDGE_NODE-37", + "title": "Event sources | DevRev | Docs", + "text": "configuration.\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | event_sources: |\\n| 2 | organization: |\\n| 3 | - name: daily-timer-source |\\n| 4 | description: Timer event source based on Cron expression |\\n| 5 | display_name: Timer source |\\n| 6 | type: timer-events |\\n| 7 | config: |\\n| 8 | cron: \"0 0 * * *\" |\\n| 9 | metadata: |\\n| 10 | event_key: daily_events |\\n| 11 | |\\n| 12 | - name: hourly-events |\\n| 13 | description: Timer event source based on interval seconds |\\n| 14 | display_name: Timer" + }, + { + "id": "ART-1275_KNOWLEDGE_NODE-9", + "title": "Using a snap-in to perform a DevRev action | DevRev | Docs", + "text": "triggering every 10 minutes. |\\n| 9 | cron: \"*/10 * * * *\" |\\n| 10 | metadata: |\\n| 11 | event_key: ten_minute_event |\\n```\\n\\nFinally, update the `function` name to better reflect the behavior and\\n`automation`name to use the event type corresponding to the `timer-events` event\\nsource.\\n\\nmanifest.yaml\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | functions: |\\n| 2 | - name: ticket_creator |\\n| 3 | description: Function to create a new ticket when triggered. |\\n| 4 | |\\n| 5 | automations: |\\n| 6 | -" + }, + { + "id": "ART-1275_KNOWLEDGE_NODE-8", + "title": "Using a snap-in to perform a DevRev action | DevRev | Docs", + "text": "type `cron` or\\n`interval_seconds` as mentioned in the\\n[documentation](/snapin-development/references/event-sources#timer-based-event-sources).\\nThe `cron` config is used here.\\n\\nmanifest.yaml\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | event_sources: |\\n| 2 | organization: |\\n| 3 | - name: timer-event-source |\\n| 4 | description: Event source that sends events every 10 minutes. |\\n| 5 | display_name: Timer Event Source |\\n| 6 | type: timer-events |\\n| 7 | config: |\\n| 8 | # CRON expression for" + }, + { + "id": "ART-1483_KNOWLEDGE_NODE-10", + "title": "Using a snap-in to perform a DevRev action \u2014 DevRev | Docs", + "text": "`interval_seconds` as mentioned in the [documentation](/public/snapin-development/references/event-sources#timer-based-event-sources). The `cron` config is used here.\\n\\nmanifest.yaml\\n\\n[code]\\n\\n 1| event_sources: \\n ---|--- \\n 2| organization: \\n 3| - name: timer-event-source \\n 4| description: Event source that sends events every 10 minutes. \\n 5| display_name: Timer Event Source \\n 6| type: timer-events \\n 7|" + }, + { + "id": "ART-1284_KNOWLEDGE_NODE-36", + "title": "Event sources | DevRev | Docs", + "text": "https://api.devrev.ai/hidden/dev-orgs/DEV-123/event-source-webhooks/custom/d43fc297-03d7-4cbd-bdf9-044847788306 |\\n```\\n\\nTimer-based event sources\\n-------------------------\\n\\nTimer-based event sources can be created to send events based on intervals and cron schedules. In the following example, you have two event sources, one emits events daily at 12:00am, the other every hour (3600 seconds). In the event payload, you see the JSON field metadata you specified in the event source" + }, + { + "id": "ART-1483_KNOWLEDGE_NODE-7", + "title": "Using a snap-in to perform a DevRev action \u2014 DevRev | Docs", + "text": "\\n#### Trigger\\n\\nThe trigger condition for the snap-in is dictated by the [Event Sources](/public/snapin-development/references/event-sources) section in the manifest. The [`timer-events`](/public/snapin-development/references/event-sources#timer-based-event-sources) event source is suitable for the use-case, since it allows trigger of snap-ins using [CRON expression](https://crontab.guru/).\\n\\n#### Action\\n\\nThe hello-world snap-in prints a log message whenever the snap-in is triggered. Here," + }, + { + "id": "ART-1275_KNOWLEDGE_NODE-5", + "title": "Using a snap-in to perform a DevRev action | DevRev | Docs", + "text": "devrev snap_in_version init |\\n```\\n\\n#### Trigger\\n\\nThe trigger condition for the snap-in is dictated by the\\n[Event Sources](/snapin-development/references/event-sources)\\nsection in the manifest. The [`timer-events`](/snapin-development/references/event-sources#timer-based-event-sources)\\nevent source is suitable for the use-case, since it allows trigger of snap-ins\\nusing [CRON expression](https://crontab.guru/).\\n\\n#### Action\\n\\nThe hello-world snap-in prints a log message whenever the" + }, + { + "id": "ART-1478_KNOWLEDGE_NODE-41", + "title": "Event sources \u2014 DevRev | Docs", + "text": "\\'{\"hello\":\"world\"}\\' \\\\ \\n 3| https://api.devrev.ai/hidden/dev-orgs/DEV-123/event-source-webhooks/custom/d43fc297-03d7-4cbd-bdf9-044847788306\\n[/code] \\n \\n## Timer-based event sources\\n\\nTimer-based event sources can be created to send events based on intervals and cron schedules. In the following example, you have two event sources, one emits events daily at 12:00am, the other every hour (3600 seconds). In the event payload, you see the JSON field metadata you specified in the event" + } + ] + }, + { + "query_id": "015c89d4-6aa6-41f4-b9a4-6da7550e85eb", + "query": "view all tickets raised to DevRev support team", + "retrievals": [ + { + "id": "ART-1979_KNOWLEDGE_NODE-27", + "title": "Tickets | Computer for Support Teams | DevRev", + "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-66", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "tickets](#merge-tickets)\\n* [Post-merge conditions](#postmerge-conditions)\\n* [Follow up tickets](#follow-up-tickets)\\n* [Internal Tickets](#internal-tickets)\\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" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-0", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "b\"Tickets | 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 +" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-23", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Attributes](#attributes)\\n* [Create a ticket](#create-a-ticket)\\n* [Tags](#tags)\\n* [Stages](#stages)\\n*" + }, + { + "id": "ART-1981_KNOWLEDGE_NODE-31", + "title": "Support best practices | Computer for Support Teams | DevRev", + "text": "hold if there are tickets linked. This means that support is asking for help from engineering.\\n\\nConduct daily health checks\\n---------------------------\\n\\n* On a daily basis all ticket owners should triage tickets to make sure they're well-maintained and that appropriate actions are taken.\\n* Move new tickets from *queued* to the *awaiting product assist*.\\n* Track the default **Team Activity** vista for tickets owned by everyone and navigate to your tickets. Ensure the correct owners are" + }, + { + "id": "ART-1969_KNOWLEDGE_NODE-29", + "title": "Computer for Support Teams | DevRev", + "text": "To get a list of the available commands, type / in a ticket discussion text box.\\n\\n\\xf0\\x9f\\x93\\x88 Insights\\n----------\\n\\nThe [Support analytics dashboards](../product/support-analytics) display data about conversations and tickets. You can use these visualizations to identify trends and concerns in your customer support process.\\n\\n[PreviousRemote MCP server](/docs/product/remote-mcp)[NextInbox](/docs/product/inbox)\\n\\n#### On this page\\n\\n* [\\xf0\\x9f\\x91\\x89 Getting" + }, + { + "id": "ART-1447_KNOWLEDGE_NODE-8", + "title": "Tickets and issues \u2014 DevRev | Docs", + "text": "demo](https://devrev.ai/request-a-demo)\\n\\n'" + }, + { + "id": "ART-1977_KNOWLEDGE_NODE-0", + "title": "Ticket-Team Performance | Support analytics | Computer for Support Teams | DevRev", + "text": "b'Ticket-Team Performance | Support analytics | 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 +" + }, + { + "id": "ART-1447_KNOWLEDGE_NODE-7", + "title": "Tickets and issues \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-37", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "Service](/legal/terms-of-service?)\\n\\n[](/?)\\n\\n[](https://www.linkedin.com/company/devrev)[](https://medium.com/devrev)[](https://twitter.com/devrev)\\n\\n[System Status](/status?)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n\"" + } + ] + }, + { + "query_id": "5e261249-25ac-4221-a487-20a1dfaecdee", + "query": "add banner message in portal not showing", + "retrievals": [ + { + "id": "ART-1978_KNOWLEDGE_NODE-38", + "title": "Customer portal | Computer for Support Teams | DevRev", + "text": "conversations on the portal.\\n3. Under **Styling**, upload a banner image which should be in the ratio of 6:1. You can also set light/dark mode for appearance and select your accent color.\\n4. If you want to enable customers to create tickets from the portal, under **Tabs** turn on **Enable ticket creation**. Assign default owner and part.\\n5. If you want to enable public ticket creation wherein unauthenticated users can create tickets, contact DevRev support.\\n6. Turn on the **Enable banner**" + }, + { + "id": "ART-2063_KNOWLEDGE_NODE-28", + "title": "Nudges | Computer for Your Customers | DevRev", + "text": "**Plug Nudges**.\\n2. Click **+ Nudge**.\\n3. In the **Create new nudge** window, select **Banner** and click **Create**.\\n4. In the **Nudge Title** field, enter the nudge name.\\n5. In the **Content** field, enter the nudge title.\\n6. To enable the nudge close button, turn on the **Show a close button** toggle.\\n7. Select the banner color by clicking the color icon.\\n8. Use the **Action** drop-down menu to select the type of engagement you want your users to have when they click the nudge. The" + }, + { + "id": "ART-2063_KNOWLEDGE_NODE-27", + "title": "Nudges | Computer for Your Customers | DevRev", + "text": "release notes, news, or blogs with your customers.\\n * *Open Widget*: Upon clicking on the nudge, the Plug widget opens to prompt the user to start a conversation. This is useful for informing customers about Plug cards and suggesting support options.\\n * *None*: When the user clicks on the nudge, nothing happens and there won't be any interaction.\\n9. Define rules as described in the [Create rules](#create-rules) section.\\n\\nCreate a banner\\n---------------\\n\\n1. Click **Settings** >" + }, + { + "id": "ART-2063_KNOWLEDGE_NODE-25", + "title": "Nudges | Computer for Your Customers | DevRev", + "text": "widget can trigger these nudges and help you engage and interact with your customers more effectively.\\n\\nDevRev supports the following types of nudges:\\n\\n* Spotlight\\n* Banner\\n\\n![]()\\n\\nCreate a spotlight nudge\\n------------------------\\n\\n1. Click **Settings** > **Plug Nudges**.\\n2. Click **+ Nudge**.\\n3. In the **Create new nudge** window, select **Spotlight** and click **Create**.\\n4. In the **Nudge Title** field, enter the nudge name.\\n5. In the **Title** field, enter the nudge" + }, + { + "id": "ART-886_KNOWLEDGE_NODE-3", + "title": "Nudges | The Book of DevRev", + "text": "to show our offer, the image, and action (e.g. launch URL).\\n\\nI\\xe2\\x80\\x99ve configured this and you can check it out HERE!\\n\\nTypes of Nudges\\n\\nDevRev Nudges currently supports two core types of nudges:\\n\\n\\n Banner\\n \\n A banner at the top of the webpage\\n Can only be text\\n Can contain an action on click\\n \\n \\n Spotlight\\n \\n A card located by the PLuG widget\\n Can contain an image\\n Can contain an action on click\\n \\n \\n\\n\\nSee It In" + }, + { + "id": "ART-982_KNOWLEDGE_NODE-3", + "title": "DevRev Nudges - Driving Customer Engagement", + "text": "to show our offer, the image, and action (e.g. launch URL).\\n\\nI\\xe2\\x80\\x99ve configured this and you can check it out HERE!\\n\\nTypes of Nudges\\n\\nDevRev Nudges currently supports two core types of nudges:\\n\\n\\n Banner\\n \\n A banner at the top of the webpage\\n Can only be text\\n Can contain an action on click\\n \\n \\n Spotlight\\n \\n A card located by the PLuG widget\\n Can contain an image\\n Can contain an action on click\\n \\n \\n\\n\\nSee It In" + }, + { + "id": "ART-886_KNOWLEDGE_NODE-4", + "title": "Nudges | The Book of DevRev", + "text": "Action\\n\\nThe following video shows the DevRev Nudges feature in action:\\n\\n\\n \\n\\n\\nHow to leverage\\n\\nConfiguration\\n\\nConfiguration of Nudges is simple and can be done in the DevRev app. To configure a nudge, perform the following steps:\\n\\n\\n Navigate to settings > Support > PLuG Nudges\\n \\n Click on spotlight or banner nudge\\n\\n \\n \\n Input nudge content (will vary by type)\\n\\n \\n \\n Click on Rules and input conditions.\\n\\n\\n \\n Multiple page rules and operators can" + }, + { + "id": "ART-2063_KNOWLEDGE_NODE-23", + "title": "Nudges | Computer for Your Customers | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Create a spotlight nudge](#create-a-spotlight-nudge)\\n* [Create a banner](#create-a-banner)\\n* [Create" + }, + { + "id": "ART-2063_KNOWLEDGE_NODE-33", + "title": "Nudges | Computer for Your Customers | DevRev", + "text": "[Create a banner](#create-a-banner)\\n* [Create rules](#create-rules)\\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*" + }, + { + "id": "ART-2059_KNOWLEDGE_NODE-12", + "title": "Install PLuG chat on your website", + "text": "width=\"0\" style=\"display:none;visibility:hidden\">'" + } + ] + }, + { + "query_id": "87a0c450-5958-433a-a7be-6909813e797b", + "query": "sync contacts and accounts from DevRev to Salesforce", + "retrievals": [ + { + "id": "ART-2047_KNOWLEDGE_NODE-30", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-33", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-25", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "AirSync](/docs/integrations/salesforce)\\n\\nSalesforce AirSync\\n==================\\n\\nDevRev\\'s Salesforce AirSync allows you to perform a bulk migration, ongoing 1-way sync, or ongoing 2-way syncs. A bulk import is a prerequisite to setting up a sync.\\n\\n![]()\\n\\nFor more information, refer to the [Salesforce AirSync snap-in](https://marketplace.devrev.ai/salesforce) on the DevRev marketplace.\\n\\nSupported objects\\n-----------------\\n\\nThe following is a list of Salesforce objects and their" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-32", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "automatically.\\n\\nPost import options\\n-------------------\\n\\nAfter a successful import, you have the following options available for the imported account:\\n\\n* [Sync to DevRev](#sync-to-devrev):\\n + This option allows you to synchronize any modifications made in Salesforce with the corresponding items previously imported into DevRev. It also creates new items in DevRev for any new items created in Salesforce after the last sync or import. This is a one-time operation.\\n* [Sync to" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-24", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "options](#post-import-options)\\n* [Sync to DevRev](#sync-to-devrev)\\n* [Sync to Salesforce](#sync-to-salesforce)\\n* [Mark a DevRev ticket for syncing](#mark-a-devrev-ticket-for-syncing)\\n* [AirSync Salesforce scope and limitations](#airsync-salesforce-scope-and-limitations)\\n* [Comments](#comments)\\n* [Updates](#updates)\\n* [Knowledge articles](#knowledge-articles)\\n\\n1. [Documentation](/docs)\\n3. [Snap-ins](/docs/snapins)\\n[AirSync](/docs/import)\\n[Salesforce" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-8", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-39", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "created in the specified Salesforce account the next time the Sync from [DevRev to Salesforce](#sync-to-salesforce) runs. This can be triggered manually or automatically through a Periodic Sync. Future syncs keeps this item updated on both sides after it has been created in Salesforce.\\n\\n### Historical AirSyncs\\n\\nTo view currently running and previous AirSyncs from various sources, do the following:\\n\\n1. Go to **Settings** > **Integrations** > **AirSyncs**.\\n2. Select the import you want to" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-45", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "field.\\n\\n[PreviousHubspot AirSync](/docs/integrations/hubspot)[NextZendesk AirSync](/docs/integrations/zendesk)\\n\\n#### On this page\\n\\n* [Supported objects](#supported-objects)\\n* [Importing from Salesforce](#importing-from-salesforce)\\n* [Post import options](#post-import-options)\\n* [Sync to DevRev](#sync-to-devrev)\\n* [Sync to Salesforce](#sync-to-salesforce)\\n* [AirSync Salesforce scope and limitations](#airsync-salesforce-scope-and-limitations)\\n* [Comments](#comments)\\n*" + }, + { + "id": "ART-2047_KNOWLEDGE_NODE-23", + "title": "Salesforce AirSync | AirSync | Snap-ins | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Supported objects](#supported-objects)\\n* [Importing from Salesforce](#importing-from-salesforce)\\n* [Post import" + }, + { + "id": "ART-2045_KNOWLEDGE_NODE-56", + "title": "AirSync | Snap-ins | DevRev", + "text": "the relationship to other accounts is dropped.\\n + Contact changes of Account in an external system are not reflected in DevRev after the initial sync.\\n + Contacts have an external reference that may be populated by email or source ID. This is an internal mapping and may not show up in the Mappings page.\\n* Account\\n + Accounts in DevRev have both Websites and Domains fields. Mapping from external source is typically done to DevRev\\'s Websites field and then a stripped down version is added" + } + ] + }, + { + "query_id": "c6798ed1-757f-4810-8b8b-3cf7e78a732c", + "query": "best way to export accounts in bulk", + "retrievals": [ + { + "id": "ART-1255_KNOWLEDGE_NODE-5", + "title": "Export Accounts (POST) | DevRev | Docs", + "text": "\"string\", |\\n| 72 | \"display_name\": \"string\" |\\n| 73 | }, |\\n| 74 | \"tier\": \"string\", |\\n| 75 | \"websites\": [ |\\n| 76 | \"string\" |\\n| 77 | ] |\\n| 78 | } |\\n| 79 | ] |\\n| 80 | } |\\n```\\n\\nExports a collection of accounts.\\n\\n### 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\\ncreated\\\\_bylist of stringsOptional\\n\\nFilters for accounts created by the specified" + }, + { + "id": "ART-1255_KNOWLEDGE_NODE-1", + "title": "Export Accounts (POST) | DevRev | Docs", + "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" + }, + { + "id": "ART-1254_KNOWLEDGE_NODE-9", + "title": "Export Accounts | DevRev | Docs", + "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", + "title": "Export Accounts | DevRev | Docs", + "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)[####" + }, + { + "id": "ART-1254_KNOWLEDGE_NODE-1", + "title": "Export Accounts | DevRev | Docs", + "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" + }, + { + "id": "ART-1462_KNOWLEDGE_NODE-9", + "title": "Export Accounts (POST) \u2014 DevRev | Docs", + "text": "} \\n 79| ] \\n 80| }\\n[/code] \\n \\n[Get AccountUp Next](/public/api-reference/accounts/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 * [Support](https://devrev.ai/support)\\n * [Search](https://devrev.ai/search)\\n * [PLuG - User" + }, + { + "id": "ART-1255_KNOWLEDGE_NODE-2", + "title": "Export Accounts (POST) | DevRev | Docs", + "text": "| \"type\": \"string\", |\\n| 15 | \"name\": \"string\", |\\n| 16 | \"size\": 1 |\\n| 17 | } |\\n| 18 | }, |\\n| 19 | \"email\": \"string\", |\\n| 20 | \"full_name\": \"string\", |\\n| 21 | \"state\": \"active\" |\\n| 22 | } |\\n| 23 | ], |\\n| 24 | \"created_by\": { |\\n| 25 | \"display_id\": \"string\", |\\n| 26 | \"id\": \"string\", |\\n| 27 | \"display_name\": \"string\", |\\n| 28 | \"display_picture\": { |\\n| 29 | \"display_id\": \"string\", |\\n| 30 | \"id\": \"string\", |\\n| 31 | \"file\": { |\\n| 32 | \"type\": \"string\", |\\n| 33 | \"name\": \"string\"," + }, + { + "id": "ART-1449_KNOWLEDGE_NODE-6", + "title": "Export Accounts \u2014 DevRev | Docs", + "text": "10| \"display_picture\": { \\n 11| \"display_id\": \"foo\", \\n 12| \"id\": \"foo\", \\n 13| \"file\": { \\n 14| \"type\": \"foo\", \\n 15| \"name\": \"foo\", \\n 16| \"size\": 42 \\n 17| } \\n 18| }, \\n 19| \"email\": \"foo\", \\n 20| \"full_name\": \"foo\", \\n 21| \"state\": \"active\" \\n 22| } \\n 23| ], \\n 24|" + }, + { + "id": "ART-1255_KNOWLEDGE_NODE-8", + "title": "Export Accounts (POST) | DevRev | Docs", + "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)'" + }, + { + "id": "ART-1462_KNOWLEDGE_NODE-12", + "title": "Export Accounts (POST) \u2014 DevRev | Docs", + "text": "[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 * [Gr.ai.ce](https://devrev.ai/graice)\\n\\nLegal\\n\\n *" + } + ] + }, + { + "query_id": "1b7f0c03-5c55-403e-baf4-242b8d91bbe7", + "query": "copy schema subtype deal registration leaf type of account", + "retrievals": [ + { + "id": "ART-15342_KNOWLEDGE_NODE-3", + "title": "Prepare-Update Schemas Subtypes | DevRev | Docs", + "text": "token.\\n\\n### Request\\n\\nThis endpoint expects an object.\\n\\nleaf\\\\_typestringRequired`format: \"text\"`\\n\\nLeaf type of the object.\\n\\nis\\\\_custom\\\\_leaf\\\\_typebooleanOptional\\n\\nWhether the leaf type corresponds to a custom object.\\n\\nnew\\\\_subtypestringOptional`format: \"text\"`\\n\\nName of the new subtype for the object.\\n\\nobjectstringOptional`format: \"id\"`\\n\\nID of the object of which subtype is to be changed. Used to fetch\\nthe object\\'s custom schema fragments and custom fields\\n\\n###" + }, + { + "id": "ART-15337_KNOWLEDGE_NODE-19", + "title": "Get Schemas Aggregated | DevRev | Docs", + "text": "subtype.\\n\\nis\\\\_custom\\\\_leaf\\\\_typebooleanOptional\\n\\nWhether the leaf type corresponds to a custom object.\\n\\nleaf\\\\_typestringOptional`format: \"text\"`\\n\\nThe leaf type. Used for inferring the default stage diagram and\\ntenant fragment ID.\\n\\nstock\\\\_schema\\\\_fragmentstringOptional`format: \"id\"`\\n\\nThe stock schema fragment which is to be aggregated.\\n\\n### Response\\n\\nSuccess.\\n\\nschemaobject\\n\\nList of custom fields from multiple source fragments.\\n\\nShow 13 properties\\n\\n###" + }, + { + "id": "ART-1783_KNOWLEDGE_NODE-225", + "title": "Locate \u2014 DevRev | Docs", + "text": "Optional\\nLeaf type for which subtypes are required.\\nleaf_types string Optional\\nList of leaf types for which subtypes are required.\\nResponse.\\n\\nThis endpoint returns an object.\\nsubtypes list of objects\\nList of subtypes.\\nShow 4 properties\\nAPI Reference customization Subtypes List Post.\\n\\nPOST https:// api.devrev.ai / schemas.subtypes.list\\nLists subtypes.\\nRequest.\\n\\nThis endpoint expects an object.\\nleaf_type string Optional\\nLeaf type for which subtypes are required.\\nleaf_types list" + }, + { + "id": "ART-1652_KNOWLEDGE_NODE-223", + "title": "Export \u2014 DevRev | Docs", + "text": "Reference customization Subtypes List.\\n\\nGET https:// api.devrev.ai / schemas.subtypes.list\\nLists subtypes.\\nQuery parameters.\\n\\nleaf_type string Optional\\nLeaf type for which subtypes are required.\\nleaf_types string Optional\\nList of leaf types for which subtypes are required.\\nResponse.\\n\\nThis endpoint returns an object.\\nsubtypes list of objects\\nList of subtypes.\\nShow 4 properties\\nAPI Reference customization Subtypes List Post.\\n\\nPOST https:// api.devrev.ai /" + }, + { + "id": "ART-1302_KNOWLEDGE_NODE-231", + "title": "Export \u2014 DevRev | Docs", + "text": "leaf types for which subtypes are required.\\nResponse.\\n\\nThis endpoint returns an object.\\nsubtypes list of objects\\nList of subtypes.\\nShow 4 properties\\nAPI Reference customization Subtypes List Post.\\n\\nPOST https:// api.devrev.ai / schemas.subtypes.list\\nLists subtypes.\\nRequest.\\n\\nThis endpoint expects an object.\\nleaf_type string Optional\\nLeaf type for which subtypes are required.\\nleaf_types list of strings Optional\\nList of leaf types for which subtypes are" + }, + { + "id": "ART-1308_KNOWLEDGE_NODE-228", + "title": "Update \u2014 DevRev | Docs", + "text": "leaf types for which subtypes are required.\\nResponse.\\n\\nThis endpoint returns an object.\\nsubtypes list of objects\\nList of subtypes.\\nShow 4 properties\\nAPI Reference customization Subtypes List Post.\\n\\nPOST https:// api.devrev.ai / schemas.subtypes.list\\nLists subtypes.\\nRequest.\\n\\nThis endpoint expects an object.\\nleaf_type string Optional\\nLeaf type for which subtypes are required.\\nleaf_types list of strings Optional\\nList of leaf types for which subtypes are" + }, + { + "id": "ART-15332_KNOWLEDGE_NODE-15", + "title": "Get Schemas Aggregated (POST) | DevRev | Docs", + "text": "\"string\" |\\n| 246 | } |\\n| 247 | ], |\\n| 248 | \"description\": \"string\", |\\n| 249 | \"is_custom_leaf_type\": true, |\\n| 250 | \"leaf_type\": \"string\", |\\n| 251 | \"stage_diagram_id\": { |\\n| 252 | \"id\": \"string\", |\\n| 253 | \"display_id\": \"string\", |\\n| 254 | \"name\": \"string\" |\\n| 255 | }, |\\n| 256 | \"stock_field_overrides\": [ |\\n| 257 | { |\\n| 258 | \"is_required\": true, |\\n| 259 | \"name\": \"string\", |\\n| 260 | \"ui\": { |\\n| 261 | \"client_overrides\": [ |\\n| 262 | { |\\n| 263 | \"client_name\": \"string\"," + }, + { + "id": "ART-1786_KNOWLEDGE_NODE-226", + "title": "Delete \u2014 DevRev | Docs", + "text": "leaf types for which subtypes are required.\\nResponse.\\n\\nThis endpoint returns an object.\\nsubtypes list of objects\\nList of subtypes.\\nShow 4 properties\\nAPI Reference customization Subtypes List Post.\\n\\nPOST https:// api.devrev.ai / schemas.subtypes.list\\nLists subtypes.\\nRequest.\\n\\nThis endpoint expects an object.\\nleaf_type string Optional\\nLeaf type for which subtypes are required.\\nleaf_types list of strings Optional\\nList of leaf types for which subtypes are" + }, + { + "id": "ART-1301_KNOWLEDGE_NODE-231", + "title": "Delete \u2014 DevRev | Docs", + "text": "leaf types for which subtypes are required.\\nResponse.\\n\\nThis endpoint returns an object.\\nsubtypes list of objects\\nList of subtypes.\\nShow 4 properties\\nAPI Reference customization Subtypes List Post.\\n\\nPOST https:// api.devrev.ai / schemas.subtypes.list\\nLists subtypes.\\nRequest.\\n\\nThis endpoint expects an object.\\nleaf_type string Optional\\nLeaf type for which subtypes are required.\\nleaf_types list of strings Optional\\nList of leaf types for which subtypes are" + }, + { + "id": "ART-4116_KNOWLEDGE_NODE-8", + "title": "Prepare-Update Schemas Subtypes (Beta) \u2014 DevRev | Docs", + "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" + } + ] + }, + { + "query_id": "41213d8b-9a95-4d61-acbf-5c4df3f80b30", + "query": "Automatic case classification by product, severity, and category", + "retrievals": [ + { + "id": "ART-17515_KNOWLEDGE_NODE-25", + "title": "AI use cases in DevRev | Computer by DevRev | DevRev", + "text": "summary: Provides a summary of initial customer emails on tickets.\\n* Spacebar summaries: Offers quick summaries of the **Updates** page, account records, and conversations.\\n* Ticket and issue clustering: Groups similar tickets and issues together for easier management.\\n* AI-generated enhancement descriptions: Creates detailed descriptions for enhancements based on the titles and descriptions of the enhancements and the linked objects.\\n* Request classification: Differentiates between bugs" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-29", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "**Severity**: The importance of the ticket. Severity can be set to low, medium, blocker, or high.\\n* **Stage**: The current state of the issue. The stage attribute is used to track the progress of the issue through its lifecycle. For more information on stages, see [stages](#stages).\\n* **Part**: The part of the company or product that the issue is related to. For more information on parts, see [parts](./parts).\\n* **Created by**: The user who created the ticket.\\n* **Created date**: The date" + }, + { + "id": "ART-17231_KNOWLEDGE_NODE-155", + "title": "Supported DevRev object types | DevRev | Docs", + "text": "|\\n\\n**severity**\\n\\n| Value | Name | Description |\\n| --- | --- | --- |\\n| `blocker` | Blocker | - |\\n| `high` | High | - |\\n| `low` | Low | - |\\n| `medium` | Medium | - |\\n\\n**stage**\\n\\n| Value | Name | Description |\\n| --- | --- | --- |\\n| `awaiting_customer_response` | Awaiting Customer Response | - |\\n| `awaiting_development` | Awaiting Development | - |\\n| `awaiting_product_assist` | Awaiting Product Assist | - |\\n| `canceled` | Canceled | - |\\n| `in_development` | In Development | -" + }, + { + "id": "ART-2777_KNOWLEDGE_NODE-4", + "title": "Velocity Global transforms worldwide operations with DevRev", + "text": "customers.\\n\\nSystem limitations with the previous vendor prevented us from implementing the cutting-edge automation solutions we dreamed of: allowing data and work to flow seamlessly for our operational support team and our customers. Having an AI-based classification system like we have in DevRev that routes tickets to the correct parts and features, that has been such a game changer for us.\\n\\n![]()\\n\\nVishnu RavikumarVP Strategy & Planning, Velocity Global\\n\\nThe" + }, + { + "id": "ART-17650_KNOWLEDGE_NODE-5", + "title": "American cybersecurity leader unifies security & support with DevRev", + "text": "to unify incident tracking, roadmap visibility, and customer communication in a single intelligent workspace. Their rollout included:\\n\\n* Connecting product data and support tickets using Computer memory.\\n* Deploying advanced incident grouping to surface trends in security cases\\n* Creating automated deflection mechanisms ranging from L1 to L4\\n* Improving product alignment via roadmap visibility within the support team\\n* Implementing a custom email snap-in that allows ticket creation only" + }, + { + "id": "ART-17231_KNOWLEDGE_NODE-94", + "title": "Supported DevRev object types | DevRev | Docs", + "text": "Post-Incident Analysis(PIA) of the incident. |\\n| `playbook_ids` | reference (collection)\\xe2\\x86\\x92[#record:article] | | The article ids of the playbook(s) associated with the incident. |\\n| `related_doc_ids` | reference (collection)\\xe2\\x86\\x92[#record:article] | | The article ids of other documents associated with the incident. |\\n| `reported_by` | enum | | The entity that first reported the incident. |\\n| `severity` | enum | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | Severity of the work |\\n| `stage` |" + }, + { + "id": "ART-17231_KNOWLEDGE_NODE-96", + "title": "Supported DevRev object types | DevRev | Docs", + "text": "Value | Name | Description |\\n| --- | --- | --- |\\n| `1` | sev-0 | - |\\n| `2` | sev-1 | - |\\n| `3` | sev-2 | - |\\n| `4` | sev-3 | - |\\n\\n**stage**\\n\\n| Value | Name | Description |\\n| --- | --- | --- |\\n| `acknowledged` | Acknowledged | - |\\n| `canceled` | Canceled | - |\\n| `duplicate` | Duplicate | - |\\n| `fixing` | Fixing | - |\\n| `mitigated` | Mitigated | - |\\n| `resolved` | Resolved | - |\\n| `triage` | Triage | - |\\n\\n[\\xe2\\x96\\xb2" + }, + { + "id": "ART-17231_KNOWLEDGE_NODE-95", + "title": "Supported DevRev object types | DevRev | Docs", + "text": "enum | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | |\\n| `tags` | reference (collection)\\xe2\\x86\\x92[#record:tag] | | Tags associated with the object. |\\n| `target_close_date` | timestamp | | Timestamp when the work is expected to be complete |\\n| `title` | text | \\xe2\\x9c\\x94\\xef\\xb8\\x8e | Title of the work object |\\n\\n#### Enum values\\n\\n**reported\\\\_by**\\n\\n| Value | Name | Description |\\n| --- | --- | --- |\\n| `1` | Customer | - |\\n| `2` | Internal Users | - |\\n| `3` | System | - |\\n\\n**severity**\\n\\n|" + }, + { + "id": "ART-4130_KNOWLEDGE_NODE-10", + "title": "Group Incidents | DevRev | Docs", + "text": "\"string\" |\\n| 169 | }, |\\n| 170 | \"title\": \"string\" |\\n| 171 | } |\\n| 172 | ], |\\n| 173 | \"reported_by\": { |\\n| 174 | \"id\": 1, |\\n| 175 | \"label\": \"string\", |\\n| 176 | \"ordinal\": 1, |\\n| 177 | \"value\": null |\\n| 178 | }, |\\n| 179 | \"severity\": { |\\n| 180 | \"id\": 1, |\\n| 181 | \"label\": \"string\", |\\n| 182 | \"ordinal\": 1, |\\n| 183 | \"value\": null |\\n| 184 | }, |\\n| 185 | \"source\": { |\\n| 186 | \"id\": 1, |\\n| 187 | \"label\": \"string\", |\\n| 188 | \"ordinal\": 1, |\\n| 189 | \"value\": null |\\n| 190 | }," + }, + { + "id": "ART-1950_KNOWLEDGE_NODE-43", + "title": "Parts & trails | Computer by DevRev | DevRev", + "text": "part in the hierarchy.\\n* **Top customers:** Top 10 workspaces with the most number of tickets for any part in the hierarchy.\\n\\nAttributes\\n----------\\n\\nProducts have attributes that can be used to filter and group issues in various views.\\nYou can find all the stock attributes listed in [**Settings** > **Object customization** > **Product** > **Stock fields**](https://app.devrev.ai/devrev/settings/object-customization?type=product).\\nThese are the stock attributes which come with" + } + ] + }, + { + "query_id": "0f16d2d9-ca4c-4091-bc94-1be50e2f7a90", + "query": "enable Generative AI for Knowledge Base creation", + "retrievals": [ + { + "id": "ART-1983_KNOWLEDGE_NODE-30", + "title": "Questions & answers | Computer for Support Teams | DevRev", + "text": "creation, go to **Settings** > **Turing** > **Q&As** > **Preferences** on the top right and enable **Auto generate Q&As** and click **Save**.\\n\\n![]()\\n\\nYou need to be an admin to set preferences.\\n\\n![]()\\n\\nWhen Computer creates a new Q&A, the conversation's owner receives a notification. It's their chance to ensure accuracy before deciding whether to *Publish* them if needed or *Archive* if not.\\n\\nOnce approved and published, these Q&As enter Computer's knowledge base, ready to tackle" + }, + { + "id": "ART-4170_KNOWLEDGE_NODE-9", + "title": "DevRev | Blog", + "text": "Baldwa](/blog/explore-article-creation-and-analytics-dashboard)[![]()\\n\\n7 min read10 step guide to preparing your knowledge base for Gen AI search\\n\\nRhea Jain](/blog/guide-to-preparing-your-knowledge-base-for-ai-search)\\n\\n[![]()](/the-essential-methodology-whitepaper)\\n\\n[Dheeraj Pandey12 min read\\n\\n### Essential Methodology\\n\\n### Whitepaper for free\\n\\n\\xe2\\x9e\\xa4 The latest thinking on AI agents and platform](/the-essential-methodology-whitepaper)\\n\\n[Download" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-26", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "[articles](./articles) for more information.\\n\\nOnce you have added your knowledge base, Turing can be switched on in two modes: suggestion or auto-response. You can configure Turing in **Settings > Turing Answers** and turn on the **Turing Answers** toggle.\\n\\nSuggest-only mode\\n-----------------\\n\\nComputer only suggests an answer to the user query. A support agent can accept or make edits to the answer, then send it to the user.\\n\\nContent-powered mode\\n--------------------\\n\\nComputer" + }, + { + "id": "ART-4177_KNOWLEDGE_NODE-3", + "title": "DevRev University - DevRev for Startups", + "text": "Checklist and avail $1000/person in credits.](https://app.devrev.ai/devrev/settings/setup/platform)\\n\\nGetting Started with DevRev\\n---------------------------\\n\\nAccess bite-sized video tutorials to kickstart your journey and make the most of DevRev\\xe2\\x80\\x99s AI-first capabilities.\\n\\n[![]()\\n\\nBuilding a Knowledge Base in DevRev\\n\\nLearn to set up Knowledge Base to empower your customers with self-service solutions](https://youtu.be/Z-M-uLS7XqI?feature=shared)[![]()\\n\\nActivating AI in" + }, + { + "id": "ART-1984_KNOWLEDGE_NODE-25", + "title": "Best practices for documentation that supports AI | Turing AI agent | Computer for Support Teams | DevRev", + "text": "supports AI\\n=================================================\\n\\nComputer works best when articles and QnAs in the knowledge base adhere to certain guidelines. The old computing adage of \\xe2\\x80\\x9cgarbage in, garbage out\\xe2\\x80\\x9d applies to AI as much as to earlier technologies. Most of these guidelines are typical for professional/technical writing, especially content that has requirements for accessibility and localization.\\n\\nTo enable searching through the knowledge base, Computer" + }, + { + "id": "ART-13178_KNOWLEDGE_NODE-9", + "title": "Understanding Agentic AI: Capabilities and Implications for the Future", + "text": "articles, designs graphics, and generates code. It focuses on content creation based on prompts. According to [IBM research](https://www.ibm.com/think/topics/generative-ai-use-cases), 65% of enterprises now use generative AI for creation tasks like these.\\n\\nAgentic AI operates differently. It doesn\\xe2\\x80\\x99t just create \\xe2\\x80\\x93 it decides and acts. When your customer reports an issue, generative AI might draft a response to customer service inquiries, while agentic AI will investigate" + }, + { + "id": "ART-13178_KNOWLEDGE_NODE-69", + "title": "Understanding Agentic AI: Capabilities and Implications for the Future", + "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" + }, + { + "id": "ART-1985_KNOWLEDGE_NODE-41", + "title": "Articles | Knowledge Base | Computer for Support Teams | DevRev", + "text": "formatting bar appears above the text. This bar includes a subset of formatting options from the top pane, along with the **Ask AI** feature, which can rephrase, lengthen, shorten, or correct the text in articles.\\n\\nDevRev knowledge base articles can include a table of contents on the customer portal. Use the slash command and header options to label key topics, which form the table of contents on the customer portal.\\n\\nYou can filter articles using various criteria. Click the **+** icon to" + }, + { + "id": "ART-1987_KNOWLEDGE_NODE-25", + "title": "Turing AI agent | Computer for Support Teams | DevRev", + "text": "Knowledge base, while keeping a support agent subscribed to conversations. If it cannot answer a certain query or you request it to connect to the team, it will redirect it to the default owner of the conversation.\\n\\nWhen looking for a source to inform its answer, it will prioritize the QA pairs, which are intended to serve as definitive answers to commonly repeated questions.\\n\\n![]()\\n\\nFor Computer to suggest articles, you need to add articles to your DevRev instance. Refer to" + }, + { + "id": "ART-13178_KNOWLEDGE_NODE-8", + "title": "Understanding Agentic AI: Capabilities and Implications for the Future", + "text": "intelligence system can track customer responses to support solutions, identify which approaches resolve issues fastest, and refine its methods accordingly.\\n\\n## Agentic AI vs generative AI\\n\\nGenerative AI creates content while agentic AI performs actions. This fundamental difference determines how each technology delivers business value through their distinct capabilities, applications, and limitations.\\n\\nYou\\xe2\\x80\\x99ve witnessed generative AI\\xe2\\x80\\x99s creative abilities. It writes" + } + ] + }, + { + "query_id": "6eb4477e-391c-4600-ac4a-d1809f32a801", + "query": "Resource Center downloads tutorials API documentation", + "retrievals": [ + { + "id": "ART-13002_KNOWLEDGE_NODE-11", + "title": "Update Directory \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1487_KNOWLEDGE_NODE-6", + "title": "Install DevRev CLI \u2014 DevRev | Docs", + "text": "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 Program](https://devrev.ai/partners)\\n * [Startup" + }, + { + "id": "ART-4066_KNOWLEDGE_NODE-13", + "title": "Get Article \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1375_KNOWLEDGE_NODE-7", + "title": "List Artifacts \u2014 DevRev | Docs", + "text": "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 Program](https://devrev.ai/partners)\\n * [Startup" + }, + { + "id": "ART-12996_KNOWLEDGE_NODE-4", + "title": "Count Directories \u2014 DevRev | Docs", + "text": "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 Program](https://devrev.ai/partners)\\n * [Startup" + }, + { + "id": "ART-13003_KNOWLEDGE_NODE-10", + "title": "Get Directory (POST) \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1367_KNOWLEDGE_NODE-5", + "title": "Pagination \u2014 DevRev | Docs", + "text": "[Workflow 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 *" + }, + { + "id": "ART-1442_KNOWLEDGE_NODE-20", + "title": "Get Work \u2014 DevRev | Docs", + "text": "[Analytics](https://devrev.ai/analytics)\\n * [Workflow 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" + }, + { + "id": "ART-1480_KNOWLEDGE_NODE-6", + "title": "Commands \u2014 DevRev | Docs", + "text": "[Analytics](https://devrev.ai/analytics)\\n * [Workflow 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" + }, + { + "id": "ART-1370_KNOWLEDGE_NODE-7", + "title": "List Artifacts (POST) \u2014 DevRev | Docs", + "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" + } + ] + }, + { + "query_id": "bcc62ad8-6557-471a-b10c-65bcd71fd14c", + "query": "automations to fill repeated fields", + "retrievals": [ + { + "id": "ART-2874_KNOWLEDGE_NODE-10", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "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-2874_KNOWLEDGE_NODE-9", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-2858_KNOWLEDGE_NODE-10", + "title": "Custom field migration | Automate | Snap-ins | DevRev", + "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-2858_KNOWLEDGE_NODE-9", + "title": "Custom field migration | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-4022_KNOWLEDGE_NODE-9", + "title": "CSV work item uploader | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-2010_KNOWLEDGE_NODE-9", + "title": "Bulk work item uploader | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-16355_KNOWLEDGE_NODE-9", + "title": "CSV commands uploader | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-15689_KNOWLEDGE_NODE-9", + "title": "CSV comments uploader | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-1964_KNOWLEDGE_NODE-9", + "title": "Templates | Computer by DevRev | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + }, + { + "id": "ART-3235_KNOWLEDGE_NODE-9", + "title": "Reported by enricher | Automate | Snap-ins | DevRev", + "text": "deduplication](/docs/automations/account-deduplication)\\n - [Airtable](/docs/automations/airtable)\\n - [Auto-link DevRev GitHub accounts](/docs/automations/auto-link-github-devrev)\\n - [Automatic customer reply](/docs/automations/auto-reply)\\n - [Auto parts to conversation](/docs/automations/auto-parts)\\n - [Automated part update](/docs/automations/automated-part-update)\\n - [Automate opportunities](/docs/automations/opportunity)\\n - [Bulk delete" + } + ] + }, + { + "query_id": "3a035e90-682d-4287-a6c9-4365d0755daf", + "query": "action to reopen ticket in workflow", + "retrievals": [ + { + "id": "ART-2012_KNOWLEDGE_NODE-28", + "title": "Follow-up ticket | Automate | Snap-ins | DevRev", + "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" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-38", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "text": "(Optional) Opportunity subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields * stage: (Optional) New stage | Updated opportunity object |\\n| UpdateQuestionAnswer | Updates a question and answer pair. | * id: ID of the Q&A to update * question: (Optional) Updated question * answer: (Optional) Updated answer * Other Q&A properties | Updated question\\\\_answer object |\\n| UpdateTicket | Updates ticket details. | * id: ID of the ticket to update * Ticket details" + }, + { + "id": "ART-2009_KNOWLEDGE_NODE-28", + "title": "Convergence | Automate | Snap-ins | DevRev", + "text": "ticket's stage when linked issue is linked or unlinked.\\n* Close pending tickets if they have remained in the *Awaiting customer response* stage for longer than x days.\\n* Update ticket's stage to waiting on user when user reverts on new conversation.\\n* Update ticket's stage to *Accepted* and notify owner and customers when an enhancement in ideation stage is linked.\\n* Update a spam conversation's stage to *Suspended*.\\n* Update a spam ticket's stage to" + }, + { + "id": "ART-1961_KNOWLEDGE_NODE-35", + "title": "Workflows | Computer by DevRev | DevRev", + "text": "or one from a previous node.\\n8. Click **Deploy**.\\n9. If you need to modify the workflow after is has been deployed, click **Pause**, edit the workflow, then click **Deploy** to reactivate it.\\n\\nWorkflow example: Ticket auto-response\\n--------------------------------------\\n\\n```\\nControl\\n\\n\\n\\nIf true\\n\\n\\n\\nAction\\n\\n\\n\\nAction\\n\\n\\n\\nIf false\\n\\n\\n\\nAdd comment\\n\\n\\n\\nObject:\\xc2\\xa0Ticket\\xc2\\xa0Created\\xc2\\xa0>\\xc2\\xa0Output\\xc2\\xa0>\\xc2\\xa0ID \\nVisibility: External \\nBody:" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-39", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "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" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-62", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "up ticket.\\n\\nThe below fields would be copied on the new follow up ticket from the archived/immutable ticket:\\n\\n* Part\\n* Channel\\n* Account\\n* Workspace\\n* Reported by\\n* Description\\n* Title\\n* Channel specific custom fields\\n* Subtype\\n\\nThe follow up trigger is added in the workflows and admins configure the changes required on new follow up ticket, for example, copying of any other fields.\\n\\nInternal Tickets\\n----------------\\n\\nInternal tickets allow your team to create and manage" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-29", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "text": "Ticket | Creates a new ticket in DevRev. | * Ticket details like title, body, applies\\\\_to\\\\_part, etc. * subtype: (Optional) Ticket subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields | Created ticket object |\\n| Convert Conversation To Ticket | Converts a conversation to a ticket. | * conversation\\\\_id: ID of the conversation to convert | ticket\\\\_id: ID of the created ticket |\\n\\nObject retrieval\\n----------------\\n\\n| Operation | Description | Input" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-36", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "text": "enhancement object |\\n| UpdateIncident | Updates incident details. | * id: ID of the incident to update * Incident details to update * subtype: (Optional) Incident subtype * apps: (Optional) Related apps * app\\\\_custom\\\\_fields: (Optional) Custom fields * stage: (Optional) New stage | Updated incident object |\\n| UpdateIssue | Updates issue details. | * id: ID of the issue to update * Issue details to update * subtype: (Optional) Issue subtype * apps: (Optional) Related apps *" + }, + { + "id": "ART-12390_KNOWLEDGE_NODE-14", + "title": "Workflow action library | Workflows | Computer by DevRev | DevRev", + "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 -" + }, + { + "id": "ART-1961_KNOWLEDGE_NODE-37", + "title": "Workflows | Computer by DevRev | DevRev", + "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" + } + ] + }, + { + "query_id": "200e0274-aa07-4b9a-9610-a3ac1a55899d", + "query": "assign issue owner to someone else using workflow", + "retrievals": [ + { + "id": "ART-1976_KNOWLEDGE_NODE-25", + "title": "Routing | Computer for Support Teams | DevRev", + "text": "and effective resolution. Users can design workflows tailored to various scenarios; the example below illustrates a basic routing use case.\\n\\n| NODE | ACTIVITY |\\n| --- | --- |\\n| Trigger | Ticket created |\\n| Action | Pick user by group |\\n| Action | Update ticket |\\n| | ID: Ticket created > Output > ID |\\n| | Group > Output > ID |\\n| | Owned by > Set: Pick user > Output > User |\\n\\nOrgs can set up pull-based routing by updating the group instead of the user ID in the workflow illustrated" + }, + { + "id": "ART-1446_KNOWLEDGE_NODE-7", + "title": "Update Work \u2014 DevRev | Docs", + "text": "60| \"body\": \"foo\", \\n 61| \"owned_by\": [ \\n 62| { \\n 63| \"display_id\": \"foo\", \\n 64| \"id\": \"foo\", \\n 65| \"display_name\": \"foo\", \\n 66| \"display_picture\": { \\n 67| \"display_id\": \"foo\", \\n 68| \"id\": \"foo\", \\n 69| \"file\": {} \\n 70| }, \\n 71| \"email\": \"foo\", \\n 72| \"full_name\": \"foo\", \\n 73| \"state\": \"active\" \\n 74| } \\n 75|" + }, + { + "id": "ART-2010_KNOWLEDGE_NODE-29", + "title": "Bulk work item uploader | Automate | Snap-ins | DevRev", + "text": "**Select work items\\' owners (max 1)** drop-down menu, select the work item\\'s owner name.\\n3. From the **Select a part to assign to work items** drop-down menu, select a part for the work items. If the bulk work item upload is done using a part, the part is automatically selected.\\n4. In the **Customer ID** drop-down menu, select from the available workspaces associated with this account. If the bulk ticket upload is done using an account, the relevant workspaces are shown in the **Customer" + }, + { + "id": "ART-15376_KNOWLEDGE_NODE-2", + "title": "Merge Dev Users | DevRev | Docs", + "text": "tickets, parts\\netc. owned by the secondary Dev user will be transferred to the primary\\nDev user.\\n\\n### 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\\nprimary\\\\_userstringRequired`format: \"id\"`\\n\\nThe unique ID of the primary user.\\n\\nsecondary\\\\_userstringRequired`format: \"id\"`\\n\\nThe unique ID of the secondary user.\\n\\n### Response\\n\\nResponse object for" + }, + { + "id": "ART-1560_KNOWLEDGE_NODE-503", + "title": "Assign (Beta) \u2014 DevRev | Docs", + "text": "sprint.\\n\\nissue.subtype string Optional\\n\\nFilters for issues with any of the provided subtypes.\\n\\nopportunity.account string Optional\\n\\nFilters for opportunities belonging to any of the provided accounts.\\n\\nopportunity.contacts string Optional\\n\\nFilters for opportunities with any of the provided contacts.\\n\\nopportunity.subtype string Optional\\n\\nFilters for opportunity with any of the provided subtypes.\\n\\nowned_by string Optional\\n\\nFilters for work owned by any of these" + }, + { + "id": "ART-1560_KNOWLEDGE_NODE-529", + "title": "Assign (Beta) \u2014 DevRev | Docs", + "text": "works.update\\n\\nUpdates a work item\\xe2\\x80\\x99s information.\\n\\nRequest.\\n\\nThis endpoint expects an object.\\nIssue Show 21 properties\\nOR\\nNone Show 17 properties\\nOR\\nOpportunity Show 21 properties\\nOR\\nTask Show 19 properties\\nOR\\nTicket Show 25 properties\\nResponse.\\n\\nThis endpoint returns an object.\\nwork object\\nShow 4 variants\\nBuilt with'" + }, + { + "id": "ART-1438_KNOWLEDGE_NODE-6", + "title": "Create Work \u2014 DevRev | Docs", + "text": "} \\n 59| ], \\n 60| \"body\": \"foo\", \\n 61| \"owned_by\": [ \\n 62| { \\n 63| \"display_id\": \"foo\", \\n 64| \"id\": \"foo\", \\n 65| \"display_name\": \"foo\", \\n 66| \"display_picture\": { \\n 67| \"display_id\": \"foo\", \\n 68| \"id\": \"foo\", \\n 69| \"file\": {} \\n 70| }, \\n 71| \"email\": \"foo\", \\n 72| \"full_name\": \"foo\", \\n 73| \"state\": \"active\" \\n" + }, + { + "id": "ART-1560_KNOWLEDGE_NODE-248", + "title": "Assign (Beta) \u2014 DevRev | Docs", + "text": "created. Only sys users and service accounts are supposed to set this field.\\n\\nstage object Optional\\n\\nCreate object for stage.\\n\\nShow 2 properties\\nstakeholders list of strings Optional\\n\\nUsers, along with the incident commander, involved in resolving incidents and handling communication.\\n\\ntags list of objects Optional\\n\\nTags associated with the object.\\n\\nShow 2 properties\\ntarget_close_date datetime Optional\\n\\nTimestamp when the incident is expected to be" + }, + { + "id": "ART-1560_KNOWLEDGE_NODE-275", + "title": "Assign (Beta) \u2014 DevRev | Docs", + "text": "Optional\\n\\nTimestamp when the incident was mitigated.\\n\\nowned_by object Optional\\nShow property\\npia object Optional\\nShow property\\nplaybooks object Optional\\nShow property\\nrelated_docs object Optional\\nShow property\\nreported_by long Optional\\n\\nThe entity that first reported the incident.\\n\\nseverity long Optional\\n\\nSeverity of the incident.\\n\\nsource long Optional\\n\\nSource of where the incident was created. Only sys users and service accounts are supposed to set this field.\\n\\nstage" + }, + { + "id": "ART-1655_KNOWLEDGE_NODE-467", + "title": "Update \u2014 DevRev | Docs", + "text": "capability \" , 8 \" name \" : \" string \" , 9 \" owned_by \" : [ 10 { 11 \" type \" : \" dev_user \" , 12 \" display_name \" : \" string \" , 13 \" display_picture \" : { 14 \" display_id \" : \" string \" , 15 \" id \" : \" string \" 16 } , 17 \" email \" : \" string \" , 18 \" full_name \" : \" string \" , 19 \" state \" : \" active \" , 20 \" display_id \" : \" string \" , 21 \" id \" : \" string \" 22 } 23 ] , 24 \" display_id \" : \" string \" , 25 \" id \" : \" string \" 26 } 27 ] , 28 \" priority \" : \" p0 \" , 29 \" sla_tracker \" : { 30 \"" + } + ] + }, + { + "query_id": "2c22e8f5-d293-4b2d-9aa4-2cf0c01e2cc2", + "query": "add multiple email addresses to one contact through Grow interface", + "retrievals": [ + { + "id": "ART-1290_KNOWLEDGE_NODE-89", + "title": "Snapkit | DevRev | Docs", + "text": "ISO 8601 format>\", |\\n| 6 | \"value\": [\"\"] |\\n| 7 | } |\\n```\\n\\nExample payload\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | { |\\n| 2 | \"type\": \"email_list\", |\\n| 3 | \"action_id\": \"emails\", |\\n| 4 | \"action_type\": \"remote\", |\\n| 5 | \"timestamp\": \"2023-07-21T05:33:52.182Z\", |\\n| 6 | \"value\": [\"hello@hello.com\", \"example@example.com\", \"bonjour@hello.com\"] |\\n| 7 | } |\\n```\\n\\n###### Static select\\n\\nA select menu that allows a user to choose one item" + }, + { + "id": "ART-1484_KNOWLEDGE_NODE-100", + "title": "Snapkit \u2014 DevRev | Docs", + "text": "defined in the Snap>\", \\n 5| \"timestamp\": \"\", \\n 6| \"value\": [\"\"] \\n 7| }\\n[/code] \\n \\nExample payload\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"type\": \"email_list\", \\n 3| \"action_id\": \"emails\", \\n 4| \"action_type\": \"remote\", \\n 5| \"timestamp\": \"2023-07-21T05:33:52.182Z\", \\n 6| \"value\": [\"hello@hello.com\", \"example@example.com\", \"bonjour@hello.com\"]" + }, + { + "id": "ART-2575_KNOWLEDGE_NODE-28", + "title": "Account and contact import | Computer for Growth Teams | DevRev", + "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-1290_KNOWLEDGE_NODE-86", + "title": "Snapkit | DevRev | Docs", + "text": "input component, should be set to `\"email_list\"`.\\n\\n*Additional properties*\\n\\n* `min_items` (optional): The minimum number of items that can be added.\\n* `max_items` (optional): The maximum number of items that can be added.\\n* `initial_values` (optional): The initial values in the inputs when they are loaded. This is an array of strings. If `min_items` or `max_items` are set, the length of the array should be within the range.\\n\\n*Example*\\n\\n![]()\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | {" + }, + { + "id": "ART-2045_KNOWLEDGE_NODE-51", + "title": "AirSync | Snap-ins | DevRev", + "text": "email: [a@example.com](mailto:a@example.com) account: **None** | email: [a@example.com](mailto:a@example.com) account: **None** | Existing contact used |\\n| email: [a@example.com](mailto:a@example.com) account: \"Example\" | email: [a@example.com](mailto:a@example.com) account: \"Example\" | Existing contact used |\\n| email: [a@example.com](mailto:a@example.com) account: \"Example\" | email: [a@example.com](mailto:a@example.com) account: **None** | New contact created |\\n| email:" + }, + { + "id": "ART-1290_KNOWLEDGE_NODE-87", + "title": "Snapkit | DevRev | Docs", + "text": "|\\n| 2 | \"element\": { |\\n| 3 | \"action_id\": \"emails\", |\\n| 4 | \"placeholder\": { |\\n| 5 | \"text\": \"Enter email here\", |\\n| 6 | \"type\": \"plain_text\" |\\n| 7 | }, |\\n| 8 | \"type\": \"email_list\" |\\n| 9 | }, |\\n| 10 | \"hint\": { |\\n| 11 | \"text\": \"When these emails are included in a Slack message, they automatically receive an email notification.\", |\\n| 12 | \"type\": \"plain_text\" |\\n| 13 | }, |\\n| 14 | \"label\": { |\\n| 15 | \"text\": \"List of emails\", |\\n| 16 | \"type\": \"plain_text\" |\\n| 17 | }, |\\n| 18 |" + }, + { + "id": "ART-1484_KNOWLEDGE_NODE-98", + "title": "Snapkit \u2014 DevRev | Docs", + "text": "\\n 3| \"action_id\": \"emails\", \\n 4| \"placeholder\": { \\n 5| \"text\": \"Enter email here\", \\n 6| \"type\": \"plain_text\" \\n 7| }, \\n 8| \"type\": \"email_list\" \\n 9| }, \\n 10| \"hint\": { \\n 11| \"text\": \"When these emails are included in a Slack message, they automatically receive an email notification.\", \\n 12| \"type\": \"plain_text\" \\n 13| }, \\n 14| \"label\": { \\n 15| \"text\": \"List of emails\", \\n 16|" + }, + { + "id": "ART-2002_KNOWLEDGE_NODE-27", + "title": "Contacts | Computer for Growth Teams | DevRev", + "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" + }, + { + "id": "ART-2002_KNOWLEDGE_NODE-23", + "title": "Contacts | Computer for Growth Teams | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Concepts](#concepts)\\n* [Create a new customer contact](#create-a-new-customer-contact)\\n* [Bulk import customer" + }, + { + "id": "ART-2575_KNOWLEDGE_NODE-32", + "title": "Account and contact import | Computer for Growth Teams | DevRev", + "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" + } + ] + }, + { + "query_id": "45a08470-c6f0-412a-9985-bbfd3f725b3c", + "query": "list agents API for account", + "retrievals": [ + { + "id": "ART-1560_KNOWLEDGE_NODE-14", + "title": "Assign (Beta) \u2014 DevRev | Docs", + "text": "of objects\\n\\nList containing all the accounts\\n\\nShow 18 properties\\nnext_cursor string Optional\\n\\nThe cursor used to iterate subsequent results in accordance to the sort order. If not set, then no later elements exist.\\n\\nprev_cursor string Optional\\n\\nThe cursor used to iterate preceding results in accordance to the sort order. If not set, then no prior elements exist.\\n\\nAPI Reference accounts List Post.\\n\\nPOST https://api.devrev.ai / accounts.list\\n\\nGets a list of" + }, + { + "id": "ART-1453_KNOWLEDGE_NODE-6", + "title": "List Accounts \u2014 DevRev | Docs", + "text": "exist.\\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\\nGET\\n\\n/accounts.list\\n\\n[code]\\n\\n $| curl https://api.devrev.ai/accounts.list \\\\ \\n ---|--- \\n >| -H \"Authorization: Bearer \"\\n[/code] \\n \\nTry it\\n\\n200listExample\\n\\n[code]\\n\\n 1| { \\n ---|--- \\n 2| \"accounts\": [ \\n 3|" + }, + { + "id": "ART-1465_KNOWLEDGE_NODE-17", + "title": "List Accounts (POST) \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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'" + }, + { + "id": "ART-1453_KNOWLEDGE_NODE-17", + "title": "List Accounts \u2014 DevRev | Docs", + "text": "Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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" + }, + { + "id": "ART-1464_KNOWLEDGE_NODE-13", + "title": "Get Account (POST) \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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'" + }, + { + "id": "ART-4106_KNOWLEDGE_NODE-15", + "title": "List Sys Users (POST) \u2014 DevRev | Docs", + "text": "[SLA](https://devrev.ai/legal/sla)\\n * [DPA](https://devrev.ai/legal/dpa)\\n * [Subprocessors](https://devrev.ai/security/sub-processors)\\n * [Cookie Policy](https://devrev.ai/legal/cookie-policy)\\n * [Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise" + }, + { + "id": "ART-1420_KNOWLEDGE_NODE-14", + "title": "List Rev Orgs (POST) \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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" + }, + { + "id": "ART-1395_KNOWLEDGE_NODE-18", + "title": "List Dev Users (POST) \u2014 DevRev | Docs", + "text": "[SLA](https://devrev.ai/legal/sla)\\n * [DPA](https://devrev.ai/legal/dpa)\\n * [Subprocessors](https://devrev.ai/security/sub-processors)\\n * [Cookie Policy](https://devrev.ai/legal/cookie-policy)\\n * [Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise" + }, + { + "id": "ART-4085_KNOWLEDGE_NODE-12", + "title": "List Groups Members (POST) \u2014 DevRev | Docs", + "text": "Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + }, + { + "id": "ART-12986_KNOWLEDGE_NODE-16", + "title": "List Commands (POST) \u2014 DevRev | Docs", + "text": "[Subprocessors](https://devrev.ai/security/sub-processors)\\n * [Cookie Policy](https://devrev.ai/legal/cookie-policy)\\n * [Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + } + ] + }, + { + "query_id": "f70a832e-15aa-4d51-bd81-81f1d51a3990", + "query": "SLA timer not running for newly created tickets with L1 SLA tag and Test SLA Pilot", + "retrievals": [ + { + "id": "ART-1986_KNOWLEDGE_NODE-44", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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-46", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "\\xc2\\xa0 - Action: Check the policies you have created for the SLA listed under **SLA Name**. For example, if you have created two policies, one with the condition Severity = Blocker and another with Severity = High, a ticket with medium severity will still have the SLA name but will not have any running metrics because it does not meet the severity conditions.\\n\\n### Next steps\\n\\nIf the issue persists, review your SLA assignment rules and policies or contact support for further" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-45", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-47", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "assistance.\\n\\n### Expected result\\n\\nThe ticket should have an SLA running if the **SLA Name** is not empty and the ticket satisfies the conditions of any policy within the SLA.\\n\\n[PreviousCommands](/docs/product/commands)[NextOperational-level agreement](/docs/product/ola)\\n\\n#### On this page\\n\\n* [Create an SLA](#create-an-sla)\\n* [Creating policies within SLA](#creating-policies-within-sla)\\n* [Publishing an SLA](#publishing-an-sla)\\n* [Assigning customers](#assigning-customers)\\n*" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-48", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "[Adding assignment rules](#adding-assignment-rules)\\n* [SLA metric calculation](#sla-metric-calculation)\\n* [Viewing SLAs](#viewing-slas)\\n* [Filtering tickets by Next SLA Target](#filtering-tickets-by-next-sla-target)\\n* [Troubleshooting: No SLA running on the ticket](#troubleshooting-no-sla-running-on-the-ticket)\\n* [Issue](#issue)\\n* [Solution](#solution)\\n* [Next steps](#next-steps)\\n* [Expected result](#expected-result)\\n\\n[Enterprise grade security to protect customer data\\n\\nLearn more" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-28", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "text": "*Conversation Policy*.\\n3. In the **New ticket policy** pane, under **Conditions**, select the ticket attributes values of **Tag**, **Part**, and **Severity**.\\n4. Under **Metrics**, enable or disable **First response**, **Next response**, and **Resolution time**.\\n5. Click **Publish**.\\n\\n![]()\\n\\nSLA metrics are only applied to tickets or conversations that meet the policy's conditions.\\n\\nPublishing an SLA\\n-----------------\\n\\nSLAs can be published once all policies are created. Published" + }, + { + "id": "ART-1986_KNOWLEDGE_NODE-35", + "title": "Service-level agreement | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1457_KNOWLEDGE_NODE-5", + "title": "Get SLA Tracker \u2014 DevRev | Docs", + "text": "\"2023-01-01T12:00:00.000Z\" \\n 25| }, \\n 26| \"remaining_time\": 42, \\n 27| \"status\": \"foo\", \\n 28| \"target_time\": \"2023-01-01T12:00:00.000Z\", \\n 29| \"warning_target_time\": \"2023-01-01T12:00:00.000Z\" \\n 30| } \\n 31| ], \\n 32| \"applies_to_id\": \"foo\", \\n 33| \"applies_to_type\": \"conversation\", \\n 34| \"created_by\": { \\n 35| \"display_id\": \"foo\", \\n 36| \"id\": \"foo\", \\n 37|" + }, + { + "id": "ART-1438_KNOWLEDGE_NODE-10", + "title": "Create Work \u2014 DevRev | Docs", + "text": "\"sla_summary\": { \\n 124| \"closest_to_breach_metric\": \"foo\", \\n 125| \"org_schedule\": { \\n 126| \"display_id\": \"foo\", \\n 127| \"id\": \"foo\", \\n 128| \"name\": \"foo\", \\n 129| \"status\": \"archived\", \\n 130| \"timezone\": \"foo\", \\n 131| \"valid_until\": \"2023-01-01T12:00:00.000Z\" \\n 132| }, \\n 133| \"remaining_time\": 42, \\n 134| \"sla_tracker\": { \\n 135| \"created_by\": { \\n" + }, + { + "id": "ART-1506_KNOWLEDGE_NODE-10", + "title": "Create Conversation (Beta) \u2014 DevRev | Docs", + "text": "\"sla_tracker\": { \\n 78| \"id\": \"id\", \\n 79| \"metric_target_summaries\": [ \\n 80| { \\n 81| \"metric_definition\": { \\n 82| \"id\": \"id\" \\n 83| }, \\n 84| \"stage\": \"stage\", \\n 85| \"breached_at\": \"2023-01-01T12:00:00Z\", \\n 86| \"completed_at\": \"2023-01-01T12:00:00Z\", \\n 87| \"next_schedule_transition\": \"2023-01-01T12:00:00Z\", \\n 88|" + } + ] + }, + { + "query_id": "dc2b710b-25ce-4b9d-b85c-f556e8fd4a56", + "query": "how to find secondary ticket", + "retrievals": [ + { + "id": "ART-1979_KNOWLEDGE_NODE-39", + "title": "Tickets | Computer for Support Teams | DevRev", + "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" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-57", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "only when users configure the post merge stage in the ticket preference settings page.\\n\\n### Merge tickets\\n\\n1. Open the primary ticket and select the merge option from the side panel.\\n\\n ![]()\\n\\n The ticket from which you initiate the merge becomes the primary ticket.\\n2. In the modal window that appears, review the suggested duplicate tickets based on the pre-filled primary ticket title.\\n3. Select the appropriate duplicate tickets and confirm the merge action.\\n\\n There is no limit" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-54", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "already raised in the primary ticket. Duplicate tickets often arise from customers submitting multiple requests through different channels (email, portal, Slack). All duplicate tickets become *immutable* after merging.\\n\\n**Primary ticket**\\n\\nA primary ticket is the main record that consolidates all relevant information from duplicate tickets. It serves as the primary source of communication for all merged duplicate tickets, ensuring that all customer interactions, updates, and resolutions are" + }, + { + "id": "ART-15716_KNOWLEDGE_NODE-5", + "title": "Support queries related playbook", + "text": "ticket, selecting the merge option, and choosing the duplicate tickets to merge. Only unclosed tickets with the same reporters can be merged. After merging, duplicate tickets are archived, and all future messages go to the primary ticket.\\n\\nStep-by-step guide:\\xc2\\xa0[How to merge tickets](https://devrev.ai/docs/product/tickets#merging-guidelines)\\n\\n2. Creating Tickets in DevRevYou can create tickets from the app, support portal, Slack, or via API. Fill in required fields (like title, part," + }, + { + "id": "ART-1783_KNOWLEDGE_NODE-446", + "title": "Locate \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1783_KNOWLEDGE_NODE-459", + "title": "Locate \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-65", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "conversion](/docs/product/conversation-ticket)[NextRouting](/docs/product/routing)\\n\\n#### On this page\\n\\n* [Attributes](#attributes)\\n* [Create a ticket](#create-a-ticket)\\n* [Tags](#tags)\\n* [Stages](#stages)\\n* [Subtypes](#subtypes)\\n* [Viewing attachments on tickets](#viewing-attachments-on-tickets)\\n* [Turing suggests](#turing-suggests)\\n* [Duplicate ticket merging](#duplicate-ticket-merging)\\n* [Merging guidelines](#merging-guidelines)\\n* [Merge settings](#merge-settings)\\n* [Merge" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-24", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "[Subtypes](#subtypes)\\n* [Viewing attachments on tickets](#viewing-attachments-on-tickets)\\n* [Turing suggests](#turing-suggests)\\n* [Duplicate ticket merging](#duplicate-ticket-merging)\\n* [Merging guidelines](#merging-guidelines)\\n* [Merge settings](#merge-settings)\\n* [Merge tickets](#merge-tickets)\\n* [Post-merge conditions](#postmerge-conditions)\\n* [Follow up tickets](#follow-up-tickets)\\n* [Internal Tickets](#internal-tickets)\\n\\n1. [Documentation](/docs)\\n3. [Computer for Support" + }, + { + "id": "ART-1540_KNOWLEDGE_NODE-2", + "title": "Get Link (POST) (Beta) \u2014 DevRev | Docs", + "text": "\"type\": \"ticket\", \\n 7| \"id\": \"source\", \\n 8| \"owned_by\": [ \\n 9| { \\n 10| \"type\": \"sys_user\", \\n 11| \"id\": \"source\" \\n 12| } \\n 13| ], \\n 14| \"title\": \"source\", \\n 15| \"display_id\": \"source\", \\n 16| \"rev_org\": { \\n 17| \"type\": \"rev_org\", \\n 18| \"id\": \"source\" \\n 19| }, \\n 20| \"severity\": \"blocker\", \\n 21| \"stage\": { \\n 22|" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-66", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "tickets](#merge-tickets)\\n* [Post-merge conditions](#postmerge-conditions)\\n* [Follow up tickets](#follow-up-tickets)\\n* [Internal Tickets](#internal-tickets)\\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" + } + ] + }, + { + "query_id": "05e8a3ee-fe67-4ece-b8c8-5088330b0864", + "query": "converting conversations to tickets issue customer channel acme", + "retrievals": [ + { + "id": "ART-6174_KNOWLEDGE_NODE-27", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "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-28", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "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-4271_KNOWLEDGE_NODE-26", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "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" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-29", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "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-6174_KNOWLEDGE_NODE-32", + "title": "Conversation to ticket conversion | Conversations | Computer for Support Teams | DevRev", + "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*" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-30", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "Customer suggestions that need to be tracked and potentially implemented.\\n * **Bug reports** : Technical issues that require development team involvement.\\n * **SLA tracking** : When you need more formal tracking of resolution times for critical issues.\\n * **Documentation** : Issues that should be formally documented for compliance or future reference.\\n * **Resource allocation** : When dedicating specific resources to resolve a particular customer issue.\\n * **AI handoff** : When an" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-33", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "remains archived.\\n\\n[PreviousConversations](/docs/product/conversation)[NextTickets](/docs/product/tickets)\\n\\n#### On this page\\n\\n * How Conversation conversion works\\n * How to convert Conversations to Tickets\\n * End user experience\\n * PLuG widget experience\\n * Slack experience\\n * Why you should convert a Conversation to a Ticket\\n * Key information\\n\\n[Enterprise grade security to protect customer dataLearn more about it.](/blog/soc-compliance?)\\n\\nProduct\\n\\n *" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-4", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "Analytics](/docs/dashboards/ticket-sla-analytics?)\\n * [Ticket-Team Performance](/docs/dashboards/ticket-team-performance?)\\n\\n * [Conversations](/docs/product/conversation?)\\n\\n * [Convert Conversations to Tickets](/docs/product/Conversation-Tickets?)\\n\\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 &" + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-21", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "2024](/docs/changelog/_2024-06-03?)\\n * [May 2024](/docs/changelog/_2024-05-08?)\\n * [April 2024](/docs/changelog/_2024-04-08?)\\n * [March 2024](/docs/changelog/_2024-03-08?)\\n * [Feb 10 to Feb 29, 2024](/docs/changelog/_2024-02-29?)\\n * [Jan 09 to Feb 09, 2024](/docs/changelog/_2024-02-09?)\\n * [Dec 08 to Jan 08, 2024](/docs/changelog/_2024-01-08?)\\n * [Nov 10 to Dec 07, 2023](/docs/changelog/_2023-12-07?)\\n * [Oct 13 to Nov 09," + }, + { + "id": "ART-4271_KNOWLEDGE_NODE-22", + "title": "Convert Conversations to Tickets | Conversations | Support | DevRev", + "text": "2023](/docs/changelog/_2023-11-09?)\\n * [Sep 15 to Oct 12, 2023](/docs/changelog/_2023-10-12?)\\n * [Aug 17 to Sep 14, 2023](/docs/changelog/_2023-09-14?)\\n * [Jul 20 to Aug 16, 2023](/docs/changelog/_2023-08-16?)\\n * [Jul 06 to Jul 19, 2023](/docs/changelog/_2023-07-19?)\\n * [Jun 20 to Jul 05, 2023](/docs/changelog/_2023-07-05?)\\n * [Jun 05 to Jun 19, 2023](/docs/changelog/_2023-06-19?)\\n * [May 22 to Jun 05, 2023](/docs/changelog/_2023-06-05?)\\n * [Apr" + } + ] + }, + { + "query_id": "0e3d4f90-8b81-449e-85cb-cda6c356cf11", + "query": "add subtype in conversation in DevRev", + "retrievals": [ + { + "id": "ART-1506_KNOWLEDGE_NODE-13", + "title": "Create Conversation (Beta) \u2014 DevRev | Docs", + "text": "\"don:core:dvrv-us-1:devo/example:custom_type_fragment/custom-type-fragment-id\", \\n 115| \"subtype\": \"subtype\", \\n 116| \"tags\": [ \\n 117| { \\n 118| \"tag\": { \\n 119| \"id\": \"id\", \\n 120| \"name\": \"name\" \\n 121| } \\n 122| } \\n 123| ], \\n 124| \"title\": \"title\" \\n 125| } \\n 126| }\\n[/code] \\n \\n[Delete ConversationUp Next](/beta/api-reference/conversations/delete)\\n\\n[Built" + }, + { + "id": "ART-1514_KNOWLEDGE_NODE-12", + "title": "Update Conversation (Beta) \u2014 DevRev | Docs", + "text": "105| \"notes\": \"notes\", \\n 106| \"ordinal\": 1, \\n 107| \"stage\": { \\n 108| \"id\": \"id\" \\n 109| }, \\n 110| \"state\": { \\n 111| \"id\": \"id\" \\n 112| } \\n 113| }, \\n 114| \"stock_schema_fragment\": \"don:core:dvrv-us-1:devo/example:custom_type_fragment/custom-type-fragment-id\", \\n 115| \"subtype\": \"subtype\", \\n 116| \"tags\": [ \\n 117| { \\n 118| \"tag\": { \\n 119|" + }, + { + "id": "ART-1510_KNOWLEDGE_NODE-10", + "title": "Get Conversation (Beta) \u2014 DevRev | Docs", + "text": "\"don:core:dvrv-us-1:devo/example:custom_type_fragment/custom-type-fragment-id\", \\n 115| \"subtype\": \"subtype\", \\n 116| \"tags\": [ \\n 117| { \\n 118| \"tag\": { \\n 119| \"id\": \"id\", \\n 120| \"name\": \"name\" \\n 121| } \\n 122| } \\n 123| ], \\n 124| \"title\": \"title\" \\n 125| } \\n 126| }\\n[/code] \\n \\n[Get Conversation (POST)Up Next](/beta/api-reference/conversations/get-post)\\n\\n[Built" + }, + { + "id": "ART-1524_KNOWLEDGE_NODE-10", + "title": "Get Conversation (POST) (Beta) \u2014 DevRev | Docs", + "text": "112| } \\n 113| }, \\n 114| \"stock_schema_fragment\": \"don:core:dvrv-us-1:devo/example:custom_type_fragment/custom-type-fragment-id\", \\n 115| \"subtype\": \"subtype\", \\n 116| \"tags\": [ \\n 117| { \\n 118| \"tag\": { \\n 119| \"id\": \"id\", \\n 120| \"name\": \"name\" \\n 121| } \\n 122| } \\n 123| ], \\n 124| \"title\": \"title\" \\n 125| } \\n 126| }\\n[/code] \\n \\n[List ConversationsUp" + }, + { + "id": "ART-17231_KNOWLEDGE_NODE-58", + "title": "Supported DevRev object types | DevRev | Docs", + "text": "top](/airsync/supported-object-types#summary)\\n\\nconversation\\n------------\\n\\n**Resource Type:** `conversation`\\n\\n**Capabilities:** Can Load, Can Subtype\\n\\n### Fields\\n\\n| Field | Type | Required | Description |\\n| --- | --- | --- | --- |\\n| `applies_to_part_ids` | reference (collection)\\xe2\\x86\\x92[#category:part] | | Details of the parts relevant to the conversation. |\\n| `broadcast_channels` | text (collection) | | Active channels for the conversation |\\n| `channels` | reference" + }, + { + "id": "ART-1512_KNOWLEDGE_NODE-11", + "title": "List Conversations (Beta) \u2014 DevRev | Docs", + "text": "\\n 55| \"name\": \"name\" \\n 56| }, \\n 57| \"stock_schema_fragment\": \"don:core:dvrv-us-1:devo/example:custom_type_fragment/custom-type-fragment-id\", \\n 58| \"subtype\": \"subtype\", \\n 59| \"tags\": [ \\n 60| { \\n 61| \"tag\": { \\n 62| \"id\": \"id\", \\n 63| \"name\": \"name\" \\n 64| } \\n 65| } \\n 66| ], \\n 67| \"title\": \"title\" \\n 68| } \\n 69| ], \\n" + }, + { + "id": "ART-15342_KNOWLEDGE_NODE-6", + "title": "Prepare-Update Schemas Subtypes | DevRev | Docs", + "text": "with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-4116_KNOWLEDGE_NODE-12", + "title": "Prepare-Update Schemas Subtypes (Beta) \u2014 DevRev | Docs", + "text": "demo](https://devrev.ai/request-a-demo)\\n\\n'" + }, + { + "id": "ART-4116_KNOWLEDGE_NODE-10", + "title": "Prepare-Update Schemas Subtypes (Beta) \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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" + }, + { + "id": "ART-4116_KNOWLEDGE_NODE-8", + "title": "Prepare-Update Schemas Subtypes (Beta) \u2014 DevRev | Docs", + "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" + } + ] + }, + { + "query_id": "c52998fe-3545-4109-b719-ee5a3b792209", + "query": "DevRev Platform Orientation & Navigation Guide video login options", + "retrievals": [ + { + "id": "ART-1362_KNOWLEDGE_NODE-15", + "title": "Authentication \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-2665_KNOWLEDGE_NODE-0", + "title": "Session recording options | Session analytics | Computer for Your Customers | DevRev", + "text": "b'Session recording options | Session analytics | Computer for Your Customers | 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 +" + }, + { + "id": "ART-16615_KNOWLEDGE_NODE-0", + "title": "Board view | Vistas | Computer by DevRev | DevRev", + "text": "b\"Board view | Vistas | Computer by DevRev | 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 +" + }, + { + "id": "ART-1949_KNOWLEDGE_NODE-0", + "title": "Vistas | Computer by DevRev | DevRev", + "text": "b\"Vistas | Computer by DevRev | 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 +" + }, + { + "id": "ART-2027_KNOWLEDGE_NODE-0", + "title": "Email | Integrate | Snap-ins | DevRev", + "text": "b\"Email | Integrate | 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 +" + }, + { + "id": "ART-2014_KNOWLEDGE_NODE-0", + "title": "Link preview | Automate | Snap-ins | DevRev", + "text": "b'Link preview | 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 +" + }, + { + "id": "ART-4277_KNOWLEDGE_NODE-0", + "title": "Google Drive | AirSync | Snap-ins | DevRev", + "text": "b\"Google Drive | AirSync | 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 +" + }, + { + "id": "ART-4275_KNOWLEDGE_NODE-0", + "title": "Google Docs | AirSync | Snap-ins | DevRev", + "text": "b\"Google Docs | AirSync | 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 +" + }, + { + "id": "ART-1952_KNOWLEDGE_NODE-0", + "title": "Vista Reports | Vistas | Computer by DevRev | DevRev", + "text": "b\"Vista Reports | Vistas | Computer by DevRev | 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 +" + }, + { + "id": "ART-4052_KNOWLEDGE_NODE-7", + "title": "Identity provider \u2014 DevRev | Docs", + "text": "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 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" + } + ] + }, + { + "query_id": "da7b37fd-25ab-4968-9f53-c311043f6306", + "query": "change subtype of ticket error something went wrong", + "retrievals": [ + { + "id": "ART-1979_KNOWLEDGE_NODE-49", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "tickets. Resolved means that the customer's concerns which led to the ticket have been addressed.\\n\\nSubtypes\\n--------\\n\\nYou can create subtypes for tickets to categorize them based on the type of issue. For example, you can create subtypes for bugs, feature requests, or questions.\\nA subtype inherits all the attributes of its parent ticket type. You can add custom attributes to a subtype.\\nTo know how to create subtypes and add custom attributes to them, see [object" + }, + { + "id": "ART-15342_KNOWLEDGE_NODE-5", + "title": "Prepare-Update Schemas Subtypes | DevRev | Docs", + "text": "change\\nresults in a change in the stage diagram.\\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/stock-schema-fragments-list-post)[#### Create Stage Diagram\\n\\nNext](/api-reference/customization/stage-diagrams-create)[Built" + }, + { + "id": "ART-1551_KNOWLEDGE_NODE-520", + "title": "Update (Beta) \u2014 DevRev | Docs", + "text": "severities.\\n\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\n\\nFilters for records with any of the provided SLA stages.\\n\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\n\\nFilters for tickets with any of the provided source channels.\\n\\nticket.subtype string Optional\\n\\nFilters for tickets with any of the provided subtypes.\\n\\ntype enum Optional\\n\\nFilters for work of the provided types.\\n\\nAllowed values:" + }, + { + "id": "ART-1827_KNOWLEDGE_NODE-456", + "title": "Update \u2014 DevRev | Docs", + "text": "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 an object.\\nworks list of objects\\nThe resulting collection of work items.\\nShow 4 variants\\nAPI Reference works Export" + }, + { + "id": "ART-1636_KNOWLEDGE_NODE-469", + "title": "Update \u2014 DevRev | Docs", + "text": "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 an object.\\nworks list of objects\\nThe list of works.\\nShow 4 variants\\nnext_cursor string" + }, + { + "id": "ART-1655_KNOWLEDGE_NODE-458", + "title": "Update \u2014 DevRev | Docs", + "text": "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 an object.\\nworks list of objects\\nThe list of works.\\nShow 4 variants\\nnext_cursor string" + }, + { + "id": "ART-1597_KNOWLEDGE_NODE-465", + "title": "Update \u2014 DevRev | Docs", + "text": "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 an object.\\nworks list of objects\\nThe list of works.\\nShow 4 variants\\nnext_cursor string" + }, + { + "id": "ART-1827_KNOWLEDGE_NODE-469", + "title": "Update \u2014 DevRev | Docs", + "text": "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 an object.\\nworks list of objects\\nThe list of works.\\nShow 4 variants\\nnext_cursor string" + }, + { + "id": "ART-1566_KNOWLEDGE_NODE-508", + "title": "Transition (Beta) \u2014 DevRev | Docs", + "text": "values: breached completed paused running warning\\nticket.source_channel string Optional\\n\\nFilters for tickets with any of the provided source channels.\\n\\nticket.subtype string Optional\\n\\nFilters for tickets with any of the provided subtypes.\\n\\ntype enum Optional\\n\\nFilters for work of the provided types.\\n\\nAllowed values: issue opportunity task ticket\\nResponse.\\n\\nThis endpoint returns an object.\\nworks list of objects\\n\\nThe resulting collection of work items.\\n\\nShow 4 variants\\nAPI" + }, + { + "id": "ART-4133_KNOWLEDGE_NODE-20", + "title": "Update Incident | DevRev | Docs", + "text": "incident.\\n\\nsourcelongOptionalDeprecated\\n\\nSource of where the incident was created. Only sys users and\\nservice accounts are supposed to set this field.\\n\\n### Response\\n\\nSuccess.\\n\\nincidentobject\\n\\nShow 29 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" + } + ] + }, + { + "query_id": "882cde96-7501-41c4-8767-0023a96e5fcc", + "query": "Why would I use DevRev?", + "retrievals": [ + { + "id": "ART-1700_KNOWLEDGE_NODE-5", + "title": "Uils elevates efficiency and innovation with DevRev", + "text": "idea conception with the design team to technological implementation and subsequent testing. By utilizing DevRev\\xe2\\x80\\x99s platform, Uils was able to connect to third-party products and tools and also implement powerful automation and digital assistance.\\n\\nDevRev\\xe2\\x80\\x99s ability to adapt and evolve with Uils\\xe2\\x80\\x99 needs was a significant advantage. The platform offered solutions that enhanced productivity, and the DevRev team provided quick responses and support for implementing" + }, + { + "id": "ART-4175_KNOWLEDGE_NODE-3", + "title": "Computer for Builders: AI-Powered Product Dev | DevRev", + "text": "and reliable record for you.\\n\\n![]()\\n\\nDeliver on your most ambitious plans.\\n\\nTurn ideas into shipped products with speed and clarity as sprint planning, execution, and tracking all come together - minus the busywork.\\n\\n### Close the loop faster\\n\\nClose the loop faster\\n\\nBuilt-in automations keep work flowing by automatically assigning tasks, sending updates, and even resolving issues, so you stop chasing people or switching between tools.\\n\\n![]()\\n\\n### Anticipate what\\xe2\\x80\\x99s" + }, + { + "id": "ART-1709_KNOWLEDGE_NODE-7", + "title": "ACC-qjz7ErXz - Mad Rewards: MadRewards uses DevRev\u2019s AI to modernize customer su", + "text": "Rewards wanted a system that worked out of the box and had easy integration options. _\\xe2\\x80\\x9c**We did not have the bandwidth amongst all our customer engagements to do in-house development to integrate into a platform.** \\xe2\\x80\\x9d _says Pradeep.\\n\\nDevRev\\xe2\\x80\\x99s wide range of add-on modules, also known as [Snap-ins](https://docs.devrev.ai/snapins), allows businesses to easily automate manual tasks and integrate the platform with the existing systems.\\n\\n**2\\\\. Easy migration:** As" + }, + { + "id": "ART-4163_KNOWLEDGE_NODE-6", + "title": "Make development customer-centric with DevRev", + "text": "Demo](/request-a-demo)[Discover Airdrop](/airdrop)\\n\\n![]()\\n\\nSet up bidirectional syncs with your existing tools like Jira and GitHub so work is always updated in real-time and driven by code.\\n\\n###\\n\\nDevRev has centralized our workflow, enabling our engineers and PMs to remain on the pulse of real-time updates.\\xe2\\x80\\x9d\\n-----------------------------------------------------------------------------------------------------------------\\n\\n### Shikhar Agarwal\\n\\n### CTO, Spotnana\\n\\n[Read" + }, + { + "id": "ART-1037_KNOWLEDGE_NODE-4", + "title": "Pixee powers its commitment to a stellar developer experience with DevRev", + "text": "us.\\n\\n![]()\\n\\nSurag PatelCo-Founder @ Pixee\\n\\nAs they learned more about DevRev, they got excited about making a commitment to the entire platform. Maximizing customer support is an important factor, but Pixee wanted to use DevRev to shape the culture of the company. For their users, who are primarily software developers, they want to provide visibility on the roadmap ahead, so they can drive the future evolution of the platform. For their team, they want to assure them that" + }, + { + "id": "ART-1005_KNOWLEDGE_NODE-17", + "title": "Choosing the Right Systems For Your Startup", + "text": "integration for authentication\\n Groups synchronization\\n Customization\\n Simplicity\\n\\n\\nWhat did we choose?\\nDevRev\\n\\nWhy did we choose this?\\nOne of the core pillars of the DevRev platform is work so we worked to build what we would eventually use. Previously, we had used JIRA for 10+ years at our previous companies, and while we could have used that when building DevRev, we decided to not as it would force us to build fast so we could start leveraging.\\n\\nWe currently run 100% of our" + }, + { + "id": "ART-1037_KNOWLEDGE_NODE-8", + "title": "Pixee powers its commitment to a stellar developer experience with DevRev", + "text": "more productive. Part of that is consolidation of tools. There are a lot of various point solutions that do bits and pieces of little things that aren\\xe2\\x80\\x99t helpful because you need them to be connected together to get the full value of these elements.\\n\\n![]()\\n\\nSurag PatelCo-Founder @ Pixee\\n\\nTop features\\n------------\\n\\n**Customer-centric development**: DevRev is enhancing Pixee's ability to tie support tickets directly to the development process, ensuring efficient ticket" + }, + { + "id": "ART-1037_KNOWLEDGE_NODE-14", + "title": "Pixee powers its commitment to a stellar developer experience with DevRev", + "text": "up team bandwidth to focus on key development and support areas.\\n\\nMoving forward\\n--------------\\n\\nPixee continues to roll out DevRev across their teams, keenly focusing on the minute details that elevate user experience and optimize developmental processes. The feedback loop provided by DevRev is not just a tool but an integrated component of Pixee\\xe2\\x80\\x99s operational and development strategy, ensuring that every line of code developed, every feature introduced, is tied to providing a" + }, + { + "id": "ART-1772_KNOWLEDGE_NODE-10", + "title": "Rocketium brings agility to product development through a unified platform", + "text": "monitoring\\n\\nAs a founder, it\\xe2\\x80\\x99s a huge benefit for me to be able to just log into DevRev and immediately see work that\\xe2\\x80\\x99s happening across product, engineering, and customer success. All our product and customer data is now aggregated within a single platform.\\n\\n![]()\\n\\nAnurag DwivediCo-founder and CEO - Rocketium\\n\\n### Looking ahead\\n\\nAnurag is excited about leveraging DevRev\\xe2\\x80\\x99s advanced AI features into Rocketium\\xe2\\x80\\x99s product development cycle." + }, + { + "id": "ART-1037_KNOWLEDGE_NODE-7", + "title": "Pixee powers its commitment to a stellar developer experience with DevRev", + "text": "directly into the product. This aligns with Pixee's approach toward maintaining an efficient team, enabling them to be responsive to customer needs without inflating their operational requirements.\\n\\nThings that make us more effective and more productive are really important to us. We\\xe2\\x80\\x99re a nimble team and we need to be extremely efficient to achieve our aggressive goals while managing costs. For us, it comes down to what we can do from a tooling standpoint to make every individual" + } + ] + }, + { + "query_id": "a01c7c2b-0eda-489a-a3f7-e2fadaf9f999", + "query": "apply repeated multiple fields on tickets with one click", + "retrievals": [ + { + "id": "ART-2874_KNOWLEDGE_NODE-25", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "mappings specified in the configuration input. The process features robust error handling, detailed logging, and appends a summary comment to the timeline for easy update tracking.\\n\\nInstallation\\n------------\\n\\n1. Install the **Ticket Issue Field Migrator** snap-in from the DevRev marketplace.\\n2. Select the workspace where you want to install the snap-in, confirm your selection, and click **Deploy snap-in**.\\n\\nConfiguration\\n-------------\\n\\n1. In DevRev, go to **Settings** > **Snap-ins**" + }, + { + "id": "ART-2874_KNOWLEDGE_NODE-26", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "> **Ticket Issue Field Migrator** > **Configure**.\\n2. Specify the **Field Names** to migrate values from the ticket to the issue when fields are empty or undefined.\\n3. Click **Save** and **Install** to complete the setup.\\n4. Link an issue to a ticket to begin the migration of values from the ticket fields to the issue fields.\\n5. After the migration process is complete, you will receive a summary message in the snap-in **Discussion** tab, informing you of the number of fields processed," + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-62", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "up ticket.\\n\\nThe below fields would be copied on the new follow up ticket from the archived/immutable ticket:\\n\\n* Part\\n* Channel\\n* Account\\n* Workspace\\n* Reported by\\n* Description\\n* Title\\n* Channel specific custom fields\\n* Subtype\\n\\nThe follow up trigger is added in the workflows and admins configure the changes required on new follow up ticket, for example, copying of any other fields.\\n\\nInternal Tickets\\n----------------\\n\\nInternal tickets allow your team to create and manage" + }, + { + "id": "ART-2874_KNOWLEDGE_NODE-24", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "[Configuration](#configuration)\\n\\n1. [Documentation](/docs)\\n3. [Snap-ins](/docs/snapins)\\n[Automate](/docs/automate)\\n[Ticket issue field migrator](/docs/automations/ticket-issue-field-migrator)\\n\\nTicket issue field migrator\\n---------------------------\\n\\nThe Ticket issue field migration snap-in automates the transfer of custom field values from tickets to new linked issues in DevRev. It checks for empty or undefined fields and fills them with corresponding ticket values based on the field" + }, + { + "id": "ART-1957_KNOWLEDGE_NODE-32", + "title": "Object customization | Computer by DevRev | DevRev", + "text": "- **Value definitions**:\\n\\n * **Allow multiple values**: Toggle this on if you want users to add multiple values instead of just one.\\n * **Required field**: Toggle this on if you want to make it a required field. Required fields will have a red star which indicates that to create an object, this field needs to be filled.\\n * **Default value**: Add a default value in the input so that it\\'s not empty. Users can change this value later.\\n * **Placeholder" + }, + { + "id": "ART-2874_KNOWLEDGE_NODE-0", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "b'Ticket issue field migrator | 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 +" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-58", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "on the number of tickets that can be merged.\\n4. Review the automatic communication sent to primary and duplicate ticket owners (configurable in ticket preferences).\\n\\n### Post-merge conditions\\n\\n* The primary ticket retains all key fields (description, part, group, owner, creator, priority, stage), and the SLA remains unchanged.\\n* Events are updated to reflect all merge actions.\\n* Subscribers and reporters from duplicate tickets are added to the primary ticket.\\n* Linked objects from" + }, + { + "id": "ART-2874_KNOWLEDGE_NODE-23", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Ticket issue field migrator](#ticket-issue-field-migrator)\\n* [Installation](#installation)\\n*" + }, + { + "id": "ART-2874_KNOWLEDGE_NODE-27", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "text": "updated, and not updated. If the fields specified in the configuration are not found, a notification will be provided in the **Discussion** tab.\\n\\n[PreviousTicket age in engineering](/docs/automations/ticket-age-in-engineering)[NextTicket Immutability](/docs/automations/ticket-immutability)\\n\\n#### On this page\\n\\n* [Ticket issue field migrator](#ticket-issue-field-migrator)\\n* [Installation](#installation)\\n* [Configuration](#configuration)\\n\\n[Enterprise grade security to protect customer" + }, + { + "id": "ART-2874_KNOWLEDGE_NODE-15", + "title": "Ticket issue field migrator | Automate | Snap-ins | DevRev", + "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" + } + ] + }, + { + "query_id": "bd3a18be-1f76-4d1d-b813-c54880d2b2b7", + "query": "configure contact to open ticket in different workspace", + "retrievals": [ + { + "id": "ART-16264_KNOWLEDGE_NODE-29", + "title": "June 2025 | Changelog | DevRev", + "text": "account.\\n + If both **Reported By** and **Account** fields are initially empty, you can search for and add any contact to the **Reported By** field, which will auto-fill the **Account** and **Workspace** (if applicable).\\n* **Handling multiple users:**\\n\\n + If all selected users within the **Reported By** field belong to the same workspace, the **Workspace** field remains unchanged.\\n + If users are from different workspaces, the **Workspace** field is emptied, while the **Account** field" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-38", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "the top-right corner of your screen.\\n3. Add a title and description for your new ticket. You can also attach files related to the ticket in the description.\\n4. Select which part of the company/product this ticket is related to.\\n\\n ![]()\\n5. Enter other attributes for the ticket: change the assignee or accept the default; enter the severity; add any relevant tags to help employees identify any relevant traits of the ticket; select the workspace that the ticket pertains to.\\n6. If there are" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-30", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "the ticket was created.\\n* **Modified date**: The date the ticket was last modified.\\n* **Tags**: Tags are used to categorize tickets.\\n* **Customer workspace**: The workspace that the ticket pertains to. You can create a new account or workspace if it doesn't exist.\\n* **Target close date**: The date by which the issue is expected to be resolved.\\n* **Modified by**: The user who last modified the ticket.\\n* **Reported by**: Which customer is experiencing the issue. When a ticket is created" + }, + { + "id": "ART-16264_KNOWLEDGE_NODE-28", + "title": "June 2025 | Changelog | DevRev", + "text": "**Account** and **Reported By**. This provides a more streamlined approach to managing customer data.\\n* **Automatic workspace display:** When a ticket reporter is associated with a specific workspace within an account, adding that user to the **Reported By** field will automatically reveal three fields: **Account**, **Workspace**, and **Reported By**.\\n* **Dynamic user listing:**\\n\\n + Upon selection of an account, the **Reported By** list is filtered to show only users associated with that" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-32", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "**Reported by** field, first choose the corresponding account and workspace in the **Customer** attribute. After this selection, the contact's name will appear in the **Reported by** list.\\n* **Email members**: Participants in the ongoing email thread, dependent on the last email. This attribute automatically updates based on the last email sent from or received on DevRev.\\n\\n![]()\\n\\nAdding members to **Email members** also adds them to the **Reported by** field. Removing members from **Email" + }, + { + "id": "ART-1947_KNOWLEDGE_NODE-28", + "title": "Apps | Computer by DevRev | DevRev", + "text": "members from your own workspace and other members from the user\\'s workspace without starting a new thread or email chain. Because there can be many tickets attached to a single conversation, there is no need to start a new thread for new topics either.\\n\\nWe recommend closing the conversation whenever you feel the interaction has reached a natural end. Closing the conversation does not close the tickets and your external users are still able to see them in the widget.\\n\\nTickets\\n-------\\n\\nA" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-55", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "centralized in one location. This ticket not only retains the most comprehensive data but also acts as the focal point for tracking the progress of the customer's issue.\\n\\n### Merging guidelines\\n\\nTo ensure consistency and accuracy in the merging process, apply these guidelines when determining eligible tickets for merging:\\n\\n* Same workspace: All selected tickets must belong to the same customer workspace or have no workspace.\\n* Matching reporters: All selected tickets must have the same" + }, + { + "id": "ART-2000_KNOWLEDGE_NODE-31", + "title": "Accounts | Computer for Growth Teams | DevRev", + "text": "domain. If none is specified, a system-generated identifier is assigned to the account.\\n\\n![]()\\n\\nFor ingestion channels where providing an external reference isn't possible, the system relies on custom logic to identify and match incoming customer identity.\\n\\n> Example: The Slack and Email integration uses a combination of the customer email and workspace domain\\\\_name values. WhatsApp uses the WhatsApp number and associated name.\\n\\nAdd a workspace\\n---------------\\n\\nTo add a workspace to" + }, + { + "id": "ART-1976_KNOWLEDGE_NODE-25", + "title": "Routing | Computer for Support Teams | DevRev", + "text": "and effective resolution. Users can design workflows tailored to various scenarios; the example below illustrates a basic routing use case.\\n\\n| NODE | ACTIVITY |\\n| --- | --- |\\n| Trigger | Ticket created |\\n| Action | Pick user by group |\\n| Action | Update ticket |\\n| | ID: Ticket created > Output > ID |\\n| | Group > Output > ID |\\n| | Owned by > Set: Pick user > Output > User |\\n\\nOrgs can set up pull-based routing by updating the group instead of the user ID in the workflow illustrated" + }, + { + "id": "ART-3207_KNOWLEDGE_NODE-39", + "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev", + "text": "here are treated as new support tickets.\\n* **Conversations**: These addresses trigger conversations (not tickets).\\n\\n> Example: Use sales@yourcompany.com for general inquiries and help@yourcompany.com for support.\\n\\n### Step 4: Set the Default Part and Owner\\n\\n* Select the **default part** of your product for categorizing tickets.\\n* Assign a **default owner** (for example, a support lead or queue manager) for incoming tickets.\\n\\n### Step 5: Personalization settings\\n\\n| Setting |" + } + ] + }, + { + "query_id": "35acf2f7-9d3f-47ad-89d8-49474855dbad", + "query": "link an agent with the search agent so that the search agent can ask the other agent", + "retrievals": [ + { + "id": "ART-4090_KNOWLEDGE_NODE-13", + "title": "Create Link \u2014 DevRev | Docs", + "text": "[Subprocessors](https://devrev.ai/security/sub-processors)\\n * [Cookie Policy](https://devrev.ai/legal/cookie-policy)\\n * [Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + }, + { + "id": "ART-12994_KNOWLEDGE_NODE-16", + "title": "Link Dev Users Identities \u2014 DevRev | Docs", + "text": "AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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'" + }, + { + "id": "ART-4093_KNOWLEDGE_NODE-12", + "title": "Get Link (POST) \u2014 DevRev | Docs", + "text": "AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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 *" + }, + { + "id": "ART-4059_KNOWLEDGE_NODE-9", + "title": "Update Dev Orgs Auth Connection \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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" + }, + { + "id": "ART-12445_KNOWLEDGE_NODE-13", + "title": "Replace Links \u2014 DevRev | Docs", + "text": "[Subprocessors](https://devrev.ai/security/sub-processors)\\n * [Cookie Policy](https://devrev.ai/legal/cookie-policy)\\n * [Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + }, + { + "id": "ART-4095_KNOWLEDGE_NODE-14", + "title": "List Links (POST) \u2014 DevRev | Docs", + "text": "[Subprocessors](https://devrev.ai/security/sub-processors)\\n * [Cookie Policy](https://devrev.ai/legal/cookie-policy)\\n * [Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + }, + { + "id": "ART-1372_KNOWLEDGE_NODE-9", + "title": "Locate Artifacts (POST) \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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'" + }, + { + "id": "ART-13044_KNOWLEDGE_NODE-13", + "title": "Control Web Crawler Jobs \u2014 DevRev | Docs", + "text": "Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational 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'" + }, + { + "id": "ART-13045_KNOWLEDGE_NODE-12", + "title": "Get Web Crawler Job \u2014 DevRev | Docs", + "text": "[Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + }, + { + "id": "ART-1442_KNOWLEDGE_NODE-23", + "title": "Get Work \u2014 DevRev | Docs", + "text": "[Privacy Policy](https://devrev.ai/legal/privacy-policy)\\n * [Terms of Service](https://devrev.ai/legal/terms-of-service)\\n\\nLearn\\n\\n * [What are AI Agents?](https://devrev.ai/what-are-ai-agents)\\n * [What is Agentic AI?](https://devrev.ai/what-is-agentic-ai)\\n * [What is Enterprise Search?](https://devrev.ai/what-is-enterprise-search)\\n * [What is Conversational" + } + ] + }, + { + "query_id": "1477f1ba-efec-4c13-8c57-86e33ae542a1", + "query": "devrev platform orientation and navigation guide", + "retrievals": [ + { + "id": "ART-2666_KNOWLEDGE_NODE-27", + "title": "October 5: Left navigation | Changelog | DevRev", + "text": "DevRev's left navigation is designed to provide a more customizable and intuitive navigation experience. This update introduces new sections for better organization, enhanced customization capabilities, and a dedicated **Explore** page for managing views, dashboards, and sprint boards.\\n\\nWhen existing users log in, a prompt appears to guide them in migrating to the new left navigation. Follow the on-screen instructions to complete the migration and begin customizing your experience.\\n\\n## Key" + }, + { + "id": "ART-2666_KNOWLEDGE_NODE-0", + "title": "October 5: Left navigation | Changelog | DevRev", + "text": "b\"[](/)\\n\\n * Product\\n * Platform\\n * Marketplace\\n * Company\\n * Resources\\n * Pricing\\n\\n __\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\n[](/)\\n\\n __\\n\\nProduct __\\n\\nPlatform __\\n\\nMarketplace __\\n\\nCompany __\\n\\nResources __\\n\\nPricing __\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nSearch\\n\\n`CTRL` \\\\+ `K`\\n\\n * [Introduction](/docs)\\n * [AgentOS platform](/docs/intro)\\n\\n * [Core concepts](/docs/product/core)\\n *" + }, + { + "id": "ART-2666_KNOWLEDGE_NODE-26", + "title": "October 5: Left navigation | Changelog | DevRev", + "text": "[Developer](https://developer.devrev.ai/)\\n * [DevRevU](/docs/DevRevU)\\n\\n * [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n * Key changes\\n * New navigation sections\\n * Explore the section for boards and views\\n * Search and filter options in Explore\\n * Pinning and unpinning views\\n * Recents section\\n\\n 1. [Documentation](/docs)\\n 2. 3. [Changelog](/docs/changelog)\\n 4. [October 5: Left navigation](/docs/product/left-navigation)\\n\\n# Left navigation\\n\\nThe updated" + }, + { + "id": "ART-12454_KNOWLEDGE_NODE-6", + "title": "Quickstart guide for React Native \u2014 DevRev | Docs", + "text": "* [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 Engine](https://devrev.ai/workflow-engine)\\n * [Turing" + }, + { + "id": "ART-16615_KNOWLEDGE_NODE-0", + "title": "Board view | Vistas | Computer by DevRev | DevRev", + "text": "b\"Board view | Vistas | Computer by DevRev | 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 +" + }, + { + "id": "ART-1960_KNOWLEDGE_NODE-0", + "title": "Glossary | Computer by DevRev | DevRev", + "text": "b'Glossary | Computer by DevRev | DevRev\\n\\n* Product\\n* Platform\\n* Marketplace\\n* Company\\n* Resources\\n* Pricing\\n\\n[Login](https://app.devrev.ai/login)[Book a demo](/request-a-demo)\\n\\nProduct\\n\\nPlatform\\n\\nMarketplace\\n\\nCompany\\n\\nResources\\n\\nPricing\\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 +" + }, + { + "id": "ART-15498_KNOWLEDGE_NODE-8", + "title": "Quickstart guide | DevRev | Docs", + "text": "helpful?\\n\\nYesNo\\n\\n[Previous](/sdks/web/migration)[#### Features\\n\\nNext](/sdks/android/features)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-15515_KNOWLEDGE_NODE-51", + "title": "Features | DevRev | Docs", + "text": "guide\\n\\nNext](/sdks/ios/migration-guide)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-15519_KNOWLEDGE_NODE-4", + "title": "Quickstart guide | DevRev | Docs", + "text": "helpful?\\n\\nYesNo\\n\\n[Previous](/sdks/react-native/troubleshooting)[#### Features\\n\\nNext](/sdks/cordova/features)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-16579_KNOWLEDGE_NODE-44", + "title": "Features | DevRev | Docs", + "text": "guide\\n\\nNext](/sdks/flutter/migration-guide)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + } + ] + }, + { + "query_id": "d1c10c3c-ce66-42b1-afd0-3de10ded4f08", + "query": "common causes of Bad_Request error in DevRev", + "retrievals": [ + { + "id": "ART-1364_KNOWLEDGE_NODE-2", + "title": "Errors \u2014 DevRev | Docs", + "text": "{\"message\":\"route not found\"}\\n[/code] \\n \\nStatus Code| Status| Description \\n---|---|--- \\n`400`| `Bad Request`| The request was malformed or contained invalid arguments. \\n`401`| `Unauthorized`| The user attempted to access an endpoint that requires authentication and no credentials were provided or their validation failed. \\n`403`| `Forbidden`| The user isn\\xe2\\x80\\x99t authorized to perform the requested action. \\n`404`| `Not Found`| The requested endpoint doesn\\xe2\\x80\\x99t exist." + }, + { + "id": "ART-1174_KNOWLEDGE_NODE-2", + "title": "Errors | DevRev | Docs", + "text": "HTTP/1.1 404 Not Found |\\n| Content-Type: application/json |\\n| Content-Length: 29 |\\n| {\"message\":\"route not found\"} |\\n```\\n\\n| Status Code | Status | Description |\\n| --- | --- | --- |\\n| `400` | `Bad Request` | The request was malformed or contained invalid arguments. |\\n| `401` | `Unauthorized` | The user attempted to access an endpoint that requires authentication and no credentials were provided or their validation failed. |\\n| `403` | `Forbidden` | The user isn\\xe2\\x80\\x99t authorized" + }, + { + "id": "ART-1364_KNOWLEDGE_NODE-3", + "title": "Errors \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1182_KNOWLEDGE_NODE-3", + "title": "Locate Artifacts (POST) | DevRev | Docs", + "text": "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/artifacts/locate)[#### Prepare Artifacts\\n\\nNext](/api-reference/artifacts/prepare)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-15314_KNOWLEDGE_NODE-8", + "title": "Create Command | DevRev | Docs", + "text": "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/code-changes/update)[#### Get Command\\n\\nNext](/api-reference/commands/get)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-1206_KNOWLEDGE_NODE-12", + "title": "List Dev Users (POST) | DevRev | Docs", + "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/dev-users/list)[#### Merge Dev Users\\n\\nNext](/api-reference/dev-users/merge)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-15376_KNOWLEDGE_NODE-3", + "title": "Merge Dev Users | DevRev | Docs", + "text": "request to merge Dev users.\\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/dev-users/list-post)[#### Self Dev User\\n\\nNext](/api-reference/dev-users/self)[Built" + }, + { + "id": "ART-1174_KNOWLEDGE_NODE-3", + "title": "Errors | DevRev | Docs", + "text": "to perform the requested action. |\\n| `404` | `Not Found` | The requested endpoint doesn\\xe2\\x80\\x99t exist. |\\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" + }, + { + "id": "ART-15307_KNOWLEDGE_NODE-7", + "title": "List Code Changes | DevRev | Docs", + "text": "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/code-changes/get-post)[#### List Code Changes (POST)\\n\\nNext](/api-reference/code-changes/list-post)[Built with](https://buildwithfern.com/?utm_campaign=buildWith&utm_medium=docs&utm_source=developer.devrev.ai)'" + }, + { + "id": "ART-15506_KNOWLEDGE_NODE-15", + "title": "Identify your users with Plug | DevRev | Docs", + "text": "expired. |\\n| 403 Forbidden | The request was forbidden. | Check the authorization header for errors and make sure the token is a valid AAT. |\\n| 404 Not Found | The requested resource could not be found. | Verify the endpoint URL is correct. |\\n| 429 Too Many Requests | Rate limit exceeded. | Implement request throttling or wait before retrying. |\\n| 500 Internal Server Error | Server encounters an unexpected error. | Wait and try again later. If the issue persists, contact support with the" + } + ] + }, + { + "query_id": "d87ed963-92e7-4659-82b5-ef0566b2eb48", + "query": "associate multiple workspaces to a contact", + "retrievals": [ + { + "id": "ART-2000_KNOWLEDGE_NODE-25", + "title": "Accounts | Computer for Growth Teams | DevRev", + "text": "address.\\n\\nAccounts are associated with a workspace. An account can be a part of multiple workspaces at the same time. An account can also be linked to multiple opportunities. Accounts help you keep track of your customer contacts. Contacts are always linked to a workspace or an account.\\n\\nCreate an account\\n-----------------\\n\\nYou can create accounts in the following ways:\\n\\n### Using the DevRev app\\n\\n1. Go to **Accounts** > **+ Account**.\\n2. Fill in the details like account name," + }, + { + "id": "ART-16264_KNOWLEDGE_NODE-29", + "title": "June 2025 | Changelog | DevRev", + "text": "account.\\n + If both **Reported By** and **Account** fields are initially empty, you can search for and add any contact to the **Reported By** field, which will auto-fill the **Account** and **Workspace** (if applicable).\\n* **Handling multiple users:**\\n\\n + If all selected users within the **Reported By** field belong to the same workspace, the **Workspace** field remains unchanged.\\n + If users are from different workspaces, the **Workspace** field is emptied, while the **Account** field" + }, + { + "id": "ART-15506_KNOWLEDGE_NODE-17", + "title": "Identify your users with Plug | DevRev | Docs", + "text": "Contacts linked to the account | User and account information | Recommended for most B2B cases |\\n| **Three-level** | Account with linked workspaces and contacts | User, workspace and account information | Used for B2B cases but only recommended if your business model requires workspace organization |\\n\\n**What happens when you send different combinations:**\\n\\nUser reference:\\n\\n* A user reference is mandatory, ensuring its constant presence.\\n* If a user with the provided reference" + }, + { + "id": "ART-16784_KNOWLEDGE_NODE-6", + "title": "Glossary", + "text": "in the source system.\\n\\nTerms related to connection: AirSync, snap-incontact\\n\\nIndividual prospects or users associated with an organization\\'s workspaces or accounts.\\n\\nContacts can be associated with an account or workspace, but not always.\\n\\nTerms related to contact: account, workspace\\n\\nRead more about contact: [https://devrev.ai/docs/product/grow](https://devrev.ai/docs/product/grow)conversation\\n\\nAn interaction between the builder and consumer that may be escalated to a" + }, + { + "id": "ART-2000_KNOWLEDGE_NODE-31", + "title": "Accounts | Computer for Growth Teams | DevRev", + "text": "domain. If none is specified, a system-generated identifier is assigned to the account.\\n\\n![]()\\n\\nFor ingestion channels where providing an external reference isn't possible, the system relies on custom logic to identify and match incoming customer identity.\\n\\n> Example: The Slack and Email integration uses a combination of the customer email and workspace domain\\\\_name values. WhatsApp uses the WhatsApp number and associated name.\\n\\nAdd a workspace\\n---------------\\n\\nTo add a workspace to" + }, + { + "id": "ART-2933_KNOWLEDGE_NODE-2", + "title": "Account creation | DevRev | Docs", + "text": "[contacts](https://docs.devrev.ai/product/grow#-contact) which represents an individual user associated with the account of the organization. To create a contact, we also need to use the `rev-orgs.list` API with the `accounts` filter to get the default [workspace](https://docs.devrev.ai/product/grow#-workspace)(rev org) created with the account. We will be creating a contact under the workspace (`rev_org`) of the account as contacts (`rev_user`) cannot exist individually without being" + }, + { + "id": "ART-2895_KNOWLEDGE_NODE-10", + "title": "Identify your users with PLuG \u2014 DevRev | Docs", + "text": "The mobile number of the customer.| array \\n \\n**Attributes for workspaces**\\n\\nAttributes| Description| Type \\n---|---|--- \\n`workspace_ref`| A unique reference for the user\\xe2\\x80\\x99s workspace. If not provided, and an account reference is passed, the user is directly attached to the account.| string \\n`display_name`| The name of the workspace that\\xe2\\x80\\x99s shown on the widget.| string \\n \\n**Attributes for accounts**\\n\\nAttributes| Description| Type \\n---|---|---" + }, + { + "id": "ART-15506_KNOWLEDGE_NODE-10", + "title": "Identify your users with Plug | DevRev | Docs", + "text": "preferences, it is not recommended to mark emails as non-unique.\\n\\n**Attributes for [workspaces](https://developer.devrev.ai/public/api-reference/rev-orgs/workspaces)**\\n\\n| Attributes | Description | Type | Required | Unique |\\n| --- | --- | --- | --- | --- |\\n| `workspace_ref` | A unique reference for the user\\xe2\\x80\\x99s workspace. If not provided, and an account reference is passed, the user is directly attached to the account. | string | \\xe2\\x9d\\x8c | \\xe2\\x9c\\x85 |\\n| `display_name` |" + }, + { + "id": "ART-1997_KNOWLEDGE_NODE-32", + "title": "Computer for Growth Teams | DevRev", + "text": "these interactions to create a comprehensive picture of the relationship.\\n\\nBased on their participation, DevRev links accounts, contacts, and employees to engagements. Additionally, they can be linked to opportunities if they are relevant to a specific opportunity.\\n\\n[PreviousNudges](/docs/plug/nudges)[NextAccounts](/docs/product/account)\\n\\n#### On this page\\n\\n* [\\xf0\\x9f\\x92\\xbc Account](#-account)\\n* [\\xf0\\x9f\\x96\\xa5\\xef\\xb8\\x8f Workspace](#-workspace)\\n* [\\xf0\\x9f\\x92\\xa1" + }, + { + "id": "ART-1414_KNOWLEDGE_NODE-5", + "title": "Workspaces \u2014 DevRev | Docs", + "text": "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 ](https://www.instagram.com/devrev)\\n * [Medium ](https://medium.com/devrev)\\n * [Linkedin" + } + ] + }, + { + "query_id": "6dbad6ea-8ad4-41c5-8cf0-ed39a644fb26", + "query": "Slack notifications org name unknown organisation", + "retrievals": [ + { + "id": "ART-1472_KNOWLEDGE_NODE-22", + "title": "Using a snap-in to perform an external action \u2014 DevRev | Docs", + "text": "([](https://docs.github.com/en/rest/orgs/orgs?apiVersion=2022-11-28#get-an-organization)) is used to confirm the specified organisation name.\\n[code]\\n\\n 1| const verifyOrgName = async (orgName: string, octokit: Octokit) => { \\n ---|--- \\n 2| try { \\n 3| await octokit.request(\"GET /orgs/{org}\", { \\n 4| headers: { \\n 5| \"X-GitHub-Api-Version\": \"2022-11-28\", \\n 6|" + }, + { + "id": "ART-1276_KNOWLEDGE_NODE-18", + "title": "Using a snap-in to perform an external action | DevRev | Docs", + "text": "--- |\\n| 1 | const verifyOrgName = async (orgName: string, octokit: Octokit) => { |\\n| 2 | try { |\\n| 3 | await octokit.request(\"GET /orgs/{org}\", { |\\n| 4 | headers: { |\\n| 5 | \"X-GitHub-Api-Version\": \"2022-11-28\", |\\n| 6 | }, |\\n| 7 | org: orgName, |\\n| 8 | }); |\\n| 9 | } catch (error) { |\\n| 10 | console.error(error); |\\n| 11 | throw new Error(\"Invalid Organisation Name\"); |\\n| 12 | } |\\n| 13 | }; |\\n```\\n\\nSimilarly, the [GET" + }, + { + "id": "ART-1276_KNOWLEDGE_NODE-17", + "title": "Using a snap-in to perform an external action | DevRev | Docs", + "text": "getOrgAndRepoNames = (paramString: string): string[] => { |\\n| 2 | const paramList = paramString.split(\" \"); |\\n| 3 | if (paramList.length !== 2) { |\\n| 4 | throw new Error(\"Invalid Parameters\"); |\\n| 5 | } |\\n| 6 | const [orgName, repoName] = paramList; |\\n| 7 | return [orgName, repoName]; |\\n| 8 | }; |\\n```\\n\\nThe GitHub REST API () is used to confirm the specified organisation name.\\n\\n```\\n| | |\\n| --- |" + }, + { + "id": "ART-2035_KNOWLEDGE_NODE-28", + "title": "Slack | Integrate | Snap-ins | DevRev", + "text": "maintain one public connection per DevRev organization. Within an organization, one Slack connection can be used across multiple snap-ins and workflows. Creating multiple connections may disrupt existing integrations.\\n* Connecting with Slack enterprise workspace is currently in limited availability. If you have a Slack Enterprise account, please contact DevRev Support to be whitelisted before attempting setup.\\n\\n1. Search and open [Slack](https://marketplace.devrev.ai/one-slack) in the DevRev" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-31", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "text": "Customers](/case-study)\\n* [Snap-In Extensions](https://developer.devrev.ai/public/snapin-development/concepts)\\n* [DevRevU training](/docs/DevRevU)\\n* [Documentation](https://docs.devrev.ai/)\\n* [API References](https://docs.devrev.ai/api/)\\n\\nCompany\\n\\n* [About](/about)\\n* [Events](/events)\\n* [Careers](/careers)\\n* [What Why How](/what-why-how)\\n\\nInitiatives\\n\\n* [Partner Program](/partners)\\n* [Startups Program](/startups)\\n* [Gr.ai.ce](/graice)\\n\\n*" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-0", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "text": "b'SLA status change Slack notifier | 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 +" + }, + { + "id": "ART-968_KNOWLEDGE_NODE-5", + "title": "Rocketium: On call Tagging - Slack", + "text": "created time.\\n\\n'" + }, + { + "id": "ART-2017_KNOWLEDGE_NODE-30", + "title": "SLA status change Slack notifier | Automate | Snap-ins | DevRev", + "text": "snap-in](#configure-the-snapin)\\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* [Marketplace](https://marketplace.devrev.ai/)\\n\\nResources\\n\\n* [Blog](/blog)\\n* [Our" + }, + { + "id": "ART-1411_KNOWLEDGE_NODE-16", + "title": "List Rev Orgs \u2014 DevRev | Docs", + "text": "Status](https://devrev.ai/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n'" + }, + { + "id": "ART-1413_KNOWLEDGE_NODE-14", + "title": "Update Rev Org \u2014 DevRev | Docs", + "text": "Status](https://devrev.ai/status)\\n\\n\\xc2\\xa9 2025 DevRev Inc.\\n\\n'" + } + ] + }, + { + "query_id": "5008d8ba-33fe-4763-b515-5934672610d1", + "query": "how to create tickets in DevRev MVP org", + "retrievals": [ + { + "id": "ART-1979_KNOWLEDGE_NODE-37", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "filters and **Group** conditions across various vistas in DevRev to track specific work, capacity, and more.\\n\\nYou can add custom attributes to tickets to track additional information. For more information on custom attributes, see [object customization](./object-customization).\\n\\nIssues are attached to tickets in order to track efforts with product priorities.\\n\\nCreate a ticket\\n---------------\\n\\n1. Go to **Support** > **Tickets** from the sidebar on the left.\\n2. Click **New Ticket** on" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-38", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "the top-right corner of your screen.\\n3. Add a title and description for your new ticket. You can also attach files related to the ticket in the description.\\n4. Select which part of the company/product this ticket is related to.\\n\\n ![]()\\n5. Enter other attributes for the ticket: change the assignee or accept the default; enter the severity; add any relevant tags to help employees identify any relevant traits of the ticket; select the workspace that the ticket pertains to.\\n6. If there are" + }, + { + "id": "ART-1483_KNOWLEDGE_NODE-21", + "title": "Using a snap-in to perform a DevRev action \u2014 DevRev | Docs", + "text": "devrevSDK.worksCreate({ \\n 17| title: ticketName, \\n 18| body: ticketBody, \\n 19| // The ticket is created in the PROD-1 part. Rename this to match your part. \\n 20| applies_to_part: \"PROD-1\", \\n 21| // The ticket is owned by the DEVU-1 user. Rename this to match the required user. \\n 22| owned_by: [\"DEVU-1\"], \\n 23| type: publicSDK.WorkType.Ticket, \\n 24| }); \\n 25| \\n 26| console.log(response); \\n" + }, + { + "id": "ART-1979_KNOWLEDGE_NODE-23", + "title": "Tickets | Computer for Support Teams | DevRev", + "text": "2025](/docs/changelog/_2025-06-01)\\n + [May 2025](/docs/changelog/_2025-05-01)\\n + [March and April 2025](/docs/changelog/_2025-04-01)\\n + [February 2025](/docs/changelog/_2025-02-01)\\n* [Developer \\xe2\\x86\\x97\\xef\\xb8\\x8f](https://developer.devrev.ai/)\\n* [DevRevU \\xe2\\x86\\x97\\xef\\xb8\\x8f](/docs/DevRevU)\\n\\n + [Product demos](/docs/DevRevU/demos)\\n\\nOn this page\\n\\n* [Attributes](#attributes)\\n* [Create a ticket](#create-a-ticket)\\n* [Tags](#tags)\\n* [Stages](#stages)\\n*" + }, + { + "id": "ART-1832_KNOWLEDGE_NODE-468", + "title": "Create \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1785_KNOWLEDGE_NODE-459", + "title": "Create \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1605_KNOWLEDGE_NODE-461", + "title": "Create \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1832_KNOWLEDGE_NODE-455", + "title": "Create \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-1545_KNOWLEDGE_NODE-519", + "title": "Create (Beta) \u2014 DevRev | Docs", + "text": "response.\\n\\nticket.rev_org string Optional\\n\\nFilters for tickets that are associated with any of the provided Rev organizations.\\n\\nticket.severity enum Optional\\n\\nFilters for tickets with any of the provided severities.\\n\\nAllowed values: blocker high low medium\\nticket.sla_summary.stage enum Optional\\n\\nFilters for records with any of the provided SLA stages.\\n\\nAllowed values: breached completed paused running warning\\nticket.source_channel string Optional\\n\\nFilters for tickets with any" + }, + { + "id": "ART-1447_KNOWLEDGE_NODE-1", + "title": "Tickets and issues \u2014 DevRev | Docs", + "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 *" + } + ] + }, + { + "query_id": "399ad65e-5dd6-473b-9482-ae5444682ad4", + "query": "manage multiple email addresses for one account", + "retrievals": [ + { + "id": "ART-3207_KNOWLEDGE_NODE-57", + "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev", + "text": "connection](#1-create-a-new-connection)\\n* [2. Configure email integration snap-in](#2-configure-email-integration-snapin)\\n* [Next steps for configuration of the snap-in](#next-steps-for-configuration-of-the-snapin)\\n* [Step 1: Add a Primary Email Address](#step-1-add-a-primary-email-address)\\n* [Step 2: Define the Primary Use Case](#step-2-define-the-primary-use-case)\\n* [Step 3: Add Additional Support Emails](#step-3-add-additional-support-emails)\\n* [Step 4: Set the Default Part and" + }, + { + "id": "ART-2045_KNOWLEDGE_NODE-51", + "title": "AirSync | Snap-ins | DevRev", + "text": "email: [a@example.com](mailto:a@example.com) account: **None** | email: [a@example.com](mailto:a@example.com) account: **None** | Existing contact used |\\n| email: [a@example.com](mailto:a@example.com) account: \"Example\" | email: [a@example.com](mailto:a@example.com) account: \"Example\" | Existing contact used |\\n| email: [a@example.com](mailto:a@example.com) account: \"Example\" | email: [a@example.com](mailto:a@example.com) account: **None** | New contact created |\\n| email:" + }, + { + "id": "ART-3207_KNOWLEDGE_NODE-29", + "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev", + "text": "to send emails to the group and is a member of the group and continue.\\n5. In your Gmail account, go to **Settings** > **Accounts and Import** > **Send mail as** and add your group address.\\n6. Grant DevRev additional access to your Google account. Refer to our [privacy policy](/privacy-policy) for more information.\\n\\nEmail connection\\n\\n1. In DevRev app, go to **Integrations** > **Snap-ins** and click **Connections**.\\n2. In the top-right corner, select **+ Connection**, choose **Email" + }, + { + "id": "ART-888_KNOWLEDGE_NODE-49", + "title": "Privacy Policy", + "text": "enterprise, or use your personal email address to register for or access the Services. If an administrator has not already asserted control over your account or access to the Services, you can update the email address associated with your account through your account settings in your profile. Once an administrator asserts control over your account or use of the Services, you will no longer be able to change the email address associated with your account without administrator approval.Please" + }, + { + "id": "ART-3207_KNOWLEDGE_NODE-40", + "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev", + "text": "Description |\\n| --- | --- |\\n| Use the name of the logged-in user as sender | If enabled, replies are sent with the agent\\xe2\\x80\\x99s name. Otherwise, a generic address is used. |\\n| Organization-wide Email Signature | Applied to all emails sent from DevRev and does not override personalized agent signatures. |\\n| Create accounts for new domains | Auto-creates customer accounts if the email is from a new domain such as, Gmail, Yahoo. This feature is disabled by default. |\\n| Allow automations" + }, + { + "id": "ART-3207_KNOWLEDGE_NODE-48", + "title": "Email snap-in configuration | Email | Integrate | Snap-ins | DevRev", + "text": "Changes** to get this confirmation message on the top.\\n\\nOffice 365\\n\\nEmail forwarding requires that the **from** account has a license.\\n\\nYou must be an Exchange administrator or Global administrator in Microsoft 365 to forward emails.\\n\\n1. In the admin center, go to **Users** > **Active users**.\\n2. Select the name of the user whose email you want to forward, then open the **Properties** page.\\n3. On the **Mail** tab, select **Manage email forwarding**.\\n4. On the email forwarding page," + }, + { + "id": "ART-2045_KNOWLEDGE_NODE-25", + "title": "AirSync | Snap-ins | DevRev", + "text": "user email\\\\*\\\\*](#user-has-an-email-but-doesnt-match-any-existing-devrev-user-email)\\n* [\\\\*\\\\*User has an email that matches an existing DevRev email\\\\*\\\\*](#user-has-an-email-that-matches-an-existing-devrev-email)\\n* [Manual user merging](#manual-user-merging)\\n* [\\\\*\\\\*Find duplicated AirSync-created user\\\\*\\\\*](#find-duplicated-airsynccreated-user)\\n* [\\\\*\\\\*Merge duplicated user\\\\*\\\\*](#merge-duplicated-user)\\n* [Account deduplication](#account-deduplication)\\n* [Manual account" + }, + { + "id": "ART-1453_KNOWLEDGE_NODE-11", + "title": "List Accounts \u2014 DevRev | Docs", + "text": "42 \\n 62| } \\n 63| }, \\n 64| \"email\": \"foo\", \\n 65| \"full_name\": \"foo\", \\n 66| \"state\": \"active\" \\n 67| }, \\n 68| \"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\"" + }, + { + "id": "ART-2027_KNOWLEDGE_NODE-24", + "title": "Email | Integrate | Snap-ins | DevRev", + "text": "user perspective](#email-experience-from-an-end-user-perspective)\\n* [Email experience from an support agent perspective](#email-experience-from-an-support-agent-perspective)\\n* [Email notifications](#email-notifications)\\n* [The email composer in Tickets](#the-email-composer-in-tickets)\\n* [Email Bounce Prevention Tip](#email-bounce-prevention-tip)\\n* [Threading](#threading)\\n* [Rate limiting](#rate-limiting)\\n\\n1. [Documentation](/docs)\\n3." + }, + { + "id": "ART-888_KNOWLEDGE_NODE-48", + "title": "Privacy Policy", + "text": "you use an email address provided by an organization (such as your work email address) to access the Services, then the owner of the domain associated with your email address (e.g. your employer) may assert administrative control over your account and use of the Services at a later date. You will be notified if this happens.If you do not want an administrator to be able to assert control over your account or use of the Services, you should deactivate your membership with the relevant" + } + ] + }, + { + "query_id": "5fba19b8-8d24-4148-afb1-27629d9080be", + "query": "how to install PLuG website installation PLuG ID setup guide", + "retrievals": [ + { + "id": "ART-2893_KNOWLEDGE_NODE-2", + "title": "Install the Web SDK \u2014 DevRev | Docs", + "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" + }, + { + "id": "ART-2059_KNOWLEDGE_NODE-7", + "title": "Install PLuG chat on your website", + "text": "these steps.\\n\\nIn DevRev, go to Settings. > Support. > PLuG Settings. through the settings icon in the top-left corner.\\nClick Enable PLuG Widget. if it isn\\'t already enabled.\\nCopy your Unique App ID. from the Configuration tab..\\nSetup for HTML.\\n\\nPlace this code in the head of your HTML page.\\n\\n1 //\\n2 < script\\n3 type = \"text/javascript\"\\n4 src = \"https://plug-platform.devrev.ai/static/plug.js\"\\n5 > \\n\\nPlace this code in the body of your HTML page.\\n\\n1 < script >\\n2" + }, + { + "id": "ART-2059_KNOWLEDGE_NODE-9", + "title": "Install PLuG chat on your website", + "text": "App.js.\\n\\n1 useEffect ( () => {\\n2 window. plugSDK. init ({\\n3 // Please ensure you replace the app_id with your unique app id\\n4 app_id : \"\" ,\\n5 });\\n6 }, []);\\n\\nYou should now have PLuG chat widget installed on your website. Facing some issues? Reach out to us through our own PLuG chat widget from the bottom right of your screen.\\n\\nOnce the widget is installed on your website, every user who visits your website is considered an anonymous user. Anonymous users are the" + }, + { + "id": "ART-2893_KNOWLEDGE_NODE-1", + "title": "Install the Web SDK \u2014 DevRev | Docs", + "text": "ID\\n\\nYou can access your app ID from your DevRev account by following these steps:\\n\\n 1. In DevRev, go to **Settings > Support > PLuG Settings** via the settings icon in the top-left corner.\\n\\n 2. If the PLuG feature is not already enabled, click **Enable PLuG**.\\n\\n 3. Under the **Configuration** tab, copy the **Unique App ID**.\\n\\n###### Setup\\n\\n###### Setup for React\\n\\nPlace the following code in the `` section of your HTML page:\\n\\n[code]\\n\\n 1| |\\n```\\n\\nPlace the following code in the `` section of your HTML page:\\n\\n```\\n| | |\\n| --- | --- |\\n| 1 | \\n[/code] \\n \\nPlace the following code in the `` section of your HTML page:\\n\\n[code]\\n\\n 1| | ``` You can modify the keydown event listener to bind it to other" + }, + { + "id": "ART-4206_KNOWLEDGE_NODE-21", + "title": "Agents async API | DevRev | Docs", + "text": "you\\xe2\\x80\\x99re using DevRev workflows: ##### The workflow engine handles the async API calls for you when using the Talk To Agent node. 1. Add the \\xe2\\x80\\x9cTalk To Agent\\xe2\\x80\\x9d node to your workflow 2. Configure it with your agent ID 3. Connect it to response nodes to process the agent\\xe2\\x80\\x99s output 4. The async API is used automatically by the workflow engine Troubleshooting --------------- ##### Common issues and their solutions **Not receiving" + }, + { + "id": "ART-12391_KNOWLEDGE_NODE-27", + "title": "Conversational workflows | Workflows | Computer by DevRev | DevRev", + "text": "workflow. Now, your workflow runs whenever a conversation or a ticket gets created and it assigns it to an AI agent, which handles the conversation. No brittle rules. Find below a detailed explanation of all the fields needed to configure in the \"Talk to Agent\" Step | Parameter | Type | Description | | --- | --- | --- | | agent | String | ID of the AI agent to use. Use the dropdown to select one. | | object | String | ID of the conversation or ticket where the agent operate.s | |" + }, + { + "id": "ART-2897_KNOWLEDGE_NODE-2", + "title": "Methods \u2014 DevRev | Docs", + "text": "conversation](/public/sdks/web/methods#start-conversation) * [Shutdown](/public/sdks/web/methods#shutdown) * [Initialize the search agent](/public/sdks/web/methods#initialize-the-search-agent) * [Toggle search agent](/public/sdks/web/methods#toggle-search-agent) * [Check Search Agent status](/public/sdks/web/methods#check-search-agent-status) * [Prefill search query in search agent](/public/sdks/web/methods#prefill-search-query-in-search-agent) * [Add session" + }, + { + "id": "ART-15509_KNOWLEDGE_NODE-1", + "title": "Methods | DevRev | Docs", + "text": "conversation](/sdks/web/methods#start-conversation) * [Shutdown](/sdks/web/methods#shutdown) * [Initialize the search agent](/sdks/web/methods#initialize-the-search-agent) * [Toggle search agent](/sdks/web/methods#toggle-search-agent) * [Check Search Agent status](/sdks/web/methods#check-search-agent-status) * [Prefill search query in search agent](/sdks/web/methods#prefill-search-query-in-search-agent) * [Add session properties](/sdks/web/methods#add-session-properties) * [Get session" + }, + { + "id": "ART-1466_KNOWLEDGE_NODE-26", + "title": "Methods \u2014 DevRev | Docs", + "text": "agent. Calling the initSearchAgent() method sets up the PLuG search agent on your website. This initialization is required before performing any other actions with the PLuG widget SDK. 1 useEffect ( () => { 2 window. plugSDK. init ( { 3 app_id : \\' \\' , 4 disable_plug_chat_window : true , 5 } ) ; 6 7 window. plugSDK. onEvent ( ( payload ) => { 8 if ( payload. type === \\' ON_PLUG_WIDGET_READY \\' ) { 9 window. plugSDK. initSearchAgent () ; 10 } 11 } ) ; 12 } , []) ;" + }, + { + "id": "ART-2897_KNOWLEDGE_NODE-14", + "title": "Methods \u2014 DevRev | Docs", + "text": "to the user. * `ON_CONVERSATION_START`: Indicates that the user has started a new conversation. * `ON_SEARCH_AGENT_QUERY`: Indicates that a new search query has been made in the PLuG search agent. * `ON_OBSERVABILITY_READY`: Triggered when the session analytics capabilities of PLuG are initialized. [code] 1| useEffect(() => { ---|--- 2| window.plugSDK.onEvent((payload) => { 3| if (payload.type === PAYLOAD_TYPE) { 4| //Your logic goes" + }, + { + "id": "ART-1466_KNOWLEDGE_NODE-27", + "title": "Methods \u2014 DevRev | Docs", + "text": "Toggle search agent. The toggleSearchAgent method allows you to control the visibility of the search agent. If no input is provided, the method toggles the search bar: opening it if it\\xe2\\x80\\x99s closed, and closing it if it\\xe2\\x80\\x99s open. 1 window. plugSDK. toggleSearchAgent ( true ) ; Prefill search query in search agent. Use the prefillSearchQuery method to prefill a search query when opening and initializing the search agent. 1 window. plugSDK. prefillSearchQuery ( \"" + }, + { + "id": "ART-1270_KNOWLEDGE_NODE-1", + "title": "Methods \u2014 DevRev | Docs", + "text": "widget. plugSDK.initSearchAgent() Initialize PLuG search agent. plugSDK.shutdown() End the user session which is currently initialized in PLuG widget. plugSDK.toggleWidget() Open/close the chat widget. plugSDK.toggleSearchAgent() Open/close the search agent. plugSDK.onEvent() Perform specific actions based on the payload type received from the PLuG widget. plugSDK.toggleTheme(\\'light/dark\\') Toggle PLuG widget theme. plugSDK.toggleWidget(true, \\'create_conversation\\'," + }, + { + "id": "ART-2894_KNOWLEDGE_NODE-7", + "title": "Install PLuG search \u2014 DevRev | Docs", + "text": "toggle the search agent. Here\\xe2\\x80\\x99s an example implementation: ###### Setup ###### Setup for React [code] 1| [/code] Place the following code in the `` section of your HTML page: [code] 1| [/code] The PLuG widget should now be installed on" + }, + { + "id": "ART-2059_KNOWLEDGE_NODE-7", + "title": "Install PLuG chat on your website", + "text": "these steps. In DevRev, go to Settings. > Support. > PLuG Settings. through the settings icon in the top-left corner. Click Enable PLuG Widget. if it isn\\'t already enabled. Copy your Unique App ID. from the Configuration tab.. Setup for HTML. Place this code in the head of your HTML page. 1 // 2 < script 3 type = \"text/javascript\" 4 src = \"https://plug-platform.devrev.ai/static/plug.js\" 5 > Place this code in the body of your HTML page. 1 < script > 2" + }, + { + "id": "ART-2059_KNOWLEDGE_NODE-8", + "title": "Install PLuG chat on your website", + "text": "window.plugSDK.init({ 3 // Please ensure you replace the app_id with your unique app id 4 app_id: \"\", 5 }); 6 Setup for React. Place this in public/index.html file, inside the body tag of your HTML page. 1 ; Place this code inside the react component where you want to render the chat widget. Typically you should do it as top level component like" + }, + { + "id": "ART-2059_KNOWLEDGE_NODE-9", + "title": "Install PLuG chat on your website", + "text": "App.js. 1 useEffect ( () => { 2 window. plugSDK. init ({ 3 // Please ensure you replace the app_id with your unique app id 4 app_id : \"\" , 5 }); 6 }, []); You should now have PLuG chat widget installed on your website. Facing some issues? Reach out to us through our own PLuG chat widget from the bottom right of your screen. Once the widget is installed on your website, every user who visits your website is considered an anonymous user. Anonymous users are the" + }, + { + "id": "ART-2893_KNOWLEDGE_NODE-1", + "title": "Install the Web SDK \u2014 DevRev | Docs", + "text": "ID You can access your app ID from your DevRev account by following these steps: 1. In DevRev, go to **Settings > Support > PLuG Settings** via the settings icon in the top-left corner. 2. If the PLuG feature is not already enabled, click **Enable PLuG**. 3. Under the **Configuration** tab, copy the **Unique App ID**. ###### Setup ###### Setup for React Place the following code in the `` section of your HTML page: [code] 1| | ``` Place the following code in the `` section of your HTML page: ``` | | | | --- | --- | | 1 | | ``` Place the following code in the `` section of your HTML page: ``` | | | | --- | --- | | 1 | [/code] Place the following code in the `` section of your HTML page: [code] 1|