Getting started
- Last UpdatedJul 30, 2026
- 2 minute read
- Engineering
- Integration Service 4.1
- Integrators
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
-
Add Using Statements
using AVEVA.IntegrationService.DataAPI.SDK;
using AVEVA.IntegrationService.DataAPI.SDK.ApiClient;
-
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
);
-
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})");
}
-
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}");
}
-
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.