---
updatedAt: 2026-05-27T12:51:02.000Z
agentTools:
  projectIndex: https://developer.onetrust.com/onetrust/llms.txt
---

# Create or Update Data Source

Use this API to create a new data source or update an existing data source. The data source will be created or updated with the details provided in the request body.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Data Use Governance - Data Discovery",
    "version": "1.0",
    "contact": {
      "name": "OneTrust Support",
      "url": "https://my.onetrust.com/s/contactsupport"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0"
    },
    "description": "The Data Discovery API provides comprehensive REST endpoints for managing data discovery operations including data sources, scan profiles, credentials, and scan jobs with OAuth2 security and extensive filtering capabilities."
  },
  "servers": [
    {
      "url": "https://{hostname}",
      "variables": {
        "hostname": {
          "default": "hostname",
          "description": "The OneTrust hostname such as app.onetrust.com, app-eu.onetrust.com, app-de.onetrust.com, app-uk.onetrust.com, app-apac.onetrust.com, trial.onetrust.com, or uat.onetrust.com."
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Data Sources",
      "description": "APIs to manage data sources including creation, retrieval, updates, deletion, and comprehensive filtering with support for multiple system types and asset integration.",
      "externalDocs": {
        "description": "OpenAPI 3.1.0 - Download Definition",
        "url": "https://developer.onetrust.com/onetrust/openapi/data-use-governance-data-discovery.json"
      },
      "x-displayName": "Data Sources"
    }
  ],
  "paths": {
    "/api/discovery-scan-config/v3/system": {
      "put": {
        "operationId": "upsertSourceSystemV3UsingPUT",
        "summary": "Create or Update Data Source",
        "description": "Use this API to create a new data source or update an existing data source. The data source will be created or updated with the details provided in the request body.",
        "tags": [
          "Data Sources"
        ],
        "x-onetrust": {
          "spec-label": "https://developer.onetrust.com/onetrust/openapi/data-use-governance-data-discovery.json"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_DataSourceV2Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Data source upserted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_DataSourceV2Dto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "429": {
            "description": "Too Many Requests. \nFor more information, see [API Rate Limits](https://developer.onetrust.com/onetrust/reference/rate-limits-overview).",
            "headers": {
              "Retry-After": {
                "schema": {
                  "description": "The number of seconds after which requests will be allowed again.",
                  "format": "int32"
                }
              },
              "ot-period": {
                "schema": {
                  "description": "The unit of time for which the rate limit applies",
                  "enum": [
                    "HOUR",
                    "MINUTE"
                  ]
                }
              },
              "ot-ratelimit-event-id": {
                "schema": {
                  "description": "The unique identifier for the rate-limiting event.",
                  "format": "uuid"
                }
              },
              "ot-request-made": {
                "schema": {
                  "description": "The number of requests made within the specified period.",
                  "format": "int32"
                }
              },
              "ot-requests-allowed": {
                "schema": {
                  "description": "The number of requests allowed within the specified period.",
                  "format": "int32"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "DataUseGovernance-DataDiscovery_OAUTH2": [
              "INTEGRATIONS",
              "DATA_DISCOVERY"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "DataUseGovernance-DataDiscovery_DataSourceTriggerDto": {
        "type": "object",
        "properties": {
          "cronExpression": {
            "description": "Cron expression to define the schedule in standard cron format.",
            "type": "string",
            "example": "0 0/5 buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils ?"
          },
          "dateTime": {
            "description": "Specific date and time configuration for scheduling.",
            "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_ScheduleDateTime"
          },
          "isRunManual": {
            "description": "Flag to indicate whether the trigger should run manually.",
            "type": "boolean",
            "example": false
          },
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "runManual": {
            "type": "boolean"
          }
        }
      },
      "DataUseGovernance-DataDiscovery_DataSourceV2Dto": {
        "type": "object",
        "properties": {
          "dataSourceName": {
            "description": "Name of Data Source",
            "type": "string",
            "example": "S3-DS-24thMarch"
          },
          "systemType": {
            "description": "System Type of Data Source",
            "type": "string",
            "example": "AmazonS3",
            "enum": [
              "AWS",
              "Azure",
              "AzureCosmos",
              "AzureStorage",
              "Box",
              "Cassandra",
              "Databricks",
              "IBMDB2",
              "Exchange",
              "GCP",
              "GoogleWorkspaceGmail",
              "GoogleBigQuery",
              "GoogleBigTable",
              "MongoDB",
              "MySQL",
              "Netezza",
              "Office365",
              "OneDrive",
              "OracleRDBMS",
              "PostgreSQL",
              "AmazonS3",
              "AmazonSageMaker",
              "AmazonBedrock",
              "GCPVertex",
              "AzureFoundry",
              "SalesForce",
              "SAPHana",
              "ServiceNow",
              "SharePoint",
              "SMB",
              "Snowflake",
              "MicrosoftSQL",
              "Teradata",
              "Workday",
              "Zendesk",
              "AmazonRDSforSQLServer",
              "AzureSQLServer",
              "Redshift",
              "GoogleDrive",
              "CustomConnector",
              "AmazonDynamoDB",
              "AmazonAthena",
              "Hive",
              "SharePoint2019OnPrem",
              "GenericJDBC",
              "SFTP",
              "NFS",
              "GCS",
              "Redis",
              "ElasticSearch",
              "MicrosoftTeams",
              "Slack",
              "AlibabaCloudOSS",
              "AzureFiles",
              "Iceberg",
              "NGFSFILES",
              "Github",
              "Unknown",
              "RELATIONAL_DATABASE",
              "NON_RELATIONAL_DATABASE",
              "FILE",
              "API",
              "Kafka",
              "WorkdayApp"
            ]
          },
          "systemName": {
            "description": "System Name of Data Source",
            "type": "string",
            "example": "Amazon S3"
          },
          "status": {
            "description": "Data Source current status",
            "type": "string",
            "example": "ACTIVE",
            "enum": [
              "INACTIVE",
              "ACTIVE",
              "DELETED"
            ]
          },
          "oneTrustAssetId": {
            "description": "Asset ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "860abcce-fbf3-4f32-a38b-df19f8c08eae"
          },
          "orgGroupId": {
            "description": "Org Group ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "ec33136e-dd31-492b-8cd7-cb1a0109fe93"
          },
          "createdBy": {
            "description": "UserID who created Data Source",
            "type": "string",
            "format": "uuid",
            "example": "e897fe47-a504-4dd4-8eda-52add1a397f0"
          },
          "modifiedBy": {
            "description": "UserID who modified Data Source",
            "type": "string",
            "format": "uuid",
            "example": "e897fe47-a504-4dd4-8eda-52add1a397f0"
          },
          "createdDate": {
            "description": "Data Source Created date",
            "type": "string",
            "format": "date-time",
            "example": "2022-04-04T11:33:16.538+00:00"
          },
          "modifiedDate": {
            "description": "Data Source modified date",
            "type": "string",
            "format": "date-time",
            "example": "2022-04-04T11:53:16.538+00:00"
          },
          "dataSourceSettings": {
            "description": "Data Source Dto Settings",
            "example": {
              "workerNodeName": "WN-24thAugust",
              "scannerId": "e897fe47-a504-4dd4-8eda-52add1a397f0",
              "scanProfileName": "ScanProfile-Mysql",
              "scanProfileId": "e897fe47-a504-4dd4-8eda-52add1a397f0",
              "credentialName": "Credential-Mysql",
              "credentialId": "e897fe47-a504-4dd4-8eda-52add1a397f0",
              "classificationProfileId": "c2845b2e-75bf-4a9b-a463-96a15fef85dc",
              "detectorProfileId": "d2845b2e-75bf-4a9b-a463-96a15fef85dc",
              "oneTrustAssetId": "860abcce-fbf3-4f32-a38b-df19f8c08eae"
            },
            "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_DataSourceSettingsV2Dto"
          },
          "dataSourceTriggerList": {
            "description": "Data Source Trigger List",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_DataSourceTriggerDto"
            },
            "example": [
              {
                "cronExpression": "0 0 buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils ? buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils *",
                "dateTime": {
                  "seconds": "0",
                  "minutes": "0",
                  "hours": {
                    "label": "OneHour",
                    "value": "1",
                    "cronExp": null
                  },
                  "dayOfMonth": null,
                  "month": null,
                  "dayOfWeek": {
                    "label": "M",
                    "value": "2",
                    "cronExp": "MON"
                  },
                  "year": null,
                  "frequency": {
                    "label": "Hourly",
                    "value": "8",
                    "cronExp": "?"
                  },
                  "frequencyIntervalTracker": "?"
                },
                "isRunManual": false,
                "id": 17717
              }
            ]
          },
          "systemId": {
            "description": "SystemTile ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "760abcce-fbf3-4f32-a28b-df19f8c08eae"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "DataUseGovernance-DataDiscovery_ScheduleDateTime": {
        "type": "object",
        "properties": {
          "seconds": {
            "description": "Seconds field for the cron expression.",
            "type": "string",
            "example": "1"
          },
          "minutes": {
            "description": "Minutes field for the cron expression.",
            "type": "string",
            "example": "1"
          },
          "hours": {
            "description": "Hours field for the cron expression.",
            "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_ScheduleDateTimeField"
          },
          "dayOfMonth": {
            "description": "Day of month field for the cron expression.",
            "type": "string",
            "example": "*"
          },
          "month": {
            "description": "Month field for the cron expression.",
            "type": "string",
            "example": "*"
          },
          "dayOfWeek": {
            "description": "Day of week field for the cron expression.",
            "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_ScheduleDateTimeField"
          },
          "year": {
            "description": "Year field for the cron expression.",
            "type": "string",
            "example": "*"
          },
          "frequency": {
            "description": "Frequency configuration.",
            "$ref": "#/components/schemas/DataUseGovernance-DataDiscovery_ScheduleDateTimeField"
          },
          "frequencyIntervalTracker": {
            "description": "Frequency interval tracker information.",
            "type": "string",
            "example": "5"
          }
        }
      },
      "DataUseGovernance-DataDiscovery_ScheduleDateTimeField": {
        "type": "object",
        "properties": {
          "label": {
            "description": "Label for the field, typically used for display purposes.",
            "type": "string",
            "example": "Every Hour"
          },
          "value": {
            "description": "Value representing the selected option for this field.",
            "type": "string",
            "example": "H"
          },
          "cronExp": {
            "description": "The cron expression fragment for this field.",
            "type": "string",
            "example": "0 0/5 buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils buildMR_Jenkinsfile getApiSpec.sh specVariationChecker_Jenkinsfile tryCatch.sh utils ?"
          }
        }
      },
      "DataUseGovernance-DataDiscovery_DataSourceSettingsV2Dto": {
        "type": "object",
        "properties": {
          "scannerId": {
            "description": "Scanner Id for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "4f162d7c-a563-4bf1-a7c4-b7899f6dcdef"
          },
          "workerNodeName": {
            "description": "Worker Node Name",
            "type": "string",
            "example": "WN-24thAugust"
          },
          "scanProfileId": {
            "description": "ScanProfile ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "3f162d7c-a463-4bf1-a7c4-b7899f6dcdef"
          },
          "scanProfileName": {
            "description": "ScanProfile Name for Data Source",
            "type": "string",
            "example": "ScanProfile-Mysql"
          },
          "credentialId": {
            "description": "Credential ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "8f162d7c-a563-4bf1-a0c4-b7899f6dcdef"
          },
          "credentialName": {
            "description": "Credential Name for Data Source",
            "type": "string",
            "example": "Credential-Mysql"
          },
          "oneTrustAssetId": {
            "description": "Asset ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "860abcce-fbf3-4f32-a38b-df19f8c08eae"
          },
          "classificationProfileId": {
            "description": "ClassifiactionProfile ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "3f162d7c-a863-4bf1-a9c4-b7899f6dcdef"
          },
          "detectorProfileId": {
            "description": "DetectorProfile ID for Data Source",
            "type": "string",
            "format": "uuid",
            "example": "3f162d7c-a863-4bf1-a9c4-b7899f6dcdef"
          },
          "metadataClassificationEnabled": {
            "description": "Metadata Classification Enabled/Disabled",
            "type": "boolean",
            "example": false
          },
          "id": {
            "type": "integer",
            "format": "int64"
          }
        }
      }
    },
    "securitySchemes": {
      "DataUseGovernance-DataDiscovery_OAUTH2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://{hostname}/api/access/v1/oauth/token",
            "scopes": {
              "DATA_DISCOVERY": "DATA_DISCOVERY scope for external systems"
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": false,
    "proxy-enabled": false,
    "metrics-enabled": false
  },
  "x-onetrust": {
    "spec-label": "OpenAPI 3.1.0"
  }
}
```

# Sibling pages

* [Get List of Data Sources](https://developer.onetrust.com/onetrust/reference/getallusingget_1.md)
* [Delete Data Source](https://developer.onetrust.com/onetrust/reference/deletesystemusingdelete_1.md)
* [Get Data Source](https://developer.onetrust.com/onetrust/reference/getdatasourcebyidusingget_1.md)