Update Datasource Connection

Update connection details for the specified datasource.

REQUEST URI

https://<ZohoAnalytics_Server_URI>/restapi/v2/workspaces/<workspace-id>/datasources/<datasource-id>

Put

oauthscopeZohoAnalytics.metadata.update

QUERY PARAMETERS

Parameter NameDescription
CONFIG*JSONObject

Config parameter specifications are available in the below section.

FIELDS FOR CONFIG JSON

KeyDescription
serviceName*String

Name of the cloud service.
 

Allowed Values:

  • AMAZON RDS
  • AMAZON REDSHIFT
  • MICROSOFT AZURE
  • GOOGLE CLOUD SQL
  • HEROKU POSTGRESQL
  • LOCAL DATABASE
  • SNOWFLAKE
  • AMAZON ATHENA
  • GOOGLE BIG QUERY
  • PANOPLY
  • RACKSPACE CLOUD
  • IBM CLOUD
  • ORACLE CLOUD
  • OTHER CLOUD SERVICES
databaseTypeString

Type of the database.
 

Allowed Values:

  • MYSQL
  • SQLSERVER
  • ORACLE
  • POSTGRESQL
  • MARIADB
  • AMAZON AURORA MYSQL
  • PERVASIVE
  • SYBASE
  • AMAZON ATHENA
  • SQL DATABASE
  • SQL DATA WAREHOUSE
  • MEMSQL
  • DB2
  • AMAZON AURORA POSTGRESQL
  • EXASOL
  • VERTICA
  • AMAZON VECTOR
  • GREENPLUM
  • DENODO
  • JDBC CONNECTION
hostName*String
  • For AMAZON ATHENA service - provide the AWS Region value.
  • For SNOWFLAKE service - provide full name of your account as in snowflake.
  • For all other services - provide the service endpoint (or) hostname, used to identifiy the cloud database instance. This can be obtained from the management console provided by the respective cloud database services.
portInteger

Database port number.
userName*String

Service provider login username.
passwordString

Service provider login password.
cloudDatabaseNameString

Specify the database name as in the cloud service.
instanceNameString

For SQLSERVER datatype - provide the instance name on which your database is present. If not specified, then default instance will be taken to establish connection.
s3OutputLocationString

For AMAZON ATHENA service - provide the Amazon s3 location path where you want to store the query results. This path should be prefixed bt s3://.
warehouseNameString

For SNOWFLAKE service - provide the warehousename value on which your snowflake database instance is present. Make sure that the provided warehouse is active and the given user has permission to access the database.
sIdString

For ORACLE service - provide the oracle service name value.
projectIdString

For GOOGLE BIG QUERY service - provide the project id of your BigQuery project. This can be obtained from the dashboard of your Google Cloud console.
refreshTokenString

For GOOGLE BIG QUERY service - provide the refresh token value.
accessTokenString

For GOOGLE BIG QUERY service - provide the access token value.
useSSLBoolean

Set true if your database server set up to serve encrypted data through SSL. Default false.

POSSIBLE ERROR CODES

7103, 7301, 8083, 8504, 8518, 8535, 18011, 18040, 18041, 18042, 18043, 18044, 18056, 18060, 18061

Sample Request:

Copiedcurl https://analyticsapi.zoho.com/restapi/v2/workspaces/<workspace-id>/datasources/<datasoure-id>?CONFIG=<encoded_json_value> 
-X 'PUT' 
-H 'ZANALYTICS-ORGID: <org-id>' 
-H 'Authorization: Zoho-oauthtoken <access_token>'
Copiedusing System;
using System.Collections.Generic;
using ZohoAnalytics;

namespace ZohoAnalyticsTest
{
    class Program
    {
        long orgId = 67648404;
        long workspaceId = 1148746000002449012;

        public void UpdateDatasourceConnection(IAnalyticsClient ac)
        {
            long datasourceId = 1148746000002545001;

            Dictionary<string, object> config = new Dictionary<string, object>();
            config.Add("serviceName", "AMAZON RDS");
            config.Add("databaseType", "POSTGRESQL");
            config.Add("hostName", "******");
            config.Add("port", "5432");
            config.Add("userName", "******");
            config.Add("password", "******");
            config.Add("cloudDatabaseName", "sampledb");

            IWorkspaceAPI workspace = ac.GetWorkspaceInstance(orgId, workspaceId);
            workspace.UpdateDatasourceConnection(datasourceId, config);
            Console.WriteLine("success");
        }

