From d391b00bc2a06cd3dbb3574a20c4e4ce2a26b769 Mon Sep 17 00:00:00 2001 From: Parth Langalia Date: Thu, 11 Sep 2025 13:43:06 +0530 Subject: [PATCH 1/2] CONN-5158: Added ChatGPT Compliance Source --- blog-service/2025-09-11-collection.md | 12 ++ cid-redirects.json | 1 + .../product-list/product-list-a-l.md | 1 + .../chatgpt-compliance-source.md | 110 ++++++++++++++++++ .../index.md | 6 + sidebars.ts | 1 + .../files/c2c/chatgpt-compliance/example.json | 16 +++ .../files/c2c/chatgpt-compliance/example.tf | 19 +++ static/img/send-data/chatgpt-compliance.png | Bin 0 -> 40466 bytes 9 files changed, 166 insertions(+) create mode 100644 blog-service/2025-09-11-collection.md create mode 100644 docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md create mode 100644 static/files/c2c/chatgpt-compliance/example.json create mode 100644 static/files/c2c/chatgpt-compliance/example.tf create mode 100644 static/img/send-data/chatgpt-compliance.png diff --git a/blog-service/2025-09-11-collection.md b/blog-service/2025-09-11-collection.md new file mode 100644 index 0000000000..ac2b56c1e4 --- /dev/null +++ b/blog-service/2025-09-11-collection.md @@ -0,0 +1,12 @@ +--- +title: ChatGPT Compliance Source (Collection) +image: https://help.sumologic.com/img/sumo-square.png +keywords: + - c2c + - chatgpt-compliance-source +hide_table_of_contents: true +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +We're excited to announce the release of our new cloud-to-cloud source for ChatGPT Compliance. This source aims to collect the conversation logs from the ChatGPT Compliance platform and send them to Sumo Logic for streamlined analysis. [Learn more](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source). \ No newline at end of file diff --git a/cid-redirects.json b/cid-redirects.json index de2c7f53b9..724ba016cd 100644 --- a/cid-redirects.json +++ b/cid-redirects.json @@ -2914,6 +2914,7 @@ "/cid/21039": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/vectra-source", "/cid/21059": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/onelogin-source", "/cid/27061": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/github-copilot-source", + "/cid/26011": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source", "/cid/21041": "/docs/integrations/google/cloud-security-command-center", "/cid/21097": "/docs/integrations/saas-cloud/confluent-cloud", "/cid/21040": "/docs/manage/manage-subscription/create-and-manage-orgs/create-manage-orgs-service-providers", diff --git a/docs/integrations/product-list/product-list-a-l.md b/docs/integrations/product-list/product-list-a-l.md index 9fa3bc14c3..5413052899 100644 --- a/docs/integrations/product-list/product-list-a-l.md +++ b/docs/integrations/product-list/product-list-a-l.md @@ -148,6 +148,7 @@ For descriptions of the different types of integrations Sumo Logic offers, see [ | Thumbnail icon | [Cato Networks](https://www.catonetworks.com/) | App: [Cato Networks](/docs/integrations/saas-cloud/cato-networks/)
Cloud SIEM integration: [Cato Networks](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/53e043b0-76e3-471a-84ec-0266a4f3b279.md)
Collector: [Cato Networks Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/cato-networks-source/) | | Thumbnail icon | [Censys](https://censys.com/) | Automation integrations:
- [Censys](/docs/platform-services/automation-service/app-central/integrations/censys/)
- [Censys V2](/docs/platform-services/automation-service/app-central/integrations/censys-v2/) | | Thumbnail icon | [Certego](https://www.certego.net/) | Automation integration: [Certego](/docs/platform-services/automation-service/app-central/integrations/certego/) | +| Thumbnail icon | [ChatGPT Compliance](https://chatgpt.com/) | Collector: [ChatGPT Compliance Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source) | | Thumbnail icon | [Check-Host](https://check-host.net/) | Automation integration: [Check-Host](/docs/platform-services/automation-service/app-central/integrations/check-host/) | | Thumbnail icon | [Check Point](https://www.checkpoint.com/) | Automation integration: [Check Point](/docs/platform-services/automation-service/app-central/integrations/check-point/)
Cloud SIEM integration: [Check Point](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/6ee43776-3c2c-49b9-a5cf-51309e815aa3.md)
Community app: [Sumo Logic for Check Point](https://github.com/SumoLogic/sumologic-content/tree/master/Checkpoint) | | Thumbnail icon | [Chef](https://www.chef.io/) | Collector: [Install OpenTelemetry Collector on Chef](/docs/send-data/opentelemetry-collector/install-collector/chef/)
Community app: [Sumo Logic for Chef](https://github.com/SumoLogic/sumologic-content/tree/master/Chef) | diff --git a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md new file mode 100644 index 0000000000..dd0346dc1e --- /dev/null +++ b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md @@ -0,0 +1,110 @@ +--- +id: chatgpt-compliance-source +title: ChatGPT Compliance Source +sidebar_label: ChatGPT Compliance +tags: + - cloud-to-cloud + - chatgpt-compliance +description: Learn to collect the conversations from ChatGPT Compliance platform. +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +ChatGPT-Compliance-icon + +OpenAI: OpenAI provides advanced AI solutions for enterprises, offering secure, compliant, and customizable conversational AI capabilities to improve productivity while meeting organizational governance and regulatory needs. + +ChatGPT Compliance: The Compliance API enables enterprise customers to access structured conversation logs and metadata, integrating with eDiscovery, DLP, or SIEM systems to support auditing, compliance, and security requirements. + +## Data collected + +| Source | Description | Polling interval | +| :-- | :-- | :-- | +| Conversations | Log of user interactions with ChatGPT, including exchanged messages and metadata, used for compliance review and auditing. | 1 hour | + +## Setup + +### Vendor configuration + +You are required to provide the **Workspace ID** and **API Key** to configure the ChatGPT Compliance source. + +#### Pre-requisites + +1. **Workspace ID** + - In the OpenAI platform sidebar, go to **Settings - Workspace Settings (or General Settings)**. + - Your **Workspace ID** can be found in the **About / Workspace Info** section. + +2. **API Key** + - Create a new key via the [OpenAI API Platform Portal](https://platform.openai.com/). + - Must be generated under the **correct Organization (Enterprise Workspace)**. Do not use a personal account/org. + - Configure with: **Default Project | All Permissions**. + - This must be a **fresh key**. Once Compliance API scopes are assigned, all other scopes are revoked. + - The API key can only be viewed/copied **once**, so ensure it is securely stored. + - To request Compliance API scope, email [support@openai.com](mailto:support@openai.com) with: + - Last 4 digits of the API key. + - Key Name (name assigned during creation). + - Created By (user who created the key). + - Requested scope: `read`. + - OpenAI’s team will review the request. Once verified, they will grant the requested Compliance API scopes to the key. + +### Source configuration + +When you create a ChatGPT Compliance Source, you add it to a Hosted Collector. Before creating the source, identify the Hosted Collector you want to use or create a new Hosted Collector. For instructions, see [Configure a Hosted Collector and Source](/docs/send-data/hosted-collectors/configure-hosted-collector). + +To configure a ChatGPT Compliance Source, follow the steps below: +1. [**New UI**](/docs/get-started/sumo-logic-ui). In the Sumo Logic main menu select **Data Management**, and then under **Data Collection** select **Collection**. You can also click the **Go To...** menu at the top of the screen and select **Collection**.
[**Classic UI**](/docs/get-started/sumo-logic-ui-classic). In the main Sumo Logic menu, select **Manage Data > Collection > Collection**. +1. On the Collection page, click **Add Source** next to a Hosted Collector. +1. Search for and select **ChatGPT Compliance**. +1. Enter a **Name** for the Source. The description is optional. +1. (Optional) For **Source Category**, enter any string to tag the output collected from the Source. Category metadata is stored in a searchable field called `_sourceCategory`. +1. (Optional) **Fields**. Click the **+Add** button to define the fields you want to associate. Each field needs a name (key) and value. + * green check circle.png A green circle with a check mark is shown when the field exists and is enabled in the Fields table schema. + * orange exclamation point.png An orange triangle with an exclamation point is shown when the field doesn't exist in the Fields table schema. In this case, you'll see an option to automatically add or enable the nonexistent fields to the Fields table schema. If a field is sent to Sumo Logic that does not exist in the Fields schema it is ignored, known as dropped. +1. **Workspace ID**. Name of the workspace ID. +1. **API Key**. Enter the API Key generated from the [ChatGPT platform](#vendor-configuration). +1. **Polling Interval**. The polling interval is set for 1 hour by default and can be configured to a maximum of 24 hours. You can adjust it based on your needs. This sets how often the source checks for new data. +1. When you are finished configuring the Source, click **Save**. + +## JSON schema + +Sources can be configured using UTF-8 encoded JSON files with the Collector Management API. See [Use JSON to Configure Sources](/docs/send-data/use-json-configure-sources) for details. + +| Parameter | Type | Value | Required | Description | +|:--|:--|:--|:--|:--| +| schemaRef | JSON Object | `{"type":"ChatGPT Compliance"}` | Yes | Define the specific schema type. | +| sourceType | String | `"Universal"` | Yes | Type of source. | +| config | JSON Object | [Configuration object](#configuration-object) | Yes | Source type specific values. | + +### Configuration Object + +| Parameter | Type | Required | Default | Description | Example | +|:--|:--|:--|:--|:--|:--| +| name | String | Yes | `null` | Type a desired name of the source. The name must be unique per Collector. This value is assigned to the [metadata](/docs/search/get-started-with-search/search-basics/built-in-metadata) field `_source`. | `"mySource"` | +| description | String | No | `null` | Type a description of the source. | `"Testing source"` | +| category | String | No | `null` | Type a category of the source. This value is assigned to the [metadata](/docs/search/get-started-with-search/search-basics/built-in-metadata) field `_sourceCategory`. See [best practices](/docs/send-data/best-practices) for details. | `"mySource/test"` | +| fields | JSON Object | No | `null` | JSON map of key-value fields (metadata) to apply to the Collector or Source. Use the boolean field _siemForward to enable forwarding to SIEM.| `{"_siemForward": false, "fieldA": "valueA"}` | +| workspaceId | String | Yes | `null` | Name of your workspace ID. | ABCD-SAMPLE-WORKSPACE-ID | +| apiKey | String | Yes | `null` | API Key of the account. | sk-proj-XXXXXXXXXXXXXXX | +| pollingInterval | Integer | Yes | `1 hour` | Time interval (in hours) after which the source will check for new data. | 1h | + +### JSON example + +```json reference +https://github.com/SumoLogic/sumologic-documentation/blob/main/static/files/c2c/chatgpt-compliance/example.json +``` + +### Terraform example + +```sh reference +https://github.com/SumoLogic/sumologic-documentation/blob/main/static/files/c2c/chatgpt-compliance/example.tf +``` + +## Limitations +1. Updates to conversations after a prolonged gap may cause re-ingestion and potential duplication. +2. As ChatGPT continues to evolve, updates may alter conversation data or API behavior, potentially impacting integration consistency. + +## FAQ + +:::info +Click [here](/docs/c2c/info) for more information about Cloud-to-Cloud sources. +::: diff --git a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md index 1d52d70279..25ca7208cc 100644 --- a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md +++ b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md @@ -162,6 +162,12 @@ In this section, we'll introduce the following concepts:

Cato Networks Source helps to retrieve Cato audit and security logs into the Sumo Logic environment.

+
+
+ Thumbnail icon

ChatGPT Compliance

+

Learn to collect the conversations from ChatGPT Compliance platform.

+
+
icon

Cisco AMP

diff --git a/sidebars.ts b/sidebars.ts index 881b2b0e32..c0b4e83494 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -445,6 +445,7 @@ module.exports = { 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/carbon-black-cloud-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/carbon-black-inventory-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cato-networks-source', + 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cisco-amp-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cisco-meraki-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cisco-vulnerability-management-source', diff --git a/static/files/c2c/chatgpt-compliance/example.json b/static/files/c2c/chatgpt-compliance/example.json new file mode 100644 index 0000000000..67542ac717 --- /dev/null +++ b/static/files/c2c/chatgpt-compliance/example.json @@ -0,0 +1,16 @@ +{ + "api.version": "v1", + "source": { + "config": { + "name": "ChatGPT Compliance", + "workspaceID": "ABCD-SAMPLE-WORKSPACE-ID", + "apiKey": "sk-proj-XXXXXXXXX", + "pollingIntervalHour": "1h" + }, + "schemaRef": { + "type": "ChatGPT Compliance" + }, + "sourceType": "Universal" + } +} + \ No newline at end of file diff --git a/static/files/c2c/chatgpt-compliance/example.tf b/static/files/c2c/chatgpt-compliance/example.tf new file mode 100644 index 0000000000..2c4a0a0d83 --- /dev/null +++ b/static/files/c2c/chatgpt-compliance/example.tf @@ -0,0 +1,19 @@ +resource "sumologic_cloud_to_cloud_source" "chatgpt-compliance-source" { + collector_id = sumologic_collector.collector.id + + schema_ref = { + type = "ChatGPT Compliance" + } + + config = jsonencode({ + name = "ChatGPT Compliance" + workspaceID = "ABCD-SAMPLE-WORKSPACE-ID" + apiKey = "sk-proj-XXXXXXXXX" + pollingIntervalHour = "1h" + }) +} + +resource "sumologic_collector" "collector" { + name = "my-collector" + description = "Just testing this" +} \ No newline at end of file diff --git a/static/img/send-data/chatgpt-compliance.png b/static/img/send-data/chatgpt-compliance.png new file mode 100644 index 0000000000000000000000000000000000000000..3d92eb6b0f5e21032a973a082ab2d4c89aa7c17b GIT binary patch literal 40466 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 literal 0 HcmV?d00001 From 86c0959c1037da4876b2d070373f3a3caf0b9c50 Mon Sep 17 00:00:00 2001 From: Jagadisha V Date: Thu, 11 Sep 2025 17:15:23 +0530 Subject: [PATCH 2/2] Formatting according to Beta release --- blog-service/2025-09-11-collection.md | 12 ---- .../product-list/product-list-a-l.md | 1 - .../chatgpt-compliance-source.md | 60 +++++++++++-------- .../index.md | 6 -- sidebars.ts | 2 +- 5 files changed, 36 insertions(+), 45 deletions(-) delete mode 100644 blog-service/2025-09-11-collection.md diff --git a/blog-service/2025-09-11-collection.md b/blog-service/2025-09-11-collection.md deleted file mode 100644 index ac2b56c1e4..0000000000 --- a/blog-service/2025-09-11-collection.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: ChatGPT Compliance Source (Collection) -image: https://help.sumologic.com/img/sumo-square.png -keywords: - - c2c - - chatgpt-compliance-source -hide_table_of_contents: true ---- - -import useBaseUrl from '@docusaurus/useBaseUrl'; - -We're excited to announce the release of our new cloud-to-cloud source for ChatGPT Compliance. This source aims to collect the conversation logs from the ChatGPT Compliance platform and send them to Sumo Logic for streamlined analysis. [Learn more](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source). \ No newline at end of file diff --git a/docs/integrations/product-list/product-list-a-l.md b/docs/integrations/product-list/product-list-a-l.md index 5413052899..9fa3bc14c3 100644 --- a/docs/integrations/product-list/product-list-a-l.md +++ b/docs/integrations/product-list/product-list-a-l.md @@ -148,7 +148,6 @@ For descriptions of the different types of integrations Sumo Logic offers, see [ | Thumbnail icon | [Cato Networks](https://www.catonetworks.com/) | App: [Cato Networks](/docs/integrations/saas-cloud/cato-networks/)
Cloud SIEM integration: [Cato Networks](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/53e043b0-76e3-471a-84ec-0266a4f3b279.md)
Collector: [Cato Networks Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/cato-networks-source/) | | Thumbnail icon | [Censys](https://censys.com/) | Automation integrations:
- [Censys](/docs/platform-services/automation-service/app-central/integrations/censys/)
- [Censys V2](/docs/platform-services/automation-service/app-central/integrations/censys-v2/) | | Thumbnail icon | [Certego](https://www.certego.net/) | Automation integration: [Certego](/docs/platform-services/automation-service/app-central/integrations/certego/) | -| Thumbnail icon | [ChatGPT Compliance](https://chatgpt.com/) | Collector: [ChatGPT Compliance Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source) | | Thumbnail icon | [Check-Host](https://check-host.net/) | Automation integration: [Check-Host](/docs/platform-services/automation-service/app-central/integrations/check-host/) | | Thumbnail icon | [Check Point](https://www.checkpoint.com/) | Automation integration: [Check Point](/docs/platform-services/automation-service/app-central/integrations/check-point/)
Cloud SIEM integration: [Check Point](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/vendors/6ee43776-3c2c-49b9-a5cf-51309e815aa3.md)
Community app: [Sumo Logic for Check Point](https://github.com/SumoLogic/sumologic-content/tree/master/Checkpoint) | | Thumbnail icon | [Chef](https://www.chef.io/) | Collector: [Install OpenTelemetry Collector on Chef](/docs/send-data/opentelemetry-collector/install-collector/chef/)
Community app: [Sumo Logic for Chef](https://github.com/SumoLogic/sumologic-content/tree/master/Chef) | diff --git a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md index dd0346dc1e..9ba6bd09e9 100644 --- a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md +++ b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source.md @@ -1,20 +1,26 @@ --- id: chatgpt-compliance-source -title: ChatGPT Compliance Source -sidebar_label: ChatGPT Compliance +title: ChatGPT Compliance Source (Beta) +sidebar_label: ChatGPT Compliance (Beta) tags: - cloud-to-cloud - chatgpt-compliance description: Learn to collect the conversations from ChatGPT Compliance platform. --- + + + + +

Beta

+ import useBaseUrl from '@docusaurus/useBaseUrl'; ChatGPT-Compliance-icon -OpenAI: OpenAI provides advanced AI solutions for enterprises, offering secure, compliant, and customizable conversational AI capabilities to improve productivity while meeting organizational governance and regulatory needs. +OpenAI provides advanced AI solutions for enterprises, offering secure, compliant, and customizable conversational AI capabilities to improve the productivity while meeting organizational governance and regulatory needs. -ChatGPT Compliance: The Compliance API enables enterprise customers to access structured conversation logs and metadata, integrating with eDiscovery, DLP, or SIEM systems to support auditing, compliance, and security requirements. +The ChatGPT Compliance API enables enterprise customers to access structured conversation logs and metadata, integrating with eDiscovery, DLP, or SIEM systems to support auditing, compliance, and security requirements. ## Data collected @@ -28,24 +34,28 @@ ChatGPT Compliance: The Compliance API enables enterprise customers to access st You are required to provide the **Workspace ID** and **API Key** to configure the ChatGPT Compliance source. -#### Pre-requisites - -1. **Workspace ID** - - In the OpenAI platform sidebar, go to **Settings - Workspace Settings (or General Settings)**. - - Your **Workspace ID** can be found in the **About / Workspace Info** section. - -2. **API Key** - - Create a new key via the [OpenAI API Platform Portal](https://platform.openai.com/). - - Must be generated under the **correct Organization (Enterprise Workspace)**. Do not use a personal account/org. - - Configure with: **Default Project | All Permissions**. - - This must be a **fresh key**. Once Compliance API scopes are assigned, all other scopes are revoked. - - The API key can only be viewed/copied **once**, so ensure it is securely stored. - - To request Compliance API scope, email [support@openai.com](mailto:support@openai.com) with: - - Last 4 digits of the API key. - - Key Name (name assigned during creation). - - Created By (user who created the key). - - Requested scope: `read`. - - OpenAI’s team will review the request. Once verified, they will grant the requested Compliance API scopes to the key. +- Follow the below steps to collect the **Workspace ID**: + 1. In the OpenAI platform sidebar, go to **Settings - Workspace Settings (or General Settings)**. + 1. Your **Workspace ID** can be found in the **About / Workspace Info** section. + +- Follow the below steps to collect the **API Key**: + 1. Sign in to the [OpenAI API Platform Portal](https://platform.openai.com/). + :::note + Be sure to create the API key within the same organization as your ChatGPT Enterprise workspace. + ::: + 1. Navigate to **API Keys** > **+ Create new secret key**. + 1. On the pop-up window, enter the following details: + - Under **Owned by**, select **You**. + - Enter the name of the API key. + - Select the default project. + - Under **Permissions**, select **All**. + 1. Click **Create secret key**. + 1. Copy and save the key. + :::note + The API key is only visible once, so be sure to copy it securely. This API key will be required when you set up the ChatGPT Enterprise instance on the Sumo Logic platform. + ::: + 1. Send an email to `support@openai.com` requesting access to the Compliance API. Include the last 4 characters of the API key, the name of the key, who created it, and the requested scope (read). + 1. OpenAI team will verify the key and grant the requested Compliance API scopes. ### Source configuration @@ -60,7 +70,7 @@ To configure a ChatGPT Compliance Source, follow the steps below: 1. (Optional) **Fields**. Click the **+Add** button to define the fields you want to associate. Each field needs a name (key) and value. * green check circle.png A green circle with a check mark is shown when the field exists and is enabled in the Fields table schema. * orange exclamation point.png An orange triangle with an exclamation point is shown when the field doesn't exist in the Fields table schema. In this case, you'll see an option to automatically add or enable the nonexistent fields to the Fields table schema. If a field is sent to Sumo Logic that does not exist in the Fields schema it is ignored, known as dropped. -1. **Workspace ID**. Name of the workspace ID. +1. **Workspace ID**. Name of the workspace ID collected from the [ChatGPT platform](#vendor-configuration). 1. **API Key**. Enter the API Key generated from the [ChatGPT platform](#vendor-configuration). 1. **Polling Interval**. The polling interval is set for 1 hour by default and can be configured to a maximum of 24 hours. You can adjust it based on your needs. This sets how often the source checks for new data. 1. When you are finished configuring the Source, click **Save**. @@ -100,8 +110,8 @@ https://github.com/SumoLogic/sumologic-documentation/blob/main/static/files/c2c/ ``` ## Limitations -1. Updates to conversations after a prolonged gap may cause re-ingestion and potential duplication. -2. As ChatGPT continues to evolve, updates may alter conversation data or API behavior, potentially impacting integration consistency. +- Updates to conversations after a prolonged gap may cause re-ingestion and potential duplication. +- As ChatGPT continues to evolve, updates may alter conversation data or API behavior, potentially impacting integration consistency. ## FAQ diff --git a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md index 25ca7208cc..1d52d70279 100644 --- a/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md +++ b/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/index.md @@ -162,12 +162,6 @@ In this section, we'll introduce the following concepts:

Cato Networks Source helps to retrieve Cato audit and security logs into the Sumo Logic environment.

-
-
- Thumbnail icon

ChatGPT Compliance

-

Learn to collect the conversations from ChatGPT Compliance platform.

-
-
icon

Cisco AMP

diff --git a/sidebars.ts b/sidebars.ts index c0b4e83494..e22b63901d 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -445,7 +445,7 @@ module.exports = { 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/carbon-black-cloud-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/carbon-black-inventory-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cato-networks-source', - 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source', + //'send-data/hosted-collectors/cloud-to-cloud-integration-framework/chatgpt-compliance-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cisco-amp-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cisco-meraki-source', 'send-data/hosted-collectors/cloud-to-cloud-integration-framework/cisco-vulnerability-management-source',