diff --git a/_api-reference/data-source-apis/create-data-source.md b/_api-reference/data-source-apis/create-data-source.md
new file mode 100644
index 00000000000..99b00a8326a
--- /dev/null
+++ b/_api-reference/data-source-apis/create-data-source.md
@@ -0,0 +1,148 @@
+---
+layout: default
+title: Create Data Source API
+parent: Data Source APIs
+nav_order: 10
+---
+
+# Create Data Source API
+**Introduced 2.4**
+{: .label .label-purple }
+
+The Create Data Source API allows you to register and configure external data sources that can be queried through OpenSearch's query engine. Data sources represent connections to external databases or services, enabling cross-database querying and data federation capabilities.
+
+
+## Endpoints
+```json
+POST /_plugins/_query/_datasources
+```
+
+
+## Request body fields
+
+The request body is required. It is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `connector` | **Required** | String | The connector type for the data source such as `s3glue`, `prometheus`, or `mysql`. |
+| `name` | **Required** | String | The name of the data source. This must be unique within the cluster. |
+| `properties` | **Required** | Object | The configuration properties for the data source, specific to each connector type. |
+| `resultIndex` | **Required** | String | The index where query results from this data source are stored. |
+| `status` | **Required** | String | The current status of the data source. Set to `ACTIVE` for a new data source. |
+| `allowedRoles` | Optional | Array of strings | List of roles that are allowed to access this data source. |
+| `configuration` | Optional | Object | Additional configuration settings for the data source connection. |
+| `description` | Optional | String | A human-readable description of the data source. |
+
+
+
+ Request body fields: configuration
+
+ {: .text-delta }
+
+`configuration` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `credentials` | **Required** | Object | The authentication credentials for the data source. |
+| `endpoint` | **Required** | String | The connection endpoint for the data source (such as URL and hostname). |
+
+
+
+
+
+ Request body fields: configuration
> credentials
+
+ {: .text-delta }
+
+`credentials` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `username` | **Required** | String | The username for authentication. |
+| `password` | **Required** | String | The password for authentication. |
+
+
+
+
+
+ Request body fields: properties
+
+ {: .text-delta }
+
+The `properties` object contains fields specific to each connector type. Each connector requires different properties for establishing connections and executing queries. Refer to the specific connector documentation for details about required properties.
+
+
+
+## Example request
+
+The following example creates a MySQL data source:
+
+```json
+POST /_plugins/_query/_datasources
+{
+ "name": "mysql-customer-database",
+ "description": "Connection to customer database",
+ "connector": "mysql",
+ "resultIndex": "customer_data_results",
+ "status": "ACTIVE",
+ "allowedRoles": ["analyst_role", "admin_role"],
+ "configuration": {
+ "endpoint": "jdbc:mysql://mysql-server:3306/customers",
+ "credentials": {
+ "username": "db_user",
+ "password": "db_password"
+ }
+ },
+ "properties": {
+ "database": "customers",
+ "port": "3306",
+ "host": "mysql-server",
+ "encryption": true,
+ "connectionTimeout": 30000
+ }
+}
+```
+{% include copy-curl.html %}
+
+## Example response
+
+```json
+{
+ "dataSourceId": "gxUYL4QB-QllXHAp5pF4",
+ "name": "mysql-customer-database",
+ "status": "ACTIVE",
+ "message": "Data source created successfully."
+}
+```
+
+## Response body fields
+
+The response body is a JSON object with the following fields:
+
+| Property | Data type | Description |
+| :--- | :--- | :--- |
+| `dataSourceId` | String | The unique identifier for the created data source. |
+| `name` | String | The name of the data source. |
+| `status` | String | The status of the data source. |
+| `message` | String | A message describing the result of the operation. |
+
+## Usage notes
+
+When creating data sources in OpenSearch, it's important to consider both security and performance implications. Data sources serve as bridges between your OpenSearch cluster and external data systems, enabling powerful cross-database queries and data federation scenarios. However, they also represent potential security boundaries and performance bottlenecks if not configured properly. The following guidelines will help you implement data sources securely and efficiently
+
+- **Security**: Store credentials securely. Consider using a secrets manager or environment variables instead of hardcoding credentials.
+
+- **Connection testing**: After creating a data source, use the test connection API to verify connectivity.
+
+- **Role-based access**: Use `allowedRoles` to restrict access to the data source to specific user roles.
+
+- **Result index**: The `resultIndex` parameter specifies where query results will be stored. Ensure appropriate index permissions are configured.
+
+- **Connector types**: Different connector types have specific property requirements. Consult the documentation for your specific connector.
+
+- **Status management**: A newly created data source typically has the status "ACTIVE". Other possible statuses include "DISABLED" or "ERROR".
+
+- **Permissions**: Users need appropriate permissions to create data sources. Typically, this requires administrative privileges.
\ No newline at end of file
diff --git a/_api-reference/data-source-apis/delete-data-source.md b/_api-reference/data-source-apis/delete-data-source.md
new file mode 100644
index 00000000000..12deead43c5
--- /dev/null
+++ b/_api-reference/data-source-apis/delete-data-source.md
@@ -0,0 +1,79 @@
+---
+layout: default
+title: Delete Data Source API
+parent: Data Source APIs
+nav_order: 50
+---
+
+# Delete Data Source API
+**Introduced 2.4**
+{: .label .label-purple }
+
+The Delete Data Source API allows you to remove an existing data source from your OpenSearch cluster. This API is useful when you need to decommission a data source that is no longer needed, remove a misconfigured data source, or clean up unused resources.
+
+
+## Endpoints
+```json
+DELETE /_plugins/_query/_datasources/{datasource_name}
+```
+
+
+
+## Path parameters
+
+The following table lists the available path parameters.
+
+| Parameter | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `datasource_name` | **Required** | String | The name of the data source to delete. |
+
+
+
+## Example request
+
+```bash
+DELETE /_plugins/_query/_datasources/mysql-customer-database
+```
+{% include copy-curl.html %}
+
+## Example response
+
+```json
+{
+ "dataSourceId": "gxUYL4QB-QllXHAp5pF4",
+ "name": "mysql-customer-database",
+ "message": "Data source deleted successfully."
+}
+```
+
+## Response body fields
+
+The response body is a JSON object with the following fields:
+
+| Property | Data type | Description |
+| :--- | :--- | :--- |
+| `dataSourceId` | String | The unique identifier of the deleted data source. |
+| `name` | String | The name of the deleted data source. |
+| `message` | String | A message describing the result of the operation. |
+
+## Usage notes
+
+When deleting data sources, consider these important implications:
+
+- **Permanent operation**: Deleting a data source is a permanent operation and cannot be undone. If you need the data source again in the future, you will need to recreate it.
+
+- **Active queries**: Deletion of a data source will fail if there are active queries using the data source. It's recommended to ensure no active queries are running against the data source before attempting to delete it.
+
+- **Result index**: The `resultIndex` associated with the data source is not automatically deleted. If you want to remove the stored query results, you'll need to delete that index separately.
+
+- **Dependent objects**: Any saved queries, visualizations, or dashboards that reference the deleted data source may stop functioning. Ensure that you update or remove any dependent objects before or after deleting a data source.
+
+- **Permissions**: Deleting data sources typically requires administrative privileges.
+
+- **Cleanup considerations**: Consider backing up the data source configuration before deletion if there's a possibility you might need to recreate it in the future.
\ No newline at end of file
diff --git a/_api-reference/data-source-apis/get-data-source.md b/_api-reference/data-source-apis/get-data-source.md
new file mode 100644
index 00000000000..c297ba23959
--- /dev/null
+++ b/_api-reference/data-source-apis/get-data-source.md
@@ -0,0 +1,141 @@
+---
+layout: default
+title: Get Data Source API
+parent: Data Source APIs
+nav_order: 30
+---
+
+# Get Data Source API
+**Introduced 2.4**
+{: .label .label-purple }
+
+The Get Data Source API retrieves detailed information about a specific data source by name. This API is useful when you need to inspect the configuration, connection details, or status of an individual data source in your OpenSearch environment.
+
+
+## Endpoints
+```json
+GET /_plugins/_query/_datasources/{datasource_name}
+```
+
+
+
+## Path parameters
+
+The following table lists the available path parameters.
+
+| Parameter | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `datasource_name` | **Required** | String | The name of the data source to retrieve. |
+
+
+
+## Example request
+
+```bash
+GET /_plugins/_query/_datasources/mysql-customer-database
+```
+{% include copy-curl.html %}
+
+## Example response
+
+```json
+{
+ "id": "gxUYL4QB-QllXHAp5pF4",
+ "name": "mysql-customer-database",
+ "description": "Connection to customer database",
+ "connector": "mysql",
+ "resultIndex": "customer_data_results",
+ "status": "ACTIVE",
+ "allowedRoles": ["analyst_role", "admin_role"],
+ "configuration": {
+ "endpoint": "jdbc:mysql://mysql-server:3306/customers",
+ "credentials": {
+ "username": "db_user",
+ "password": "******"
+ }
+ },
+ "properties": {
+ "database": "customers",
+ "port": "3306",
+ "host": "mysql-server",
+ "encryption": true,
+ "connectionTimeout": 30000
+ }
+}
+```
+
+## Response body fields
+
+The response body is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `connector` | **Required** | String | The connector type for the data source. |
+| `name` | **Required** | String | The name of the data source. |
+| `properties` | **Required** | Object | The configuration properties for the data source. |
+| `resultIndex` | **Required** | String | The index where query results are stored. |
+| `status` | **Required** | String | The current status of the data source. |
+| `allowedRoles` | Optional | Array of Strings | The roles allowed to access this data source. |
+| `configuration` | Optional | Object | Additional configuration settings for the data source connection. |
+| `description` | Optional | String | The description of the data source. |
+| `id` | **Required** | String | The unique identifier for the data source. |
+
+
+
+ Response body fields: configuration
+
+ {: .text-delta }
+
+`configuration` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `credentials` | **Required** | Object | Authentication credentials for the data source. |
+| `endpoint` | **Required** | String | The connection endpoint for the data source. |
+
+
+
+
+
+ Response body fields: configuration
> credentials
+
+ {: .text-delta }
+
+`credentials` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `username` | **Required** | String | The username for authentication. |
+| `password` | **Required** | String | The password for authentication (masked in the response). |
+
+
+
+
+
+ Response body fields: properties
+
+ {: .text-delta }
+
+The `properties` object contains fields specific to each connector type. Each connector includes different properties depending on its type and configuration.
+
+
+
+## Usage notes
+
+The Get Data Source API is particularly useful in these scenarios:
+
+- **Configuration verification**: Confirm that a data source is configured correctly before attempting to query it.
+
+- **Troubleshooting**: When experiencing issues with a specific data source, retrieve its configuration to diagnose the problem.
+
+- **Documentation**: Generate detailed documentation for a specific data source.
+
+- **Auditing**: Review the configuration of a specific data source for security or compliance purposes.
+
+If the specified data source doesn't exist, the API returns a `404 Not Found error`. For security reasons, sensitive information such as passwords is masked in the response. Access to this API should be restricted to users who need to view data source configurations.
\ No newline at end of file
diff --git a/_api-reference/data-source-apis/index.md b/_api-reference/data-source-apis/index.md
new file mode 100644
index 00000000000..d81668555da
--- /dev/null
+++ b/_api-reference/data-source-apis/index.md
@@ -0,0 +1,73 @@
+---
+layout: default
+title: Data Source APIs
+has_children: true
+nav_order: 20
+---
+
+# Data Source APIs
+**Introduced 2.4**
+{: .label .label-purple }
+
+The Data Source APIs enable you to create, manage, and interact with external data sources in OpenSearch. Data sources represent connections to external databases or services, allowing you to query data that lives outside your OpenSearch cluster. This query capability powers cross-database analytics, dashboards, and reporting.
+
+
+Data sources in OpenSearch establish connections to external data repositories, such as:
+
+- Relational databases (MySQL, PostgreSQL, SQL Server)
+- Cloud data stores (Amazon S3, Google BigQuery, Snowflake)
+- Time-series databases (Prometheus, InfluxDB)
+- Document databases (MongoDB)
+
+These connections enable OpenSearch to execute queries against external data and integrate the results with data stored in OpenSearch indexes, all within a unified query interface. This capability is particularly valuable for organizations with data distributed across multiple systems.
+
+## Use cases for data sources
+
+Data sources support numerous analytical and operational scenarios:
+
+- **Cross-database analytics**: Join data from multiple sources to create comprehensive reports.
+- **Historical data analysis**: Query archived data stored in cost-effective object storage.
+- **Real-time dashboards**: Combine streaming data in OpenSearch with reference data in external systems.
+- **Hybrid search**: Leverage specialized capabilities of different database engines.
+
+## Available APIs
+
+The Data Source APIs include:
+
+- [Create Data Source API]({{site.url}}{{site.baseurl}}/api-reference/data-source-apis/create-data-source/): Register a new external data source connection.
+- [List Data Sources API]({{site.url}}{{site.baseurl}}/api-reference/data-source-apis/list-data-source/): Retrieve information about all configured data sources.
+- [Get Data Source API]({{site.url}}{{site.baseurl}}/api-reference/data-source-apis/get-data-source/): Retrieve details about a specific data source.
+- [Update Data Source API]({{site.url}}{{site.baseurl}}/api-reference/data-source-apis/update-data-source/): Modify an existing data source configuration.
+- [Delete Data Source API]({{site.url}}{{site.baseurl}}/api-reference/data-source-apis/delete-data-source/): Remove a data source that is no longer needed.
+
+## Security considerations
+
+Data sources represent connections to external systems and often contain sensitive information such as credentials. Consider the following security best practices:
+
+- Implement proper access controls to restrict who can create, modify, and use data sources.
+- Use the `allowedRoles` parameter to limit which users can access specific data sources.
+- Store credentials securely and rotate them regularly.
+- Audit data source access and changes using OpenSearch audit logs.
+
+## Data source lifecycle
+
+Managing data sources typically follows this workflow:
+
+1. **Create**: Register a new data source with connection details and credentials.
+2. **Configure**: Set appropriate access controls and properties.
+3. **Test**: Verify the connection works properly.
+4. **Use**: Query the data source through SQL or PPL queries.
+5. **Monitor**: Track usage and performance.
+6. **Update**: Modify configurations as needed.
+7. **Delete**: Remove data sources that are no longer required.
+
+## Best practices
+
+For optimal data source management, remember the following best practices:
+
+- **Connection pooling**: Configure appropriate connection pool settings for high-concurrency scenarios.
+- **Result caching**: Use result indexes effectively to cache query results and reduce load on source systems.
+- **Credentials management**: Implement a secure process for rotating credentials.
+- **Documentation**: Maintain documentation about available data sources and their intended use cases.
+- **Testing**: Validate data source configurations in lower environments before deploying to production.
+- **Monitoring**: Set up alerts for data source connectivity issues.
diff --git a/_api-reference/data-source-apis/list-data-source.md b/_api-reference/data-source-apis/list-data-source.md
new file mode 100644
index 00000000000..361ed603ded
--- /dev/null
+++ b/_api-reference/data-source-apis/list-data-source.md
@@ -0,0 +1,153 @@
+---
+layout: default
+title: List Data Sources API
+parent: Data Source APIs
+nav_order: 20
+---
+
+# List Data Sources API
+**Introduced 2.4**
+{: .label .label-purple }
+
+The List Data Sources API returns information about all registered data sources in your OpenSearch cluster. This API allows you to view all available data sources, their configurations, and their current status, helping you monitor and manage your data federation setup.
+
+
+## Endpoints
+```json
+GET /_plugins/_query/_datasources
+```
+
+
+## Example request
+
+```bash
+GET /_plugins/_query/_datasources
+```
+{% include copy-curl.html %}
+
+## Example response
+
+```json
+[
+ {
+ "id": "gxUYL4QB-QllXHAp5pF4",
+ "name": "mysql-customer-database",
+ "description": "Connection to customer database",
+ "connector": "mysql",
+ "resultIndex": "customer_data_results",
+ "status": "ACTIVE",
+ "allowedRoles": ["analyst_role", "admin_role"],
+ "configuration": {
+ "endpoint": "jdbc:mysql://mysql-server:3306/customers",
+ "credentials": {
+ "username": "db_user",
+ "password": "******"
+ }
+ },
+ "properties": {
+ "database": "customers",
+ "port": "3306",
+ "host": "mysql-server",
+ "encryption": true,
+ "connectionTimeout": 30000
+ }
+ },
+ {
+ "id": "hxUYM5QB-QllXHAp7qG9",
+ "name": "prometheus-metrics",
+ "description": "Prometheus time-series database",
+ "connector": "prometheus",
+ "resultIndex": "metrics_results",
+ "status": "ACTIVE",
+ "allowedRoles": ["monitoring_role"],
+ "configuration": {
+ "endpoint": "http://prometheus-server:9090",
+ "credentials": {
+ "username": "prom_user",
+ "password": "******"
+ }
+ },
+ "properties": {
+ "timeout": 60000,
+ "maxDataPoints": 1000
+ }
+ }
+]
+```
+
+## Response body fields
+
+The response body is an **array of JSON objects**. Each object represents a data source and has the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `connector` | **Required** | String | The connector type for the data source such as `s3glue`, `prometheus`, or `mysql`. |
+| `name` | **Required** | String | The name of the data source. |
+| `properties` | **Required** | Object | The configuration properties for the data source. |
+| `resultIndex` | **Required** | String | The index where query results are stored. |
+| `status` | **Required** | String | The current status of the data source, either `ACTIVE`, `DISABLED`, or `ERROR`. |
+| `allowedRoles` | Optional | Array of Strings | List of roles that are allowed to access this data source. |
+| `configuration` | Optional | Object | Additional configuration settings for the data source connection. |
+| `description` | Optional | String | The description of the data source. |
+| `id` | **Required** | String | The unique identifier for the data source. |
+
+
+
+ Response body fields: configuration
+
+ {: .text-delta }
+
+`configuration` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `credentials` | **Required** | Object | Authentication credentials for the data source. |
+| `endpoint` | **Required** | String | The connection endpoint for the data source. |
+
+
+
+
+
+ Response body fields: configuration
> credentials
+
+ {: .text-delta }
+
+`credentials` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `username` | **Required** | String | The username for authentication. |
+| `password` | **Required** | String | The password for authentication (masked in the response). |
+
+
+
+
+
+ Response body fields: properties
+
+ {: .text-delta }
+
+The `properties` object contains fields specific to each connector type. Each connector includes different properties depending on its type and configuration.
+
+
+
+## Usage notes
+
+The List Data Sources API is useful for several administrative and operational tasks:
+
+- **Inventory management**: Maintain an inventory of all configured data sources in your environment.
+
+- **Status monitoring**: Check the status of all data sources to identify any that might be experiencing issues.
+
+- **Configuration auditing**: Review data source configurations to ensure they follow security best practices and organizational policies.
+
+- **Access control verification**: Inspect `allowedRoles` to confirm that data sources are accessible only to appropriate user roles.
+
+- **Troubleshooting**: When query federation issues occur, check the data source configurations to identify potential problems.
+
+- **Documentation**: Generate documentation about available data sources for users who may need to query them.
+
+Note that sensitive information such as passwords is masked in the response for security reasons. For security best practices, restrict access to this API to administrative users only, as it provides detailed information about your data sources and their connection details.
\ No newline at end of file
diff --git a/_api-reference/data-source-apis/update-data-source.md b/_api-reference/data-source-apis/update-data-source.md
new file mode 100644
index 00000000000..0c72409c442
--- /dev/null
+++ b/_api-reference/data-source-apis/update-data-source.md
@@ -0,0 +1,148 @@
+---
+layout: default
+title: Update Data Source API
+parent: Data Source APIs
+nav_order: 40
+---
+
+# Update Data Source API
+**Introduced 2.4**
+{: .label .label-purple }
+
+The Update Data Source API allows you to modify the configuration of an existing data source. This API is useful when you need to update connection details, credentials, properties, or access controls for a data source that has already been created.
+
+
+## Endpoints
+```json
+PUT /_plugins/_query/_datasources
+```
+
+
+## Request body fields
+
+The request body is required. It is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `connector` | **Required** | String | The connector type for the data source. |
+| `name` | **Required** | String | The name of the data source to update. This must match an existing data source. |
+| `properties` | **Required** | Object | The configuration properties for the data source. |
+| `resultIndex` | **Required** | String | The index where query results from this data source are stored. |
+| `status` | **Required** | String | The current status of the data source. |
+| `allowedRoles` | Optional | Array of Strings | List of roles that are allowed to access this data source. |
+| `configuration` | Optional | Object | Additional configuration settings for the data source connection. |
+| `description` | Optional | String | A human-readable description of the data source. |
+
+
+
+ Request body fields: configuration
+
+ {: .text-delta }
+
+`configuration` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `credentials` | **Required** | Object | Authentication credentials for the data source. |
+| `endpoint` | **Required** | String | The connection endpoint for the data source. |
+
+
+
+
+
+ Request body fields: configuration
> credentials
+
+ {: .text-delta }
+
+`credentials` is a JSON object with the following fields:
+
+| Property | Required | Data type | Description |
+| :--- | :--- | :--- | :--- |
+| `username` | **Required** | String | The username for authentication. |
+| `password` | **Required** | String | The password for authentication. |
+
+
+
+
+
+ Request body fields: properties
+
+ {: .text-delta }
+
+The `properties` object contains fields specific to each connector type. Each connector requires different properties for establishing connections and executing queries. Refer to the specific connector documentation for details about required properties.
+
+
+
+## Example request
+
+The following example updates a MySQL data source to change its description, allowed roles, and connection timeout:
+
+```json
+PUT /_plugins/_query/_datasources
+{
+ "name": "mysql-customer-database",
+ "description": "Updated connection to customer database - Production",
+ "connector": "mysql",
+ "resultIndex": "customer_data_results",
+ "status": "ACTIVE",
+ "allowedRoles": ["analyst_role", "admin_role", "reporting_role"],
+ "configuration": {
+ "endpoint": "jdbc:mysql://mysql-server:3306/customers",
+ "credentials": {
+ "username": "db_user",
+ "password": "new_db_password"
+ }
+ },
+ "properties": {
+ "database": "customers",
+ "port": "3306",
+ "host": "mysql-server",
+ "encryption": true,
+ "connectionTimeout": 60000
+ }
+}
+```
+{% include copy-curl.html %}
+
+## Example response
+
+```json
+{
+ "dataSourceId": "gxUYL4QB-QllXHAp5pF4",
+ "name": "mysql-customer-database",
+ "status": "ACTIVE",
+ "message": "Data source updated successfully."
+}
+```
+
+## Response body fields
+
+The response body is a JSON object with the following fields:
+
+| Property | Data type | Description |
+| :--- | :--- | :--- |
+| `dataSourceId` | String | The unique identifier for the updated data source. |
+| `name` | String | The name of the data source. |
+| `status` | String | The status of the data source. |
+| `message` | String | A message describing the result of the operation. |
+
+## Usage notes
+
+When updating data sources, consider these important points:
+
+- **Complete configuration**: You must provide a complete data source configuration in the update request. The update operation replaces the entire data source configuration.
+
+- **Existing name**: The `name` parameter must match an existing data source. If no data source with the specified name exists, the update operation will fail.
+
+- **Credential management**: If you need to update only non-sensitive information and want to preserve existing credentials, you still need to include the credentials in the update request. Consider retrieving the current configuration first, then modifying only the necessary fields.
+
+- **Test after update**: After updating a data source, especially when changing connection details or credentials, test the connection to ensure it is still functioning properly.
+
+- **Role changes**: When modifying the `allowedRoles` array, include all roles that should have access after the update, as the previous role assignments will be replaced.
+
+- **Status management**: You can update the `status` field to enable or disable a data source (for example, changing from `ACTIVE` to `DISABLED`).
+
+- **Permissions**: Users need appropriate permissions to update data sources. Typically, this requires administrative privileges.
\ No newline at end of file