        static void Main(string[] args)
        {
            string clientId = "";
            string clientSecret = "";
            string refreshToken = "";

            try
            {
                IAnalyticsClient ac = new AnalyticsClient(clientId, clientSecret, refreshToken);
                Program obj = new Program();
                obj.UpdateDatasourceConnection(ac);
            }
            catch (ServerException ex)
            {
                Console.WriteLine("Server exception - " + ex.GetErrorMessage());
            }
            catch (Exception ex)
            {
                Console.WriteLine("Other exception - " + ex.Message);
            }
        }
    }
}
Copiedpackage main

import (
    "fmt"
    ZAnalytics "zoho/pkg/analyticsclient"
)

var(
    clientId = "1000.xxxxxxx"
    clientSecret = "xxxxxxx"
    refreshToken = "1000.xxxxxxx.xxxxxxx"

    orgId = "55522777"
    workspaceId = "35130000001055707"
)

func UpdateDatasourceConnection(ac ZAnalytics.Client) {
    datasourceid:= "1767024000003890005"
    config := map[string]interface{}{}
    config["serviceName"] = "AMAZON RDS"
    config["databaseType"] = "MYSQL"
    config["hostName"] = "******"
    config["port"] = "3306"
    config["userName"] = "******"
    config["password"] = "*****"
    config["cloudDatabaseName"] = "sampledb"

    workspace := ZAnalytics.GetWorkspaceInstance(&ac, orgId, workspaceId)
    exception := workspace.UpdateDatasourceConnection(datasourceid, config)
    if(exception != nil){
        fmt.Println(exception.ErrorMessage)
    }else{
        fmt.Println("Success")
    }
}

func main() {

    ac := ZAnalytics.GetAnalyticsClient(clientId, clientSecret, refreshToken)
    UpdateDatasourceConnection(ac)

}
Copiedimport com.zoho.analytics.client.*;
import org.json.*;

public class Test {

    private long orgId = 55522777l;
    private long workspaceId = 35130000001055707l;

    public static void main(String args[]){

        String clientId = "1000.xxxxxxx";
        String clientSecret = "xxxxxxx";
        String refreshToken = "1000.xxxxxxx.xxxxxxx";

        Test tObj = new Test();
        AnalyticsClient ac = new AnalyticsClient(clientId, clientSecret, refreshToken);

        try {
            tObj.updateDatasourceConnection(ac);
        }
        catch (ServerException ex) {
            System.out.println("Server exception - ErrorCode : " + ex.getErrorCode() + ", ErrorMessage : "  + ex.getErrorMessage());
        }
        catch (ParseException ex) {
            System.out.println("Parser exception - ErrorMessage : "  + ex.getResponseMessage());
        }
        catch (Exception ex) {
            System.out.println("Other exception - ");
            ex.printStackTrace();
        }
    }

    public void updateDatasourceConnection(AnalyticsClient ac) throws Exception {
        long datasourceId = 0l;

        JSONObject config = new JSONObject();
        config.put("serviceName", "AMAZON RDS");
        config.put("databaseType", "POSTGRESQL");
        config.put("hostName", "******");
        config.put("port", "5432");
        config.put("userName", "******");
        config.put("password", "******");
        config.put("cloudDatabaseName", "sampledb");

        WorkspaceAPI workspace = ac.getWorkspaceInstance(orgId, workspaceId);
        workspace.updateDatasourceConnection(datasourceId, config);
        System.out.println("success");
    }
}
Copied<?php

    require 'AnalyticsClient.php';

    class Test
    {
        public $ac = NULL;
        public $client_id = "1000.xxxxxxx";
        public $client_secret = "xxxxxxx";
        public $refresh_token = "1000.xxxxxxx.xxxxxxx";

        public $org_id = "55522777";
        public $workspace_id = "35130000001055707";

        function __construct() {
            $this->ac =  new AnalyticsClient($this->client_id, $this->client_secret, $this->refresh_token);
        }

        function updateDatasourceConnection() {
            $datasource_id = "1767024000003890005";

            $config = array();
            $config["serviceName"] = "AMAZON RDS";
            $config["databaseType"] = "MYSQL";
            $config["hostName"] = "******";
            $config["port"] = "3306";
            $config["userName"] = "******";
            $config["password"] = "******";
            $config["cloudDatabaseName"] = "sampledb";

            $workspace = $this->ac->getWorkspaceInstance($this->org_id, $this->workspace_id);
            $workspace->updateDatasourceConnection($datasource_id, $config);
            echo "success\n";
        }
    }

    $test_obj = new Test();

    try {
        $test_obj->updateDatasourceConnection();
    }
    catch(ServerException $se) {
        echo "Server exception : " . $se->getErrorMessage() . "\n";
    }
    catch(IOException $ioe) {
        echo "IO exception : " . $ioe->getErrorMessage() . "\n";
    }
    catch(ParseException $pe) {
        echo "Parser exception : " . $pe->getErrorMessage() . "\n";
    }
    catch(Exception $e) {
        echo "Exception : " . $e->getErrorMessage() . "\n";
    }
