Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Integration Service

Getting started

  • Last UpdatedJul 30, 2026
  • 2 minute read

This section helps you get started with the AIS Data API SDK by guiding you through installation, configuration, and your first interaction with the API.

You first client

  1. Add Using Statements

    using AVEVA.IntegrationService.DataAPI.SDK;

    using AVEVA.IntegrationService.DataAPI.SDK.ApiClient;

  2. Create the Client

    // NTLM (Windows authentication) – uses current domain user automatically

    string host = "https://your-ais-server/api/v1/datasources";

    var client = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(host);

    For AVEVA Connect token authentication:

    string token = "your-access-token";

    var client = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(

    host: host,

    authType: AuthenticationType.Connect,

    token: token

    );

  3. Retrieve Data Sources

    // Get all available data sources

    var dataSources = await client.GetDataSources("");

    foreach (var ds in dataSources)

    {

    Console.WriteLine($"Data Source: {ds.Name} ({ds.Type})");

    }

  4. List Tables

    // Get tables from a specific data source

    var tables = await client.GetTables("MyDataSourceName", "");

    foreach (var table in tables)

    {

    Console.WriteLine($"Table: {table.Name}");

    }

  5. Read Table Data

    // Get all records from a table

    var data = await client.GetTableData("MyDataSourceName", "MyTableName", "");

    foreach (var row in data)

    {

    Console.WriteLine($"Row: {row.Name}");

    }

    Complete Console Example

    using AVEVA.IntegrationService.DataAPI.SDK;

    using AVEVA.IntegrationService.DataAPI.SDK.ApiClient;

    using System;

    using System.Configuration;

    using System.Threading.Tasks;

    class Program

    {

    static async Task Main(string[] args)

    {

    var host = ConfigurationManager.AppSettings["host"];

    // Create client (uses current Windows credentials)

    var client = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(host);

    // List data sources

    var sources = await client.GetDataSources("");

    Console.WriteLine($"Found {sources.Count()} data sources:");

    foreach (var source in sources)

    {

    Console.WriteLine($"\n [{source.Type}] {source.Name}");

    // List tables for each source

    var tables = await client.GetTables(source.Name, "");

    foreach (var table in tables)

    {

    Console.WriteLine($" - {table.Name}");

    }

    }

    }

    }

Generic Data Source Client (IDataApiClient)

If the datasource type is not known at compile time, or if you need to work across multiple datasource types from a single client, use IDataApiClient through the DataApiClientFactory.

The DataApiClient implementation automatically routes operations to the correct underlying client based on the datasource name.

Create a Generic Client

// Returns IDataApiClient – works with any datasource type

var client = DataApiClientFactory.CreateDataApiClient<IDataApiClient>(host);

Discover All Data Sources and Their Tables

// Works regardless of datasource type (Engineering, Excel, ERM, ETAP, Simulation…)

var sources = await client.GetDataSources("");

foreach (var source in sources)

{

Console.WriteLine($"[{source.Type}] {source.Name}");

var tables = await client.GetTables(source.Name, "");

foreach (var t in tables)

Console.WriteLine($" - {t.Name}");

}

Read Table Data Dynamically

var data = await client.GetTableData("AnyDataSource", "AnyTable", "");

Handle Unsupported Operations

Not every operation is valid for every datasource type. When calling a method that is not applicable, a MethodNotApplicableException is thrown.

try

{

var result = await client.PostTableData("DataSourceName", "TableName", tableData, "");

}

catch (MethodNotApplicableException ex)

{

// This datasource does not support PostTableData

Console.WriteLine($"Operation not supported: {ex.Message}");

}

To learn more about advanced usage patterns, refer to Examples.

Running Tests

The SDK includes a comprehensive unit test project:

# Run all tests

dotnet test AVEVA.IntegrationService.DataAPI.SDK.UnitTest.csproj

# Run with verbose output

dotnet test --verbosity normal

# Run specific test class

dotnet test --filter "ClassName=EngineeringClientTest"

To learn more about testing strategies and mock patterns, refer to Testing.

In This Topic
Related Links