# Table of Contents - [Answer with Citations - Onyx Documentation](#answer-with-citations-onyx-documentation) - [Basic Auth Setup - Onyx Documentation](#basic-auth-setup-onyx-documentation) - [Answer with Quote - Onyx Documentation](#answer-with-quote-onyx-documentation) - [Configuring Onyx - Onyx Documentation](#configuring-onyx-onyx-documentation) - [Ingestion API - Onyx Documentation](#ingestion-api-onyx-documentation) - [Chrome Extension - Onyx Documentation](#chrome-extension-onyx-documentation) - [Airtable Connector - Onyx Documentation](#airtable-connector-onyx-documentation) - [Asana Connector - Onyx Documentation](#asana-connector-onyx-documentation) - [BookStack Connector - Onyx Documentation](#bookstack-connector-onyx-documentation) - [Confluence Connector - Onyx Documentation](#confluence-connector-onyx-documentation) - [ClickUp Connector - Onyx Documentation](#clickup-connector-onyx-documentation) - [Discord Connector - Onyx Documentation](#discord-connector-onyx-documentation) - [Dropbox Connector (Beta) - Onyx Documentation](#dropbox-connector-beta-onyx-documentation) - [Discourse Connector - Onyx Documentation](#discourse-connector-onyx-documentation) - [Document360 Connector - Onyx Documentation](#document360-connector-onyx-documentation) - [Egnyte Connector - Onyx Documentation](#egnyte-connector-onyx-documentation) - [File Connector - Onyx Documentation](#file-connector-onyx-documentation) - [Fireflies Connector - Onyx Documentation](#fireflies-connector-onyx-documentation) - [Freshdesk Connector - Onyx Documentation](#freshdesk-connector-onyx-documentation) - [GitBook Connector - Onyx Documentation](#gitbook-connector-onyx-documentation) - [GitHub Connector - Onyx Documentation](#github-connector-onyx-documentation) - [GitLab Connector - Onyx Documentation](#gitlab-connector-onyx-documentation) - [OAuth Setup - Onyx Documentation](#oauth-setup-onyx-documentation) - [Gmail Connector Overview - Onyx Documentation](#gmail-connector-overview-onyx-documentation) - [Service Account Setup - Onyx Documentation](#service-account-setup-onyx-documentation) - [Gong Connector - Onyx Documentation](#gong-connector-onyx-documentation) - [OAuth Setup - Onyx Documentation](#oauth-setup-onyx-documentation) - [Google Drive Connector Overview - Onyx Documentation](#google-drive-connector-overview-onyx-documentation) - [Service Account Setup - Onyx Documentation](#service-account-setup-onyx-documentation) - [Google Storage Connector - Onyx Documentation](#google-storage-connector-onyx-documentation) - [Google Sites Connector - Onyx Documentation](#google-sites-connector-onyx-documentation) - [Guru Connector - Onyx Documentation](#guru-connector-onyx-documentation) - [Highspot Connector - Onyx Documentation](#highspot-connector-onyx-documentation) - [HubSpot Connector - Onyx Documentation](#hubspot-connector-onyx-documentation) - [Notion Connector - Onyx Documentation](#notion-connector-onyx-documentation) - [Jira Connector - Onyx Documentation](#jira-connector-onyx-documentation) - [Connector Overview - Onyx Documentation](#connector-overview-onyx-documentation) - [R2 Connector - Onyx Documentation](#r2-connector-onyx-documentation) - [Linear Connector - Onyx Documentation](#linear-connector-onyx-documentation) - [Request Tracker Connector - Onyx Documentation](#request-tracker-connector-onyx-documentation) - [Oracle Storage Connector - Onyx Documentation](#oracle-storage-connector-onyx-documentation) - [Productboard Connector - Onyx Documentation](#productboard-connector-onyx-documentation) - [Salesforce Connector - Onyx Documentation](#salesforce-connector-onyx-documentation) - [Slab Connector - Onyx Documentation](#slab-connector-onyx-documentation) - [S3 Connector - Onyx Documentation](#s3-connector-onyx-documentation) - [Sharepoint Connector - Onyx Documentation](#sharepoint-connector-onyx-documentation) - [Slack Connector - Onyx Documentation](#slack-connector-onyx-documentation) - [Teams Connector - Onyx Documentation](#teams-connector-onyx-documentation) - [Web Connector - Onyx Documentation](#web-connector-onyx-documentation) - [Zendesk Connector - Onyx Documentation](#zendesk-connector-onyx-documentation) - [Zulip Connector - Onyx Documentation](#zulip-connector-onyx-documentation) - [Contact Us - Onyx Documentation](#contact-us-onyx-documentation) - [Advanced Curator Examples - Onyx Documentation](#advanced-curator-examples-onyx-documentation) - [Enterprise Edition Configuration - Onyx Documentation](#enterprise-edition-configuration-onyx-documentation) - [Curator Role Overview - Onyx Documentation](#curator-role-overview-onyx-documentation) - [Curator Setup Example for Admins - Onyx Documentation](#curator-setup-example-for-admins-onyx-documentation) - [Bring Your Own Analytics - Onyx Documentation](#bring-your-own-analytics-onyx-documentation) - [Permissioning - Onyx Documentation](#permissioning-onyx-documentation) --- # Answer with Citations - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Cloud APIs Answer with Citations POST / chat / send-message-simple-api Try it 200 422 { "answer": "", "answer_citationless": "", "simple_search_docs": [\ {\ "semantic_identifier": "",\ "link": "",\ "blurb": "",\ "match_highlights": [\ ""\ ],\ "source_type": "ingestion_api"\ }\ ], "error_msg": "" } #### Authorizations [​](#authorization-fastapiusersauth) fastapiusersauth string cookie required #### Body application/json Before creating messages, be sure to create a chat\_session and get an id Note, for simplicity this option only allows for a single linear chain of messages [​](#body-chat-session-id) chat\_session\_id integer required [​](#body-message) message string required [​](#body-retrieval-options) retrieval\_options object Show child attributes [​](#body-retrieval-options-run-search) retrieval\_options.run\_search enum default:always An enumeration. Available options: `always`, `never`, `auto` [​](#body-retrieval-options-real-time) retrieval\_options.real\_time boolean default:true [​](#body-retrieval-options-filters) retrieval\_options.filters object Show child attributes [​](#body-retrieval-options-filters-source-type) retrieval\_options.filters.source\_type enum\[\] An enumeration. Available options: `ingestion_api`, `slack`, `web`, `google_drive`, `gmail`, `requesttracker`, `github`, `gitlab`, `guru`, `bookstack`, `confluence`, `discourse`, `slab`, `salesforce`, `jira`, `productboard`, `file`, `notion`, `zulip`, `linear`, `hubspot`, `document360`, `gong`, `google_sites`, `zendesk`, `loopio`, `sharepoint`, `teams`, `freshdesk`, `fireflies` [​](#body-retrieval-options-filters-document-set) retrieval\_options.filters.document\_set string\[\] [​](#body-retrieval-options-filters-time-cutoff) retrieval\_options.filters.time\_cutoff string [​](#body-retrieval-options-filters-tags) retrieval\_options.filters.tags object\[\] Show child attributes [​](#body-retrieval-options-filters-tags-tag-key) retrieval\_options.filters.tags.tag\_key string required [​](#body-retrieval-options-filters-tags-tag-value) retrieval\_options.filters.tags.tag\_value string required [​](#body-retrieval-options-enable-auto-detect-filters) retrieval\_options.enable\_auto\_detect\_filters boolean [​](#body-retrieval-options-offset) retrieval\_options.offset integer [​](#body-retrieval-options-limit) retrieval\_options.limit integer [​](#body-query-override) query\_override string [​](#body-search-doc-ids) search\_doc\_ids integer\[\] #### Response 200 200422 application/json Successful Response [​](#response-answer) answer string [​](#response-answer-citationless) answer\_citationless string [​](#response-simple-search-docs) simple\_search\_docs object\[\] Show child attributes [​](#response-simple-search-docs-semantic-identifier) simple\_search\_docs.semantic\_identifier string required [​](#response-simple-search-docs-blurb) simple\_search\_docs.blurb string required [​](#response-simple-search-docs-match-highlights) simple\_search\_docs.match\_highlights string\[\] required [​](#response-simple-search-docs-source-type) simple\_search\_docs.source\_type enum required An enumeration. Available options: `ingestion_api`, `slack`, `web`, `google_drive`, `gmail`, `requesttracker`, `github`, `gitlab`, `guru`, `bookstack`, `confluence`, `discourse`, `slab`, `salesforce`, `jira`, `productboard`, `file`, `notion`, `zulip`, `linear`, `hubspot`, `document360`, `gong`, `google_sites`, `zendesk`, `loopio`, `sharepoint`, `teams`, `freshdesk`, `fireflies` [​](#response-simple-search-docs-link) simple\_search\_docs.link string [​](#response-error-msg) error\_msg string [Answer with Quote](/apis/answer_with_quote) [Enterprise Edition Overview](/enterprise_edition/overview) 200 422 { "answer": "", "answer_citationless": "", "simple_search_docs": [\ {\ "semantic_identifier": "",\ "link": "",\ "blurb": "",\ "match_highlights": [\ ""\ ],\ "source_type": "ingestion_api"\ }\ ], "error_msg": "" } --- # Basic Auth Setup - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Auth Basic Auth Setup Below details how to setup Onyx with basic username/password auth. While this is the easiest way to get started, we recommend picking Google OAuth / OIDC / SAML in the long term (if possible). If you have any questions, don’t hesitate to [reach out to us](https://docs.onyx.app/contact_us) - we’re more than happy to help you pick which auth approach is best for your organization. [​](#env-variables) Env Variables ------------------------------------ In your `.env` file, make sure you have the following value set: AUTH_TYPE=basic If you don’t want to require email verification, then you’re done! After restarting Onyx, you should see the following screen appear on your next visit: [​](#email-verification) Email Verification ---------------------------------------------- With Email verification enabled, users will not be able to interact with Onyx until they have proven that they are the owner of the email address used to sign up. Specifically, when setup an email will be sent to all new sign ups with a “link to verify”. To setup email verification, you can add the following to your `.env` file: AUTH_TYPE=basic REQUIRE_EMAIL_VERIFICATION=true SMTP_USER= e.g. noreply@onyx.app SMTP_PASS= # The below is only needed if not using a Google-powered email account SMTP_SERVER= SMTP_PORT= # default value is 587 The email account specified by `SMTP_USER` / `SMTP_PASS` will be used to send the verification emails to new sign ups. If using a gmail-powered account, you will need to allow username / password login by third party services. To do this, you can follow the official guide from Google [here](https://support.google.com/accounts/answer/6010255?hl=en#zippy=%2Cif-less-secure-app-access-is-off-for-your-account%2Cif-less-secure-app-access-is-on-for-your-account) . [Deploy on Digital Ocean](/production/digitalocean) [Google OAuth Setup](/google_oauth_setup) On this page * [Env Variables](#env-variables) * [Email Verification](#email-verification) --- # Answer with Quote - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Cloud APIs Answer with Quote POST / query / answer-with-quote Try it 200 422 { "answer": "", "rephrase": "", "quotes": { "quotes": [\ {\ "quote": "",\ "document_id": "",\ "link": "",\ "source_type": "",\ "semantic_identifier": "",\ "blurb": ""\ }\ ] }, "citations": [\ {\ "citation_num": 123,\ "document_id": ""\ }\ ], "docs": { "top_documents": [\ {\ "document_id": "",\ "chunk_ind": 123,\ "semantic_identifier": "",\ "link": "",\ "blurb": "",\ "source_type": "ingestion_api",\ "boost": 123,\ "hidden": true,\ "metadata": {},\ "score": 0,\ "match_highlights": [\ ""\ ],\ "updated_at": "2023-11-07T05:31:56Z",\ "primary_owners": [\ ""\ ],\ "secondary_owners": [\ ""\ ],\ "db_doc_id": 123\ }\ ], "rephrased_query": "", "predicted_flow": "search", "predicted_search": "keyword", "applied_source_filters": [\ "ingestion_api"\ ], "applied_time_cutoff": "2023-11-07T05:31:56Z", "recency_bias_multiplier": 123 }, "llm_chunks_indices": [\ 123\ ], "error_msg": "", "answer_valid": true, "chat_message_id": 123, "contexts": { "contexts": [\ {\ "content": "",\ "document_id": "",\ "semantic_identifier": "",\ "blurb": ""\ }\ ] } } #### Authorizations [​](#authorization-fastapiusersauth) fastapiusersauth string cookie required #### Body application/json [​](#body-messages) messages object\[\] required Show child attributes [​](#body-messages-message) messages.message string required [​](#body-messages-sender) messages.sender string [​](#body-messages-role) messages.role enum default:user An enumeration. Available options: `system`, `user`, `assistant` [​](#body-persona-id) persona\_id integer required [​](#body-prompt-id) prompt\_id integer [​](#body-retrieval-options) retrieval\_options object Show child attributes [​](#body-retrieval-options-run-search) retrieval\_options.run\_search enum default:always An enumeration. Available options: `always`, `never`, `auto` [​](#body-retrieval-options-real-time) retrieval\_options.real\_time boolean default:true [​](#body-retrieval-options-filters) retrieval\_options.filters object Show child attributes [​](#body-retrieval-options-filters-source-type) retrieval\_options.filters.source\_type enum\[\] An enumeration. Available options: `ingestion_api`, `slack`, `web`, `google_drive`, `gmail`, `requesttracker`, `github`, `gitlab`, `guru`, `bookstack`, `confluence`, `discourse`, `slab`, `salesforce`, `jira`, `productboard`, `file`, `notion`, `zulip`, `linear`, `hubspot`, `document360`, `gong`, `google_sites`, `zendesk`, `loopio`, `sharepoint`, `teams`, `freshdesk`, `fireflies` [​](#body-retrieval-options-filters-document-set) retrieval\_options.filters.document\_set string\[\] [​](#body-retrieval-options-filters-time-cutoff) retrieval\_options.filters.time\_cutoff string [​](#body-retrieval-options-filters-tags) retrieval\_options.filters.tags object\[\] Show child attributes [​](#body-retrieval-options-filters-tags-tag-key) retrieval\_options.filters.tags.tag\_key string required [​](#body-retrieval-options-filters-tags-tag-value) retrieval\_options.filters.tags.tag\_value string required [​](#body-retrieval-options-enable-auto-detect-filters) retrieval\_options.enable\_auto\_detect\_filters boolean [​](#body-retrieval-options-offset) retrieval\_options.offset integer [​](#body-retrieval-options-limit) retrieval\_options.limit integer [​](#body-chain-of-thought) chain\_of\_thought boolean default:false [​](#body-return-contexts) return\_contexts boolean default:false #### Response 200 200422 application/json Successful Response [​](#response-answer) answer string [​](#response-rephrase) rephrase string [​](#response-quotes) quotes object Show child attributes [​](#response-quotes-quotes) quotes.quotes object\[\] required Show child attributes [​](#response-quotes-quotes-quote) quotes.quotes.quote string required [​](#response-quotes-quotes-document-id) quotes.quotes.document\_id string required [​](#response-quotes-quotes-source-type) quotes.quotes.source\_type string required [​](#response-quotes-quotes-semantic-identifier) quotes.quotes.semantic\_identifier string required [​](#response-quotes-quotes-blurb) quotes.quotes.blurb string required [​](#response-quotes-quotes-link) quotes.quotes.link string [​](#response-citations) citations object\[\] Show child attributes [​](#response-citations-citation-num) citations.citation\_num integer required [​](#response-citations-document-id) citations.document\_id string required [​](#response-docs) docs object Show child attributes [​](#response-docs-top-documents) docs.top\_documents object\[\] required Show child attributes [​](#response-docs-top-documents-document-id) docs.top\_documents.document\_id string required [​](#response-docs-top-documents-chunk-ind) docs.top\_documents.chunk\_ind integer required [​](#response-docs-top-documents-semantic-identifier) docs.top\_documents.semantic\_identifier string required [​](#response-docs-top-documents-blurb) docs.top\_documents.blurb string required [​](#response-docs-top-documents-source-type) docs.top\_documents.source\_type enum required An enumeration. Available options: `ingestion_api`, `slack`, `web`, `google_drive`, `gmail`, `requesttracker`, `github`, `gitlab`, `guru`, `bookstack`, `confluence`, `discourse`, `slab`, `salesforce`, `jira`, `productboard`, `file`, `notion`, `zulip`, `linear`, `hubspot`, `document360`, `gong`, `google_sites`, `zendesk`, `loopio`, `sharepoint`, `teams`, `freshdesk`, `fireflies` [​](#response-docs-top-documents-boost) docs.top\_documents.boost integer required [​](#response-docs-top-documents-hidden) docs.top\_documents.hidden boolean required [​](#response-docs-top-documents-metadata) docs.top\_documents.metadata object required Show child attributes [​](#response-docs-top-documents-metadata-key) docs.top\_documents.metadata.{key} stringstring\[\] [​](#response-docs-top-documents-match-highlights) docs.top\_documents.match\_highlights string\[\] required [​](#response-docs-top-documents-db-doc-id) docs.top\_documents.db\_doc\_id integer required [​](#response-docs-top-documents-link) docs.top\_documents.link string [​](#response-docs-top-documents-score) docs.top\_documents.score number default:0 [​](#response-docs-top-documents-updated-at) docs.top\_documents.updated\_at string [​](#response-docs-top-documents-primary-owners) docs.top\_documents.primary\_owners string\[\] [​](#response-docs-top-documents-secondary-owners) docs.top\_documents.secondary\_owners string\[\] [​](#response-docs-recency-bias-multiplier) docs.recency\_bias\_multiplier number required [​](#response-docs-rephrased-query) docs.rephrased\_query string [​](#response-docs-predicted-flow) docs.predicted\_flow enum An enumeration. Available options: `search`, `question-answer` [​](#response-docs-predicted-search) docs.predicted\_search enum An enumeration. Available options: `keyword`, `semantic`, `hybrid` [​](#response-docs-applied-source-filters) docs.applied\_source\_filters enum\[\] An enumeration. Available options: `ingestion_api`, `slack`, `web`, `google_drive`, `gmail`, `requesttracker`, `github`, `gitlab`, `guru`, `bookstack`, `confluence`, `discourse`, `slab`, `salesforce`, `jira`, `productboard`, `file`, `notion`, `zulip`, `linear`, `hubspot`, `document360`, `gong`, `google_sites`, `zendesk`, `loopio`, `sharepoint`, `teams`, `freshdesk`, `fireflies` [​](#response-docs-applied-time-cutoff) docs.applied\_time\_cutoff string [​](#response-llm-chunks-indices) llm\_chunks\_indices integer\[\] [​](#response-error-msg) error\_msg string [​](#response-answer-valid) answer\_valid boolean default:true [​](#response-chat-message-id) chat\_message\_id integer [​](#response-contexts) contexts object Show child attributes [​](#response-contexts-contexts) contexts.contexts object\[\] required Show child attributes [​](#response-contexts-contexts-content) contexts.contexts.content string required [​](#response-contexts-contexts-document-id) contexts.contexts.document\_id string required [​](#response-contexts-contexts-semantic-identifier) contexts.contexts.semantic\_identifier string required [​](#response-contexts-contexts-blurb) contexts.contexts.blurb string required [Ingestion API](/backend_apis/ingestion) [Answer with Citations](/apis/send_message_simple_api) 200 422 { "answer": "", "rephrase": "", "quotes": { "quotes": [\ {\ "quote": "",\ "document_id": "",\ "link": "",\ "source_type": "",\ "semantic_identifier": "",\ "blurb": ""\ }\ ] }, "citations": [\ {\ "citation_num": 123,\ "document_id": ""\ }\ ], "docs": { "top_documents": [\ {\ "document_id": "",\ "chunk_ind": 123,\ "semantic_identifier": "",\ "link": "",\ "blurb": "",\ "source_type": "ingestion_api",\ "boost": 123,\ "hidden": true,\ "metadata": {},\ "score": 0,\ "match_highlights": [\ ""\ ],\ "updated_at": "2023-11-07T05:31:56Z",\ "primary_owners": [\ ""\ ],\ "secondary_owners": [\ ""\ ],\ "db_doc_id": 123\ }\ ], "rephrased_query": "", "predicted_flow": "search", "predicted_search": "keyword", "applied_source_filters": [\ "ingestion_api"\ ], "applied_time_cutoff": "2023-11-07T05:31:56Z", "recency_bias_multiplier": 123 }, "llm_chunks_indices": [\ 123\ ], "error_msg": "", "answer_valid": true, "chat_message_id": 123, "contexts": { "contexts": [\ {\ "content": "",\ "document_id": "",\ "semantic_identifier": "",\ "blurb": ""\ }\ ] } } --- # Configuring Onyx - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Welcome to Onyx Configuring Onyx [​](#common-environment-variables) Common Environment Variables ------------------------------------------------------------------ All of the global configuration options that are not built into the UI are set via environment variables. This page contains an exhaustive list of all the options. There are defaults set in the code so changing/settings these values is **not required** to use Onyx. A few notable settings that are more frequently changed however are the following: * AUTH\_TYPE (default value is `disabled`) * MULTILINGUAL\_QUERY\_EXPANSION (you can provide a comma separated list of languages for query rephrasing such as `English,French`) * LOG\_LEVEL (default is `info`) * WEB\_DOMAIN (your full url in production, including the protocol- e.g. `https://www.onyx.app`) [​](#docker-compose) Docker Compose -------------------------------------- There are several ways to configure environment variables for the containers. For Docker Compose, there are many ways to pass environment variables to the container, any of the standard approaches will work. However **the preferred approach** for Onyx is to use the `.env` file. To do this, create a file called `.env` at `onyx/deployment/docker_compose/.env`. From there, populate it with the values you want to override: # Configures basic email/password based login AUTH_TYPE="basic" # Rephrasing the query into different languages to improve search recall MULTILINGUAL_QUERY_EXPANSION="English,Spanish,German" # Set a cheaper/faster LLM for the flows that are easier (such as translating the query etc.) FAST_GEN_AI_MODEL_VERSION="gpt-3.5-turbo" # Setting more verbose logging LOG_LEVEL="debug" LOG_ALL_MODEL_INTERACTIONS="true" [​](#kubernetes) Kubernetes ------------------------------ For Kubernetes, the deployment yaml files includes an Environment ConfigMap. Simply update the values in the file [here](https://github.com/onyx-dot-app/onyx/blob/main/deployment/kubernetes/env-configmap.yaml) . [​](#all-environment-variables) All Environment Variables ------------------------------------------------------------ This is an extensive list of the currently supported environment variables within Onyx. There are several classes of environment variables. All of the global configuration options that are not built into the UI are set via environment variables. You can set these in your `.env` file. ### [​](#auth-settings) Auth Settings These variables control authentication and user management in Onyx. #### [​](#auth-type) AUTH\_TYPE Controls the authentication method used by Onyx. `disabled`: No authentication is required. `google_oauth`: Users can log in using their Google accounts. `basic`: Standard username/password authentication. `oidc`: OpenID Connect, available in the enterprise edition. `saml`: Security Assertion Markup Language, available in the enterprise edition. #### [​](#session-expire-time-seconds) SESSION\_EXPIRE\_TIME\_SECONDS Defines the duration of a user’s session in seconds. Default is 24 hours. #### [​](#encryption-key-secret) ENCRYPTION\_KEY\_SECRET A strong, unique string used for encryption purposes. Keep this value secret. #### [​](#valid-email-domains) VALID\_EMAIL\_DOMAINS Comma-separated list of allowed email domains for authentication. Leave empty to allow all domains. #### [​](#google-oauth-client-id) GOOGLE\_OAUTH\_CLIENT\_ID Client ID for Google OAuth authentication, obtained from [Google Cloud Console](https://console.cloud.google.com) . #### [​](#google-oauth-client-secret) GOOGLE\_OAUTH\_CLIENT\_SECRET Client Secret for Google OAuth authentication, obtained from [Google Cloud Console](https://console.cloud.google.com) . Keep this value secret. #### [​](#require-email-verification) REQUIRE\_EMAIL\_VERIFICATION When set to `true`, users must verify their email before accessing Onyx. #### [​](#smtp-server) SMTP\_SERVER Hostname of the SMTP server for sending verification emails. Default is `smtp.gmail.com`. #### [​](#smtp-port) SMTP\_PORT Port used for SMTP communication. Common values are `587` (TLS) or `465` (SSL). #### [​](#smtp-user) SMTP\_USER Username for SMTP authentication, often an email address used to send verification emails. #### [​](#smtp-pass) SMTP\_PASS Password for SMTP authentication. Keep this value secret. #### [​](#email-from) EMAIL\_FROM Email address used as the sender for verification emails. #### [​](#next-public-forgot-password-enabled) NEXT\_PUBLIC\_FORGOT\_PASSWORD\_ENABLED Set to `true` to enable the forgot password feature. Only enable this if you have configured the above SMTP settings (For email functionality). ### [​](#gen-ai-settings) Gen AI Settings These variables configure the generative AI capabilities of Onyx. These are covered in more depth at the [generative AI configs](/gen_ai_configs/overview) . #### [​](#gen-ai-model-provider) GEN\_AI\_MODEL\_PROVIDER Specifies the provider of the generative AI model (e.g., `openai`, `anthropic`, `huggingface`). #### [​](#gen-ai-model-version) GEN\_AI\_MODEL\_VERSION Defines the version of the generative AI model to use (e.g., `gpt-4` for OpenAI). #### [​](#fast-gen-ai-model-version) FAST\_GEN\_AI\_MODEL\_VERSION Specifies a faster (usually smaller) model version for certain tasks. #### [​](#gen-ai-api-key) GEN\_AI\_API\_KEY API key for accessing the generative AI service. Keep this value secret. #### [​](#gen-ai-llm-provider-type) GEN\_AI\_LLM\_PROVIDER\_TYPE Specifies the type of LLM provider being used (e.g., `openai`, `anthropic`, `azure`). #### [​](#gen-ai-max-tokens) GEN\_AI\_MAX\_TOKENS Maximum number of tokens to generate in AI responses. #### [​](#qa-timeout) QA\_TIMEOUT Timeout for question-answering operations in seconds. #### [​](#max-chunks-fed-to-chat) MAX\_CHUNKS\_FED\_TO\_CHAT Maximum number of document chunks fed into a single chat session. #### [​](#disable-llm-filter-extraction) DISABLE\_LLM\_FILTER\_EXTRACTION Set to `true` to disable LLM-based filter extraction from queries. #### [​](#disable-llm-chunk-filter) DISABLE\_LLM\_CHUNK\_FILTER Set to `true` to disable LLM-based filtering of document chunks. #### [​](#disable-llm-choose-search) DISABLE\_LLM\_CHOOSE\_SEARCH Set to `true` to disable LLM-based selection of search method. #### [​](#disable-llm-query-rephrase) DISABLE\_LLM\_QUERY\_REPHRASE Set to `true` to disable LLM-based query rephrasing. #### [​](#disable-generative-ai) DISABLE\_GENERATIVE\_AI Set to `true` to disable all generative AI functionality. #### [​](#disable-litellm-streaming) DISABLE\_LITELLM\_STREAMING Set to `true` to disable streaming responses when using LiteLLM. #### [​](#litellm-extra-headers) LITELLM\_EXTRA\_HEADERS JSON-formatted string of key-value pairs for additional headers in LiteLLM API requests. #### [​](#token-budget-globally-enabled) TOKEN\_BUDGET\_GLOBALLY\_ENABLED Set to `true` to enable the global token budget system. ### [​](#aws-bedrock-settings) AWS Bedrock Settings These variables are used for AWS Bedrock integration. #### [​](#aws-access-key-id) AWS\_ACCESS\_KEY\_ID AWS access key ID for Bedrock access, obtained from AWS IAM. #### [​](#aws-secret-access-key) AWS\_SECRET\_ACCESS\_KEY AWS secret access key for Bedrock access, obtained from AWS IAM. Keep this value secret. #### [​](#aws-region-name) AWS\_REGION\_NAME AWS region where Bedrock is deployed (e.g., `us-west-2`). ### [​](#query-options) Query Options These variables control various aspects of query processing and search behavior. #### [​](#doc-time-decay) DOC\_TIME\_DECAY Controls the recency bias in search results. Higher values increase preference for newer documents. #### [​](#hybrid-alpha) HYBRID\_ALPHA Balances keyword vs. vector search in hybrid search. Range 0-1 (0 for pure keyword, 1 for pure vector search). #### [​](#edit-keyword-query) EDIT\_KEYWORD\_QUERY Set to `true` to enable query editing for keyword searches. #### [​](#multilingual-query-expansion) MULTILINGUAL\_QUERY\_EXPANSION Set to `true` to enable multilingual query expansion. #### [​](#qa-prompt-override) QA\_PROMPT\_OVERRIDE Custom prompt text to override the default prompt used for question-answering. ### [​](#other-services) Other Services Configuration for external services used by Onyx. #### [​](#postgres-host) POSTGRES\_HOST Hostname or IP address of the Postgres server. Default is `relational_db`. #### [​](#vespa-host) VESPA\_HOST Hostname or IP address of the Vespa server. Default is `index`. #### [​](#web-domain) WEB\_DOMAIN Fully qualified domain name used for the Onyx web interface. (e.g. [https://www.onyx.com](https://www.onyx.com) ) ### [​](#nlp-model-configurations) NLP Model Configurations Advanced settings for NLP models. Modify with caution. #### [​](#index-batch-size) INDEX\_BATCH\_SIZE Size of batch used when indexing documents. Overrides the default batch size for indexing operations. #### [​](#embedding-batch-size) EMBEDDING\_BATCH\_SIZE Size of batch used when embedding documents during indexing and search operations. Overrides the default batch size for embedding processes. #### [​](#document-encoder-model) DOCUMENT\_ENCODER\_MODEL Name or path of the encoder model used for document encoding. #### [​](#doc-embedding-dim) DOC\_EMBEDDING\_DIM Dimension of document embeddings, typically matching the chosen encoder model’s output dimension. #### [​](#normalize-embeddings) NORMALIZE\_EMBEDDINGS Set to `true` to enable normalization of embeddings. #### [​](#asym-query-prefix) ASYM\_QUERY\_PREFIX Text prepended to queries in asymmetric semantic search. #### [​](#enable-reranking-real-time-flow) ENABLE\_RERANKING\_REAL\_TIME\_FLOW Set to `true` to enable reranking in real-time search flow. #### [​](#enable-reranking-async-flow) ENABLE\_RERANKING\_ASYNC\_FLOW Set to `true` to enable reranking in asynchronous search flow. #### [​](#model-server-host) MODEL\_SERVER\_HOST Hostname or IP address of the model server. Default is `inference_model_server`. #### [​](#model-server-port) MODEL\_SERVER\_PORT Port on which the model server is listening. ### [​](#miscellaneous) Miscellaneous < Various other configuration options. #### [​](#disable-telemetry) DISABLE\_TELEMETRY Set to `true` to opt out of telemetry. Telemetry helps improve Onyx; no sensitive data is collected. #### [​](#log-level) LOG\_LEVEL Sets the logging verbosity. Possible values: `debug`, `info`, `warning`, `error`, `critical`. #### [​](#log-all-model-interactions) LOG\_ALL\_MODEL\_INTERACTIONS Set to `true` to enable logging of all prompts sent to the LLM. #### [​](#log-vespa-timing-information) LOG\_VESPA\_TIMING\_INFORMATION Set to `true` to enable additional logging of Vespa query performance. #### [​](#log-endpoint-latency) LOG\_ENDPOINT\_LATENCY Set to `true` to enable logging of endpoint latency information. [Custom Model Server](/gen_ai_configs/custom_server) [Multilingual Setup](/multilingual_setup) On this page * [Common Environment Variables](#common-environment-variables) * [Docker Compose](#docker-compose) * [Kubernetes](#kubernetes) * [All Environment Variables](#all-environment-variables) * [Auth Settings](#auth-settings) * [AUTH\_TYPE](#auth-type) * [SESSION\_EXPIRE\_TIME\_SECONDS](#session-expire-time-seconds) * [ENCRYPTION\_KEY\_SECRET](#encryption-key-secret) * [VALID\_EMAIL\_DOMAINS](#valid-email-domains) * [GOOGLE\_OAUTH\_CLIENT\_ID](#google-oauth-client-id) * [GOOGLE\_OAUTH\_CLIENT\_SECRET](#google-oauth-client-secret) * [REQUIRE\_EMAIL\_VERIFICATION](#require-email-verification) * [SMTP\_SERVER](#smtp-server) * [SMTP\_PORT](#smtp-port) * [SMTP\_USER](#smtp-user) * [SMTP\_PASS](#smtp-pass) * [EMAIL\_FROM](#email-from) * [NEXT\_PUBLIC\_FORGOT\_PASSWORD\_ENABLED](#next-public-forgot-password-enabled) * [Gen AI Settings](#gen-ai-settings) * [GEN\_AI\_MODEL\_PROVIDER](#gen-ai-model-provider) * [GEN\_AI\_MODEL\_VERSION](#gen-ai-model-version) * [FAST\_GEN\_AI\_MODEL\_VERSION](#fast-gen-ai-model-version) * [GEN\_AI\_API\_KEY](#gen-ai-api-key) * [GEN\_AI\_LLM\_PROVIDER\_TYPE](#gen-ai-llm-provider-type) * [GEN\_AI\_MAX\_TOKENS](#gen-ai-max-tokens) * [QA\_TIMEOUT](#qa-timeout) * [MAX\_CHUNKS\_FED\_TO\_CHAT](#max-chunks-fed-to-chat) * [DISABLE\_LLM\_FILTER\_EXTRACTION](#disable-llm-filter-extraction) * [DISABLE\_LLM\_CHUNK\_FILTER](#disable-llm-chunk-filter) * [DISABLE\_LLM\_CHOOSE\_SEARCH](#disable-llm-choose-search) * [DISABLE\_LLM\_QUERY\_REPHRASE](#disable-llm-query-rephrase) * [DISABLE\_GENERATIVE\_AI](#disable-generative-ai) * [DISABLE\_LITELLM\_STREAMING](#disable-litellm-streaming) * [LITELLM\_EXTRA\_HEADERS](#litellm-extra-headers) * [TOKEN\_BUDGET\_GLOBALLY\_ENABLED](#token-budget-globally-enabled) * [AWS Bedrock Settings](#aws-bedrock-settings) * [AWS\_ACCESS\_KEY\_ID](#aws-access-key-id) * [AWS\_SECRET\_ACCESS\_KEY](#aws-secret-access-key) * [AWS\_REGION\_NAME](#aws-region-name) * [Query Options](#query-options) * [DOC\_TIME\_DECAY](#doc-time-decay) * [HYBRID\_ALPHA](#hybrid-alpha) * [EDIT\_KEYWORD\_QUERY](#edit-keyword-query) * [MULTILINGUAL\_QUERY\_EXPANSION](#multilingual-query-expansion) * [QA\_PROMPT\_OVERRIDE](#qa-prompt-override) * [Other Services](#other-services) * [POSTGRES\_HOST](#postgres-host) * [VESPA\_HOST](#vespa-host) * [WEB\_DOMAIN](#web-domain) * [NLP Model Configurations](#nlp-model-configurations) * [INDEX\_BATCH\_SIZE](#index-batch-size) * [EMBEDDING\_BATCH\_SIZE](#embedding-batch-size) * [DOCUMENT\_ENCODER\_MODEL](#document-encoder-model) * [DOC\_EMBEDDING\_DIM](#doc-embedding-dim) * [NORMALIZE\_EMBEDDINGS](#normalize-embeddings) * [ASYM\_QUERY\_PREFIX](#asym-query-prefix) * [ENABLE\_RERANKING\_REAL\_TIME\_FLOW](#enable-reranking-real-time-flow) * [ENABLE\_RERANKING\_ASYNC\_FLOW](#enable-reranking-async-flow) * [MODEL\_SERVER\_HOST](#model-server-host) * [MODEL\_SERVER\_PORT](#model-server-port) * [Miscellaneous](#miscellaneous) * [DISABLE\_TELEMETRY](#disable-telemetry) * [LOG\_LEVEL](#log-level) * [LOG\_ALL\_MODEL\_INTERACTIONS](#log-all-model-interactions) * [LOG\_VESPA\_TIMING\_INFORMATION](#log-vespa-timing-information) * [LOG\_ENDPOINT\_LATENCY](#log-endpoint-latency) --- # Ingestion API - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Backend APIs Ingestion API ### [​](#typical-uses-for-the-ingestion-api) Typical uses for the Ingestion API A set of backend APIs are provided to take in and process arbitrary document data sent directly to the backend API server. This is generally used for: * Creating arbitrary documents that may not exist in any actual sources but contain useful information. * Programmatically passing in documents to Onyx. This is sometimes simpler than creating a connector. * Editing specific documents in Onyx when the Onyx admin either does not want to or does not have permission to update the original document in the source. * Supplementing existing connector functionalities. For example, passing in README file contents and attributing it to the GitHub or GitLab source type. ### [​](#example-document-ingestion) Example Document Ingestion This example creates a new Document in Onyx of the “Web” type. This document will now show up in Onyx’s search flows like any other webpage pulled in by a Web connector. curl --location 'localhost:8080/onyx-api/ingestion' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer dn_qODmg9r8Nl9PR4R9GF_z1UA0smcwVIcj58Ei0zWA' \ --data '{ "document": { "id": "ingestion_document_1", "sections": [\ {\ "text": "This is the contents of the document that will be processed and saved into the vector+keyword document index. ",\ "link": "https://docs.onyx.app/introduction#what-is-onyx"\ },\ {\ "text": "You can include multiple content sections each with their own link or combine them. ",\ "link": "https://docs.onyx.app/introduction#main-features"\ }\ ], "source": "web", "semantic_identifier": "Onyx Ingestion Example", "metadata": { "tag": "informational", "topics": ["onyx", "api"] }, "doc_updated_at": "2024-04-25T08:20:00Z" }, "cc_pair_id": 1 }' > Note: The Bearer auth token is generated on server startup in Onyx MIT. There is better API Key support as part of Onyx EE. See below for a breakdown of the different fields provided: * `id`: this is the unique ID of the document, if a document of this ID exists it will be updated/replaced. If not provided, a document ID is generated from the semantic\_identifier field instead and returned in the response. * `sections`: list of sections each containing textual content and an optional link. The document chunking tries to avoid splitting sections internally and favors splitting at section borders. Also the link of the document at query time is the link of the best matched section. * `source`: Source type, full list can be checked by searching for DocumentSource [here](https://github.com/onyx-dot-app/onyx/blob/main/backend/onyx/configs/constants.py) * `semantic_identifier`: This is the “Title” of the document as shown in the UI (see image below) * `metadata`: Used for the “Tags” feature which is displayed in the UI. The values can be either strings or list of strings * `doc_updated_at`: The time that the document was last considered updated. By default there is a time based score decay around this value when the document is considered during search. * `cc_pair_id`: This is the “Connector” ID seen on the Connector Status pages. For example, if running locally, it might be `http://localhost:3000/admin/connector/2`. This allows attaching the ingestion doc to existing connectors so they can be assigned to groups or deleted together with the connector. If not provided or set to `1` explicitly, it is considered part of the default catch-all connector. For even more details, the code for the relevant object is found [here](https://github.com/onyx-dot-app/onyx/blob/main/backend/onyx/connectors/models.py) , called “DocumentBase” ### [​](#checking-ingestion-documents) Checking Ingestion Documents An API is also provided to fetch all of the documents that have been indexed via the Ingestion API [Custom Tools](/tools/custom) [Answer with Quote](/apis/answer_with_quote) On this page * [Typical uses for the Ingestion API](#typical-uses-for-the-ingestion-api) * [Example Document Ingestion](#example-document-ingestion) * [Checking Ingestion Documents](#checking-ingestion-documents) --- # Chrome Extension - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Welcome to Onyx Chrome Extension [​](#onyx-chrome-extension) Onyx Chrome Extension ---------------------------------------------------- Use the Onyx extension to ask questions from anywhere. You can also replace your new-tab page with a custom Onyx page: * Onyx Search on new tabs * Favorite website bookmarks * Onyx as a sidebar to any page in Chrome In the future, the Onyx Chrome Extension will allow you to ask questions about the page you are currently on and optionally index the recent pages into the Onyx knowledge base. You’ll be able to ask questions about recently visited pages via both the extension and the Onyx web app. [​](#setting-up) Setting up ------------------------------ If you are using Onyx Cloud, you can simply install the extension from the Chrome Web Store. The following steps are for users self-hosting Onyx. This feature is only available in Onyx versions v0.19.0 and above. 1. Visit `chrome://extensions/` in your Chrome browser. 2. In the upper right corner, click **Developer mode**. 3. Click **Load unpacked**. 4. Select the folder that is the base of the Onyx Chrome Extension repository (for example, `onyx-chrome-extension`). 5. Click **Load**. 6. You will now have the Onyx Chrome Extension installed. 7. To configure settings, click the … (three dots) next to the extension and select **Options**. 8. Set the Root Domain to your self-hosted Onyx instance’s URL. The Onyx Chrome Extension will now be able to connect to your self-hosted Onyx instance and can be used from any page in Chrome! [​](#chrome-extension-installation-and-update-guide) Chrome Extension Installation and Update Guide ------------------------------------------------------------------------------------------------------ This guide provides instructions for installing, managing, and updating Chrome extensions in both enterprise and self-hosted settings. [​](#enterprise-installation) Enterprise Installation -------------------------------------------------------- Use these guidelines if you need to install and manage the Onyx Chrome Extension for a large group of users using Google Admin. ### [​](#step-1%3A-access-chrome-management) Step 1: Access Chrome Management 1. Log in to your Google Admin console. 2. Navigate to “Devices → Chrome → Apps and extensions”. ### [​](#step-2%3A-install-extension) Step 2: Install Extension 1. Obtain a copy of the custom published Chrome extension from an Onyx team member. They will provide you with the Chrome extension ID. 2. Inside the Admin console’s Apps & extensions page, click the yellow plus icon to add the extension. 3. Specify the Chrome extension ID provided by the Onyx team member. 4. Click **Add** to confirm the installation. ### [​](#step-3%3A-configure-settings) Step 3: Configure Settings 1. In the Google Admin console, under “Devices → Chrome → Apps and extensions”, locate the Onyx Chrome Extension. 2. Click on the extension to access its configuration settings. 3. Here, you can manage various deployment options, such as: * Force installation for all users or specific organizational units * Allow or block the extension for certain users or groups * Configure update settings and version pinning * Set installation policies (e.g., allowed, forced, or blocked) ### [​](#step-4%3A-save-changes) Step 4: Save Changes Don’t forget to save your changes after configuring the extension. [​](#self-hosted-installation) Self-Hosted Installation ---------------------------------------------------------- 1. Clone or download the Onyx Chrome Extension repository. 2. Follow the steps in “Setting up” above to load the unpacked extension. 3. If you wish to serve the extension to a group of users, consider publishing it to the Chrome Web Store (see the next section on publishing) or hosting the CRX file yourself if you want a private distribution. ### [​](#publishing-to-chrome-web-store-optional) Publishing to Chrome Web Store (Optional) Instead of loading the extension manually, you can package your extension and publish it as private or unlisted on the Chrome Web Store, making it available for force-installs or distribution to managed Chrome instances. [​](#updating-extensions) Updating Extensions ------------------------------------------------ Below are strategies to keep the Onyx Chrome Extension up to date. ### [​](#enterprise-updates) Enterprise Updates If you have force-installed the extension through the Admin console, Google Chrome will handle automated updates. Updates typically occur when Chrome launches and then every five hours. If you ever need to pin a specific Onyx Chrome Extension version (for compatibility reasons), you can set “Version pinning” for force-installed extensions within your Admin console. Avoid pinning for extended periods, because pinned extensions do not receive security updates. ### [​](#self-hosted-updates) Self-Hosted Updates 1. In your local Onyx Chrome Extension project, increment your extension’s version in the `manifest.json` file (e.g., from “1.0” to “1.1”). 2. Repack the extension (creating a new CRX file). 3. Replace or update the CRX file where your users install it from (if you’re self-hosting). 4. If you’re force-installing via Group Policy (GPO), update the extension version and URL in your GPO settings so that Chrome knows to download the new CRX. [​](#managing-extensions-in-your-enterprise) Managing Extensions in Your Enterprise -------------------------------------------------------------------------------------- If you manage a large organization, here are options to oversee which extensions users can install and how they’re updated. Many of these guidelines align with enterprise best practices from Google’s documentation on Chrome extension management. ### [​](#overview-of-enterprise-extension-management-policies) Overview of Enterprise Extension Management Policies Several policy-driven strategies can be enforced on managed devices: Extension Install Blocklist --------------------------- Extension Install Allowlist --------------------------- Extension Install Force List ---------------------------- Block External Extensions ------------------------- Extension Allowed Types ----------------------- Extension Install Sources ------------------------- Extension Settings Policy ------------------------- Below is a brief overview of how to enforce these via Google Admin console or Windows Group Policy (GPO). ### [​](#allow-or-block-extensions-from-the-google-admin-console) Allow or Block Extensions from the Google Admin Console 1. Go to Devices → Chrome → Apps & extensions → Users & browsers (or Managed browsers) and select your organizational unit. 2. Under Additional Settings, set your Allow/Block mode. 3. Allow all but block some: “Allow all apps, admin manages blocklist.” 4. Block all but allow some: “Block all apps, admin manages allowlist.” 5. To block or allow one extension, add it by Chrome Web Store URL or by Extension ID. Adjust its status to Block, Allow install, or Force install. ### [​](#force-installing-extensions) Force-Installing Extensions Force-installing an extension ensures users have the extension silently added and cannot remove it: 1. Inside the Admin console/Apps & extensions page, add the extension (via the yellow plus). 2. In the Installation policy dropdown, select Force install. 3. Save changes. Force-installed extensions will automatically update unless you pin them to a specific version. ### [​](#managing-extensions-by-permissions) Managing Extensions by Permissions You can refine extension management by blocking or allowing certain permissions (for example, USB access, cookie access, etc.). 1 Access Settings In the Admin console, go to your organizational unit at Devices → Chrome → Apps & extensions → Users & browsers → Additional settings (gear icon). 2 Set Permissions Under Permissions and URLs, choose which permissions to block or allow. 3 Override Global Settings You can also override global permission settings on a per-extension basis in this section. ### [​](#protect-sensitive-websites%3A-runtime-blocked-hosts) Protect Sensitive Websites: runtime\_blocked\_hosts In many enterprise scenarios, you may want to block extensions from modifying or reading data on specific domains (for instance, internal corporate portals). This is done via runtime\_blocked\_hosts: 1 Access Settings In the Admin console, go to Devices → Chrome → Apps & extensions → Users & browsers → Additional settings (gear icon). 2 Add Blocked Hosts Under “Runtime blocked hosts,” add patterns such as: `*://*.sensitive-domain.com` 3 Add Allowed Hosts (Optional) Under “Runtime allowed hosts,” include host patterns you want to allow if they fall under a larger blocked domain. This effectively prevents most extension-level script injections, web requests, or cookie access on specified sites. ### [​](#group-policy-gpo-method-windows) Group Policy (GPO) Method (Windows) If you’re not using the Admin console, you can still manage Onyx (and other) Chrome extensions via Windows Group Policy: 1 Install Policy Templates Install the Chrome ADM/ADMX policy templates. 2 Access Group Policy Editor Open gpedit.msc → Computer Configuration → Administrative Templates → Google → Google Chrome → Extensions. 3 Configure Policies Configure: - Configure extension installation blocklist (ExtensionInstallBlocklist) - Configure extension installation allowlist (ExtensionInstallAllowlist) - Configure the list of force-installed apps and extensions (ExtensionInstallForcelist) - Extensions Management Settings (ExtensionSettings) 4 Specify Details Use JSON or registry entries to specify details (e.g., blocked\_permissions, runtime\_blocked\_hosts, etc.). For details on each policy, refer to Google’s Chrome Enterprise policy list. [​](#self-hosting-the-onyx-chrome-extension) Self-Hosting the Onyx Chrome Extension -------------------------------------------------------------------------------------- If you want to avoid the Chrome Web Store: 1 Build & Pack the Extension In Chrome, go to chrome://extensions, Enable Developer Mode, then click “Pack Extension.” This creates a CRX file (and a private key PEM). Keep your PEM safe. 2 Host the Files Host the CRX & an Update Manifest XML on your server or intranet. 3 Configure Client Settings Use either Google Admin console or GPO settings to point clients to your CRX update URL so Chrome will install/update automatically. Pros ---- * Control release cycle * Avoid Chrome Web Store listing Cons ---- * Bypasses some security scans * More maintenance overhead [​](#best-practices) Best Practices -------------------------------------- For more detailed information, refer to: * Official Google Chrome Enterprise documentation * Onyx documentation and best practices for self-hosted environments [Slack Bot Setup](/slack_bot_setup) [GenAI Overview](/gen_ai_configs/overview) On this page * [Onyx Chrome Extension](#onyx-chrome-extension) * [Setting up](#setting-up) * [Chrome Extension Installation and Update Guide](#chrome-extension-installation-and-update-guide) * [Enterprise Installation](#enterprise-installation) * [Step 1: Access Chrome Management](#step-1%3A-access-chrome-management) * [Step 2: Install Extension](#step-2%3A-install-extension) * [Step 3: Configure Settings](#step-3%3A-configure-settings) * [Step 4: Save Changes](#step-4%3A-save-changes) * [Self-Hosted Installation](#self-hosted-installation) * [Publishing to Chrome Web Store (Optional)](#publishing-to-chrome-web-store-optional) * [Updating Extensions](#updating-extensions) * [Enterprise Updates](#enterprise-updates) * [Self-Hosted Updates](#self-hosted-updates) * [Managing Extensions in Your Enterprise](#managing-extensions-in-your-enterprise) * [Overview of Enterprise Extension Management Policies](#overview-of-enterprise-extension-management-policies) * [Allow or Block Extensions from the Google Admin Console](#allow-or-block-extensions-from-the-google-admin-console) * [Force-Installing Extensions](#force-installing-extensions) * [Managing Extensions by Permissions](#managing-extensions-by-permissions) * [Protect Sensitive Websites: runtime\_blocked\_hosts](#protect-sensitive-websites%3A-runtime-blocked-hosts) * [Group Policy (GPO) Method (Windows)](#group-policy-gpo-method-windows) * [Self-Hosting the Onyx Chrome Extension](#self-hosting-the-onyx-chrome-extension) * [Best Practices](#best-practices) --- # Airtable Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Airtable Connector [​](#how-it-works) How it works ---------------------------------- The Airtable connector pulls in tables from Airtable. The Airtable connector indexes the table name, table type, and contents of the table. Table updates are pulled in every 24 hours by default. [​](#setup) Setup -------------------- ### [​](#get-your-airtable-pat) Get your Airtable PAT To get your token, follow the instructions [here](https://airtable.com/developers/web/guides/personal-access-tokens) . ### [​](#indexing) Indexing 1. In the Danswer UI, navigate to the Admin Dashboard and select the **Airtable** Connector 2. Create a new credential and paste your Airtable PAT. 3. Fill out the form with the base ID and table ID. You can find these in the URL when viewing the table in Airtable. For example, if the URL is `https://airtable.com/appCXJqDFS4gea8tn/tblRxFQsTlBBZdRY1/viwVUEJjWPd8XYjh8`, then the base ID is `appCXJqDFS4gea8tn` and the table ID is `tblRxFQsTlBBZdRY1`. [Connector Overview](/connectors/overview) [Asana Connector](/connectors/asana) On this page * [How it works](#how-it-works) * [Setup](#setup) * [Get your Airtable PAT](#get-your-airtable-pat) * [Indexing](#indexing) --- # Asana Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Asana Connector [​](#how-it-works) How it works ---------------------------------- The Asana connector pulls in tasks and their associated comments from specified projects or all projects in a workspace. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Create an Asana Personal Access Token: * Log in to your Asana account and go to [https://app.asana.com/0/my-apps](https://app.asana.com/0/my-apps) * Click “Create New Personal Access Token” * Give it a name (e.g., “Onyx Integration”) and create the token * Copy the token - you’ll need to provide this to Onyx ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Asana** Connector 2. Provide the following information: * **Asana API Token**: Paste the Personal Access Token you created earlier * **Workspace ID**: Enter your Asana workspace ID. You can find this at [https://app.asana.com/api/1.0/workspaces](https://app.asana.com/api/1.0/workspaces) . It’s a number that looks like 1234567890123456. * **Project IDs** (optional): If you want to index specific projects, enter their IDs separated by commas. Leave this empty to index all projects in the workspace. Example: 1234567890123456,2345678901234567. You can find a project ID by clicking on a project in Asana. In the URL, it will look like [https://app.asana.com/0/1208338159336610/1208338159510597](https://app.asana.com/0/1208338159336610/1208338159510597) , where “1208338159336610” is the project ID. * **Team ID** (optional): If you want to index team-visible tasks in addition to public tasks, enter a team ID. Leave this empty if you don’t need this feature. 3. Click “Connect” to start the indexing process Note: The connector will respect the permissions of the user associated with the provided API token. Ensure that this user has access to all the projects you want to index. [Airtable Connector](/connectors/airtable) [BookStack Connector](/connectors/bookstack) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # BookStack Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors BookStack Connector [​](#how-it-works) How it works ---------------------------------- The BookStack connector fetches all shelves, books, chapters and pages from the connected instance upon connector setup. From that point on, the connector will pull in everything updated since last sync every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization You will need API credentials for a user in your BookStack instance. To do this: 1. Find or create a user you’d want to use as the connection user. * Visibility of BookStack contents will depend on this user’s permissions. * This user must have a role assigned that has the “Access system API” system permission. 2. Edit that user using an admin account, and find the “API Tokens” section at the bottom of the view. 3. Click the “Create Token” button, then enter a name and (optionally) an expiry date for the token. Then press save. 4. Copy the shown “Token ID” and “Token Secret” values for the “Indexing” section below. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **BookStack** connector. 2. In **Step 1**, provide the base URL of your BookStack instance, along with the API **Token ID** and the API **Token Secret** you obtained in the “Authorization” steps above: 3. Click the `Connect` button! Your content will then be pulled into Onyx every **10** minutes. [Asana Connector](/connectors/asana) [ClickUp Connector](/connectors/clickup) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Confluence Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Confluence Connector The Confluence connector pulls in all pages and comments from the specified spaces/pages once at the beginning and then pulls updates every 10 minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Follow the guide described [here](https://docs.searchunify.com/Content/Content-Sources/Atlassian-Jira-Confluence-Authentication-Create-API-Token.htm) to get an access token. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Confluence** Connector 2. For your credentials, provide the **Access Token** and the **Username** (typically an email) it belongs to: 3. For Confluence setup, you must provide: * **Wiki Base URL**: The base URL of your Confluence instance (e.g., [https://your-domain.atlassian.net/wiki](https://your-domain.atlassian.net/wiki) ) * **Whether you’re using Confluence Cloud or Datacenter**: Check the `Is Cloud` box if you are using a Confluence Cloud instance, uncheck for Confluence Server/Data Center 4. Then choose how you’d like this connector to index your Confluence instance: * Everything: * If you select this option, the connector will index everything the provided credentials have access to. * Space: * Input the key of the space you’d like to index (e.g., `KB`) * Page: * Page ID: Specific page ID to index - leave empty to index the entire space (e.g., `131368` for a specific page) * Index Recursively: Check this box to index the specified page AND all of its children. * CQL Query: * If you’d like finer control over what is indexed, you can use a CQL query. The query must contain ‘type=page’ and any lastmodified filters will be overwritten. See the [CQL documentation](https://developer.atlassian.com/server/confluence/advanced-searching-using-cql/) for more information. 5. Click the `Connect` button! All the specified spaces/pages and related comments will now be pulled into Onyx every **10** minutes. #### [​](#permission-syncing) Permission Syncing If you are an enterprise customer connecting to Confluence Server/Data Center and you would like to enable permission syncing, the provided credentials must be from an admin user. [ClickUp Connector](/connectors/clickup) [Discourse Connector](/connectors/discourse) On this page * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) * [Permission Syncing](#permission-syncing) --- # ClickUp Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors ClickUp Connector [​](#how-it-works) How it works ---------------------------------- The ClickUp connector will pull in all tasks from the ClickUp workspace, or specific space(s), list(s), folder(s) specified by the user. Tasks are updated every **10** minutes. [​](#understanding-clickup-hierarchy) Understanding ClickUp Hierarchy ------------------------------------------------------------------------ In Clickup, there are multiple containers which contain task(s). These could be - * Entire Workspace * Spaces * Folders * Lists Detailed information on the hierarchy of above mentioned objects is available [here](https://help.clickup.com/hc/en-us/articles/13856392825367-Intro-to-the-Hierarchy) [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into ClickUp. 2. In ClickUp 2.0, click your avatar in the lower-left corner and select **Apps**. In ClickUp 3.0, click your avatar in the upper-right corner, select **Settings**, and scroll down to click **Apps** in the sidebar. 3. Under API Token, click **Generate**. 4. A Personal API token will be generated and displayed! ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **ClickUp** Connector 2. In **Step 1**, provide your **API Token** and the **Team ID** from above. 3. Select the type of connector you want to pull in tasks from. **Notes** * This could be Entire Worspace, Space(s), List(s), or Folder(s). * To pull tasks from entire workspace, just select Entire Workspace from the dropdown, and do not add any ID(s). * To pull tasks from specific space(s), folder(s), or lists(s), select the respective option from the dropdown, and add the ID(s) below. At least one ID needs to be added in this case. * The space id(s), folder id(s), list id(s) could be found in the web url in Clickup. For example, if you open a **list** in the ClickUp UI, you will see the list id in the url address bar as follows - 4. If any of the Space(s), List(s), or Folder(s) connector type is selected, add one or more respective IDs to index the tasks from. 5. Check **Retrieve Task Comments?** to also retrieve and index all comments for each indexed task. Leave this unchecked if you dont want to index task comments. 6. Click `Connect` to begin indexing. [BookStack Connector](/connectors/bookstack) [Confluence Connector](/connectors/confluence) On this page * [How it works](#how-it-works) * [Understanding ClickUp Hierarchy](#understanding-clickup-hierarchy) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Discord Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Discord Connector [​](#how-it-works) How it works ---------------------------------- The Discord connector indexes all channels for all servers(guilds) mentioned. [​](#setting-up-a-bot-user) Setting up a Bot User ---------------------------------------------------- 1. Login to your discord’s developer portal [https://discord.com/developers/applications](https://discord.com/developers/applications) 2. Click on the “New Application” button. 3. Give the application a name and click “Create”. 4. Navigate to the “Bot” tab to configure it. 5. Make sure that Public Bot is ticked if you want others to invite your bot. 6. Under the `Privileged Gateway Intents` make sure `MESSAGE CONTENT INTENT` is checked. 7. Copy the token using the “Copy” button. If you have lost your token, you can click on `Reset Token`. [​](#inviting-the-bot-user-to-servers) Inviting the Bot User to server(s) ---------------------------------------------------------------------------- So you’ve made a Bot User but it’s not actually in any server. To add the bot user in your server follow the steps 1. Open your application at [https://discord.com/developers/applications](https://discord.com/developers/applications) . 2. Head over to the `Installation` tab. 3. Check the `Guild Install` under the Installation contexts. 4. Add `bot` scope under the scopes for `Guild Install`. 5. Under the permissions section for `Guild Install`, give these minimum permissions `Manage Messages`, `Read Message History` and `View Channels`. 6. Use the `Discord Provided Link` to install the bot to the server(s) you want. Make sure you have `Manager server` permissions on that guild or server 7. Open the link in the browser and add the bot to your server(s) ### [​](#indexing) Indexing 1. Navigate to the Connector Dashboard and select the **Discord** Connector. 2. Enter the **Bot Token** under credentials you fetched from `Setting up a Bot User` step 6. 3. Enter the server IDs. By default all channels of all servers/guilds in which the bot user is added will be indexed or processed. 4. To fetch server ID of a particular server. Right click on the name of the server located on the top right corner and click on `Copy Server ID` 5. Enter the channel names. By default all channel names under the server(s) from step 3 that the bot user has access to will be indexed or processed. 6. To get the channel name, hit on the settings icon next to the channel name. You will find the channel name in the `Overview` section 7. Optionally you can set a `Start Date` in the format of `YYYY-MM-DD`. Only messages after this date will be indexed or processed. [Dropbox Connector (Beta)](/connectors/dropbox) [Egnyte Connector](/connectors/egnyte) On this page * [How it works](#how-it-works) * [Setting up a Bot User](#setting-up-a-bot-user) * [Inviting the Bot User to server(s)](#inviting-the-bot-user-to-servers) * [Indexing](#indexing) --- # Dropbox Connector (Beta) - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Dropbox Connector (Beta) [​](#how-it-works) How it works ---------------------------------- The Dropbox connector ingests all documents from your Dropbox account into Onyx. The connector recursively pulls all files from the root directory of your Dropbox account. It is currently not possible to pull files only from specific directories. The connector will only pull once upon initialization. If you would like to pull more documents, you must generate a new access token (step 6 below), put that token into the connector, and re-initialize the connector. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Head over to [https://www.dropbox.com/developers/apps](https://www.dropbox.com/developers/apps) and click the `Create app` button on the top right 2. Select `Scoped access` and `Full Dropbox` as the type of access. Give your app a name like ‘Onyx Connector’ and click `Create app` 3\. Click on the `Permissions` tab 4\. Check the `files.content.read` and `sharing.write` permissions so the files can be read and links for the documents can be created 5\. Click `Submit` to save the changes 6\. Navigate to the `Settings` tab and scroll down to the `OAuth 2` section. Click `Generate` to generate an access token You must complete steps 3-5 before generating an access token. Changing permissions will not affect permissions on existing access tokens, and Onyx will be unable to index your Dropbox 7\. Copy the access token Refresh the page if you need to regenerate your access token ### [​](#indexing) Indexing 1. In the Onyx UI, navigate to the Admin Dashboard and select the **Dropbox** Connector 2. Provide the access token from the previous step 3. Click `Connect` to begin indexing your Dropbox files [Document360 Connector](/connectors/document360) [Discord Connector](/connectors/discord) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Discourse Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Discourse Connector [​](#how-it-works) How it works ---------------------------------- The Discourse connector indexes documents from your Discourse **Topics**. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into your Discourse account This Discourse user must have admin priveleges 2. Click the **Admin** menu from the home page. 3. Open the **Advanced** sub-menu and select **API keys**. 4. Click **New API Key**, name it “Onyx”. Select “All Users” for **User Level** and “Read-only” for **Scope**. 5. Click **Save**. Copy the key and put it into Onyx. 5. for the API Key Username, enter the username of the Discourse account which has access to the information you’d like to index. ### [​](#indexing) Indexing 1. Input a name for a connector (if you plan on creating multiple Discourse connectors, this will be used by you to tell between them) 2. Provide your Discourse’s base url. 3. Enter the **Topics** you wish to index. If left blank, all topics available will be indexed. 4. Click connector to begin indexing the indicated **topics**. [Confluence Connector](/connectors/confluence) [Document360 Connector](/connectors/document360) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Document360 Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Document360 Connector [​](#how-it-works) How it works ---------------------------------- The Document360 connector will pull in all the articles given the workspace and categories that the user specifies. Articles in Document360 can be saved in either HTML or Markdown format. Currently the implementation only handles HTML format. If HTML format is desired, please submit an issue [here](https://github.com/onyx-dot-app/onyx/issues) Articles are updated every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Go to Settings > Knowledge base portal > API tokens. 2. Click Generate button. 3. Enter a Token name and select the Request methods that you want to allow for the API key. 4. Click Generate. 5. Your portal ID and API key will be displayed on the page. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Document360** Connector 2. In **Step 1**, provide your **Portal ID** and the **API Key** from above. 3. Set the **Workspace ID** (see below) and **Categories**. To include all categories, simply leave the categories empty 4. Click `Connect` to begin indexing [Discourse Connector](/connectors/discourse) [Dropbox Connector (Beta)](/connectors/dropbox) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Egnyte Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Egnyte Connector [​](#how-it-works) How it works ---------------------------------- The Egnyte connector pulls in files stored in Egnyte. The Egnyte connector indexes the file name, file type, and contents of the file. New files are pulled every **10** minutes. [​](#setup) Setup -------------------- ### [​](#configure-your-egnyte-application-%2B-onyx-env-variables) Configure your Egnyte Application + Onyx env variables This is only necessary if self-hosting Onyx. If using [Onyx Cloud](https://cloud.onyx.app) , you can skip this step. 1. Create an Egnyte Application. Check out the [Egnyte API documentation](https://developers.egnyte.com/docs/read/introduction) for more information. 2. Set the following environment variables on your Onyx instance: EGNYTE_DOMAIN=something like "app4onyx" EGNYTE_CLIENT_ID= EGNYTE_CLIENT_SECRET= 3. Restart your Onyx instance as you normally would to apply the changes. ### [​](#indexing) Indexing 1. In the Onyx UI, navigate to the Admin Dashboard and select the **Egnyte** Connector 2. Click the `Create New` button to go through the OAuth flow. 3. Once you’ve authorized the application, you’ll be redirected back to Onyx. 4. Finish the setup, optionally specifying a folder path to index. 5. Click `Connect` to begin indexing Egnyte files! [Discord Connector](/connectors/discord) [File Connector](/connectors/file) On this page * [How it works](#how-it-works) * [Setup](#setup) * [Configure your Egnyte Application + Onyx env variables](#configure-your-egnyte-application-%2B-onyx-env-variables) * [Indexing](#indexing) --- # File Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors File Connector [​](#how-it-works) How it works ---------------------------------- The File Connector indexes user uploaded files. Currently supports `.txt`, `.pdf`, `.docx`, `.pptx`, `.xlsx`, `.csv`, `.md`, `.mdx`, `.conf`, `.log`, `.json`, `.tsv`, `.xml`, `.yml`, `.yaml`, `.eml`, and `.epub` files. You can also upload a `.zip` containing these files - If there are other file types in the zip, the other file types are ignored. There is also an optional metadata line that supports links, document owners, and time updated as metadata for Onyx’s retrieval and AI Answer. [​](#adding-metadata) Adding Metadata ---------------------------------------- The metadata line should be placed at the very top of the file and can take one of two formats: * `#DANSWER_METADATA={"link": ""}` * `` Where DANSWER\_METADATA= is followed by a json. The valid json keys are: * link * primary\_owners * secondary\_owners * doc\_updated\_at * file\_display\_name You can also include arbitrary key/value pairs which will be understood as “tags”. These tags can then be used in the UI as a filter if you want to constrain your search / conversation to only documents with certain tag(s) attached For example: #DANSWER_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/CONTRIBUTING.md", "primary_owners": ["yuhong@onyx.app", "chris@onyx.app"], "secondary_owners": ["founders@onyx.app"], "doc_updated_at": "2023-11-30T13:06:08.589616-08:00", "file_display_name": "Desired File Name!", "tag_of_your_choice": "tag_value"} Full file example: #DANSWER_METADATA={"link": "https://www.onyx.com/captcha", "file_display_name": "Captcha Setup"} How to set up captcha Follow the example below to set up a captcha like you saw when you visited this page! By including a captcha, this page is able to prevent web scrapers from reading it. As we can see, there are many web pages or internal tools that aren’t directly scrape-able. In addition to handling local file uploads, the file connector is offered as an option for these tools which may have APIs for accessing the contents. Alternatively, if you are uploading a `.zip` filled with files, you can define a `.onyx_metadata.json` file and include that in the root of the zip file. If your zip file structure looks like: | file1.txt | file2.txt | .onyx_metadata.json then your `.onyx_metadata.json` file might look like: [\ {\ "filename": "file1.txt",\ "link": "",\ "file_display_name": ""},\ "primary_owners": [""],\ // this is an arbitrary tag, can be any key/value pair and can be used in the UI as\ // a filter if you want to constrain your search / conversation to only documents with\ // this tag attached\ "status": ""\ },\ {\ "filename": "file2.txt",\ "link": "",\ "file_display_name": ""},\ "primary_owners": [""],\ // this is an arbitrary tag, can be any key/value pair and can be used in the UI as\ // a filter if you want to constrain your search / conversation to only documents with\ // this tag attached\ "status": ""\ }\ ] [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization * No external auth flows required. * Admins can upload files and make them available to everyone * \[WIP\] Admins or normal users will be able to upload files via personal connectors and make them accessible for just themselves. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **File** Connector. 2. Select a `.txt` file or a `.zip` file and click [Egnyte Connector](/connectors/egnyte) [Fireflies Connector](/connectors/fireflies) On this page * [How it works](#how-it-works) * [Adding Metadata](#adding-metadata) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Fireflies Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Fireflies Connector [​](#how-it-works) How it works ---------------------------------- The Fireflies connector indexes meetings from your Fireflies account. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Login to Fireflies * The Fireflies user must be an authorized user. 2. Click on your profile avatar and select **settings**, or click on **settings** in the sidebar. 3. Select **Developer Settings**. 4. Copy the **API Key**. 5. Once you have the API key, you can use it to authorize your Fireflies connector. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard. 2. In the sidebar select **Add Connector** and click on the **Fireflies** tile. 3. Select **Create New** and then provide your **API Key**, along with an optional name for your credentials. 4. Click **Create** and your credentials will be saved and automatically selected. 5. After selecting **Continue** you can choose a name, determine the document access, and assign groups for your connector. 6. Click **Create Connector** and your connector will be created. Onyx will automatically begin indexing your meetings. [File Connector](/connectors/file) [Freshdesk Connector](/connectors/freshdesk) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Freshdesk Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Freshdesk Connector [​](#how-it-works) How it works ---------------------------------- The Freshdesk connector indexes tickets from your Freshdesk account. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Login to Freshdesk * The Freshdesk user must be a verified agent, admin, or owner. 2. Click the profile avatar and choose profile settings. 3. Select **View API Key**. 5. Once you have the API key, you can use it (as well as your domain and password) to authorize your Onyx connector. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard. 2. In the sidebar select **Add Connector** and click on the **Freshdesk** tile. 3. Select **Create New** and then provide your **Domain**, **Password** and **API Key**, along with an optional name for your credentials. 4. Click **Create** and your credentials will be saved and automatically selected. 5. After selecting **Continue** you can choose a name for your connector and then click **Create Connector**. 6. Once you have created your connector Onyx will automatically begin indexing your tickets. [Fireflies Connector](/connectors/fireflies) [GitHub Connector](/connectors/github) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # GitBook Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors GitBook Connector [​](#how-it-works) How it works ---------------------------------- The GitBook connector will pull in all the documentation content from your specified GitBook spaces. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Go to your GitBook account settings and navigate to ‘Developers’ section ([https://app.gitbook.com/account/developer](https://app.gitbook.com/account/developer) ) 2. Click on ‘Create new token’ 3. Give your token a name and select the appropriate scopes 4. Click ‘Create’ to generate your API token 5. Copy and save your token securely - you won’t be able to see it again ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **GitBook** Connector 2. In **Step 1**, paste your **API Token** from the previous step 3. Enter your **Space ID** - you can find this in the URL of your GitBook space (e.g., `https://app.gitbook.com/o//s/`) 4. Click ‘Connect’ to begin indexing your GitBook content [Gong Connector](/connectors/gong) [Gmail Connector Overview](/connectors/gmail/overview) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # GitHub Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors GitHub Connector [​](#how-it-works) How it works ---------------------------------- The Github Connector picks up all of the Pull Requests and Issues in a specified repository. * It will index both Open and Closed PRs. This includes the Title and Summary. * It will index Issues and comments both Open and Closed * Includes certain other metadata such as the URL, creator, etc. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. This Connector uses a GitHub Access Token. * [This guide](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) shows the following steps in detail. 2. Log in to GitHub. 3. In the upper right corner, expand your profile and click on **Settings** 4. On the bottom, go to **Developer settings** -> **Personal access tokens** -> **Tokens (classic)** 5. Click on **Generate new token** * Be sure to give the Token `repo` access so that it can access the PRs. * Set any expiration time. A new token will have to be provided to Onyx to continue updating the Onyx index once this one expires. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **GitHub** Connector 2. For [https://github.com/onyx-dot-app/onyx](https://github.com/onyx-dot-app/onyx) , it would look like: [Freshdesk Connector](/connectors/freshdesk) [GitLab Connector](/connectors/gitlab) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # GitLab Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors GitLab Connector [​](#how-it-works) How it works ---------------------------------- The GitLab Connector picks up all of the Merge Requests and Issues in a specified repository. * It will index both Open and Closed MRs. This includes the Title and Summary. * It will index Issues (and Incidents) including comments both Open and Closed. * Includes certain other metadata such as the URL, creator, etc. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. This Connector uses a GitLab Access Token. 2. Log in to GitLab. 3. On the left sidebar, select your avatar. 4. Select Edit **profile**. 5. Select **Add new token**. 6. Enter a name and expiry date for the token. * The token expires on that date at midnight UTC. * If you do not enter an expiry date, the expiry date is automatically set to 365 days later than the current date. * By default, this date can be a maximum of 365 days later than the current date. 7. Select the desired scopes, further details [here](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#personal-access-token-scopes) . 8. Select **Create personal access token**. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **GitLab** Connector 2. If you’re using GitLab Cloud and not self-hosting, keep the GitLab URL as the default 3. For a project with a url such as “[https://gitlab.com/onyx-ai/onyx](https://gitlab.com/onyx-ai/onyx) ”, configure it as below: [GitHub Connector](/connectors/github) [Gong Connector](/connectors/gong) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # OAuth Setup - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Gmail Connector OAuth Setup This section walks through setting up the Gmail connector using a OAuth-enabled Google App. Anyone can do this (even without a paid Google Workspace)! If you’re an organization with a Google Workspace, and you’d rather use a Service Account to access Gmail, it will be available soon! ### [​](#authorization) Authorization 1. Create a **Google Cloud Project** * [https://console.cloud.google.com/projectcreate](https://console.cloud.google.com/projectcreate) 2. Enable the **Gmail API** * On the left panel, open **APIs & services** * Go to **Enabled APIs and services** * On the top click **+ENABLE APIS AND SERVICES** * Search for **Gmail API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/apis/enableflow?apiid=gmail.googleapis.com) , select your project and enable the **Gmail API** 3. Set up the OAuth consent screen * Under **APIs & services**, select the **OAuth consent screen** tab * If you don’t have a **Google Organization** select **External** for **User Type** * Call the app Onyx (or whatever you want) * For the required emails, use any email of your choice or `founders@onyx.app` if you wish for the Onyx team to help handle issues. * Click **SAVE AND CONTINUE** 4. Set up Scopes * Add the scope `.../auth/gmail.readonly` for `Gmail API` #### [​](#to-enable-permission-syncing-for-this-connector%3A) To enable permission syncing for this connector: * Enable the **Admin SDK API** * visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=admin.googleapis.com) , select your project and enable the **Admin SDK API** * Add the scope `.../auth/admin.directory.user.readonly` for `Admin SDK API` * Add the scope `.../auth/admin.directory.group.readonly` for `Admin SDK API` * The account performing the OAuth flow must have an Admin role in the Google Workspace that has access to the “Groups > Read” privilege. * This can be set by an admin in the admin panel of the Google Workspace under Account>Admin roles. * **Note**: If you are using a Google Workspace, you can also set up a Service Account to access Gmail. This is currently in development and will be available soon. 5. Set up Test users * This is only applicable for users without a Google Organization. * Typically for a company, Onyx would be set up as an internal app so this step would not apply. * Add at least one test user email. Only the email accounts added here will be allowed to run the OAuth flow to index new emails. * Click **SAVE AND CONTINUE**, review the changes and click **BACK TO DASHBOARD** 6. Create Credentials * Go to the **Credentials** tab and select **\+ CREATE CREDENTIALS** -> **OAuth client ID** * Choose **Web application** and give it some name like `OnyxConnector` * Add a **Authorized JavaScript origins** for `http://localhost:3000` (or `https://` if you have setup Onyx for production use) * Add a **Authorized redirect URIs** for `http://localhost:3000/admin/connectors/gmail/auth/callback` (or `https:///admin/connectors/gmail/auth/callback` if you have setup Onyx for production use) * Click create and on the right hand side next to **Client secret**, there is an option to download the credentials as a JSON. Download the JSON for use in the next step. [Gmail Connector Overview](/connectors/gmail/overview) [Service Account Setup](/connectors/gmail/service_account) On this page * [Authorization](#authorization) * [To enable permission syncing for this connector:](#to-enable-permission-syncing-for-this-connector%3A) --- # Gmail Connector Overview - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Gmail Connector Gmail Connector Overview [​](#how-it-works) How it works ---------------------------------- The Gmail connector ingests your mails. It syncs the latest information from your Gmail every 10 minutes. - Currently supports plain text emails. [​](#setting-up) Setting up ------------------------------ Note: This Connector is relatively involved to set up. * If you want to setup the connector via individual account OAuth, follow the guide [here](/connectors/gmail/oauth) . This does not require a business Google Workspace. * If you have any questions about the setup / which approach is best for you, don’t hesitate to reach out to [founders@onyx.app](mailto:founders@onyx.app) OR `@Yuhong Sun` / `@Chris Weaver` in \[Slack\]([https://join.slack.com/t/onyx-dot-app/shared\_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA) if you need help. [GitBook Connector](/connectors/gitbook) [OAuth Setup](/connectors/gmail/oauth) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) --- # Service Account Setup - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Gmail Connector Service Account Setup This section walks through setting up the Gmail connector using a Service Account. More info on Service Accounts can be found [here](https://cloud.google.com/iam/docs/service-account-overview) . A Google Workspace is required. If you’d rather use an individuals account + OAuth to access Gmail, checkout the section [here](/connectors/gmail/oauth) . ### [​](#authorization) Authorization 1. Create a **Google Cloud Project** * [https://console.cloud.google.com/projectcreate](https://console.cloud.google.com/projectcreate) 2. Enable the **Gmail API** * On the left panel, open **APIs & services** * Go to **Enabled APIs and services** * On the top click **+ENABLE APIS AND SERVICES** * Search for **Gmail API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=gmail.googleapis.com) , select your project and enable the **Gmail API** 3. Enable the **Admin SDK API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Admin SDK API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=admin.googleapis.com) , select your project and enable the **Admin SDK API** 4. Create a **Service Account** * Go to the [Service Account management page](https://console.cloud.google.com/iam-admin/serviceaccounts) in Google Cloud. * Click `Create Service Account` button and fill out the fields in step 1. You can ignore steps 2 and 3. * Go to the `Keys` section, and click `Add Key`. Download this key, you will need to upload to to Onyx later. Note for Google Organizations created after April 2024: * to give the service account the proper permissions you will have to navigate to this [link](https://console.cloud.google.com/iam-admin/orgpolicies/iam-disableServiceAccountKeyCreation) * Then select `Manage`, select `Override parent's policy` and then select `Not enforced` under `Rules`. * Finally, select `SET POLICY` 5. Give this **Service Account** read-only access to Gmail * Copy the `Unique ID` of the Service Account * Go to the [Domain-wide Delegation page](https://admin.google.com/u/3/ac/owl/domainwidedelegation) in the Google Admin Console. * Click `Add new`, fill in the client ID with the `Unique ID` of the Service account * Copy this comma separated list of scopes and pasted it into field `OAuth scopes`: `https://www.googleapis.com/auth/gmail.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly` [OAuth Setup](/connectors/gmail/oauth) [Google Drive Connector Overview](/connectors/google_drive/overview) On this page * [Authorization](#authorization) --- # Gong Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Gong Connector [​](#how-it-works) How it works ---------------------------------- The Gong connector pulls in the transcripts of calls recorded via Gong. The Gong connector indexes the call title, call description, and contents of the actual transcript. New transcripts are pulled every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. User must get an **Access Key** and **Access Key Secret** to pull in Gong transcripts 2. As an admin, go to `Company Settings` on the right of the top options bar (see below) 3\. Next, find the **Ecosystem** block and select `API` 4\. Once there, select `API KEYS` (it’s right next to `INTEGRATIONS`) 5. Click on `GET API KEY` and note down the ACCESS KEY and ACCESS KEY SECRET ### [​](#indexing) Indexing 1. In the Onyx UI, navigate to the Admin Dashboard and select the **Gong** Connector 2. Provide the Access Key and Access Key Secret from the previous step 3. Add a list of workspaces to index or leave empty to index all workspaces 4. Click `Connect` to begin indexing Gong call transcripts [GitLab Connector](/connectors/gitlab) [GitBook Connector](/connectors/gitbook) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # OAuth Setup - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Google Drive Connector OAuth Setup This section walks through setting up the Google Drive connector using a OAuth-enabled Google App. Anyone can do this (even without a paid Google Workspace)! If you’re an organization with a Google Workspace, and you’d rather use a Service Account to access Google Drive, checkout the section [here](/connectors/google_drive/service_account) . ### [​](#authorization) Authorization 1. Create a **Google Cloud Project** * [https://console.cloud.google.com/projectcreate](https://console.cloud.google.com/projectcreate) 2. Enable the **Google Drive API** * On the left panel, open **APIs & services** * Go to **Enabled APIs and services** * On the top click **+ENABLE APIS AND SERVICES** * Search for **Google Drive API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com) , select your project and enable the **Google Drive API** 3. Enable the **Admin SDK API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Admin SDK API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=admin.googleapis.com) , select your project and enable the **Admin SDK API** 4. Enable the **Google Sheets API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Google Sheets API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=sheets.googleapis.com) , select your project and enable the **Google Sheets API** 5. Enable the **Google Docs API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Google Docs API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=docs.googleapis.com) , select your project and enable the **Google Docs API** 6. Set up the OAuth consent screen * Under **APIs & services**, select the **OAuth consent screen** tab * If you don’t have a **Google Organization** select **External** for **User Type** * Call the app Onyx (or whatever you want) * For the required emails, use any email of your choice or `founders@onyx.app` if you wish for the Onyx team to help handle issues. * Click **SAVE AND CONTINUE** 7. Set up Scopes * Add the scope `.../auth/drive.readonly` for `Google Drive API` * Add the scope `.../auth/drive.metadata.readonly` for `Google Drive API` * Add the scope `.../auth/admin.directory.user.readonly` for `Admin SDK API` * Add the scope `.../auth/admin.directory.group.readonly` for `Admin SDK API` **Important**: If you plan on using permission syncing for this connector, the account performing the OAuth flow must have an Admin role in the Google Workspace that has access to the “Groups > Read” privilege. This can be set by an admin in the admin panel of the Google Workspace under Account>Admin roles. ### [​](#you-should-see-something-like-this%3A) You should see something like this: 8. Set up Test users * This is only applicable for users without a Google Organization. * Typically for a company, Onyx would be set up as an internal app so this step would not apply. * Add at least one test user email. Only the email accounts added here will be allowed to run the OAuth flow to index new documents. * Click **SAVE AND CONTINUE**, review the changes and click **BACK TO DASHBOARD** 9. Create Credentials * Go to the **Credentials** tab and select **\+ CREATE CREDENTIALS** -> **OAuth client ID** * Choose **Web application** and give it some name like `OnyxConnector` * Add a **Authorized JavaScript origins** for `http://localhost:3000` (or `https://` if you have setup Onyx for production use) * Add a **Authorized redirect URIs** for `http://localhost:3000/admin/connectors/google-drive/auth/callback` (or `https:///admin/connectors/google-drive/auth/callback` if you have setup Onyx for production use) * Click create and on the right hand side next to **Client secret**, there is an option to download the credentials as a JSON. Download the JSON for use in the next step. [Google Drive Connector Overview](/connectors/google_drive/overview) [Service Account Setup](/connectors/google_drive/service_account) On this page * [Authorization](#authorization) * [You should see something like this:](#you-should-see-something-like-this%3A) --- # Google Drive Connector Overview - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Google Drive Connector Google Drive Connector Overview [​](#how-it-works) How it works ---------------------------------- The Google Drive connector ingests your drive documents. It syncs the latest information from your Google Drive every 10 minutes. - Currently supports Google Docs, Sheets, and PDF files. [​](#setting-up) Setting up ------------------------------ Note: This Connector is relatively involved to set up. * If you want to setup the connector via individual account OAuth, follow the guide [here](/connectors/google_drive/oauth) . This does not require a business Google Workspace. * If you want to setup the connector via Service Accounts, follow the guide [here](/connectors/google_drive/service_account) . This does require a business Google Workspace / access to the Admin panel. If you are an organization that meets these pre-requisites, then this is likely the preferred approach. * If you have any questions about the setup / which approach is best for you, don’t hesitate to reach out to [founders@onyx.app](mailto:founders@onyx.app) OR `@Yuhong Sun` / `@Chris Weaver` in \[Slack\]([https://join.slack.com/t/onyx-dot-app/shared\_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA) if you need help. [Service Account Setup](/connectors/gmail/service_account) [OAuth Setup](/connectors/google_drive/oauth) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) --- # Service Account Setup - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Google Drive Connector Service Account Setup This section walks through setting up the Google Drive connector using a Service Account. More info on Service Accounts can be found [here](https://cloud.google.com/iam/docs/service-account-overview) . A Google Workspace is required. If you’d rather use an individuals account + OAuth to access Google Drive, checkout the section [here](/connectors/google_drive/oauth) . ### [​](#authorization) Authorization 1. Create a **Google Cloud Project** * [https://console.cloud.google.com/projectcreate](https://console.cloud.google.com/projectcreate) 2. Enable the **Google Drive API**, the **Admin SDK API**, the **Google Docs API**, and the **Google Sheets API** * On the left panel, open **APIs & services** * Go to **Enabled APIs and services** * On the top click **+ENABLE APIS AND SERVICES** * Search for **Google Drive API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com) , select your project and enable the **Google Drive API** 3. Enable the **Admin SDK API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Admin SDK API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=admin.googleapis.com) , select your project and enable the **Admin SDK API** 4. Enable the **Google Sheets API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Google Sheets API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=sheets.googleapis.com) , select your project and enable the **Google Sheets API** 5. Enable the **Google Docs API** * Click on **+ENABLE APIS AND SERVICES** again. * Search for **Google Docs API** and click **ENABLE** * Alternatively visit this [link](https://console.cloud.google.com/flows/enableapi?apiid=docs.googleapis.com) , select your project and enable the **Google Docs API** 6. Create a **Service Account** * Go to the [Service Account management page](https://console.cloud.google.com/iam-admin/serviceaccounts) in Google Cloud. * Click `Create Service Account` button and fill out the fields in step 1. You can ignore steps 2 and 3. * Go to the `Keys` section, and click `Add Key`. Download this key, you will need to upload to to Onyx later. Note for Google Organizations created after April 2024: * to give the service account the proper permissions you will have to navigate to this [link](https://console.cloud.google.com/iam-admin/orgpolicies/iam-disableServiceAccountKeyCreation) * Then select `Manage`, select `Override parent's policy` and then select `Not enforced` under `Rules`. * Finally, select `SET POLICY` 7. Give this **Service Account** read-only access to Google Drive * Copy the `Unique ID` of the Service Account * Go to the [Domain-wide Delegation page](https://admin.google.com/u/3/ac/owl/domainwidedelegation) in the Google Admin Console. * Click `Add new`, fill in the client ID with the `Unique ID` of the Service account * Copy this comma separated list of scopes and pasted it into field `OAuth scopes`: `https://www.googleapis.com/auth/drive.readonly,https://www.googleapis.com/auth/drive.metadata.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly` [OAuth Setup](/connectors/google_drive/oauth) [Google Sites Connector](/connectors/google_sites) On this page * [Authorization](#authorization) --- # Google Storage Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Google Storage Connector [​](#how-it-works) How it works ---------------------------------- The Google Cloud Storage connector pulls in all documents from the specified GCS bucket. It supports various file formats including PDF, DOC, DOCX, TXT, and more. Documents are updated every **1** day. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into your Google Cloud Console. 2. Navigate to “IAM & Admin” > “Service Accounts”. 3. Click “Create Service Account”. 4. Set a name for the new service account (e.g., “onyx-gcs-connector”) and click “Create”. 5. For the role, select “Storage Object Viewer” or another appropriately permissive role and click “Continue”. 6. Click “Done” to finish creating the service account. 7. On the Service Accounts page, find your newly created account and click on it. 8. In the “Keys” section, click “Add Key” > “Create new key”. 9. Choose “JSON” as the key type and click “Create”. 10. A JSON file will be downloaded to your computer. This file contains your credentials. 11. Open the JSON file and note down the following information: * `project_id` * `client_id` (this will be used as your Access Key ID) * `private_key` (this will be used as your Secret Access Key) ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Google Cloud Storage** Connector. 2. In **Step 1**, provide your GCS credentials: * Provide your GCS Project ID, Access Key ID, and Secret Access Key for authentication. * These credentials will be used to access your GCS buckets. **GCS Project ID:** **Access Key ID:** **Secret Access Key:** 3. Click “Update” to save your credentials. 4. In **Step 2**, specify which GCS bucket you want to make searchable: 5. Click “Connect” to begin indexing. [​](#understanding-google-cloud-storage-structure) Understanding Google Cloud Storage Structure -------------------------------------------------------------------------------------------------- Google Cloud Storage organizes data into buckets. Each bucket can contain an unlimited number of objects (files). You can think of a bucket as a root directory, and the objects as files within that directory. For more information on Google Cloud Storage structure, visit the [Google Cloud Storage documentation](https://cloud.google.com/storage/docs) . [Google Sites Connector](/connectors/google_sites) [Guru Connector](/connectors/guru) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) * [Understanding Google Cloud Storage Structure](#understanding-google-cloud-storage-structure) --- # Google Sites Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Google Sites Connector [​](#how-it-works) How it works ---------------------------------- Export your Google Site using [Google Takout](https://takeout.google.com/) , and then upload the zip to Onyx. We’ll then index all your pages, and allow you to ask questions based on the site’s content! [​](#setting-up) Setting up ------------------------------ ### [​](#exporting-your-google-site) Exporting Your Google Site 1. Follow the guide [here](https://www.steegle.com/google-sites/how-to/export-with-takeout) to export your Google Site. Be sure to include ONLY the Google Site in the folder. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Google Sites** Connector. 2. Find and enter the base URL of your Google Site. This is the URL used to access the root page of the site. 3. Upload the Zip file downloaded in **Step 1**. 4. Click the **Upload** button, and you’re done! Your site will be indexed, and will be searchable upon completion. [Service Account Setup](/connectors/google_drive/service_account) [Google Storage Connector](/connectors/google_storage) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Exporting Your Google Site](#exporting-your-google-site) * [Indexing](#indexing) --- # Guru Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Guru Connector [​](#how-it-works) How it works ---------------------------------- The Guru connector pulls in all the Cards your user has access to based on a User Access Token. Cards are updated every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Obtain a User Access Token. * Follow the Guru API guide described [here](https://developer.getguru.com/docs/getting-started) for more details. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Guru** Connector 2. In **Step 1**, provide your **Username** (most likely your email) and the **Access Token** from above. 3. Click `Connect` to begin indexing [Google Storage Connector](/connectors/google_storage) [HubSpot Connector](/connectors/hubspot) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Highspot Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Highspot Connector [​](#how-it-works) How it works ---------------------------------- The Highspot connector indexes documents from your Highspot instance. It can index either specific spots you add or all spots where you have view access and download permissions. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization > **IMPORTANT:** Highspot Platform Plus is an add-on feature that provides access to the API. Without Platform Plus, users cannot access the API features required for this connector. Please ensure your organization has purchased the Platform Plus add-on before proceeding. #### [​](#enabling-developer-options) Enabling Developer Options 1. Log into your Highspot account as an administrator 2. Click on your profile icon in the top right corner and select “Settings” from the list 3. On the new page that opens, select “your company” under company settings 4. Navigate to “Access and Privacy” and click on “API Access” 5. Add the user(s) who will need to generate API keys and secrets 6. And also confirm you enabled the “API Access for Users” #### [​](#generating-api-credentials) Generating API Credentials 1. Log in as the user who has been granted API access 2. Click on the profile icon in the top right corner and select “Settings” from the list 3. On the new page that opens, look for the “Developer” tab under user settings 4. Navigate to the developer section and generate a new API key 5. After generation, you’ll receive a key and secret 6. Make a note of your API key, secret and base URL as you will need them for indexing ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Highspot** Connector Tile 2. Provide your **API Key**, **Secret**, and **Base URL** from the steps above 3. Choose one of the following indexing options: * Enter specific spots you want to index * Select the option to index all spots where your user has view access and download permissions 4. Click “Connect” to begin indexing your Highspot content [Zulip Connector](/connectors/zulip) [\[Recommended\] EC2](/production/aws/ec2) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Enabling Developer Options](#enabling-developer-options) * [Generating API Credentials](#generating-api-credentials) * [Indexing](#indexing) --- # HubSpot Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors HubSpot Connector [​](#how-it-works) How it works ---------------------------------- The HubSpot connector pulls in all of the Tickets and their title, content, associated emails and notes. If other sources of information such as Knowledge Bases, Documents, etc. are desired, this connector can be extended to support those. Reach out to the Onyx team if you need this. Tickets are updated every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Create a Private App Integration (see below). 2\. Under **Scopes** (top bar), select the `Tickets` scope. 3\. Copy the Access Token that is shown when the App is created. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **HubSpot** Connector 2. In **Step 1**, provide the Access Token from before 3. Click `Connect` to begin indexing HubSpot Tickets [Guru Connector](/connectors/guru) [Jira Connector](/connectors/jira) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Notion Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Notion Connector [​](#how-it-works) How it works ---------------------------------- The Notion connector uses the Notion search API to fetch all pages that the connector has access to within a workspace. For follow up indexing runs, the connector only retrieves pages that have been updated since the last indexing attempt. Indexing is configured to run every **10 minutes**, so page updates should appear within 10 minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization In order to authorize Onyx to connect to your Notion workspace, you’ll need to create a new integration in Notion, which will then provide you with a secret token. These steps are pulled from [this Notion guide](https://developers.notion.com/docs/create-a-notion-integration) which you can also follow. #### [​](#step-1%3A-create-an-integration) Step 1: Create an integration 1. Visit [https://www.notion.com/my-integrations](https://www.notion.com/my-integrations) in your browser. 2. Click the + New integration button. 3. Name the integration (something like “Onyx” could work). 4. Select “Read content” as the only capability required for Onyx. 5. Click Submit to create the integration. On the next page, you’ll find your Notion integration token, also called an API key. You’ll need this token to configure Onyx to index Notion, so make a copy of it. The integration has been added to the workspace, so any member can share pages and databases with it. There’s no requirement to be an Admin to share information with an integration. #### [​](#step-2%3A-share-pages%2Fdatabases-with-your-integration) Step 2: Share pages/databases with your integration Now that you’ve created an integration, you need to grant it access to Notion pages/databases. To keep your information secure, integrations don’t have access to any pages or databases in the workspace at first. You must share specific pages with an integration in order for Onyx to access those pages. To share a page/database with your integration: 1. Go to the page/database in your workspace. 2. Click the `•••` on the top right corner of the page. 3. Scroll to the bottom of the pop-up and click Add connections. 4. Search for and select the new integration in the `Search for connections...` menu. 5. If you’ve added a page, all child pages also become accesssible to Onyx. If you’ve added a database, all rows (and their children) become accessible to Onyx. Once you’ve granted access to a page/database, you can start configuring Onyx to index those databases. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Notion** connector. 2. In **Step 1**, provide the **Integration Token Secret** you obtained in the “Authorization” steps above: 3. Click the `Connect` button! Your content will then be pulled into Onyx every **10** minutes. Note - As mentioned, the Notion connector currently indexes everything it has access to. If you want to limit specific content being indexed, simply unshare the database from Notion with the integration. [Linear Connector](/connectors/linear) [Oracle Storage Connector](/connectors/oci_storage) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Step 1: Create an integration](#step-1%3A-create-an-integration) * [Step 2: Share pages/databases with your integration](#step-2%3A-share-pages%2Fdatabases-with-your-integration) * [Indexing](#indexing) --- # Jira Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Jira Connector [​](#how-it-works) How it works ---------------------------------- The Jira connector pulls in all tickets from the specified projects every **10** minutes. For every jira issue this connector will pull: * Title * Description * Common fields (like assignee, reporter, status etc.) * Custom fields * Comments [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. **Jira Cloud**: follow the guide described [here](https://docs.searchunify.com/Content/Content-Sources/Atlassian-Jira-Confluence-Authentication-Create-API-Token.htm) to get an access token. 2. **Jira Server**: follow the guide described [here](https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html) to get a personal access token. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Jira** Connector 2. Provide credentials > #### Cloud > > Provide the **Access Token** and the **Username** it belongs to: > #### Server > > Provide the **Personal Access Token**: 3. For each project you want to index, provide a single URL to any page in the project. Also you can specify which users comments not to index (this is generally useful to ignore certain bots). For example, it might look like the following: 4. Click the `Connect` button! All your Jira tickets in that space will now be pulled into Onyx every **10** minutes. [HubSpot Connector](/connectors/hubspot) [Linear Connector](/connectors/linear) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Connector Overview - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Connector Overview [​](#what-are-connectors) What are Connectors ------------------------------------------------ Connectors hook up Onyx to your data sources so that answers are grounded in your organization’s knowledge. ### [​](#connectors-help-you) Connectors help you * **Choose Sources** so you can include only the data you want indexed. * **Configure Access** so Onyx can securely access data with your permission. * **Set Up Fetching** options to keep Onyx’s answers up to date. [​](#monitoring-connectors) Monitoring Connectors ---------------------------------------------------- Open the `Connectors Dashboard` (accessible from the profile icon on the top right) At the top there is a `Status` page which shows which sources have been indexed and the status of the indexing job. [​](#missing-a-connector%3F) Missing a Connector? ---------------------------------------------------- Is there a Connector that would be useful to you? Let us know via a [GitHub Issues](https://github.com/onyx-dot-app/onyx/issues) page. (Please check if the connector you’re interested in is already mentioned). Don’t forget to thumbs up the issues requesting the connectors that you would like to see built next! ### [​](#contributing-a-connector) Contributing a Connector As Onyx is opensource, one of the best features is that anyone can add to it! We encourage people who need new connectors to contribute it back to the Onyx repo for other people to benefit as well. Refer to this [README guide](https://github.com/onyx-dot-app/onyx/blob/main/backend/onyx/connectors/README.md) for how to add a new Connector. [Contact Us](/contact_us) [Airtable Connector](/connectors/airtable) On this page * [What are Connectors](#what-are-connectors) * [Connectors help you](#connectors-help-you) * [Monitoring Connectors](#monitoring-connectors) * [Missing a Connector?](#missing-a-connector%3F) * [Contributing a Connector](#contributing-a-connector) --- # R2 Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors R2 Connector [​](#how-it-works) How it works ---------------------------------- The R2 connector pulls in all documents from the specified Cloudflare R2 bucket. It supports various file formats including PDF, DOC, DOCX, TXT, and more. Documents are updated every **1** day. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into your Cloudflare dashboard. 2. Navigate to “R2” in the sidebar. 3. Click on “Manage R2 API Tokens”. 4. Click “Create API token”. 5. Give your token a name (e.g., “OnyxR2Connector”) and select the appropriate permissions (Object Read only). 6. Click “Create API Token”. 7. On the next screen, you’ll see your Access Key ID and Secret Access Key. Make sure to copy these immediately as you won’t be able to access the Secret Access Key again. 8. To find your Account ID, go to the Overview page in your Cloudflare dashboard. The Account ID is listed in the url as the final substring. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **R2** Connector. 2. In **Step 1**, provide your R2 credentials: * Provide your R2 Access Key ID, Secret Access Key, and Account ID for authentication. * These credentials will be used to access your R2 buckets. **R2 Access Key ID:** **R2 Secret Access Key:** **Account ID:** 3. Click “Update” to save your credentials. 4. In **Step 2**, specify which R2 bucket you want to make searchable: 5. Click “Connect” to begin indexing. [​](#understanding-r2-structure) Understanding R2 Structure -------------------------------------------------------------- Cloudflare R2 organizes data into buckets, similar to Amazon S3. Each bucket can contain an unlimited number of objects (files). You can think of a bucket as a root directory, and the objects as files within that directory. For more information on R2 structure, visit the [Cloudflare R2 documentation](https://developers.cloudflare.com/r2/) . [Productboard Connector](/connectors/productboard) [Request Tracker Connector](/connectors/requesttracker) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) * [Understanding R2 Structure](#understanding-r2-structure) --- # Linear Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Linear Connector [​](#how-it-works) How it works ---------------------------------- The Linear connector pulls in all the Linear issues and the associated comments. Issues are updated every **10** minutes. [​](#setup) Setup -------------------- ### [​](#configure-your-linear-application-%2B-onyx-env-variables) Configure your Linear Application + Onyx env variables This is only necessary if self-hosting Onyx. If using [Onyx Cloud](https://cloud.onyx.app) , you can skip this step. 1. [Create a Linear Application.](https://linear.app/settings/api/applications/new) This step must be completed by an admin of the linear workspace you wish to connect to Onyx. The application callback urls should include `/connector/oauth/callback/linear` For example, for a local deployment with default configurations one of the lines should be `http://localhost:3000/connector/oauth/callback/linear` 2. Set the following environment variables on your Onyx instance using the Client ID and Signing Secret provided by Linear for your new app: LINEAR_CLIENT_ID= LINEAR_CLIENT_SECRET= 3. Restart your Onyx instance as you normally would to apply the changes. ### [​](#indexing) Indexing 1. In the Onyx UI, navigate to the Admin Dashboard and select the **Linear** Connector 2. Click the `Create New` button to go through the OAuth flow. 3. Once you’ve authorized the application, you’ll be redirected back to Onyx. 4. Select the new credential and click Continue 5. Enter connector name and permissions information 6. Click `Create Connector` to begin indexing Linear issues and comments! [Jira Connector](/connectors/jira) [Notion Connector](/connectors/notion) On this page * [How it works](#how-it-works) * [Setup](#setup) * [Configure your Linear Application + Onyx env variables](#configure-your-linear-application-%2B-onyx-env-variables) * [Indexing](#indexing) --- # Request Tracker Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Request Tracker Connector [​](#how-it-works) How it works ---------------------------------- The Request Tracker connector will pull in all tickets updated within the last 10 minutes into the dataset. Tickets are updated every **10** minutes. Only Request Tracker REST API 1.0 is supported at this time. REST API 1.0 is implemented in Request Tracker 4.x, Request Tracker 5.x is not supported currently. [​](#setting-up) Setting up ------------------------------ ### [​](#create-or-use-a-request-tracker-user-who-has-the-appropriate-permissions) Create or use a Request Tracker user who has the appropriate permissions 1. Create a Request Tracker user that has read access to all queues Onyx should read. ### [​](#configure-danswer-request-tracker-connector-and-begin-indexing) Configure DAnswer Request Tracker connector and begin indexing 1. Navigate to the Admin Dashboard and select the **Request Tracker** Connector 2. In **Step 1**, provide your Request Tracker **username**, **password**, and **RT installation base url**. 3. In **Step 2**, click `Connect` to begin indexing [R2 Connector](/connectors/r2) [S3 Connector](/connectors/s3) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Create or use a Request Tracker user who has the appropriate permissions](#create-or-use-a-request-tracker-user-who-has-the-appropriate-permissions) * [Configure DAnswer Request Tracker connector and begin indexing](#configure-danswer-request-tracker-connector-and-begin-indexing) --- # Oracle Storage Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Oracle Storage Connector [​](#how-it-works) How it works ---------------------------------- The Oracle Cloud Infrastructure (OCI) Storage connector pulls in all documents from the specified OCI bucket. It supports various file formats including PDF, DOC, DOCX, TXT, and more. Documents are updated every **1** day. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into your Oracle Cloud Console. 2. Click on the user icon in the top-right corner and select “User Settings”. 3. Under “Resources”, click on “Customer Secret Keys”. 4. Click “Generate Secret Key”. 5. Enter a friendly name for your key (e.g., “OnyxOCIConnector”). 6. Click “Generate Secret Key”. 7. You will see your Secret Key. Make sure to copy the key immediately, as you won’t be able to retrieve the Secret Key later. 8. You should now be taken to the “Customer Secret Keys” page and see a list of keys (including the name of the key you just generated). The corresponding access key should be present. 9. To find your tenancy’s Object Storage namespace, click on the user icon in the top-right corner and select “Tenancy: \[your tenancy name\]”. 10. In the tenancy details, you’ll find the Object Storage namespace. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Oracle Cloud Infrastructure Storage** Connector. 2. In **Step 1**, provide your OCI credentials: * Provide your OCI Access Key, Secret Key, Namespace, and Region for authentication. * These credentials will be used to access your OCI buckets. **OCI Access Key:** **OCI Secret Key:** **Namespace:** **Region:** 3. Click “Update” to save your credentials. 4. In **Step 2**, specify which OCI bucket you want to make searchable: 5. Click “Connect” to begin indexing. [​](#understanding-oracle-cloud-infrastructure-object-storage-structure) Understanding Oracle Cloud Infrastructure Object Storage Structure ---------------------------------------------------------------------------------------------------------------------------------------------- Oracle Cloud Infrastructure Object Storage organizes data into buckets. Each bucket can contain an unlimited number of objects (files). You can think of a bucket as a root directory, and the objects as files within that directory. For more information on OCI Object Storage structure, visit the [Oracle Cloud Infrastructure Object Storage documentation](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm) . [Notion Connector](/connectors/notion) [Productboard Connector](/connectors/productboard) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) * [Understanding Oracle Cloud Infrastructure Object Storage Structure](#understanding-oracle-cloud-infrastructure-object-storage-structure) --- # Productboard Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Productboard Connector [​](#how-it-works) How it works ---------------------------------- The Productboard connector pulls in all the `Features`, `Components`, `Products`, and `Objectives` into Onyx. At this time, the Productboard APIs does not support pulling in `Releases` or `Notes`. Everything is updated every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Follow the `Getting a token` guide [here](https://developer.productboard.com/#section/Authentication/Public-API-Access-Token) to get an Access Token. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Productboard** Connector 2. In **Step 1**, provide your **Access Token** 3. Click `Connect` to begin indexing [Oracle Storage Connector](/connectors/oci_storage) [R2 Connector](/connectors/r2) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Salesforce Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Salesforce Connector [​](#how-it-works) How it works ---------------------------------- The Salesforce connector indexes documents from your Salesforce. These documents organized around the **Objects** that you indicate. Examples are below. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into Salesforce * The Salesforce user must be an organization member or have admin access to the data you would like to index. 2. Click the profile avatar and choose Settings. 3. Select **My Personal Information** → **Reset My Security Token**. 4. Check your email for the security token. 5. Once the token has been regenerated, you can use it (as well as your username and password) to authorize your onyx connector ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Salesforce** Connector Tile. 2. Provide your **Username**, **Password** and the **Security Token** received from the above steps. 3. Enter the [Salesforce Object(s)](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_list.htm) you wish to index and organize your Onyx documents by. * make sure to use the singular version of object name (e.g. Opportunity instead of Opportunities) * if no objects are indicated, it will default to indexing by **Account** 4. Information will then be indexed by the indicated object(s) ### [​](#an-example) An Example * You indicate you’d like to organize information by **Account** and click connect: \- Onyx will generate a document for every single **Account** in your Salesforce - Attached to each document will be all the information associated with that **Account** - This information would also include information from the **Account**’s children objects (E.g. all associated **Contact**s, **Note**s, etc.) - This means indicating **Account** means that all **Contact**s that are attached to an account will also be grabbed - However, if you want to index any **Contact**s that aren’t attached to any **Account**s, (as well as **Account**s), you would indicate that like so: [S3 Connector](/connectors/s3) [Sharepoint Connector](/connectors/sharepoint) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) * [An Example](#an-example) --- # Slab Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Slab Connector [​](#how-it-works) How it works ---------------------------------- Slab is a wiki tool where the pages are called Posts. Onyx indexes the post **titles** and **contents**. The Posts are pulled in and updated every **10** minutes. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Follow the video below to fetch your **Slab Bot Token**. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Slab** Connector 2. In **Step 1**, provide the **Slab Bot Token** from above 3. In **Step 2**, provide the Slab URL * In the video example above, it would be `onyxai.slab.com` 4. Click `Connect` to begin indexing [Slack Connector](/connectors/slack) [Teams Connector](/connectors/teams) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # S3 Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors S3 Connector [​](#how-it-works) How it works ---------------------------------- The S3 connector pulls in all documents from the specified Amazon S3 bucket. It supports various file formats including PDF, DOC, DOCX, TXT, and more. Documents are updated every **1** day. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log into your AWS Management Console. 2. Navigate to the IAM (Identity and Access Management) dashboard. 3. In the left sidebar, click on “Users” and then “Create user”. 4. Set a name for the new user (e.g., “OnyxS3Connector”) and click “Next”. 5. Click “Attach policies directly” and search for “AmazonS3ReadOnlyAccess” or a similarly permissive policy. 6. Select this policy and click “Next”. 7. Add any tags if needed, then click “Create user”. 8. You’ll now be on the `users` page. Click on the user you just created. 9. Click “create access key” and select “Third-party service” 10. Select “I understand the above recommendation and want to proceed to create an access key” and then “Next”. 11. Optionally, set a description tag and then press “create access key”. 12. You should now see, you’ll see the Access Key ID and Secret Access Key. Make sure to copy these immediately as you won’t be able to access the Secret Access Key again. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **S3** Connector. 2. In **Step 1**, provide your AWS credentials: * If AWS Access Key ID and AWS Secret Access Key are provided, they will be used for authenticating the connector. * Otherwise, the Profile Name will be used (if provided). * If no credentials are provided, then the connector will try to authenticate with any default AWS credentials available. **AWS Access Key ID:** **AWS Secret Access Key:** **Profile Name:** 3. Click “Update” to save your credentials. 4. In **Step 2**, specify which S3 bucket you want to make searchable: 5. Click “Connect” to begin indexing. You should now see a page like below and be able to add more buckets with the same credentials! [​](#understanding-s3-structure) Understanding S3 Structure -------------------------------------------------------------- Amazon S3 organizes data into buckets. Each bucket can contain an unlimited number of objects (files). You can think of a bucket as a root directory, and the objects as files within that directory. For more information on S3 structure, visit the [Amazon S3 documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) . [Request Tracker Connector](/connectors/requesttracker) [Salesforce Connector](/connectors/salesforce) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) * [Understanding S3 Structure](#understanding-s3-structure) --- # Sharepoint Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Sharepoint Connector [​](#how-it-works) How it works ---------------------------------- The Sharepoint connector will go through all configured sites belonging to an organization and index all the documents attached to that site. Note, it currently does not parse the site page contents, only the attached files. This includes: * Word Doc, Excel, PDF, Powerpoints, and all plaintext files like .txt, .mdx, etc. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization More detailed instructions can be found following the video below. 1. Log in to [azure portal](https://portal.azure.com/#home) for your organization. 2. Navigate to “app registrations” using the search bar. 3. Click `New Registration`. 4. Name it something like “Onyx Sharepoint Connector”, leave everything else as default, and click `Register`. 5. Under “Essentials” in the overview tab, you will find the **Application (client) ID** and **Directory (tenant) ID**. Save those for later. 6. Navigate to the “Certificates & secrets” tab in Azure Portal and click `New client secret`. 7. Fill out he description, set the expiration to 24 months, and click `Add`. 8. Copy the secret value in the **Value** column for later. 9. Navigate to the “Api Permissions” tab in the azure portal and click `add a permission`. 10. Click **Microsoft Graph**, then click on `Application permissions`. 11. Navigate to the “sites” permission group. 12. Select the checkbox for **Sites.Read.All**. * _Advanced:_ If you want to limit the sites this app has access to, select **Sites.Selected**. However, if you do this, you will need add the App you are currently registering to each site you want to index. 13. Click **Add permissions**. 14. Finally, click **Grant admin consent for ** (located next to **Add a permission**) and click **Confirm**. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Sharepoint** Connector Tile. 2. Provide the **Application (client) ID**, **Directory (tenant) ID** and **Client Secret Value** from steps above. 3. Select a list of sites to pull from or leave blank and click **Connect** to pull everything. * _Advanced:_ If you selected **Sites.Selected** in the scope selection step above, you will need to enter a list of sites you want to index as the App doesn’t have permission to list all sites. [Salesforce Connector](/connectors/salesforce) [Slack Connector](/connectors/slack) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Slack Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Slack Connector [​](#how-it-works) How it works ---------------------------------- The Slack connector indexes all public channels for a given workspace. * Upcoming: Support for private channels by tagging/adding the Onyx Slack Bot to private channels. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. **Note: You must be an admin of the Slack workspace to set up the connector** 2. Navigate and sign in to [https://api.slack.com/apps](https://api.slack.com/apps) . 3. Create a new Slack app: * Click the **Create New App** button in the top right. * Select **From an app manifest** option. * Select the relevant workspace from the dropdown and click **Next**. 4. Select the “YAML” tab, paste the following manifest into the text box, and click **Next**: display_information: name: OnyxConnector description: ReadOnly Connector for indexing Onyx features: bot_user: display_name: OnyxConnector always_online: false oauth_config: scopes: bot: - channels:history - channels:read - groups:history - groups:read - channels:join - im:history - users:read - users:read.email - usergroups:read settings: org_deploy_enabled: false socket_mode_enabled: false token_rotation_enabled: false 5. Click the **Create** button. 6. In the app page, navigate to the **OAuth & Permissions** tab under the **Features** header. 7. Copy the **Bot User OAuth Token**, this will be used to access Slack. ### [​](#indexing) Indexing 1. Navigate to the Connector Dashboard and select the **Slack** Connector. 2. Place the **Bot User OAuth Token** under **Step 1 Provide Credentials** 3. Set the **Workspace ID** (see below) and click **Connect**. **Note:** The first indexing pulls all of the public channels and takes longer than future updates. [Sharepoint Connector](/connectors/sharepoint) [Slab Connector](/connectors/slab) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Teams Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Teams Connector [​](#how-it-works) How it works ---------------------------------- The Teams connector will go through all requested sites belonging to an organization and index all the files available to that site. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Log in to azure portal for your organization. * [This page](https://portal.azure.com/#home) . 2. Navigate to “app registrations” using the search bar. 3. Click **New Registration**. 4. Name it something like “Onyx Teams Connector”, leave everything else as default, and click **Register**. 5. Under “Essentials” in the overview tab, you will find the client ID and Directory ID, copy paste those into the onyx connector. 6. Navigate to the “Certificates & secrets” tab in Azure Portal and click **New client secret**. 7. Fill out he description, set the expiration to 24 months, and click **Add**. 8. Copy the secret value in the **Value** column and paste it into the Onyx connector. 9. Navigate to the “Api Permissions” tab in the azure portal and click **add a permission**. 10. Click **Microsoft Graph**, then click on **Application permissions**. 11. Navigate to the “Team” permission group and select the checkbox for **Team.ReadBasic.All**. 12. Navigate to the “TeamsSettings” permission group and select the checkbox for **TeamSettings.ReadWrite.All**. 13. Navigate to the “Channel” permission group and select the checkbox for **Channel.ReadBasic.All**. 14. Navigate to the “ChannelSettings” permission group and select the checkbox for **ChannelSettings.ReadWrite.All**. 15. Navigate to the “ChannelMessage” permission group and select the checkbox for **ChannelMessage.Read.All**. 16. Navigate to the “ChannelMember” permission group and select the checkbox for **ChannelMember.Read.All**. 17. Then, click **Add permissions** at the bottom. 18. Finally, click **Grant admin consent for ** (located next to **Add a permission**) and click **Confirm**. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Teams** Connector Tile. 2. Provide the **Application (client) ID**, **Directory (tenant) ID** and **Client Secret Value** from steps above. 3. Select a list of teams to pull from or leave blank and click **Connect** to pull everything. [Slab Connector](/connectors/slab) [Web Connector](/connectors/web) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Web Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Web Connector [​](#how-it-works) How it works ---------------------------------- The Web Connector scrapes sites based on a base URL. * It only indexes files from the same domain and containing the same base path. * It will index pages reachable via hyperlinks from the base URL. * The text contents are cleaned up via some heuristics and some metadata such as the page Title is extracted. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization * As long as the page is reachable, no additional authorization is necessary. ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Web** Connector. 2. Input the base URL to index and click on Index. To see the status of the indexing, visit the Connectors Status page (top left). [Teams Connector](/connectors/teams) [Zendesk Connector](/connectors/zendesk) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Zendesk Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Zendesk Connector [​](#how-it-works) How it works ---------------------------------- The Zendesk Connector syncs all of the published Articles in your company’s subdomain. Some current limitations (a contributor is currently working on extending these): * It does not pick up Zendesk Tickets * It does not include comments. * It pulls all of the articles, does not allow selection by Category etc. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. The Zendesk Connector requires 3 things to connect: * Subdomain of the tenant (ex. your-company.zendesk.com) * Email address of the user to impersonate (owner of the API Token) * API Token 2. See below for instructions on getting the API token ### [​](#indexing) Indexing 1. Navigate to the **Admin Dashboard** and select `Add Connector` followed by the Zendesk tile. 2. Provide the information from the section above 3. Click connect to start pulling Articles from Zendesk. These are sync-ed every 10 minutes. [Web Connector](/connectors/web) [Zulip Connector](/connectors/zulip) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Zulip Connector - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Connectors Zulip Connector [​](#how-it-works) How it works ---------------------------------- The Zulip connector pulls in all streams and topics according to the permissions assigned to the bot user. [​](#setting-up) Setting up ------------------------------ ### [​](#authorization) Authorization 1. Onyx interfaces with Zulip as a Zulip Bot which is authenticated using the `zuliprc` config format. For more context directly from Zulip, refer to the following docs: * [https://zulip.com/api/running-bots](https://zulip.com/api/running-bots) * [https://zulip.com/api/configuring-python-bindings](https://zulip.com/api/configuring-python-bindings) 2. Start by creating a Zulip Bot 3. Copy the Bot authentication info (`zuliprc` contents), see red arrow below: Keep this copied text to provide to Onyx in the next step ### [​](#indexing) Indexing 1. Navigate to the Admin Dashboard and select the **Zulip** Connector 2. In **Step 1**, paste in the copied `zuliprc` value 3. Grab your Zulip Realm/URL info, see below: 4. In **Step 2**, provide the values for the Realm and URL [Zendesk Connector](/connectors/zendesk) [Highspot Connector](/connectors/highspot) On this page * [How it works](#how-it-works) * [Setting up](#setting-up) * [Authorization](#authorization) * [Indexing](#indexing) --- # Contact Us - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Welcome to Onyx Contact Us ### [​](#please-don%E2%80%99t-hesitate-to-reach-out) Please don’t hesitate to reach out! Shoot us a message at [founders@onyx.app](mailto:founders@onyx.app) Or join our [Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA) or [Discord](https://discord.gg/TDJ59cGV2X) [System Overview](/system_overview) [Connector Overview](/connectors/overview) On this page * [Please don’t hesitate to reach out!](#please-don%E2%80%99t-hesitate-to-reach-out) --- # Advanced Curator Examples - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Curator Advanced Curator Examples [​](#curator-example-1) Curator Example 1 -------------------------------------------- ### [​](#scenario) Scenario You are a Curator for the marketing team and a basic member of the sales team: You want to add a connector from the sales team’s group to a document set that belongs to the marketing team’s group: ### [​](#how-to-do-it) How to do it 1. First, the connector needs to be added to the marketing team’s group: There are multiple ways to accomplish this: a. You can have an admin promote you to Curator for the sales team’s group. b. You can have an admin add the connector to the group. c. You can create a copy of the connector yourself. 2. Once the connector is added to the group, you can add it to the document set. ### [​](#important-note%3A) Important Note: Giving connector access to multiple groups (options a and b) will prevent the connector from being editable by Curators that dont curate all the groups the connector is a part of. In this example, Curator 2 would lose edit control of the Shared Sales Materials Connector. If this is not what you want, you can create a new identical connector for the marketing team’s group and add it to the document set: [Curator Setup Example for Admins](/enterprise_edition/curator/admin_examples) [Use Cases Overview](/more/use_cases/overview) On this page * [Curator Example 1](#curator-example-1) * [Scenario](#scenario) * [How to do it](#how-to-do-it) * [Important Note:](#important-note%3A) --- # Enterprise Edition Configuration - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Enterprise Enterprise Edition Configuration [​](#ee-environment-variables) EE environment variables ---------------------------------------------------------- In additon to the extra features mentioned in the [overview page](/enterprise_edition/overview) , you have access to additional configuraton options in the form of environment variables as an Entprprise Edition user. ### [​](#env-seed-configuration) ENV\_SEED\_CONFIGURATION This variable allows you to start your Onyx instance with pre-configured options that persist across restarts. #### [​](#configuration-options) Configuration Options `ENV_SEED_CONFIGURATION` accepts a JSON string with the following options: * `llms`: List of LLM configurations (name, provider, api\_key, api\_base, api\_version, custom\_config, default\_model\_name, fast\_default\_model\_name) * `admin_user_emails`: List of email addresses for automatic admin role assignment * `seeded_name`: Pre-set name for your Onyx instance * `seeded_logo_path`: Path to your logo within the `assets` folder #### [​](#usage-example) Usage Example export ENV_SEED_CONFIGURATION='{"admin_user_emails": ["email@gmail.com"], "seeded_name": "Acme Corp", "seeded_logo_path": "assets/logo.png"}' This configuration sets up admin email, instance name, and logo path. ### [​](#api-key-hash-rounds) API\_KEY\_HASH\_ROUNDS This variable allows you to configure the number of rounds used in the SHA-256 Crypt hashing algorithm for API keys. * **Default value**: 535000 * **Allowed range**: 1000 to 999999999 #### [​](#usage-example-2) Usage Example export API_KEY_HASH_ROUNDS=600000 Increasing this value enhances security but may impact performance. The default value provides a good balance for most use cases. [​](#additional-api-endpoints) Additional API Endpoints ---------------------------------------------------------- ### [​](#standard-answers) Standard Answers Endpoint: `POST /query/standard-answer` This endpoint allows you to test the standard answers that would be returned for a given message and set of Slack bot categories. #### [​](#request-body) Request Body | Field | Type | Description | | --- | --- | --- | | `message` | `string` | The message to test against the standard answers. | | `slack_bot_categories` | `list[string]` | The Slack bot categories to use when searching for standard answers. | #### [​](#response) Response The response will contain the standard answers that match the provided message and categories, or an empty list of standard answers if none are found. { "standard_answers": [\ {\ "id": 1,\ "keyword": "wifi",\ "answer": "The wifi password is \"XYZ\"",\ "categories": [\ {\ "id": 0,\ "name": "General"\ }\ ]\ }\ ], "error_msg": null } If no standard answers are found, the response will be: { "standard_answers": [], "error_msg": null } #### [​](#example-usage) Example Usage You can test the endpoint using a tool like cURL: curl -X POST 'http://localhost:8080/query/standard-answer' \ -H 'Content-Type: application/json' \ -d '{ "message": "wifi password", "slack_bot_categories": ["General"] }' This will test the standard answers for the message “wifi password” and the Slack bot category “General.” If you have any questions, feel free to message us at [founders@onyx.app](mailto:founders@onyx.app) for clarification or join our \[Slack\]([https://join.slack.com/t/onyx-dot-app/shared\_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA) or [Discord](https://discord.gg/TDJ59cGV2X) communities. [Enterprise Edition Overview](/enterprise_edition/overview) [Creating Assistants](/guides/assistants) On this page * [EE environment variables](#ee-environment-variables) * [ENV\_SEED\_CONFIGURATION](#env-seed-configuration) * [Configuration Options](#configuration-options) * [Usage Example](#usage-example) * [API\_KEY\_HASH\_ROUNDS](#api-key-hash-rounds) * [Usage Example](#usage-example-2) * [Additional API Endpoints](#additional-api-endpoints) * [Standard Answers](#standard-answers) * [Request Body](#request-body) * [Response](#response) * [Example Usage](#example-usage) --- # Curator Role Overview - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Curator Curator Role Overview The Curator role is a role available in Onyx’s Enterprise Edition. Curators are essentially group level admins. This role is designed for larger organizations to be able to delegate the task of managing each group’s data to users within that group. [​](#curator-role-capabilities) Curator Role Capabilities ------------------------------------------------------------ Curators are able to do the following for groups they curate: 1. **Add and Remove Users to/from a Group** Curators are able to add and remove Basic users to/from a group. 2. **Create and Manage Credentials** Curators are able to create credentials for connectors. 3. **Create and Manage Connectors** Curators are able to create connectors that belong exclusively to the group(s) they curate. 4. **Create and Manage Document Sets** Curators are able to create document sets that belong exclusively to the group they curate. Users are then able to add connectors they curate to these document sets. They are also able to add/remove public connectors to/from these document sets. 5. **Create and Manage Personas for a Group** Curators are able to create and manage personas that belong exclusively to the group(s) they curate. [​](#curator-role-restrictions) Curator Role Restrictions ------------------------------------------------------------ 1. **Curators can only edit objects that belong exclusively to the group(s) they curate** If the object a Curator is trying to edit belongs to another group that the Curator doesn’t curate, they will not be able to edit it. However, they will still be able to view it. They will also be able to add/remove it to document sets they curate or remove it from the group they curate. 2. **Curators cannot create public objects** Curators cannot create/edit public objects such as connectors, credentials, or document sets. However, they can add/remove public objects from other objects they curate. E.g. A Curator cannot create a public connector, but they can add/remove public connectors to/from the document sets they curate. Same goes for adding/removing public document sets to a group. 3. **Curators must attach objects they create to a group they curate** If a curator created an object without attaching it to a group, they would not be able to see, edit, or delete that object. So we disallow that possibility. For a better understanding of how the Curator role works, please refer to the [Curator Setup Examples](/enterprise_edition/curator/admin_examples) . [​](#global-curators) Global Curators ---------------------------------------- Global Curators are identical to Curators except that they are automatically curators of all groups they are a member of. [Permissioning](/enterprise_edition/permissioning) [Curator Setup Example for Admins](/enterprise_edition/curator/admin_examples) On this page * [Curator Role Capabilities](#curator-role-capabilities) * [Curator Role Restrictions](#curator-role-restrictions) * [Global Curators](#global-curators) --- # Curator Setup Example for Admins - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Curator Curator Setup Example for Admins The goal here is to walk through a simple example of why and how an admin would set up Curators. [​](#curator-setup-example) Curator Setup Example ---------------------------------------------------- ### [​](#scenario) Scenario You are a Onyx admin for a company with a **Sales Team** and a **Marketing Team**. You want the teams to have access to the data they need to do their jobs, but you don’t want them to have access to each other’s data. However, creating the groups, creating all the connectors, document sets, etc. for each group and then assigning the relevant users to each group may require significant and ongoing effort. Appointing an admin for each group _would_ give them access to the data they need, but then those users would be able to access/share all data in the Onyx instance (which is not ideal). Instead of that, you can appoint a Curator(s) for each group, who will be able to create the connectors, document sets, etc. for that group. ### [​](#steps%3A) Steps: 1. Create a group for the marketing team and a group for the sales team: 2. Add the user(s) you would like to be Curators for each group: 3. Change their role in the group to Curator: 4. The Curators can now manage their groups by inviting users, creating connectors, building document sets, and more (Curator POV): [Curator Role Overview](/enterprise_edition/curator/overview) [Advanced Curator Examples](/enterprise_edition/curator/curator_examples) On this page * [Curator Setup Example](#curator-setup-example) * [Scenario](#scenario) * [Steps:](#steps%3A) --- # Bring Your Own Analytics - Onyx Documentation [Onyx Documentation home page![light logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/light_logo.png)![dark logo](https://mintlify.s3.us-west-1.amazonaws.com/danswer/logo/dark_logo.png)](/) Search or ask... Search... Navigation Enterprise Bring Your Own Analytics As part of the Enterprise Edition, we provide the ability to bring your own analytics provider. This allows you to get session replays, usage metrics, etc. in the platform you’re alraedy familiar with. To enable this, there are a few steps: 1. Set the `CUSTOM_ANALYTICS_SECRET_KEY` environment variable to some random string (e.g. `2uIfMPVgHCTD57HU`). Make sure you have the value saved temporarily somewhere. 2. Re-deploy Onyx. 3. Go to the `Custom Analytics` tab in the Admin Panel. 4. Enter in the Javascript snippet provided by your Analytics provider. This snippet would normally be placed within the `` tags at the base of your project. For the `Secret Key`, use the value you saved in step 1. For reference, [here](https://posthog.com/docs/product-analytics/installation#option-1-add-the-javascript-snippet-to-your-html-span-classbg-gray-accent-light-darkbg-gray-accent-dark-text-gray-font-semibold-align-middle-text-sm-p-1-roundedrecommendedspan) is the page on the Posthog docs which describes the script referred to above. _NOTE_: the `