?>
Copiedfrom __future__ import with_statement
from AnalyticsClient import AnalyticsClient
import sys
import json

class Config:

    CLIENTID = "1000.xxxxxxx";
    CLIENTSECRET = "xxxxxxx";
    REFRESHTOKEN = "1000.xxxxxxx.xxxxxxx";

    ORGID = "55522777";
    WORKSPACEID = "35130000001055707";

class sample:

    ac = AnalyticsClient(Config.CLIENTID, Config.CLIENTSECRET, Config.REFRESHTOKEN)

    def update_datasource_connection(self, ac):
        datasource_id = "1767024000003890005"

        config = {}
        config["serviceName"] = "AMAZON RDS"
        config["databaseType"] = "POSTGRESQL"
        config["hostName"] = "******"
        config["port"] = "5432"
        config["userName"] = "******"
        config["password"] = "******"
        config["cloudDatabaseName"] = "sampledb"

        workspace = ac.get_workspace_instance(Config.ORGID, Config.WORKSPACEID)
        workspace.update_datasource_connection(datasource_id, config)           
        print("success")

try:
    obj = sample()
    obj.update_datasource_connection(obj.ac);

except Exception as e:
    print(str(e))
Copiedvar nodelib = require('./ZAnalyticsClient');

var clientId = '1000.xxxxxxx';
var clientSecret = 'xxxxxxx';
var refreshtoken = '1000.xxxxxxx.xxxxxxx';
var orgId = '55522777';
var workspaceId = '35130000001055707';
var datasoureId = '';

var config = {};
config["serviceName"] = "AMAZON RDS";
config["databaseType"] = "POSTGRESQL";
config["hostName"] = "******";
config["port"] = "5432";
config["userName"] = "******";
config["password"] = "******";
config["cloudDatabaseName"] = "sampledb";

var ac = new analyticsClient(clientId, clientSecret, refreshtoken);
var workspace = ac.getWorkspaceInstance(orgId, workspaceId);
workspace.updateDatasourceConnection(datasoureId, config).catch((error) => {
    console.log('errorCode : '+error.errorCode);
    console.log('errorMessage : '+error.errorMessage);
});
CopiedorgId = "55522777";
workspaceId = "35130000001055707";
datasoureId = "";

headersMap = Map();
headersMap.put("ZANALYTICS-ORGID",orgId);

config = Map();
config.put("serviceName", "AMAZON RDS");
config.put("databaseType", "POSTGRESQL");
config.put("hostName", "******");
config.put("port", "5432");
config.put("userName", "******");
config.put("password", "******");
config.put("cloudDatabaseName", "sampledb");

parameters = "CONFIG=" + zoho.encryption.urlEncode(config.toString());

response = invokeurl
[
  url :"https://analyticsapi.zoho.com/restapi/v2/workspaces/" + workspaceId + "/datasources/" + datasoureId + "?" + parameters
  type :PUT
  headers:headersMap
  connection:"analytics_oauth_connection"
];
info response;

Download client libraries:  C# | GO | JAVA | PHP | PYTHON | NodeJS

Sample value for CONFIG parameter:

Copied{
   "serviceName":"AMAZON RDS",
   "databaseType":"POSTGRESQL",
   "hostName":"******",
   "port":"5432",
   "userName":"******",
   "password":"******",
   "cloudDatabaseName":"sampledb"
}

Sample Response:

CopiedHTTP/1.1 204 No Content