NAV
java cpp cs



Introduction

This document accompanies the SDK package, and describes the XERA API structures and functions to obtain XERA client and database information, create a database and add users, create panels, panel items, and word lists, and import/export data into and from an XERA database.



Constants

Constants Class

The Constants class currently holds the following two members:

NOTE: Class usage may vary slightly, depending on the language you are using.



Enumerators

DataServerType

This enumerator distinguishes between SQL Server and Oracle Data Servers.

FieldType

This enumerator distinguishes the type of field used in a Field structure.

DateFormat

This enumerator distinguishes the date format used for a Date or a Date Time field.

TimeFormat

This enumerator distinguishes the time format used for a Date Time field.

NumericFormat

This enumerator distinguishes the type of formatting used for a Numeric field.

CurrencyFormat

This enumerator distinguishes the type of currency format used for a Currency field.

DurationFormat

This enumerator distinguishes the type of duration format used for a Duration field.

Color

This enumerator distinguishes color options that can be used. Currently, the FolderSettings structure and WordList structure supports color.

PanelType

This enumerator distinguishes the Panel type.

PanelLocation

This enumerator distinguishes the location of a standard panel. This does not apply to Custom Related panels as they are only displayed in Document View.

PanelItemType

This enumerator distinguishes the types of items that can be added to a standard panel.

PanelItemIcon

This enumerator distinguishes the icons that can be associated with a folder panel item.

EditItemType

This enumerator distinguishes how data is added to an edit control panel item.

HighlightType

This enumerator contains the values for highlight types that are used for Word Lists.

SettingDataType

UserSetting

DatabaseSetting

State

This enumerator is used for Client, Database and User objects to indicate if the object is active or disabled.

UserGroupType

This enumerator distinguishes the UserGroup type.

UserRoleType

This enumerator distinguishes the UserRole type.

Schedule

This enumerator is used in ScheduleInfo



Authentication

Login

try {            
  TTransport transport = new TSocket("localhost", 7780);        
  transport.open();        
  TGUIDProtocol protocol = new TGUIDProtocol(transport, Direction.SEND);

  AdminService.Client client =  new AdminService.Client(protocol);

  protocol.SetGUID(client.Login("myusername", "mypassword"));

  /* client can now be used to make subsequent calls to the API */

} catch ( AdminError | TException e) {            
  e.printStackTrace();            
}
try
{
  boost::shared_ptr< TSocket > oSocket;
  boost::shared_ptr< TTransport > oTransport;
  boost::shared_ptr< TProtocol > oProtocol;
  boost::shared_ptr< AdminServiceClient > oClient;

  oSocket.reset(new TSocket("localhost", (int)7780));
  oTransport.reset(new TBufferedTransport(oSocket));
  oProtocol.reset( new TGUIDMemberProtocol<TBinaryProtocol,
    unique_ptr<string_t>>( oTransport,enDirection::dirSend ) );
  oClient.reset(new AdminServiceClient(oProtocol));

  oTransport->open();
  wstring sGUID;
  oClient->Login(sGUID, L"myusername", L"mypassword");
  static_cast<TGUIDMemberProtocol<TBinaryProtocol,
    unique_ptr<string_t>>*>(oProtocol.get())->SetMemberGUID(sGUID);

  /* oClient can now be used to make subsequent calls to the API */
}
catch (AdminError& oError)
{
  _tprintf(oError.sError.c_str());
}
try {
  TcpClient tcpclient = new TcpClient("localhost", 7780);

  TGUIDProtocol protocol = new TGUIDProtocol(new TBinaryProtocol(new TSocket(tcpclient)),
    "", TGUIDProtocol.enDirection.dirSend);
  AdminService.Client client = new AdminService.Client(protocol, protocol);

  TGUIDProtocol.t_strGUID = client.Login("myusername", "mypassword");
}
catch(AdminError e) {
  Console.WriteError(e.SError)
}

String Login(String sUsername, String sPassword)

This function will validate an administrative username and password.
Parameters

Returns
A string containing the session ID.



Data Server Structures

DataServer

DataServer oDataServer = new DataServer();
oDataServer.eType = DataServerType.MSSQL;
oDataServer.sName = "SQL Data Server";
::iconect::api::structs::DataServer oDataServer;
oDataServer.eType = ::iconect::api::structs::DataServerType.MSSQL;
oDataServer.sName = L"SQL Data Server";
DataServer oDataServer = new DataServer();
oDataServer.EType = DataServerType.MSSQL;
oDataServer.SName = "SQL Data Server";

public DataServer()
public DataServer(long lID, String sName, DataServerType eType)

This structure contains a data server ID, its name, and the database connection.

Data Server Methods

GetDataServers

List<DataServer> aDataServers = client.GetDataServers();
for(DataServer ds : aDataServers) {
    System.out.println(ds.sName);
}

std::vector<::iconect::api::structs::DataServer> aDataServers;
oClient->GetDataServers(aDataServers);
for(::iconect::api::structs::DataServer ds : aDataServers) {
    std::cout << ds.sName << " ";
}
List<DataServer> aDataServers = new List<DataServer>();
aDataServers = oClient.GetDataServers();
foreach(DataServer ds in aDataServers) {
   Console.WriteLine(ds.SName);
}

List<DataServer> GetDataServers()

This function returns an array of DataServer objects in use on the XERA instance.
Returns
An array of DataServer structures.

GetDataServerForDatabase

DataServer GetDataServerForDatabase(long lDatabaseID)

long lDatabaseID = 1;
DataServer oDataServer = client.GetDataServerForDatabase(lDatabaseID);
System.out.println(oDataServer.sName);
::iconect::api::structs::DataServer oDataServer;
int64_t lDatabaseID = 1;
oClient->GetDataServerForDatabase(oDataServer,lDatabaseID);
std::cout << oDataServer.sName << " ";
long lDatabaseID = 1;
DataServer oDataServer = oClient.GetDataServerForDatabase(lDatabaseID);
Console.WriteLine(oDataServer.SName);

This function returns the DataServer configured for the database.
Parameters

Returns
A DataServer object that represents the data server configured for the database.



Client Structures

Client

Client oClient = new Client();
oClient.sName = "My client";
oClient.sDescription = "Client descripton";
oClient.eState = State.Active;
::iconect::api::structs::Client oClient;
oClient.sName = L"My client";
oClient.sDescription = "Client descripton";
oClient.eState = ::iconect::api::structs::State::Active;
Client oClient = new Client();
oClient.SName = "My client";
oClient.SDescription = "Client descripton";
oClient.EState = State.Active;

public Client()
public Client(long lID, String sName, String sDescription, State eState)

This structure contains a Client ID and its name.

Client Methods

GetClients

List<Client> aClients = client.GetClients();
for(Client oClient : aClients, State.Active) {
    System.out.println(oClient.sName);
}

std::vector<::iconect::api::structs::Client> aClients;
oClient->GetClients(aClients, ::iconect::api::structs::State::Active);
for(::iconect::api::structs::Client client : aClients) {
    std::cout << client.sName << " ";
}
List<Client> aClients = new List<Client>();
aClients = client.GetClients(State.Active);
foreach(Client oClient in aClients) {
   Console.WriteLine(oClient.SName);
}

List<Client> GetClients(State eStateFilter)

This function returns an array of client objects that represent all the clients available on the XERA instance.

Parameters

Returns
An array of Client structures.

CreateClient

Client oClient = new Client();
oClient.sName = "My client";
oClient.sDescription = "Client descripton";
oClient.eState = State.Active;
Client oCreatedClient = client.CreateClient(oClient);
::iconect::api::structs::Client oClient;
oClient.sName = L"My client";
oClient.sDescription = "Client descripton";
oClient.eState = ::iconect::api::structs::State::Active;
::iconect::api::structs::Client oCreatedClient;
oClient->CreateClient(oCreatedClient,oClient);
Client oClient = new Client();
oClient.SName = "My client";
oClient.SDescription = "Client descripton";
oClient.EState = State.Active;
Client oCreatedClient = client.CreateClient(oClient);

Client CreateClient(Client oClient)

Parameters

Returns
The final Client with the id populated.

UpdateClient

Client oClient = client.GetClient(1);
oClient.sName = "My updated name";
client.UpdateClient(oClient);
::iconect::api::structs::Client oClient;
oClient->GetClient(oClient,1);
oClient.sName = L"My updated name";
oClient->UpdateClient(oClient);
Client oClient = client.GetClient(1);
oClient.SName = "My updated name";
client.UpdateClient(oClient);

void UpdateClient(Client oClient)

Parameters

DeleteClient

client.DeleteClient(1);
oClient->DeleteClient(1);
client.DeleteClient(1);

void DeleteClient(long lClientID)

Parameters

GetClient

Client oClient = client.GetClient(1);
::iconect::api::structs::Client oClient;
oClient->GetClient(oClient,1);
Client oClient = client.GetClient(1);

void GetClient(long lClientID)

Parameters

Returns
Returns a Client object.

ActivateClient

long lClientID = 1;
client.ActivateClient(lClientID);
int64_t lClientID = 1;
oClient->ActivateClient(lClientID);
long lClientID = 1;
client.ActivateClient(lClientID);

bool ActivateClient(long lClientID)

This function is used to activate an existing XERA client.

Parameters

Returns
The previous status of the client.

DeactivateClient

long lClientID = 1;
client.DeacivateClient(lClientID);
int64_t lClientID = 1;
oClient->DeactivateClient(lClientID);
long lClientID = 1;
client.DeactivateClient(lClientID);

bool DeactivateClient(long lClientID)

This function is used to deactivate an existing XERA client.

Parameters

Returns
The previous status of the client.

GetClientsForDatabase

int64_t lDatabaseID = 1;
std::vector< ::iconect::api::structs::Client> aClients;
oClient.GetClientsForDatabase(aClients,lDatabaseID);
for(::iconect::api::structs::Client client : aClients) {
    std::cout << client.sName << " ";
}
List<Client> aClients = new List<Client>();
long lDatabaseID = 1;
aClients = client.GetClientsForDatabase(lDatabaseID);
foreach(Client client in aClients) {
   Console.WriteLine(client.SName);
}
long lDatabaseID = 1;
List<Client> aClients = client.GetClientsForDatabase(lDatabaseID);
for(Client client : aClients) {
    System.out.println(client.sName);
}

list<Client> GetClientsForDatabase(long lDatabaseID)

This function returns an array of client objects that represent all the clients associated with the specified database.
Parameters

Returns
An array of Client structures.

Database Structures

IDList Type Definition

This defines IDList as an array of identity integer numbers, same as List<long>.

Field

Field oField = new Field();
oField.sName = "Native File Link";
oField.eType = FieldType.NATIVE_FILE;
oField.eDateFormat = DateFormat.NOT_APPLICABLE
oField.eTimeFormat = TimeFormat.NOT_APPLICABLE;
oField.iDecimalPlaces = 0;
oField.iLength = 100;
oField.eCurrency = CurrencyFormat.NOT_APPLICABLE;
oField.eDuration = DurationFormat.NOT_APPLICABLE;
::iconect::api::structs::Field oField;
oField.sName = L"Native File Link";
oField.eType = FieldType.NATIVE_FILE;
oField.eDateFormat = ::iconect::api::structs::DateFormat::NOT_APPLICABLE
oField.eTimeFormat = ::iconect::api::structs::TimeFormat::NOT_APPLICABLE;
oField.iDecimalPlaces = 0;
oField.iLength = 100;
oField.eCurrency = ::iconect::api::structs::CurrencyFormat::NOT_APPLICABLE;
oField.eDuration = ::iconect::api::structs::DurationFormat::NOT_APPLICABLE;
Field oField = new Field();
oField.SName = "Native File Link";
oField.EType = FieldType.NATIVE_FILE;
oField.EDateFormat = DateFormat.NOT_APPLICABLE
oField.ETimeFormat = TimeFormat.NOT_APPLICABLE;
oField.IDecimalPlaces = 0;
oField.ILength = 100;
oField.ECurrency = CurrencyFormat.NOT_APPLICABLE;
oField.EDuration = DurationFormat.NOT_APPLICABLE;

public Field()
public Field(long lID, FieldType eType, String sName, int iLength, DateFormat eDateFormat, NumericFormat eNumericFormat, int iDecimalPlaces, CurrencyFormat eCurrencyFormat, TimeFormat eTimeFormat, DurationFormat eDurationFormat)

This structure contains the properties of a field.

Database

Database oNewDatabase = new Database();
oNewDatabase.sName = "ACL Research";
oNewDatabase.sDescription = "A Database Description";
oNewDatabase.eState = State.Active;
::iconect::api::structs::Database oNewDatabase;
oNewDatabase.sName = L"ACL Research";
oNewDatabase.sDescription = L"A Database Description";
oNewDatabase.eState = ::iconect::api::structs::State::Active;
Database oNewDatabase = new Database();
oNewDatabase.SName = "ACL Research";
oNewDatabase.SDescription = "A Database Description";
oNewDatabase.EState = State.Active;

public Database()
public Database(long lID, String sName, String sDescription, State eState)

This structure contains the properties of a database.

Record

long lFieldID = 1;
String sFieldData = new String("Field data for the record");
Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
long lFieldID = 1;
String sFieldData = "Field data for the record";
Record oRecord = new Record();
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);

public Record()
public Record(Map<Long,String> mapFieldIDToData, long ID, long Version, long Order)

This structure represents a single record.

Record Reading

Record Adding

long lFieldID = 1;
String sFieldData = new String("Field data for the record");
Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
long lFieldID = 1;
String sFieldData = "Field data for the record";
Record oRecord = new Record();
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);

Record Updating

long lFieldID = 1;
String sFieldData = new String("Field data for the record");
Record oRecord = new Record();
oRecord.ID = 1;
oRecord.Version = 6114138;
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.ID = 1;
oRecord.Version = 6114138;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
long lFieldID = 1;
String sFieldData = "Field data for the record";
Record oRecord = new Record();
oRecord.ID = 1;
oRecord.Version = 6114138;
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);

Record Deleting

long lFieldID = 1;
String sFieldData = new String("Field data for the record");
Record oRecord = new Record();
oRecord.ID = 1;
oRecord.Version = 0;
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.ID = 1;
oRecord.Version = 0;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
long lFieldID = 1;
String sFieldData = "Field data for the record";
Record oRecord = new Record();
oRecord.ID = 1;
oRecord.Version = 0;
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);

RecordList

long lFieldID = 1;
String sFieldData = new String("Field data for the record");
Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
ArrayList<Record> aList = new ArrayList<>();
aList.add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.aData = aList;
int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
RecordList oNewRecords;
oNewRecords.aData.push_back(oRecord);
long lFieldID = 1;
String sFieldData = "Field data for the record";
Record oRecord = new Record();
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);
List<Record> aList = new List<Record>();
aList.Add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.AData = aList;

public RecordList()
public RecordList(List<Record> aData)

This structure represents a list of records.

DuplicateNewRecordList

This structure represents the return result of AddRecordsNoDuplicatesWithFieldsReturned(), and it contains two records arraies as following:

Database Methods

CreateDatabase

Database oNewDatabase = new Database();
oNewDatabase.sName = "ACL Research";
oNewDatabase.sDescription = "A Database Description";
oNewDatabase.bActive = true;

ArrayList<Integer> aClientIDs = new ArrayList<>();
aClientIDs.add(1);

long lDataServerID = 1;
client.CreateDatabase(oNewDatabase, lDataServerID, aClientIDs);
::iconect::api::structs::Database oNewDatabase;
oNewDatabase.sName = L"ACL Research";
oNewDatabase.sDescription = L"A Database Description";
oNewDatabase.bActive = true;

std::vector<int64_t> aClientIDs;
aClientIDs.push_back(1);

int64_t lDataServerID = 1;
oClient->CreateDatabase(oNewDatabase, lDataServerID, aClientIDs);
Database oNewDatabase = new Database();
oNewDatabase.SName = "ACL Research";
oNewDatabase.SDescription = "A Database Description";
oNewDatabase.BActive = true;

List<long> aClientIDs = new List<long>();
aClientIDs.Add(1);

long lDataServerID = 1;
client.CreateDatabase(oNewDatabase, lDataServerID, aClientIDs);

Database CreateDatabase(Database oNewDatabase, long lDataServerID, List<Long> aClientIDs)

This function is used to create a new XERA database.
Parameters

Returns
A Database structure populated with the database ID.

CreateDatabaseBasedOnTemplate

import com.iconect.api.structs.*;
import java.util.List;
import java.util.stream.Collectors;

/* This code assumes that the template has the database ID 5000 ... */
long lTemplatelDatabaseID = 5000;

/* ... and creates a new database called "New Database" ... */
Database oDatabaseInfo = new Database();
oDatabaseInfo.setSName("New Database");
oDatabaseInfo.setSDescription("This database was created as an example");
oDatabaseInfo.setEState(State.Active);

/* ... on the same server as the template ... */
long lDataServerID = client.GetDataServerForDatabase(lTemplatelDatabaseID);

/* ... and with the same clients as the template ... */
List<Client> aClients = client.GetClientsForDatabase(lTemplatelDatabaseID);
List<Long> aClientIDs = aClients.stream().map(Client::getLID).collect(Collectors.<Long>toList())

/* ... but with no new user groups. */
bool bCreateNewGroups = false;

Database oNewDatabase = client.CreateDatabaseBasedOnTemplate(
    oDatabaseInfo, lDataServerID, lTemplatelDatabaseID,
    aClientIDs, bCreateNewGroups);
using namespace iconect::api::structs;

/* This code assumes that the template has the database ID 5000 ... */
std::int64_t lTemplatelDatabaseID = 5000;

/* ... and creates a new database called "New Database" ... */
Database oDatabaseInfo;
oDatabaseInfo.__set_sName(L"New Database");
oDatabaseInfo.__set_sDescription(L"This database was created as an example");
oDatabaseInfo.__set_eState(State::Active);

/* ... on the same server as the template ... */
long lDataServerID = oClient->GetDataServerForDatabase(lTemplatelDatabaseID);

/* ... and with the same clients as the template ... */
std::vector<Client> aClients (client.GetClientsForDatabase(lTemplatelDatabaseID));
std::vector<std::int64_t> aClientIDs;
std::transform(aClients.cbegin(), aClients.cend(), std::back_inserter(aClientIDs), std::mem_fn(&Client::lID));

/* ... but with no new user groups. */
bool bCreateNewGroups = false;

Database oNewDatabase (oClient->CreateDatabaseBasedOnTemplate(
    oDatabaseInfo, lDataServerID, lTemplatelDatabaseID,
    aClientIDs, bCreateNewGroups));
using iconect.api.structs;
using System.Linq; /* for Select and ToList */

/* This code assumes that the template has the database ID 5000 ... */
long lTemplateDatabaseID = 5000;

/* ... and creates a new database called "New Database" ... */
Database oDatabaseInfo = new Database() {
  SName = "New Database",
  SDescription = "This database was created as an example",
  EState = State.Active };

/* ... on the same server as the template ... */
long lDataServerID = client.GetDataServerForDatabase(lTemplateDatabaseID);

/* ... and with the same clients as the template ... */
List<Client> aClients = client.GetClientsForDatabase(lTemplateDatabaseID);
List<long> aClientIDs = aClients.Select(oClient => oClient.lID).ToList<long>();

/* ... but with no new user groups. */
bool bCreateNewGroups = false;

Database oNewDatabase = client.CreateDatabaseBasedOnTemplate(
    oDatabaseInfo, lDataServerID, lTemplateDatabaseID,
    aClientIDs, bCreateNewGroups);

Database CreateDatabaseBasedOnTemplate(Database oNewDatabase, long lDataServerID, long lSourceDBID, List<Long> aClientIDs, boolean bCreateNewGroup)

This function is used to create an XERA database from a database template.

Parameters

Returns
A Database structure populated with the database ID.

GetDatabases

long lClientID = 1;
List<Database> databases = client.GetDatabases(lClientID, State.Active);
for (int i = 0; i < databases.size(); i++)
{
    System.out.println(databases.get(i).lID);
}
int64_t lClientID = 1;
std::vector< ::iconect::api::structs::Database> databases = 
    oClient->GetDatabases(lClientID,::iconect::api::structs::State::Active);
for (::iconect::api::structs::Database database : databases)
{
    std::cout << database.lID << " ";
}
List<Database> aDatabases = new List<Database>();
long lClientID = 1;
aDatabases = client.GetDatabases(lClientID,State.Active);
foreach(Database oDatabase in aDatabases){
    Console.WriteLine(oDatabase.LID);
}

List<Database> GetDatabases(long lClientID, State eStateFilter)

This function returns an array of Database objects.
Use NOT_ASSOCIATED for lClientID to return all the databases on the system.
Parameters

Returns
An array of Database structures.

GetDatabase

long lDatabaseID = 10;
Database oDatabase = client.GetDatabase(lDatabaseID);
System.out.println(oDatabase.lID);
System.out.println(oDatabase.sName);
int64_t lDatabaseID = 10;
::iconect::api::structs::Database oDatabase = oClient->GetDatabase(lDatabaseID);
std::cout << oDatabase.lID << " ";
std::cout << oDatabase.sName << " ";
long lDatabaseID = 10;
Database oDatabase = client.GetDatabases(lDatabaseID);
Console.WriteLine(oDatabase.LID);
Console.WriteLine(oDatabase.SName);

Database GetDatabase(long lDatabaseID)

This function returns a Database object.
Parameters

Returns
A Database object.

DeleteDatabase

long lDatabaseID = 1;
Database oDatabase = new Database(lDatabaseID);
client.DeleteDatabase(oDatabase);
int64_t lDatabaseID = 1;
::iconect::api::structs::Database oDatabase;
oDatabase.lID = lDatabaseID;
oClient->DeleteDatabase(oDatabase);
long lDatabaseID = 1;
Database oDatabase = new Database();
oDatabase.LID = lDatabaseID;
client.DeleteDatabase(oDatabase);

void DeleteDatabase(Database oDatabase)

This function is used to delete an existing XERA database. This function will match on the Database ID.

Parameters

Returns
None.

ActivateDatabase

long lDatabaseID = 1;
client.ActivateDatabase(lDatabaseID);
int64_t lDatabaseID = 1;
oClient->ActivateDatabase(lDatabaseID);
long lDatabaseID = 1;
client.ActivateDatabase(lDatabaseID);

bool ActivateDatabase(long lDatabaseID)

This function is used to activate an existing XERA database.

Parameters

Returns
The previous status of the database.

DeactivateDatabase

long lDatabaseID = 1;
client.DeacivateDatabase(lDatabaseID);
int64_t lDatabaseID = 1;
oClient->DeactivateDatabase(lDatabaseID);
long lDatabaseID = 1;
client.DeactivateDatabase(lDatabaseID);

bool DeactivateDatabase(long lDatabaseID)

This function is used to deactivate an existing XERA database.

Parameters

Returns
The previous status of the database.

AddDatabaseToClient

long lClientID = 1;
long lDatabaseID = 123;
client.AddDatabaseToClient(lClientID, lDatabaseID);
int64_t lClientID = 1;
int64_t lDatabaseID = 123;
oClient->AddDatabaseToClient(lClientID, lDatabaseID);
long lClientID = 1;
long lDatabaseID = 123;
client.AddDatabaseToClient(lClientID, lDatabaseID);

void AddDatabaseToClient(long lClientID, long lDatabaseID)

This function associates a given database with a given client.

Parameters

Returns
None

RemoveDatabaseFromClient

long lClientID = 1;
long lDatabaseID = 123;
client.RemoveDatabaseFromClient(lClientID, lDatabaseID);
int64_t lClientID = 1;
int64_t lDatabaseID = 123;
oClient->RemoveDatabaseFromClient(lClientID, lDatabaseID);
long lClientID = 1;
long lDatabaseID = 123;
client.RemoveDatabaseFromClient(lClientID, lDatabaseID);

void RemoveDatabaseFromClient(long lClientID, long lDatabaseID)

This function removes the association between a given database and client.

Parameters

Returns
None

AddFields

Field oField = new Field();
oField.sName = "Native File Link";
oField.eType = FieldType.NATIVE_FILE;
oField.eDateFormat = DateFormat.NOT_APPLICABLE
oField.eTimeFormat = TimeFormat.NOT_APPLICABLE;
oField.iDecimalPlaces = 0;
oField.iLength = 100;
oField.eCurrency = CurrencyFormat.NOT_APPLICABLE;
oField.eDuration = DurationFormat.NOT_APPLICABLE;

List<Field> listFields = new ArrayList<Field>();
listFields.add(oField);

long lDatabaseID = 1;
client.AddFields(lDatabaseID, listFields);
::iconect::api::structs::Field oField;
oField.sName = L"Native File Link";
oField.eType = FieldType.NATIVE_FILE;
oField.eDateFormat = ::iconect::api::structs::DateFormat::NOT_APPLICABLE
oField.eTimeFormat = ::iconect::api::structs::TimeFormat::NOT_APPLICABLE;
oField.iDecimalPlaces = 0;
oField.iLength = 100;
oField.eCurrency = ::iconect::api::structs::CurrencyFormat::NOT_APPLICABLE;
oField.eDuration = ::iconect::api::structs::DurationFormat::NOT_APPLICABLE;

std::vector<iconect::api::structs::Field> listFields;
listFields.push_back(oField);

int64_t lDatabaseID = 1;
std::vector<iconect::api::structs::Field> retFields;

oClient->AddFields(retFields, lDatabaseID, listFields);
Field oField = new Field();
oField.SName = "Native File Link";
oField.EType = FieldType.NATIVE_FILE;
oField.EDateFormat = DateFormat.NOT_APPLICABLE
oField.ETimeFormat = TimeFormat.NOT_APPLICABLE;
oField.IDecimalPlaces = 0;
oField.ILength = 100;
oField.ECurrency = CurrencyFormat.NOT_APPLICABLE;
oField.EDuration = DurationFormat.NOT_APPLICABLE;

List<Field> aFields = new List<Field>();
aFields.Add(oField);

long lDatabaseID = 1;
client.AddFields(lDatabaseID, aFields);

List<Field> AddFields(long lDatabaseID, List<Field> aNewFieldList)

This function adds a field to a database.
Parameters

Returns
An array of Field objects with populated sColumnName and lFieldID fields. These new Field objects must be used to perform any operation on the new fields.

GetFields

long lDatabaseID = 1;
List<Field> fields = client.GetFields(lDatabaseID);
for (int i = 0; i < fields.size(); i++)
{
    System.out.println(fields.get(i).lID);
}
int64_t lDatabaseID = 1;
std::vector<iconect::api::structs::Field> fields = oClient->GetFields(lDatabaseID);
for (iconect::api::structs::Field field : fields)
{
    std::cout << field.lID << " ";
}
List<Field> aFields = new List<Field>();
long lDatabaseID = 1;
aFields = client.GetFields(lDatabaseID);
foreach(Field oField in aFields){
    Console.WriteLine(oField.LID);
}

List<Field> GetFields(long lDatabaseID)

This function returns all the fields associated with a database.
Parameters

Returns
An array of Field objects that are associated with the database.

UpdateField

long lDatabaseID = 1;
List<Field> fields = client.GetFields(lDatabaseID);
for (int i = 0; i < fields.size(); i++) {
    Field field = fields.get(i);
    if (field.sName.equals("Native File Link") && field.eType == FieldType.NATIVE_FILE) {
        field.iLength = 200;
        Field oUpdatedField = client.UpdateField(lDatabaseID, field);
    }
}
int64_t lDatabaseID = 1;
std::vector<iconect::api::structs::Field> fields;
oClient->GetFields(fields, lDatabaseID);
for (iconect::api::structs::Field field : fields)
{
    if (field.sName == "Native File Link" && field.eType == iconect::api::structs::FieldType::NATIVE_FILE)
    {
        field.iLength = 200;
        iconect::api::structs::Field oUpdatedField;
        oClient->UpdateField(oUpdatedField, lDatabaseID, oNewField);
    }
}
long lDatabaseID = 1;
List<Field> aFields = client.GetFields(lDatabaseID);
foreach(Field oField in aFields)
{
    if (oField.SName == "Native File Link" && oField.EType == FieldType.NATIVE_FILE)
    {
        oField.ILength = 200;
        Field oUpdatedField = client.UpdateField(lDatabaseID, oField);
    }
}

Field UpdateField(long lDatabaseID, Field oNewField)

This function changes the definition of a field. Note: At present, UpdateField can only increase the length of a LIMITED_TEXT field,
a NATIVE_FILE field, or an IMAGE_LINK field.

Parameters

Returns
A Field object representing the field with its new length.

GetDatabaseSetting

List<Long> listDatabaseIDs = new ArrayList<Long>();
listFields.add(1);

List<String> listValues = client.GetDatabaseSetting(listDatabaseIDs, DatabaseSetting.NATIVE_FILE_FIELD);
std::vector<int64_t> listDatabaseIDs;
listFields.push_back(1);

std::vector<wstring> listValues;
oClient->GetDatabaseSetting(listValues, listDatabaseIDs, DatabaseSetting.NATIVE_FILE_FIELD);
List<long> aFields = new List<long>();
aFields.Add(1);

List<string> listValues = client.GetDatabaseSetting(listDatabaseIDs, DatabaseSetting.NATIVE_FILE_FIELD);

List<string> GetDatabaseSetting(List<long> listDatabaseIDs, DatabaseSetting oSetting)

This function returns values for a set of databases for a specific database setting.
Parameters

Returns
An array of strings containing the current values for the requested database IDs.

SetDatabaseSetting

List<Long> listDatabaseIDs = new ArrayList<Long>();
listFields.add(1);

client.SetDatabaseSetting(listDatabaseIDs, DatabaseSetting.NATIVE_FILE_FIELD, "1");
std::vector<int64_t> listDatabaseIDs;
listFields.push_back(1);

oClient->SetDatabaseSetting(listDatabaseIDs, DatabaseSetting.NATIVE_FILE_FIELD, "1");
List<long> aFields = new List<long>();
aFields.Add(1);

client.GetDatabaseSetting(listDatabaseIDs, DatabaseSetting.NATIVE_FILE_FIELD, "1");

void GetDatabaseSetting(List<long> listDatabaseIDs, DatabaseSetting oSetting, string sValue)

This function set a specific database setting for a set of databases.
Parameters

Returns
None.

AddRecords

long lFieldID = 1;
String sFieldData = new String("Field data for the record");
Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
ArrayList<Record> aList = new ArrayList<>();
aList.add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.aData = aList;
long lDatabaseID = 1;
client.AddRecords(lDatabaseID, oNewRecords);

int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
RecordList oNewRecords;
oNewRecords.aData.push_back(oRecord);
int64_t lDatabaseID = 1;
oClient->AddRecords(lDatabaseID, oNewRecords);
long lFieldID = 1;
String sFieldData = "Field data for the record";
Record oRecord = new Record();
Dictionary<long, string> aFieldData = new Dictionary<long, string>();
aFieldData.Add(lFieldID, sFieldData);
oRecord.MapFieldIDToData = aFieldData;
List<Record> aList = new List<Record>();
aList.Add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.AData = aList;
long lDatabaseID = 1;
oClient->AddRecords(lDatabaseID, oNewRecords);

List<Long> AddRecords(long lDatabaseID, RecordList oNewRecords)

This function is used to add data to a database.
Parameters

Returns
An array of database object IDs that represent the inserted records in the database.

Note
A GetFields() call is required before calling this function if the records list includes any field that is not added in the same thread as this function call or does not exist before this function call.

AddRecordsWithFieldsReturned

long lFieldID = 1;
String sFieldData = new String("Sample Field Data");
Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
ArrayList<Record> aList = new ArrayList<>();
aList.add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.aData = aList;

long lDatabaseID = 1;
ArrayList<Integer> oFields = new ArrayList<>();
for(Field fld : client.GetFields(lDatabaseID)){
    oFields.add(fld.lID);
}
client.AddRecordsWithFieldsReturned(lDatabaseID, oNewRecords, oFields);
int64_t lFieldID = 1;
std::wstring sFieldData = L"Field data for the record";
::iconect::api::structs::Record oRecord;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
RecordList oNewRecords;
oNewRecords.aData.push_back(oRecord);

int64_t lDatabaseID = 1;
std::vector<int64_t> oFields;
for(::iconect::api::structs::Field fld : oClient->GetFields(lDatabaseID)){
    oFields.push_back(fld.lID);
}
oClient->AddRecordsWithFieldsReturned(lDatabaseID, oNewRecords, oFields);
long lFieldID = 1;
string sFieldData = "Sample Field Data";
Record oRecord = new Record();
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);
List<Record> aList = new List<Record>(){{oRecord}};
RecordList oNewRecords = new RecordList();
oNewRecords.AData = aList;

long lDatabaseID = 1;
List<long> oFields = new List<long>();
foreach (Field fld : client.GetFields(lDatabaseID)){
    oFields.Add(fld.LID);
}
client.AddRecordsWithFieldsReturned(lDatabaseID, oNewRecords, oFields);

Map<Long, Record> AddRecordsWithFieldsReturned(long lDatabaseID, RecordList oNewRecords, List<Long> oFields)

This function is used to add data to a database and return the added data.
Parameters

Returns
A map object with record ID as the key and a Record object as the value.

GetRecordCount

long lDatabaseID = 1;
long recordCount = client.GetRecordCount(lDatabaseID);
System.out.println("Record count: "+recordCount);
int64_t lDatabaseID = 1;
int64_t recordCount;
oClient->GetRecordCount(recordCount, lDatabaseID);
std::cout << "Record Count: " << recordCount << " ";
long lDatabaseID = 1;
long recordCount = client.GetRecordCount(lDatabaseID);
Console.WriteLine("Record Count: " + recordCount);

long GetRecordCount(long lDatabaseID)

This function returns the total number of records in a database.
Parameters

Returns
The total record count for the database.

GetRecords

long lDatabaseID = 1;
long lPage = 1;
long lPageSize = 1;
List<Long> aFieldIDList = new ArrayList<Long>();
List<Field> aFieldList = client.GetFields(lDatabaseID);
for(int i=0; i< aFieldList.size(); i++) {
    aFieldIDList.Add(aFieldList.get(i).lID);
}
List<Long> aRecordIDList = Arrays.asList(1L,2L,3L);
long ISizeLimit = 0;
RecordList rl = client.GetRecords(lDatabaseID, lPage, lPageSize, aFieldIDList, aRecordIDList, ISizeLimit);

System.out.println("Record count: " + rl.aData.size());
int64_t lDatabaseID = 1;
int64_t lPage = 1;
int64_t lPageSize = 1;
int64_t ISizeLimit = 0;
std::vector<iconect::api::structs::Field> aFieldList;
std::vector<int64_t> aFieldIDList;
oClient->GetFields(aFieldList);
for (int i = 0; i < aFieldList.size(); i++) {
    aFieldIDList.push_back(aFieldList[i].lID);
}
std::vector<int64_t> aRecordIDList = {1, 2, 3, 4};
::iconect::api::structs::RecordList rl;

oClient->GetRecords(rl, lDatabaseID, lPage, lPageSize, aFieldIDList, aRecordIDList, ISizeLimit);

std::cout << "Record count: " << rl.aData.size();
long lDatabaseID = 1;
long lPage = 1;
long lPageSize = 1;
List<long> aFieldIDList = new List<long>();
List<Field> aFieldList = client.GetFields(lDatabaseID);
foreach(Field oField in aFieldList) {
    aFieldIDList.Add(oField.LID);
}
List<long> aRecordIDList = new List<long>(){1,2,3};
long ISizeLimit = 0;
RecordList rl = client.GetRecords(lDatabaseID, lPage, lPageSize, aFieldIDList, aRecordIDList, ISizeLimit);

Console.WriteLine("Record count: " + rl.aData.size());

RecordList GetRecords(long lDatabaseID, long lPage, int iPageSize, List<Long> aFieldIDList, List<Long> aRecordIDList, long lSizeLimit)

This function returns a specific range of records in a database, which allows the caller to page through the result set. For example, using a database with 100 records, the caller can pass lPage as 2 and lPageSize as 10 to get records 11-20.

Parameters

Returns
A RecordList object.

UpdateRecords

long lDatabaseID = 1;
long lFieldID = 1;
String sFieldData = new String("Sample Field Data");
Record oRecord = new Record();
oRecord.ID = 1;
oRecord.mapFieldIDToData = new HashMap<>();
oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
ArrayList<Record> aList = new ArrayList<>();
aList.add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.aData = aList;
client.UpdateRecords(lDatabaseID, oNewRecords);
int64_t lDatabaseID = 1;
int64_t lFieldID = 1;
::iconect::api::structs::Record oRecord;
::iconect::api::structs::RecordList oNewRecords;
auto & aList = oNewRecords.aData;
std::wstring sFieldData = L"Sample Field Data";
oRecord.ID = 1;
oRecord.mapFieldIDToData[lFieldID] = sFieldData;
aList.push_back(oRecord);
oClient->UpdateRecords(lDatabaseID, oNewRecords);
long lDatabaseID = 1;
long lFieldID = 1;
string sFieldData = "Sample Field Data";
Record oRecord = new Record();
oRecord.ID = 1;
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);
List<Record> aList = new List<Record>();
aList.Add(oRecord);
RecordList oNewRecords = new RecordList();
oNewRecords.AData = aList;
client.UpdateRecords(lDatabaseID, oNewRecords);

void UpdateRecords(long lDatabaseID, RecordList oNewRecords)

This function is used to update existing records.
Parameters

Returns
None.

AddRecordsNoDuplicatesWithFieldsReturned

long lDatabaseID = 1;

long lFieldID = 1;
String sFieldData = new String("Sample Field Data");

long lHashFieldID = 2;
String sHash = new String("abcd23456eaff2288");

Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();

oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
oRecord.mapFieldIDToData.put(lHashFieldID, sHash);

RecordList oNewRecords = new RecordList();
oNewRecords.aData = new ArrayList<>();
oNewRecords.aData.add(oRecord);

ArrayList<long> aHashList = new ArrayList<>();
aHashList.add(lHashFieldID);

ArrayList<long> aReturnList = new ArrayList<>();
aReturnList.add(lHashFieldID);

DuplicateNewRecordList oRetrun = 
    client.AddRecordsNoDuplicatesWithFieldsReturned(lDatabaseID, oNewRecords, aHashList, aReturnList);
int64_t lDatabaseID = 1;

int64_t lFieldID = 1;
std::wstring sFieldData = L"Sample Field Data";

int64_t lHashFieldID = 2;
std::wstring sHash = L"abcd23456eaff2288";

::iconect::api::structs::Record oRecord;
::iconect::api::structs::RecordList oNewRecords;

oRecord.mapFieldIDToData[lFieldID] = sFieldData;
oRecord.mapFieldIDToData[lHashFieldID] = sHash;

oNewRecords.aData.push_back(oRecord);

::iconect::api::structs::IDList aHashList;
aHashList.push_back(lHashFieldID);

::iconect::api::structs::IDList aReturnList;
aReturnList.push_back(lHashFieldID);

DuplicateNewRecordList oRetrun = 
    client.AddRecordsNoDuplicatesWithFieldsReturned(lDatabaseID, oNewRecords, aHashList, aReturnList);
long lDatabaseID = 1;

long lFieldID = 1;
string sFieldData = "Sample Field Data";

long lHashFieldID = 2;
string sHash = "abcd23456eaff2288";

Record oRecord = new Record();
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);
oRecord.MapFieldIDToData.Add(lHashFieldID, sHash);

RecordList oNewRecords = new RecordList();
oNewRecords.aData = new List<Record>();
oNewRecords.aData.Add(oRecord);

List<long> aHashList = new ArrayList<>();
aHashList.Add(lHashFieldID);

List<long> aReturnList = new ArrayList<>();
aReturnList.Add(lHashFieldID);

DuplicateNewRecordList oRetrun = 
    client.AddRecordsNoDuplicatesWithFieldsReturned(lDatabaseID, oNewRecords, aHashList, aReturnList);

DuplicateNewRecordList AddRecordsNoDuplicatesWithFieldsReturned(long lDatabaseID, RecordList oNewRecords, IDList aHashFields, IDList aReturnFields)

This function is used to add data to a database without duplication and return the added data or the duplicated data.

Parameters

UpdateRecordsWithFieldsReturned

long lDatabaseID = 1;

long lFieldID = 1;
String sFieldData = new String("Sample Field Data");

Record oRecord = new Record();
oRecord.mapFieldIDToData = new HashMap<>();

oRecord.mapFieldIDToData.put(lFieldID, sFieldData);
oRecord.ID = 1;
oRecord.Version = 6114138;

RecordList oRecords = new RecordList();
oRecords.aData = new ArrayList<>();
oRecords.aData.add(oRecord);

ArrayList<long> aReturnList = new ArrayList<>();
aReturnList.add(lFieldID);

RecordList oRetrun = 
    client.UpdateRecordsWithFieldsReturned(lDatabaseID, oRecords, aReturnList);
int64_t lDatabaseID = 1;

int64_t lFieldID = 1;
std::wstring sFieldData = L"Sample Field Data";

::iconect::api::structs::Record oRecord;
::iconect::api::structs::RecordList oRecords;

oRecord.mapFieldIDToData[lFieldID] = sFieldData;
oRecord.ID = 1;
oRecord.Version = 6114138;

oRecords.aData.push_back(oRecord);

::iconect::api::structs::IDList aReturnList;
aReturnList.push_back(lFieldID);

RecordList oRetrun = 
    client.UpdateRecordsWithFieldsReturned(lDatabaseID, oRecords, aReturnList);
long lDatabaseID = 1;

long lFieldID = 1;
string sFieldData = "Sample Field Data";

Record oRecord = new Record();
oRecord.MapFieldIDToData = new Dictionary<long, string>();
oRecord.MapFieldIDToData.Add(lFieldID, sFieldData);
oRecord.ID = 1;
oRecord.Version = 6114138;

RecordList oRecords = new RecordList();
oRecords.aData = new List<Record>();
oRecords.aData.Add(oRecord);

List<long> aReturnList = new ArrayList<>();
aReturnList.Add(lFieldID);

RecordList oRetrun = 
    client.UpdateRecordsWithFieldsReturned(lDatabaseID, oRecords, aReturnList);

RecordList UpdateRecordsWithFieldsReturned(long lDatabaseID, RecordList oRecords, IDList aReturnFields)

This function is used to update data in a database with/without specific record version and return the records not being added because of the record version mismatching.

Parameters

DeleteRecords

long lDatabaseID = 1;

ArrayList<long> aDeleteRecordIDs = new ArrayList<>();
aDeleteRecordIDs.add(1);
aDeleteRecordIDs.add(2);

client.DeleteRecords(lDatabaseID, aDeleteRecordIDs);
int64_t lDatabaseID = 1;

::iconect::api::structs::IDList aDeleteRecordIDs;
aDeleteRecordIDs.push_back(1);
aDeleteRecordIDs.push_back(2);

client.DeleteRecords(lDatabaseID, aDeleteRecordIDs);
long lDatabaseID = 1;

List<long> aDeleteRecordIDs = new ArrayList<>();
aReturnList.Add(1);
aReturnList.Add(2);

client.DeleteRecords(lDatabaseID, aDeleteRecordIDs);

void DeleteRecords(lDatabaseID, IDList aDeleteRecordIDs)

This function is used to delete a list of record(s) from a database.

Parameters

OptimizeIndexFragmentation

long lDatabaseID = 1;

ArrayList<long> aFieldIDs = new ArrayList<>();
aFieldIDs.add(1);
aFieldIDs.add(2);

client.OptimizeIndexFragmentation(lDatabaseID, aFieldIDs, 0.3);
int64_t lDatabaseID = 1;

::iconect::api::structs::IDList aFieldIDs;
aFieldIDs.push_back(1);
aFieldIDs.push_back(2);

client.OptimizeIndexFragmentation(lDatabaseID, aFieldIDs, 0.3);
long lDatabaseID = 1;

List<long> aFieldIDs = new ArrayList<>();
aFieldIDs.Add(1);
aFieldIDs.Add(2);

client.OptimizeIndexFragmentation(lDatabaseID, aFieldIDs, 0.3);

void OptimizeIndexFragmentation(lDatabaseID, IDList aFieldIDs, double FragmentationPercentage)

This function is used to optimize index fragmentation of a database.

Parameters



User Roles Structures

UserRole

UserRole oUserRole = new UserRole();
oUserRole.sName = "My user role";
oUserRole.sDescription = "User role descripton";
oUserRole.UserRoleType = UserRoleType.User;
oUserRole.lClientID = 0;
::iconect::xera::UserRole oUserRole;
oUserRole.sName = L"My user role";
oUserRole.sDescription = L"User role descripton";
oUserRole.UserRoleType = ::iconect::xera::UserRoleType::User;
oUserGroup.lClientID = 0;
UserRole oUserRole = new UserRole();
oUserRole.SName = "My user role";
oUserRole.SDescription = "User role descripton";
oUserRole.UserRoleType = UserRoleType.User;
oUserRole.LClientID = 0;

public UserRole()
public UserRole(long lID, String sName, String sDescription, UserRoleType eType, long lClientID)

This structure contains a UserRole ID and its name.

User Role Methods

GetUserRoles

List<UserRoleType> = new ArrayList<UserRoleType> aTypes;
aTypes.add(UserRoleType.User);
List<UserRole> aUserRoles = client.GetUserRoles(aTypes, null);
for(UserRole oUserRole : aUserRoles) {
    System.out.println(oUserRole.sName);
}
std::vector<::iconect::xera::UserRole> aUserRoles;
vector<UserRoleType> aTypes;
aTypes.push_back(::iconect::xera::UserRoleType::User);
oClient->GetUserRoles(aUserRoles, aTypes, null);
for(::iconect::xera::UserRole oUserRole : aUserRoles) {
    std::cout << oUserRole.sName << " ";
}
List<UserRole> aUserRoles = new List<UserRole>();
List<UserRoleType> aTypes = new List<UserRoleType>();
aTypes.Add(UserRoleType.User);
aUserRoles = client.GetUserRoles(aTypes, null);
foreach(UserRole oUserRole in aUserRoles) {
   Console.WriteLine(oUserRole.SName);
}

List<UserRole> GetUserRoles(List<UserRoleType> aTypes, null)

This function returns an array of user role objects that represent all the user roles filtered by the given user role types.

Parameters

Returns
An array of UserRole structures.



User Structures

User

User oUserInfoNew = new User();
oUserInfoNew.sUsername = "jsmith";
oUserInfoNew.sFirstName = "John";
oUserInfoNew.sLastName = "Smith";
oUserInfoNew.sEmail = "jsmith@example.com";
oUserInfoNew.sPhoneNumber = "555-555-1212";
oUserInfoNew.sDescription = "Created by the Admin API";
oUserInfoNew.eState = State.Active;
::iconect::api::structs::User oUserInfoNew;
oUserInfoNew.sUsername = L"jsmith";        
oUserInfoNew.sFirstName = L"John";
oUserInfoNew.sLastName = L"Smith";
oUserInfoNew.sEmail = L"jsmith@example.com";
oUserInfoNew.sPhoneNumber = L"555-555-1212";
oUserInfoNew.sDescription = L"Created by the Admin API";
oUserInfoNew.eState = ::iconect::api::structs::State::Active
User oUserInfoNew = new User();
oUserInfoNew.SUsername = "jsmith";
oUserInfoNew.SFirstName = "John";
oUserInfoNew.SLastName = "Smith";
oUserInfoNew.SEmail = "jsmith@example.com";
oUserInfoNew.SPhoneNumber = "555-555-1212";
oUserInfoNew.SDescription = "Created by the Admin API";
oUserInfoNew.EState = State.Active;

public User()
public User(long lID, String sUsername, String sFirstName, String sLastName, String sPhoneNumber, String sEmail, String sDescription, State eState)

This structure contains the properties of a user.

User Methods

CreateUser

User oUserInfoNew = new User();
oUserInfoNew.sUsername = "jsmith";
oUserInfoNew.sFirstName = "John";
oUserInfoNew.sLastName = "Smith";
oUserInfoNew.sEmail = "jsmith@example.com";
oUserInfoNew.sPhoneNumber = "555-555-1212";
oUserInfoNew.sDescription = "Created by the Admin API";
oUserInfoNew.eState = State.Active;

oUserInfoNew = client.CreateUser(oUserInfoNew);
::iconect::api::structs::User oUserInfoNew;
oUserInfoNew.sUsername = L"jsmith";        
oUserInfoNew.sFirstName = L"John";
oUserInfoNew.sLastName = L"Smith";
oUserInfoNew.sEmail = L"jsmith@example.com";
oUserInfoNew.sPhoneNumber = L"555-555-1212";
oUserInfoNew.sDescription = L"Created by the Admin API";
oUserInfoNew.eState = ::iconect::api::structs::State::Active;

::iconect::api::structs::User oUserReturn;
oClient->CreateUser(oUserReturn, oUserInfoNew);
User oUserInfoNew = new User();
oUserInfoNew.SUsername = "jsmith";
oUserInfoNew.SFirstName = "John";
oUserInfoNew.SLastName = "Smith";
oUserInfoNew.SEmail = "jsmith@example.com";
oUserInfoNew.SPhoneNumber = "555-555-1212";
oUserInfoNew.SDescription = "Created by the Admin API";
oUserInfoNew.EState = State.Active;

oUserInfoNew = client.CreateUser(oUserInfoNew);

User CreateUser(User oUser)

This function creates a user and returns a populated object.
Parameters

Returns
A User object with the lID field populated.

GetUsers

List<User> users = client.GetUsers(State.Active);
for (int i = 0; i < users.size(); i++) {
    if(users.get(i).sUsername == "jsmith") {
        System.out.println(users.get(i).sEmail);
    }
}
::iconect::api::structs::UserList aUserList;                
oClient->GetUsers(aUserList,::iconect::api::structs::State::Active);
for (int i = 0; i < aUserList.size(); i++) {
    if(aUserList[i].sUsername == "jsmith") {
        std::cout << aUserList[i].sEmail << " ";
    }
}
List<User> aUserList = client.GetUsers(State.Active);
foreach(User ui in aUserList) {
    if(ui.SUsername == "jsmith") {
        Console.WriteLine(ui.SEmail);
    }
}

List<User> GetUsers(State eStateFilter)

This function returns a list of populated User structures for the entire system.
Parameters

Returns
An array of User objects.

GetUser

User oUser = client.GetUser(1);
::iconect::api::structs::User oUser;
m_oClient->GetUser(oUser,1);
User oUser = client.GetUser(1);

User GetUser(long lUserID)

This function returns a user specified by User ID.

Parameters

Returns
A User object.

UpdateUser

User oUserInfoNew = new User();
oUserInfoNew.lID = 1;
oUserInfoNew.sUsername = "jsmith";
oUserInfoNew.sFirstName = "John";
oUserInfoNew.sLastName = "Smith";
oUserInfoNew.sEmail = "jsmith@example.com";
oUserInfoNew.sPhoneNumber = "555-555-1212";
oUserInfoNew.sDescription = "Updated by the Admin API";
oUserInfoNew.eState = State.Active;

User oUserReturn;
oUserReturn = client.UpdateUser(oUserInfoNew);
::iconect::api::structs::User oUserInfoNew;
oUserInfoNew.lID = 1;
oUserInfoNew.sUsername = L"jsmith";        
oUserInfoNew.sFirstName = L"John";
oUserInfoNew.sLastName = L"Smith";
oUserInfoNew.sEmail = L"jsmith@example.com";
oUserInfoNew.sPhoneNumber = L"555-555-1212";
oUserInfoNew.sDescription = L"Updated by the Admin API";
oUserInfoNew.eState = ::iconect::api::structs::State::Active

oClient->UpdateUser(oUserInfoNew);
User oUserInfoNew = new User();
oUserInfoNew.LID = 1;
oUserInfoNew.SUsername = "jsmith";
oUserInfoNew.SFirstName = "John";
oUserInfoNew.SLastName = "Smith";
oUserInfoNew.SEmail = "jsmith@example.com";
oUserInfoNew.SPhoneNumber = "555-555-1212";
oUserInfoNew.SDescription = "Updated by the Admin API";
oUserInfoNew.EState = State.Active;

client.UpdateUser(oUserInfoNew);

void UpdateUser(User oUser)

This function updates the specified user. A user can be matched on UserID.
Parameters

Returns
None

DeleteUser

User oUser = new User();
oUser.lID = 1;
client.DeleteUser(oUser);
::iconect::api::structs::User oUser;
oUser.lID = 1;
oClient->DeleteUser(oUser);
User oUser = new User();
oUser.LID = 1;
client.DeleteUser(oUser);

void DeleteUser(User oUser)

This function deletes the specific user.
Parameters

Returns
None

ActivateUser

long lUserID = 1;
client.ActivateUser(lUserID);
int64_t lUserID = 1;
oClient->ActivateUser(lUserID);
long lUserID = 1;
client.ActivateUser(lUserID);

bool ActivateUser(long lUserID)

This function is used to activate an existing XERA user.

Parameters

Returns
The previous status of the user.

DeactivateUser

long lUserID = 1;
client.DeacivateUser(lUserID);
int64_t lUserID = 1;
oClient->DeactivateUser(lUserID);
long lUserID = 1;
client.DeactivateUser(lUserID);

bool DeactivateUser(long lUserID)

This function is used to deactivate an existing XERA user.

Parameters

Returns
The previous status of the user.

AddUserToClient

long lClientID = 1;
long lUserID = 123;
client.AddUserToClient(lClientID, lUserID);
int64_t lClientID = 1;
int64_t lUserID = 123;
oClient->AddUserToClient(lClientID, lUserID);
long lClientID = 1;
long lUserID = 123;
client.AddUserToClient(lClientID, lUserID);

void AddUserToClient(long lClientID, long lUserID)

This function associates a given user with a given client.
Parameters

Returns
None

RemoveUserFromClient

long lClientID = 1;
long lUserID = 123;
client.RemoveUserFromClient(lClientID, lUserID);
int64_t lClientID = 1;
int64_t lUserID = 123;
oClient->RemoveUserFromClient(lClientID, lUserID);
long lClientID = 1;
long lUserID = 123;
client.RemoveUserFromClient(lClientID, lUserID);

void RemoveUserFromClient(long lClientID, long lUserID)

This function removes the association between a given user and client.
Parameters

Returns
None

GetUsersByClient

long lClientID = 1;
List<long> aUsers = client.GetUsersByClient(lClientID);
for (int i = 0; i < aUsers.size(); i++) {
    System.out.println(aUsers[i]);
}
std::vector<int64_t> aUsers;
int64_t lClientID = 1;_
oClient->GetUsersByClient(aUsers, lClientID);
for (int64_t lUserID : aUsers) {
    std::cout << lUserID << " ";
}
long lClientID = 1;
list<long> aUsers = client.GetUsersByClient(lClientID);
foreach(long userid in aUsers) {
    Console.WriteLine(userid);
}

List<Long> GetUsersByClient(long lClientID)

This function returns a list of associated user IDs for the given client.
Parameters

Returns
An array of user IDs that represent the users associated with the client.

GetClientForUser

List<Integer> oClientForUser = client.GetClientForUser(lUserID);
long lUserID = 123;
for (Integer lClientID : oClientForUser) {
    System.out.println(lClientID);
}
std::vector<int64_t> oClientForUser;
int64_t lUserID = 123;
oClient->GetClientForUser(oClientForUser, lUserID);
for( int64_t lClientID : oClientForUser ) {
    std::cout << lClientID << " ";
}
List<long> oClientForUser = client.GetClientForUser(lUserID);
long lUserID = 123;
foreach(long lClientID in oClientForUser) {
    Console.WriteLine(lClientID);
}

List<Long> GetClientForUser(long lUserID)

This function returns a list of associated client IDs for the given user.
Parameters

Returns
An array of client IDs that represent the clients associated with the user.

GetUserSetting

List<Long> listUserIDs = new ArrayList<Long>();
listFields.add(1);

List<String> listValues = client.GetUserSetting(listUserIDs, UserSetting.FORCE_PASSWORD_CHANGE);
std::vector<int64_t> listUserIDs;
listFields.push_back(1);

std::vector<wstring> listValues;
oClient->GetUserSetting(listValues, listUserIDs, UserSetting.FORCE_PASSWORD_CHANGE);
List<long> aFields = new List<long>();
aFields.Add(1);

List<string> listValues = client.GetUserSetting(listUserIDs, UserSetting.FORCE_PASSWORD_CHANGE);

List<string> GetUserSetting(List<long> listUserIDs, UserSetting oSetting)

This function returns values for a set of databases for a specific database setting.
Parameters

Returns
An array of strings containing the current values for the requested database IDs.

SetUserSetting

List<Long> listUserIDs = new ArrayList<Long>();
listFields.add(1);

client.SetUserSetting(listUserIDs, UserSetting.FORCE_PASSWORD_CHANGE, "1");
std::vector<int64_t> listUserIDs;
listFields.push_back(1);

oClient->SetUserSetting(listUserIDs, UserSetting.FORCE_PASSWORD_CHANGE, "1");
List<long> aFields = new List<long>();
aFields.Add(1);

client.GetUserSetting(listUserIDs, UserSetting.FORCE_PASSWORD_CHANGE, "1");

void GetUserSetting(List<long> listUserIDs, UserSetting oSetting, string sValue)

This function set a specific database setting for a set of databases.
Parameters

Returns
None.



Panel Structures

CustomRelatedSettings

CustomRelatedSettings oCustomRelatedSettings = new CustomRelatedSettings();
oCustomRelatedSettings.aMatchingFieldIDs = {1,2,3};
oCustomRelatedSettings.aDisplayFieldIDs = {1,4,5};
::iconect::api::structs::CustomRelatedSettings oCustomRelatedSettings;
oCustomRelatedSettings.aMatchingFieldIDs = {1,2,3};
oCustomRelatedSettings.aDisplayFieldIDs = {1,4,5};
CustomRelatedSettings oCustomRelatedSettings = new CustomRelatedSettings();
oCustomRelatedSettings.aMatchingFieldIDs = {1,2,3};
oCustomRelatedSettings.aDisplayFieldIDs = {1,4,5};

public CustomRelatedSettings()
public CustomRelatedSettings(List<Long> aMatchingFieldIDs, List<Long> aDisplayFieldIDs)

This structure contains the configuration of a Custom Related panel.

Panel

Panel oPanel = new Panel();
oPanel.sName = "Review";
oPanel.eType = PanelType.STANDARD;
oPanel.eLocation = enPanelLocation.locDocView;
::iconect::api::structs::Panel oPanel;
oPanel.sName = L"Review";
oPanel.eType = ::iconect::api::structs::PanelType::STANDARD;
oPanel.lLocation = ::iconect::api::structs::enPanelLocation::type::locDocView;
Panel oPanel = new Panel();
oPanel.SName = "Review";
oPanel.EType = PanelType.STANDARD;
oPanel.LLocation = enPanelLocation.locDocView;

public Panel()
public Panel(long lID, String sName, PanelType eType, long lLocation, CustomRelatedSettings oCustomRelatedSettings)

This structure contains the properties of a panel.

Panel Methods

CreatePanel

long lDatabaseID = 1;
Panel oPanel = new Panel();
oPanel.sName = "Review";
oPanel.eType = PanelType.STANDARD;
oPanel.eLocation = enPanelLocation.locDocView;
Panel oNewPanel = client.CreatePanel(lDatabaseID, oPanel);
System.out.println("The new id is: " + oNewPanel.lID);
int64_t lDatabaseID = 1;
::iconect::api::structs::Panel oPanel;
oPanel.sName = L"Review";
oPanel.eType = ::iconect::api::structs::PanelType::STANDARD;
oPanel.lLocation = ::iconect::api::structs::enPanelLocation::type::locDocView;
::iconect::api::structs::Panel oNewPanel;
oClient->CreatePanel(oNewPanel, lDatabaseID, oPanel);
cout << "The new id is: " << oNewPanel.lID << " ";
long lDatabaseID = 1;
Panel oPanel = new Panel();
oPanel.SName = "Review";
oPanel.EType = PanelType.STANDARD;
oPanel.LLocation = enPanelLocation.locDocView;
Panel oNewPanel = new Panel();
oNewPanel = client.CreatePanel(lDatabaseID, oPanel);
Console.WriteLine("The new id is: " + oNewPanel.LID);

Panel CreatePanel(long lDatabaseID, Panel oPanel)

This function creates a panel and returns a populated structure.
Parameters

Returns
A fully populated Panel that represents the panel item created.

GetPanels

long lDatabaseID = 1;
List<Panel> aPanels = client.GetPanels(lDatabaseID);
for(Panel oPanel : aPanels) {
    System.out.println(oPanel.sName);
}
int64_t lDatabaseID = 1;
std::vector<::iconect::api::structs::Panel> aPanels;
oClient->GetPanels(aPanels, lDatabaseID);
for(::iconect::api::structs::Panel oPanel : aPanels) {
    std::cout << oPanel.sName << " ";
}
long lDatabaseID = 1;
List<Panel> aPanels = new List<Panel>();
aPanels = oClient.GetPanels(lDatabaseID);
foreach(Panel oPanel in aPanels) {
    Console.WriteLine(oPanel.SName);
}

List<Panel> GetPanels(long lDatabaseID, PanelType eType)

This function returns a list of panel items for the database.
Parameters

Returns
An array of Panel objects.

DeletePanel

long lDatabaseID = 1;
Panel oPanel = new Panel();
oPanel.lID = 1;
oPanel.eType = PanelType.STANDARD;
client.DeletePanel(lDatabaseID, oPanel);
int64_t lDatabaseID = 1;
::iconect::api::structs::Panel oPanel;
oPanel.lID = 1;
oPanel.eType = PanelType.STANDARD;
oClient->DeletePanel(lDatabaseID, oPanel);
long lDatabaseID = 1;
Panel oPanel = new Panel();
oPanel.LID = 1;
oPanel.EType = PanelType.STANDARD;
client.DeletePanel(lDatabaseID, oPanel);

void DeletePanel(long lDatabaseID, Panel oPanel)

This function deletes the specified panel.
Parameters

Returns
None

UpdatePanel

long lDatabaseID = 1;
Panel oPanel = new Panel();
oPanel.lID = 1;
oPanel.eType = PanelType.STANDARD;
oPanel.sName = "Completed";
client.UpdatePanel(lDatabaseID, oPanel);
int64_t lDatabaseID = 1;
::iconect::api::structs::Panel oPanel;
oPanel.lID = 1;
oPanel.eType = PanelType.STANDARD;
oPanel.sName = L"Completed";
oClient->UpdatePanel(lDatabaseID, oPanel);
long lDatabaseID = 1;
Panel oPanel = new Panel();
oPanel.LID = 1;
oPanel.SName = "Completed";
oPanel.EType = PanelType.STANDARD;
client.UpdatePanel(lDatabaseID, oPanel);

Panel UpdatePanel(long lDatabaseID, Panel oPanel)

This function updates the properties of the specified panel.
Parameters

Returns
None

Panel Item Structures

FolderSettings

FolderSettings oFolderSettings = new FolderSettings();

oFolderSettings.eIcon = PanelItemIcon.FOLDER;
oFolderSettings.eColor = Color.RED;
::iconect::api::structs::FolderSettings oFolderSettings;

oFolderSettings.eIcon = ::iconect::api::structs::PanelItemIcon::FOLDER;
oFolderSettings.eColor = ::iconect::api::structs::Color::RED;
FolderSettings oFolderSettings = new FolderSettings();

oFolderSettings.eIcon = PanelItemIcon.FOLDER;
oFolderSettings.eColor = Color.RED;

public FolderSettings()
public FolderSettings(PanelItemIcon eIcon, Color eColor)

This structure contains the properties of a folder. These settings are only used if the panel item type is set to “FOLDER”.

EditSettings

EditSettings oEditSettings = new EditSettings();

oEditSettings.eType = EditItemType.APPEND;
oEditSettings.sDelimiter = ",";
oEditSettings.lFieldID = 123;
::iconect::api::structs::EditSettings oEditSettings;

oEditSettings.eType = ::iconect::api::structs::EditItemType::APPEND;
oEditSettings.sDelimiter = L",";
oEditSettings.lFieldID = 123;
EditSettings oEditSettings = new EditSettings();

oEditSettings.EType = EditItemType.APPEND;
oEditSettings.SDelimiter = ",";
oEditSettings.LFieldID = 123;

public EditSettings()
public EditSettings(EditItemType eType, String sDelimiter, long lFieldID)

This structure contains the properties of an edit item. These settings are only used if the panel item type is set to “EDIT”.

PanelItem

PanelItem oPanelItem = new PanelItem();

oPanelItem.sName = "Reviewed";
oPanelItem.eType = PanelItemType.FOLDER;
oPanelItem.sDescription= "a Description";
oPanelItem.lPanelID = 1;
oPanelItem.lParentID = 0;

FolderSettings oFolderSettings = new FolderSettings();
oFolderSettings.eIcon = PanelItemIcon.FOLDER;
oFolderSettings.eColor = Color.RED;
oPanelItem.oFolderSettings = oFolderSettings;
::iconect::api::structs::PanelItem oPanelItem;

oPanelItem.sName = "Reviewed";
oPanelItem.eType = ::iconect::api::structs::PanelItemType::FOLDER;
oPanelItem.sDescription= "a Description";
oPanelItem.lPanelID = 1;
oPanelItem.lParentID = 0;

::iconect::api::structs::FolderSettings oFolderSettings;
oFolderSettings.eIcon = ::iconect::api::structs::PanelItemIcon::FOLDER;
oFolderSettings.eColor = ::iconect::api::structs::Color::RED;
oPanelItem.oFolderSettings = oFolderSettings;
PanelItem oPanelItem = new PanelItem();

oPanelItem.SName = "Reviewed";
oPanelItem.EType = iconect.xera.api.structs.PanelItemType.FOLDER;
oPanelItem.SDescription= "a Description";
oPanelItem.LPanelID = 1;
oPanelItem.LParentID = 0;

FolderSettings oFolderSettings = new FolderSettings();
oFolderSettings.EIcon = PanelItemIcon.FOLDER;
oFolderSettings.EColor = Color.RED;
oPanelItem.OFolderSettings = oFolderSettings;

public PanelItem()
public PanelItem(long lID, String sName, PanelItemType eType, String sDescription, long lPanelID, long lParentID, boolean bHasChildren, FolderSettings oFolderSettings, EditSettings oEditSettings)

This structure contains the properties of a panel item.

Panel Item Methods

CreatePanelItem

long lDatabaseID = 1;
PanelItem oPanelItem = new PanelItem();

oPanelItem.sName = "Reviewed";
oPanelItem.eType = PanelItemType.FOLDER;
oPanelItem.sDescription= "a Description";
oPanelItem.lPanelID = 1;
oPanelItem.lParentID = 0;

FolderSettings oFolderSettings = new FolderSettings();
oFolderSettings.eIcon = PanelItemIcon.FOLDER;
oFolderSettings.eColor = Color.RED;
oPanelItem.oFolderSettings = oFolderSettings;

oPanelItem.oEditSettings = new EditSettings();
PanelItem oNewPanelItem = client.CreatePanelItem(lDatabaseID, oPanelItem);
System.out.println("The new panel item id is: " + oNewPanelItem.lID);
int64_t lDatabaseID = 1;
::iconect::api::structs::PanelItem oPanelItem;

oPanelItem.sName = "Reviewed";
oPanelItem.eType = ::iconect::api::structs::PanelItemType::FOLDER;
oPanelItem.sDescription= "a Description";
oPanelItem.lPanelID = 1;
oPanelItem.lParentID = 0;

::iconect::api::structs::FolderSettings oFolderSettings;
oFolderSettings.eIcon = ::iconect::api::structs::PanelItemIcon::FOLDER;
oFolderSettings.eColor = ::iconect::api::structs::Color::RED;
oPanelItem.oFolderSettings = oFolderSettings;

PanelItem oNewPanelItem;
oClient->CreatePanelItem(oNewPanelItem, lDatabaseID, oPanelItem);
std::cout << "The new panel item id is: " << oNewPanelItem.lID;
long lDatabaseID = 1;
PanelItem oPanelItem = new PanelItem();

oPanelItem.SName = "Reviewed";
oPanelItem.EType = iconect.xera.api.structs.PanelItemType.FOLDER;
oPanelItem.SDescription= "a Description";
oPanelItem.LPanelID = 1;
oPanelItem.LParentID = 0;

FolderSettings oFolderSettings = new FolderSettings();
oFolderSettings.EIcon = PanelItemIcon.FOLDER;
oFolderSettings.EColor = Color.RED;
oPanelItem.OFolderSettings = oFolderSettings;

PanelItem oNewPanelItem = client.CreatePanelItem(lDatabaseID, oPanelItem);
Console.WriteLine("The new panel item id is: " + oNewPanelItem.lID);

PanelItem CreatePanelItem(long lDatabaseID, PanelItem oPanelItem)

This function creates a panel item. A panel item can be a folder, an edit control or a separator.
Parameters

Returns
A PanelItem object with the lID field populated.

UpdatePanelItem

long lDatabaseID = 1;
PanelItem oPanelItem = new PanelItem();
oPanelItem.lID = 1;
oPanelItem.sName = "Reviewed";
oPanelItem.eType = PanelItemType.FOLDER;
oPanelItem.sDescription= "a Description";
oPanelItem.lPanelID = 1;

FolderSettings oFolderSettings = new FolderSettings();
oFolderSettings.eIcon = PanelItemIcon.FOLDER;
oFolderSettings.eColor = Color.BLUE;
oPanelItem.oFolderSettings = oFolderSettings;

oPanelItem.oEditSettings = new EditSettings();
PanelItem oNewPanelItem = client.UpdatePanelItem(lDatabaseID, oPanelItem);
System.out.println("The new panel item name is: " + oNewPanelItem.sName);
int64_t lDatabaseID = 1;
::iconect::api::structs::PanelItem oPanelItem;
oPanelItem.lID = 1;
oPanelItem.sName = L"Reviewed";
oPanelItem.eType = ::iconect::api::structs::PanelItemType::FOLDER;
oPanelItem.sDescription = L"a Description";
oPanelItem.lPanelID = 1;

::iconect::api::structs::FolderSettings oFolderSettings;
oFolderSettings.eIcon = ::iconect::api::structs::PanelItemIcon::FOLDER;
oFolderSettings.eColor = ::iconect::api::structs::Color::BLUE;
oPanelItem.oFolderSettings = oFolderSettings;

PanelItem oNewPanelItem;
oClient->UpdatePanelItem(oNewPanelItem, lDatabaseID, oPanelItem);
std::cout << "The new panel item name is: " << oNewPanelItem.sName.c_str;
long lDatabaseID = 1;
PanelItem oPanelItem = new PanelItem();

oPanelItem.LID = 1;
oPanelItem.SName = "Reviewed";
oPanelItem.EType = PanelItemType.FOLDER;
oPanelItem.SDescription = "a Description";
oPanelItem.LPanelID = 1;

FolderSettings oFolderSettings = new FolderSettings();
oFolderSettings.EIcon = PanelItemIcon.FOLDER;
oFolderSettings.EColor = Color.BLUE;
oPanelItem.OFolderSettings = oFolderSettings;

PanelItem oNewPanelItem = client.CreatePanelItem(lDatabaseID, oPanelItem);
Console.WriteLine("The new panel item name is: " + oNewPanelItem.SName);

PanelItem UpdatePanelItem(long lDatabaseID, PanelItem oPanelItem)

This function updates an existing panel item.
Parameters

Returns
A populated PanelItem structure for the updated Panel Item.

DeletePanelItems

long lDatabaseID = 1;
long[] aPanelItemList = {1,2,3,4};
client.DeletePanelItems(lDatabaseID, aPanelItemList);
long lDatabaseID = 1;
std::vector<int> aPanelItemList = { 1,2,3,4 };
oClient->DeletePanelItems(lDatabaseID, aPanelItemList);
long lDatabaseID = 1;
long[] aPanelItemList = { 1,2,3,4 };
client.DeletePanelItems(lDatabaseID, aPanelItemList);

void DeletePanelItems(long lDatabaseID, List<Long> aPanelItemList)

This function deletes specified panel items.
Parameters

Returns
None

GetPanelItemList

long lDatabaseID = 1;
long lPanelID = 1;
long lParentID = 1;
List<PanelItem> aPanelItems = client.GetPanelItemList(lDatabaseID, lPanelID, lParentID);
for(PanelItem oPanelItem : aPanelItems) {
    System.out.println("Panel Item name: " + oPanelItem.sName);
}
int64_t lDatabaseID = 1;
int64_t lPanelID = 1;
int64_t lParentID = 1;
std::vector<::iconect::api::structs::PanelItem> aPanelItems;
oClient->GetPanelItemList(aPanelItems, lDatabaseID, lPanelID, lParentID);
for(::iconect::api::structs::PanelItem oPanelItem : aPanelItems) {
    std::cout << "Panel Item name: " << oPanelItem.sName << " ";
}
long lDatabaseID = 1;
long lPanelID = 1;
long lParentID = 1;
List<PanelItem> aPanelItems = new List<PanelItem>();
aPanelItems = oClient->GetPanelItemList(lDatabaseID, lPanelID, lParentID);
foreach (PanelItem oPanelItem in aPanelItems) {
    Console.WriteLine("Panel Item name: " + oPanelItem.SName);
}

List<PanelItem> GetPanelItemList(long lDatabaseID, long lPanelID, long lParentID)

This function returns the populated panel item structure for a specified panel.
Parameters

Returns
A list of PanelItem objects for the specified panel.

GetPanelItemMap

long lDatabaseID = 1;
long[] aPanelItemIDList = {1,2,3,4};
Map<Long,PanelItem> aPanelItems = client.GetPanelItemMap(lDatabaseID, aPanelItemIDList);
for(PanelItem oPanelItem : aPanelItems){
    System.out.println("Panel Item name: " + oPanelItem.sName);
}
int64_t lDatabaseID = 1;
std::vector<int> aPanelItemIDList = { 1,2,3,4 };
std::map<int64_t, ::iconect::api::structs::PanelItem> aPanelItems;
oClient->GetPanelItemMap(aPanelItems, lDatabaseID, aPanelItemIDList);
for(::iconect::api::structs::PanelItem oPanelItem : aPanelItems){
    std::cout << "Panel Item name: " << oPanelItem.sName << " ";
}
long lDatabaseID = 1;
List<long> aPanelItemIDList = new List<long>() { 1, 2, 3, 4 };
Dictionary<long, PanelItem> aPanelItems = new Dictionary<long, PanelItem>();
aPanelItems = client.GetPanelItemMap(lDatabaseID, aPanelItemIDList);
foreach(PanelItem oPanelItem in aPanelItems.Values)
{
    Console.WriteLine("Panel Item name: " + oPanelItem.SName);
}

Map<Long,PanelItem> GetPanelItemMap(long lDatabaseID, List<Long> aPanelItemIDList)

This function returns the populated panel item structures for the specified panel items. Consider using this function with the GetFoldersForRecords function.
Parameters

Returns
A map of panel item IDs to PanelItem objects.

GetRecordsInFolders

long lDatabaseID = 1;
long[] aFolderIDList = {1,2,3,4};
Map<Long,List<Long>> mapFolderToRecords = client.GetRecordsInFolders(lDatabaseID, aFolderIDList);
for(Entry<Long, List<Long>> aRecsInFolder : mapFolderToRecords.entrySet()) {
        List<long> value = aRecsInFolder.getValue();
        for(long lRecordID : value){        
            System.out.println("Record ID: " + oRecordID);
        }
}
int64_t lDatabaseID = 1;
std::vector<int> aFolderIDList = { 1,2,3,4 };
std::map<int64_t, std::vector<int64_t>> mapFolderToRecords;
oClient->GetRecordsInFolders(mapFolderToRecords, lDatabaseID, aFolderIDList);
for (std::vector<int64_t> aRecsInFolder : mapFolderToRecords) {
    for (int64_t lRecordID : aRecsInFolder) {
        std::cout << "Record: " << lRecordID << std::endl;
    }
}
long lDatabaseID = 1;
long[] aFolderIDList = { 1, 2, 3, 4 };
Dictionary<long, List<long>> mapFolderToRecords = client.GetRecordsInFolders(lDatabaseID, aFolderIDList);
foreach (List<long> aRecsInFolder in mapFolderToRecords.Values) {
    foreach (long lRecordID in aRecsInFolder) {
        Console.WriteLine("Record: " + oRecordID);
    }
}

Map<Long,List<Long>> GetRecordsInFolders(long lDatabaseID, List<Long> aFolderIDList)

This function returns the records associated to a list of specific folders, and is used to retrieve the map required for adding records to folders, or removing them (AddRecordsToFolders and RemoveRecordsFromFolders).
Parameters

Returns
A map of folder IDs with a list of associated record IDs.

GetFoldersForRecords

long lDatabaseID = 1;
List<Integer> aRecordIDList = Arrays.asList(1,2,3,4);
Map<Long,List<Long>> mapRecordToFolders = client.GetFoldersForRecords(lDatabaseID, aRecordIDList );
for(List<Long> aFolderIDs : mapRecordToFolders.values()) {
    for(Long lFolderID : aFolderIDs) {
        System.out.println("Folder ID: " + lFolderID);
    }
}
int64_t lDatabaseID = 1;
std::vector<int64_t> aRecordIDList = {1, 2, 3, 4};
std::map<int64_t, std::vector<int64_t>> mapRecordToFolders;
oClient->GetFoldersForRecords(mapRecordToFolders, lDatabaseID, aRecordIDList );
for (std::vector<int64_t> aFolders : mapRecordToFolders) {
        for (int64_t lFolderID : aFolders) {
                std::cout << "Folder ID: " << lFolderID << std::endl;
        }
}
long lDatabaseID = 1;
List<long> aRecordIDList = new List<long>{1, 2, 3, 4};
Dictionary<long, List<long>> mapRecordToFolders = client.GetFoldersForRecords(lDatabaseID, aRecordIDList );
foreach(List<long> aFolderIDs in mapRecordToFolders.Values) {
    foreach(long lFolderID in aFolderIDs) {
        Console.WriteLine("Folder ID:" + lFolderID);
    }
}

Map<Long,List<Long>> GetFoldersForRecords(long lDatabaseID, List<Long> aRecordIDList)

This function returns the folders associated to a list of records, listing all the folders each record is in.
Parameters

Returns
A map of records IDs with a list of associated folder IDs.

AddRecordsToFolders

long lDatabaseID = 1;
List<Integer> aFolderIDList = Arrays.asList(1,2,3);
List<Integer> aDocumentList = Arrays.asList(1,2,3);
client.AddRecordsToFolders(lDatabaseID,aFolderIDList, aDocumentIDList );
int64_t lDatabaseID = 1;
std::vector<int64_t> aFolderIDList = {1,2,3};
std::vector<int64_t> aDocumentList = {1,2,3};
oClient->AddRecordsToFolders(lDatabaseID, aFolderIDList, aDocumentIDList);
long lDatabaseID = 1;
ArrayList aFolderIDList = new ArrayList(){ 1, 2, 3  };
ArrayList aDocumentList = new ArrayList(){ 1, 2, 3  };
client.AddRecordsToFolders(lDatabaseID, aFolderIDList, aDocumentIDList);

void AddRecordsToFolders(long lDatabaseID, Map<Long,List<Long>> mapFolderIDToRecordIDList)

This function adds a series of documents to the list of specified folders. A folder is a type of panel item that can be added to a panel.
Parameters

Returns
None

RemoveRecordsFromFolders

long lDatabaseID = 1;
List<Integer> aFolderIDList = Arrays.asList(1,2,3);
List<Integer> aDocumentList = Arrays.asList(1,2,3);
client.RemoveRecordsFromFolders(lDatabaseID, aFolderIDList, aDocumentIDList);
int64_t lDatabaseID = 1;
std::vector<int64_t> aFolderIDList = {1,2,3};
std::vector<int64_t> aDocumentList = {1,2,3};
oClient->RemoveRecordsFromFolders(lDatabaseID, aFolderIDList, aDocumentIDList);
long lDatabaseID = 1;
ArrayList aFolderIDList = new ArrayList(){1, 2, 3};
ArrayList aDocumentList = new ArrayList(){1, 2, 3};
client.RemoveRecordsFromFolders(lDatabaseID, aFolderIDList, aDocumentIDList);

void RemoveRecordsFromFolders(long lDatabaseID, Map<Long,List<Long>> mapFolderIDToRecordIDList)

This function removes a series of documents from the list of specified folders. A folder is a type of panel item that can be added to a panel.
Parameters

Returns
None

GetFolderIDForFullName

long lDatabaseID = 1;
String[] aFullNameList = { "|GENERAL|935017 - Produce Natives|", "|GENERAL|935017 - Produce Images|" };
Map< String, long > oFolderIDMap = client.GetFolderIDForFullName( lDatabaseID, aFullNameList );
for( Map.Entry< String, long > entry : oFolderIDMap.entrySet() ){
    System.out.println( entry.getKey() + ": " + entry.getValue() );
}
int64_t lDatabaseID = 1;
std::vector< std::wstring > aFullNameList = { "|GENERAL|935017 - Produce Natives|", "|GENERAL|935017 - Produce Images|" };
std::map< std::wstring, int64_t > oFolderIDMap;
oClient->GetPanelItemMap( oFolderIDMap, lDatabaseID, aFullNameList );
for( auto const& oPair : aFolderIDMap )
{
    std::wcout << oPair.first << L": " << oPair.second << std::endl;
}
long lDatabaseID = 1;
List< String > aFullNameList = new List< String >() { "|GENERAL|935017 - Produce Natives|", "|GENERAL|935017 - Produce Images|" };
Dictionary< String, long > oFolderIDMap = client.GetPanelItemMap( lDatabaseID, aFullNameList );
foreach( var entry in oFolderIDMap )
{
    Console.WriteLine( entry.Key + ": " + entry.Value );
}

Map< string, long > GetFolderIDForFullName( long lDatabaseID, List< string > aFullNameList )

This function returns a map of the requested Folder Full Names and the respective ID of that folder. The full name is composed of the panel name, followed by the folder name tree, each level separated by the | character, with another | at the beginning and the end.
Parameters

Returns
A map of folder full names to the ID of the folder.



Word List Structures

WordList

WordList oWordList = new WordList();
oWordList.aTermList = new ArrayList<String>();
oWordList.aTermList.add("Akerman");
oWordList.aTermList.add("Akin Gump");
oWordList.aTermList.add("Alston & Bird");
oWordList.aTermList.add("Arnold & Porter");
oWordList.aTermList.add("Baker Botts");
oWordList.eColor = Color.NAVY;
oWordList.sName = "AM Law";
oWordList.eHighlightType = HighlightType.FOREGROUND;
::iconect::api::structs::WordList oWordList;
oWordList.aTermList.push_back(L"Akerman");
oWordList.aTermList.push_back(L"Akin Gump");
oWordList.aTermList.push_back(L"Alston & Bird");
oWordList.aTermList.push_back(L"Arnold & Porter");
oWordList.aTermList.push_back(L"Baker Botts");
oWordList.eColor = ::iconect::api::structs::Color.NAVY;
oWordList.sName = L"AM Law";
oWordList.eHighlightType = ::iconect::api::structs::HighlightType.FOREGROUND;
WordList oWordList = new WordList();
oWordList.ATermList = new List<string>();
oWordList.ATermList.Add("Akerman");
oWordList.ATermList.Add("Akin Gump");
oWordList.ATermList.Add("Alston & Bird");
oWordList.ATermList.Add("Arnold & Porter");
oWordList.ATermList.Add("Baker Botts");
oWordList.EColor = Color.NAVY;
oWordList.SName = "AM Law";
oWordList.EHighlightType = HighlightType.FOREGROUND;

public WordList()
public WordList(long lID, String sName, List<String> aTermList, Color eColor, HighlightType eHighlightType)

This structure contains the properties of a Word List.

Word List Methods

CreateWordList

WordList oWordList = new WordList();
oWordList.aTermList = new ArrayList<>();
oWordList.aTermList.add("Akerman");
oWordList.aTermList.add("Akin Gump");
oWordList.aTermList.add("Alston & Bird");
oWordList.aTermList.add("Arnold & Porter");
oWordList.aTermList.add("Baker Botts");
oWordList.eColor = Color.NAVY;
oWordList.sName = "aTest";
oWordList.eHighlightType = HighlightType.FOREGROUND;
int lDatabaseID = 1;
long lID = client.CreateWordList(lDatabaseID, oWordList);
System.out.println("Wordlist created with id: " + lID);
::iconect::api::structs::WordList oWordList;
oWordList.aTermList.push_back(L"Akerman");
oWordList.aTermList.push_back(L"Akin Gump");
oWordList.aTermList.push_back(L"Alston & Bird");
oWordList.aTermList.push_back(L"Arnold & Porter");
oWordList.aTermList.push_back(L"Baker Botts");
oWordList.eColor = ::iconect::api::structs::Color.NAVY;
oWordList.sName = L"aTest";
oWordList.eHighlightType = ::iconect::api::structs::HighlightType.FOREGROUND;
int64_t lID = -1;
int64_t lDatabaseID = 1;
oClient->CreateWordList(lID, lDatabaseID, oWordList);
std::cout << "Wordlist created with id: " << lID;
WordList oWordList = new WordList();
oWordList.ATermList = new List<string>();
oWordList.ATermList.Add("Akerman");
oWordList.ATermList.Add("Akin Gump");
oWordList.ATermList.Add("Alston & Bird");
oWordList.ATermList.Add("Arnold & Porter");
oWordList.ATermList.Add("Baker Botts");
oWordList.EColor = Color.NAVY;
oWordList.SName = "aTest";
oWordList.EHighlightType = HighlightType.FOREGROUND;
long lID = -1;
long lDatbaseID = 1;
lID = oClient.CreateWordList(lDatabaseID, oWordList);
Console.WriteLine("Wordlist created with id: " + lID);

long CreateWordList(long lDatabaseID, WordList oWordList)

This function adds a word list to the database.
Parameters

Returns
The ID of the newly added list.

UpdateWordList

WordList oWordList = new WordList();
oWordList.aTermList = new ArrayList<>();
oWordList.aTermList.add("Akerman");
oWordList.aTermList.add("Akin Gump");
oWordList.aTermList.add("Alston & Bird");
oWordList.aTermList.add("Arnold & Porter");
oWordList.aTermList.add("Baker Botts");
oWordList.eColor = Color.NAVY;
oWordList.sName = "My Word List";
oWordList.lID = 2;
oWordList.eHighlightType = HighlightType.FOREGROUND;
client.UpdateWordList(lDatabaseID, oWordList);
::iconect::api::structs::WordList oWordList;
oWordList.aTermList.push_back(L"Akerman");
oWordList.aTermList.push_back(L"Akin Gump");
oWordList.aTermList.push_back(L"Alston & Bird");
oWordList.aTermList.push_back(L"Arnold & Porter");
oWordList.aTermList.push_back(L"Baker Botts");
oWordList.eColor = ::iconect::api::structs::Color.NAVY;
oWordList.sName = L"My Word List";
oWordList.lID = 2;
oWordList.eHighlightType = ::iconect::api::structs::HighlightType.FOREGROUND;
oClient->UpdateWordList(lDatabaseID, oWordList);
WordList oWordList = new WordList();
oWordList.ATermList = new List<string>();
oWordList.ATermList.Add("Akerman");
oWordList.ATermList.Add("Akin Gump");
oWordList.ATermList.Add("Alston & Bird");
oWordList.ATermList.Add("Arnold & Porter");
oWordList.ATermList.Add("Baker Botts");
oWordList.EColor = Color.NAVY;
oWordList.SName = "My Word List";
oWordList.LID = 2;
oWordList.EHighlightType = HighlightType.FOREGROUND;

client.UpdateWordList(lDatabaseID, oWordList);

void UpdateWordList(long lDatabaseID, WordList oWordList)

This function updates the specified word list.
Parameters

Returns
None

GetWordList

long lDatabaseID = 1;
long lWordListID = 1;
WordList oWordlist = client.GetWordList(lDatabaseID, lWordListID);
System.out.println("The word list name is: " + oWordList.sName);
long lDatabaseID = 1;
long lWordListID = 1;
WordList oWordList;
client->GetWordList(oWordList, lDatabaseID, lWordListID);
std::cout << "The word list name is: " << oWordList.sName;
long lDatabaseID = 1;
long lWordListID = 1;
WordList oWordList = client.GetWordList(lDatabaseID, lWordListID);
Console.Writeline("The word list name is: "+ oWordList.SName);

WordList GetWordList(long lDatabaseID, long lWordListID)

This function returns the word list with the specified ID for the database.
Parameters

Returns
The requested WordList object.

DeleteWordList

long lDatabaseID = 1;
WordList oWordList = new WordList();
oWordList.lID = 1;
client.DeleteWordList(lDatabaseID, oWordList);
int64_t lDatabaseID = 1;
WordList oWordList;
oWordList.lID = 1;
oClient->DeleteWordList(lDatabaseID, oWordList);
long lDatabaseID = 1;
WordList oWordList = new WordList();
oWordList.LID = 1;
client.DeleteWordList(lDatabaseID, oWordList);

void DeleteWordList(long lDatabaseID, WordList oWordList)

This function removes the specified word list.
Parameters

Returns
None



Error Handling

The Admin API uses exceptions when errors occur within the service. AdminError objects are thrown with descriptive error messages.

AdminError Structure

try {            
  long lInvalidID = -234;
  Database oDatabase = client.GetDatabase(lInvalidID);
}
catch ( AdminError e) {            
  System.out.println(e.sError);
}
try
{
  long lInvalidID = -234;
  ::iconect::api::structs::Database oDatabase = oClient.GetDatabase(lInvalidID);
}
catch (AdminError& oError) {
  cout << oError.sError;
}
try {            
  long lInvalidID = -234;
  Database oDatabase = client.GetDatabase(lInvalidID);
}
catch ( AdminError e) {            
  Console.WriteLine(e.SError);
}

sError: A string containing the error that occurred within the service call.

Utility Methods

The Admin API provides the following functions as utility functions for working with Date and Date Time fields.

FormatDate

org.joda.time.DateTime oDate = new org.joda.time.DateTime();
String sXeraDateString = FormatDate(oDate);
/* this function is only available for Java */
/* This function is only available for Java */

String FormatDate(org.joda.time.DateTime dt)

This function converts an org.joda.time.DateTime object to a string format consumable by the XERA Date fields.
Parameters

Returns
A string representation of the DateTime object.

FormatDate

String sXeraDateString = FormatDate(1969, 7, 24);
wstring sXeraDateString = FormatDate(1969, 7, 24);
string sXeraDateString = FormatDate(1969, 7, 24);

String FormatDate(int year, int month, int day)

This function creates a string representation of the given year, month, and day in a format that can be used by XERA Date fields.
Parameters

Returns
A string representation of the given date.

FormatDateTime

org.joda.time.DateTime oDate = new org.joda.time.DateTime();
String sXeraDateTimeString = FormatDateTime(oDate);
/* this function is only available for Java */
/* this function is only available for Java */

String FormatDateTime(org.joda.time.DateTime dt)

This function converts an org.joda.time.DateTime object to a string format that can be used by XERA Date Time fields.
Parameters

Returns
A string representation of the DateTime object.

FormatDateTime

String sXeraDateTimeString = FormatDateTime(1969, 7, 24, 16, 50, 36);
wstring sXeraDateTimeString = FormatDateTime(1969, 7, 24, 16, 50, 36);
string sXeraDateTimeString = FormatDateTime(1969, 7, 24, 16, 50, 36);

String FormatDateTime(int year, int month, int day, int hour, int minute, int second)

This function creates a string representation of the given year, month, day, hour, minute, and second in a format that can be used by XERADateTime fields.
Parameters

Returns
A string representation of the given DateTime.

package com.iconect.api.util;
public class Util {
public static String ThriftToJSON(E oObject) throws TException,UnsupportedEncodingException

package com.iconect.api.util;
public class Util {
public static void JSONToThrift(E Result, String sData) throws TException,UnsupportedEncodingException

ThriftToJSON

import static com.iconect.api.util.Util.ThriftToJSON;
import com.iconect.api.structs.jobs.NativeToImageJob; // for example
...
NativeToImageJob oJob = new NativeToImageJob();
oJob.setFieldID(3);
oJob.setLMaxTempFileSize(10);
oJob.setLFileSizeLimit(10);
oJob.setLTimeOut(60);

String sJSON = ThriftToJSON(oJob);
iconect::api::structs::jobs::NativeToImageJob oJob; // for example
oJob.__set_FieldID(3);
oJob.__set_lMaxTempFileSize(10);
oJob.__set_lFileSizeLimit(10);
oJob.__set_lTimeOut(60);

std::wstring sJSON = iconect::ThriftToJSON(oJob);
using static iconect.api.Utils;
using iconect.api.structs.jobs; // for example
....
NativeToImageJob oJob = new NativeToImageJob();
oJob.FieldID = (3);
oJob.LMaxTempFileSize = (10);
oJob.LFileSizeLimit = (10);
oJob.LTimeOut = (60);

string sJSON = ThriftToJSON(oJob);

<E extends org.apache.thrift.TBase> String ThriftToJSON(E oObject)

This function serializes an iCONECT Thrift object into a string using JSON.

Parameters

Returns
A JSON string that represents the object. This string can be saved to a file, passed to other functions, or passed to JSONToThrift to make a new copy of the object.

JSONToThrift

import static com.iconect.api.util.Util.JSONToThrift;
import com.iconect.api.structs.jobs.NativeToImageJob;
...
try {
    String sJSON;
    /* Set sJSON to a JSON string here. */
    NativeToImageJob oJob = new NativeToImageJob();
    JSONToThrift(oJob, sJSON);
    /* Your code here */
} catch (org.apache.thrift.TException oException) {
    System.out.println("Could not extract NativeToImageJob: " + oException.toString());
}
try
{
    std::wstring sJSON;
    /* Set sJSON to a JSON string here. */
    iconect::api::structs::jobs::NativeToImageJob oJob;
    iconect::JSONToThrift(oJob, sJSON);
    /* Your code here */
}
catch (const apache::thrift::TException& oException)
{
    std::wcout << _T("Could not extract NativeToImageJob: ") << oException.message;
}
using static iconect.api.Utils;
using NativeToImageJob = iconect.api.structs.jobs.NativeToImageJob;
...
try
{
    string sJSON;
    /* Set sJSON to a JSON string here. */
    NativeToImageJob oJob = new NativeToImageJob();
    JSONToThrift(oJob, sJSON);
    /* Your code here */
}
catch (Thrift.TException oException)
{
    std::wcout << _T("Could not extract NativeToImageJob: ") << oException.Message;
}

<E extends org.apache.thrift.TBase> void JSONToThrift(E oObject, String sJSON)

This function deserializes an iCONECT Thrift object from a string in JSON.

Parameters

Exceptions
If sJSON represents an object of a struct type other than oObject’s type, JSONToThrift may throw an exception of class TException.

Job Control Structures

NativeConversionJob

import com.iconect.api.structs.jobs.Cache;
import com.iconect.api.structs.jobs.ImageColorPalette;
import com.iconect.api.structs.jobs.NativeConversionJob;
import com.iconect.api.structs.jobs.Resize;
...
NativeConversionJob oJob = new NativeConversionJob();

oJob.setFieldID(3);
oJob.setOutputBPP(ImageColorPalette.AutoSelectBPP);
oJob.setMaxTempFileSizeMB(10);
oJob.setFileSizeLimitMB(10);
oJob.setTimeOutMilliseconds(10 * 60 * 1000); // ten minutes
oJob.setCache(Cache.HTML5);
oJob.setResize(Resize.None);
oJob.setRenderEmbeddedFonts(false);
using ::iconect::api::structs::jobs::Cache;
using ::iconect::api::structs::jobs::ImageColorPalette;
using ::iconect::api::structs::jobs::NativeConversionJob;
using ::iconect::api::structs::jobs::Resize;
...
NativeConversionJob oJob;

oJob.__set_FieldID(3);
oJob.__set_OutputBPP(ImageColorPalette::AutoSelectBPP);
oJob.__set_MaxTempFileSizeMB(10);
oJob.__set_FileSizeLimitMB(10);
oJob.__set_TimeOutMilliseconds(10 * 60 * 1000); // ten minutes
oJob.__set_Cache((Cache::type)(Cache::HTML5 | Cache::ThumbnailImage));
oJob.__set_Resize(Resize::None);
oJob.__set_RenderEmbeddedFonts(false);
using Cache = iconect.api.structs.jobs.Cache;
using ImageColorPalette = iconect.api.structs.jobs.ImageColorPalette;
using NativeConversionJob = iconect.api.structs.jobs.NativeConversionJob;
using Resize = iconect.api.structs.jobs.Resize;
...
NativeConversionJob oJob = new NativeConversionJob();

oJob.FieldID = 3;
oJob.OutputBPP = ImageColorPalette.AutoSelectBPP;
oJob.MaxTempFileSizeMB = 10;
oJob.FileSizeLimitMB = 10;
oJob.TimeOutMilliseconds = 10 * 60 * 1000; // ten minutes
oJob.Cache = Cache.HTML5 | Cache.ThumbnailImage;
oJob.Resize = Resize.None;
oJob.RenderEmbeddedFonts = false;

public NativeConversionJob()
This structure contains the information needed to convert a native file in a Native File field into images.

OCRJob

import com.iconect.api.structs.jobs.OCRJob;
...
OCRJob oJob = new OCRJob();

oJob.setSourceFieldID(5);
oJob.setTargetOCRTextFieldID(8);
oJob.setTargetOCRConfidenceFieldID(13);
oJob.setTargetOCRErrorFieldID(14);
oJob.setTimeoutInMinutes(5);
oJob.setAutoRotate(true);
oJob.setOCREngine(OCREngine.Tesseract3);
oJob.setOCRWarningPanelID(1);
oJob.setOCRWarningParentFolderID(0);
::iconect::api::structs::jobs::OCRJob oJob;

oJob.__set_SourceFieldID(5);
oJob.__set_TargetOCRTextFieldID(8);
oJob.__set_TargetOCRConfidenceFieldID(13);
oJob.__set_TargetOCRErrorFieldID(14);
oJob.__set_TimeoutInMinutes(5);
oJob.__set_AutoRotate(true);
oJob.__set_OCREngine(OCREngine.Tesseract3);
oJob.__set_OCRWarningPanelID(1);
oJob.__set_OCRWarningParentFolderID(0);
OCRJob oJob = new OCRJob();

oJob.SourceFieldID = 5;
oJob.TargetOCRTextFieldID = 8;
oJob.TargetOCRConfidenceFieldID = 13;
oJob.TargetOCRErrorFieldID = 14;
oJob.TimeoutInMinutes = 5;
oJob.AutoRotate = true;
oJob.OCREngine = OCREngine.Tesseract3;
oJob.OCRWarningPanelID = 1;
oJob.OCRWarningParentFolderID = 0;

public OCRJob()
This structure contains the information needed to apply OCR to a converted native file.

dtSearchIndexOptimizationJob

import com.iconect.api.structs.jobs.dtSearchIndexOptimizationJob;
...
dtSearchIndexOptimizationJob oJob = new dtSearchIndexOptimizationJob();
::iconect::api::structs::jobs::dtSearchIndexOptimizationJob oJob;
dtSearchIndexOptimizationJob oJob = new dtSearchIndexOptimizationJob();

public dtSearchIndexOptimizationJob()

This structure must be passed to CreateJob when creating an optimization job.

ProductionJob

import com.iconect.api.structs.jobs.ProductionJob;
...
ProductionJob oJob = new ProductionJob();

oJob.setProductionName("productionName");
oJob.setTemplateID(1);
::iconect::api::structs::jobs::ProductionJob oJob;

oJob.__set_ProductionName("productionName");
oJob.__set_TemplateID(1);
ProductionJob oJob = new ProductionJob();

oJob.ProductionName = "productionName";
oJob.TemplateID = 1;

public ProductionJob()
This structure must be passed to CreateJob when creating a production job.

NotificationSetting

struct NotificationSetting
{
    1: list< i32 > UserIDList
    2: bool SendMessage = true
    3: bool SendEmail = true
}

Job

struct Job
{
    1: i64 ID
    2: Type Type
    3: string Name
    4: string Description 
    5: string CreatedUTC
    6: string LastRunUTC
    7: string StatusMessage
    8: i64 CreatedUserID
    9: Status Status
    10: State State    
    11: i32 Progress = 0    
    12: ScheduleInfo Schedule    
    14: i64 DatabaseID 
    15: i64 ParentID = 0
}

ScheduleInfo

package com.iconect.api.structs.jobs;

public class ScheduleInfo {
    public Schedule eSchedule;
    public java.lang.String sScheduledUTC;
}
class iconect::api::structs::jobs::ScheduleInfo
{
public:
    enum iconect::api::structs::jobs::Schedule::type eSchedule;
    std::wstring sScheduledUTC;
};
namespace iconect.api.structs.jobs
{
    public class ScheduleInfo
    {
        public Schedule ESchedule;
        public string SScheduledUTC;
    }
}

Job Control Methods

CreateJob

import com.iconect.api.structs.jobs.*;
import com.iconect.api.util.Util;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), Util.ThriftToJSON(oIndexOpt));
    client.StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        Job oStatusJob = client.GetJob(lDatabaseID, oJob.ID);
        if (oStatusJob.State == State.Stopped)
        {
            System.out.println (oStatusJob.Status == Status.Error ? "Error" : "Success");
            break;
        }

        Thread.Sleep(1000);
    }
}
catch (AdminError oError)
{
    System.out.println ("RunJobTest test failed because " + oError.sError);
}
try
{
    iconect::api::structs::jobs::dtSearchIndexOptimizationJob oIndexOpt;

    iconect::api::structs::jobs::Job oJob;
    iconect::api::structs::jobs::RecordIDs oList;
    iconect::api::structs::jobs::NotificationSetting oNotifications;
    m_oClient->CreateJob(oJob, lDatabaseID, _T("Job Name"), _T("Job Description"), iconect::ThriftToJSON(oIndexOpt));
    m_oClient->StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        iconect::api::structs::jobs::Job oStatusJob;
        m_oClient->GetJob(oStatusJob, lDatabaseID, oJob.ID);
        if (oStatusJob.State == iconect::api::structs::jobs::State::Stopped)
        {
            wcout << _T("Completed ") << (oStatusJob.Status == iconect::api::structs::jobs::Status::Error ? _T("Error") : _T("Success")) << endl;
            break;
        }

        Sleep(1000);
    }
}
catch (AdminError& oError)
{
    wcout << _T("RunJobTest test failed because ") << oError.sError << _T(".") << endl;
}
using com.iconect.api.structs.jobs;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), iconect.ThriftToJSON(oIndexOpt));
    client.StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        Job oStatusJob = client.GetJob(lDatabaseID, oJob.ID);
        if (oStatusJob.State == State.Stopped)
        {
            System.Console.WriteLine (oStatusJob.Status == Status.Error ? "Error" : "Success");
            break;
        }

        Thread.Sleep(1000);
    }
}
catch (AdminError oError)
{
    System.Console.WriteLine ("RunJobTest test failed because " + oError.sError);
}

Job CreateJob(long lDatabaseID, string sName, string sDescription, string sParameters)

This function creates a job in the iCONECT system.
Parameters

Returns
A new Job structure with the ID field filled in. You can use the ID in the structure to manage the job.

UpdatePanelItem

List<Job> oJobs = client.GetJobs(lDatabaseID, Type.dtSearchOptimization, 1, 100);
std::vector<Job> oJobs;
m_oClient.GetJobs(oJobs, lDatabaseID, Type.dtSearchOptimization, 1, 100);
List<Job> oJobs = client.GetJobs(oJobs, lDatabaseID, Type.dtSearchOptimization, 1, 100);

list<Jobs> GetJobs(long lDatabaseID, Jobs.Type eType, long lStartRow, long lJobCount)

This function gets a list of jobs.
Parameters

Returns
A collection of Job objects.

GetJobParameters

long lDatabaseID = 1;
String sJobParams = client.GetJobParameters(lDatabaseID, oJob.ID);
OCRJob oJobParams = new OCRJob();
Util.JSONToThrift(oJobParams, sJobParams);
long lDatabaseID = 1;
std::wstring sJobParams;
client.GetJobParameters(sJobParams, lDatabaseID, oJob.ID);
OCRJob oJobParams;
iconect::JSONToThrift(oJobParams, sJobParams);
long lDatabaseID = 1;
string sJobParams = client.GetJobParameters(lDatabaseID, oJob.ID);
OCRJob oJobParams = new OCRJob();
Util.JSONToThrift(oJobParams, sJobParams);

string GetJobParameters(long lDatabaseID, long lJobID)

This function gets the parameters (the last parameter of CreateJob and UpdateJobParameters) for the specified job.
Parameters

Returns
The JSON representation of the job’s parameters. You must convert it to the correct struct type –
NativeConversionJob, OCRJob, or dtSearchIndexOptimizationJob – using JSONToThrift.

GetJob

long lDatabaseID = 1;
Job oCreatedJob = client.CreateJob (lDatabaseID, ...);
...
Job oJobStatus = client.GetJob (lDatabaseID, oCreatedJob.ID);
long lDatabaseID = 1;
Job oCreatedJob;
m_oClient.CreateJob (oCreatedJob, lDatabaseID, ...);
...
Job oJobStatus;
m_oClient.GetJob (oJobStatus, lDatabaseID, oCreatedJob.ID);
long lDatabaseID = 1;
Job oCreatedJob;
client.CreateJob (oCreatedJob, lDatabaseID, ...);
...
Job oJobStatus;
client.GetJob (oJobStatus, lDatabaseID, oCreatedJob.ID);

Job GetJob(lDatabaseID, lJobID)

This function returns the Job struct for the specified job so you can get its status and state. Note that this struct does not contain the parameters specific to the type of job; use GetJobParameters for these parameters.

Parameters

Returns
The Job struct.

UpdateJobParameters

import com.iconect.api.structs.jobs.*;
import com.iconect.api.util.Util;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), Util.ThriftToJSON(oIndexOpt));
    ...
    client.UpdateJobParameters(lDatabaseID, oJob.ID, Util.ThriftToJSON(oIndexOpt));
    client.StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        Job oStatusJob = client.GetJob(lDatabaseID, oJob.ID);
        if (oStatusJob.State == State.Stopped)
        {
            System.out.println (oStatusJob.Status == Status.Error ? "Error" : "Success");
            break;
        }

        Thread.Sleep(1000);
    }
}
catch (AdminError oError)
{
    System.out.println ("RunJobTest test failed because " + oError.sError);
}
try
{
    iconect::api::structs::jobs::dtSearchIndexOptimizationJob oIndexOpt;

    iconect::api::structs::jobs::Job oJob;
    iconect::api::structs::jobs::RecordIDs oList;
    iconect::api::structs::jobs::NotificationSetting oNotifications;
    m_oClient->CreateJob(oJob, lDatabaseID, _T("Job Name"), _T("Job Description"), iconect::ThriftToJSON(oIndexOpt));
    ....
    m_oClient->UpdateJobParameters(lDatabaseID, oJob.ID, Util.ThriftToJSON(oIndexOpt));
    m_oClient->StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        iconect::api::structs::jobs::Job oStatusJob;
        m_oClient->GetJob(oStatusJob, lDatabaseID, oJob.ID);
        if (oStatusJob.State == iconect::api::structs::jobs::State::Stopped)
        {
            wcout << _T("Completed ") << (oStatusJob.Status == iconect::api::structs::jobs::Status::Error ? _T("Error") : _T("Success")) << endl;
            break;
        }

        Sleep(1000);
    }
}
catch (AdminError& oError)
{
    wcout << _T("RunJobTest test failed because ") << oError.sError << _T(".") << endl;
}
using com.iconect.api.structs.jobs;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), iconect.ThriftToJSON(oIndexOpt));
    ....
    client.UpdateJobParameters(lDatabaseID, oJob.ID, Util.ThriftToJSON(oIndexOpt));
    client.StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        Job oStatusJob = client.GetJob(lDatabaseID, oJob.ID);
        if (oStatusJob.State == State.Stopped)
        {
            System.Console.WriteLine (oStatusJob.Status == Status.Error ? "Error" : "Success");
            break;
        }

        Thread.Sleep(1000);
    }
}
catch (AdminError oError)
{
    System.Console.WriteLine ("RunJobTest test failed because " + oError.sError);
}

void UpdateJobParameters(long lDatabaseID, long lJobID, string sParameters)

This function changes the parameters of an existing job.
Parameters

DeleteJob

import com.iconect.api.structs.jobs.*;
import com.iconect.api.util.Util;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), Util.ThriftToJSON(oIndexOpt));
    ...
    client.DeleteJob(lDatabaseID, oJob.ID);
}
catch (AdminError oError)
{
    System.out.println ("RunJobTest test failed because " + oError.sError);
}
try
{
    iconect::api::structs::jobs::dtSearchIndexOptimizationJob oIndexOpt;

    iconect::api::structs::jobs::Job oJob;
    iconect::api::structs::jobs::RecordIDs oList;
    iconect::api::structs::jobs::NotificationSetting oNotifications;
    m_oClient->CreateJob(oJob, lDatabaseID, _T("Job Name"), _T("Job Description"), iconect::ThriftToJSON(oIndexOpt));
    ....
    m_oClient->DeleteJob(lDatabaseID, oJob.ID);
}
catch (AdminError& oError)
{
    wcout << _T("RunJobTest test failed because ") << oError.sError << _T(".") << endl;
}
using com.iconect.api.structs.jobs;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), iconect.ThriftToJSON(oIndexOpt));
    ....
    client.DeleteJob(lDatabaseID, oJob.ID);
}
catch (AdminError oError)
{
    System.Console.WriteLine ("RunJobTest test failed because " + oError.sError);
}

void DeleteJob(long lDatabaseID, long lJobID)

This function deletes an existing job.

Parameters

StartJob

import com.iconect.api.structs.jobs.*;
import com.iconect.api.util.Util;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), Util.ThriftToJSON(oIndexOpt));
    client.StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        Job oStatusJob = client.GetJob(lDatabaseID, oJob.ID);
        if (oStatusJob.State == State.Stopped)
        {
            System.out.println (oStatusJob.Status == Status.Error ? "Error" : "Success");
            break;
        }

        Thread.Sleep(1000);
    }
}
catch (AdminError oError)
{
    System.out.println ("RunJobTest test failed because " + oError.sError);
}
try
{
    iconect::api::structs::jobs::dtSearchIndexOptimizationJob oIndexOpt;

    iconect::api::structs::jobs::Job oJob;
    iconect::api::structs::jobs::RecordIDs oList;
    iconect::api::structs::jobs::NotificationSetting oNotifications;
    m_oClient->CreateJob(oJob, lDatabaseID, _T("Job Name"), _T("Job Description"), iconect::ThriftToJSON(oIndexOpt));
    m_oClient->StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        iconect::api::structs::jobs::Job oStatusJob;
        m_oClient->GetJob(oStatusJob, lDatabaseID, oJob.ID);
        if (oStatusJob.State == iconect::api::structs::jobs::State::Stopped)
        {
            wcout << _T("Completed ") << (oStatusJob.Status == iconect::api::structs::jobs::Status::Error ? _T("Error") : _T("Success")) << endl;
            break;
        }

        Sleep(1000);
    }
}
catch (AdminError& oError)
{
    wcout << _T("RunJobTest test failed because ") << oError.sError << _T(".") << endl;
}
using com.iconect.api.structs.jobs;
...
try
{
    dtSearchIndexOptimizationJob oIndexOpt = new dtSearchIndexOptimizationJob();

    RecordIDs oList = new RecordIDs();
    NotificationSetting oNotifications = new NotificationSetting();

    Job oJob = client.CreateJob(oJob, lDatabaseID, ("Job Name"), ("Job Description"), iconect.ThriftToJSON(oIndexOpt));
    client.StartJob(lDatabaseID, oJob.ID, oList.IDs, oNotifications);

    while (true)
    {
        Job oStatusJob = client.GetJob(lDatabaseID, oJob.ID);
        if (oStatusJob.State == State.Stopped)
        {
            System.Console.WriteLine (oStatusJob.Status == Status.Error ? "Error" : "Success");
            break;
        }

        Thread.Sleep(1000);
    }
}
catch (AdminError oError)
{
    System.Console.WriteLine ("RunJobTest test failed because " + oError.sError);
}

void StartJob(long lDatabaseID, long lJobID, list<long> aRecordList, Jobs.NotificationSetting oNotifications)

This function starts the job in the background.

Parameters



View Structures

SelectedRecordQuery

SelectedRecordQuery query = new SelectedRecordQuery();
ArrayList<long> list = new ArrayList<>();
list.add(1);
query.SelectedDocIDs = list;
SelectedRecordQuery query;
query.SelectedDocIDs.push_back(1);
SelectedRecordQuery query = new SelectedRecordQuery();
List<long> list = new List<long>();
list.Add(1);
query.SelectedDocIDs = list;

public SelectedRecordQuery()public SelectedRecordQuery( List SelectedDocIDs, boolean IsExceptionList)

This is for creating a view with a specific set of record IDs. The IsExceptionList parameter inverts it, and the view will contain every record except the ID list.

SearchQuery

SearchQuery query = new SearchQuery();
query.SearchString = "knee";
SearchQuery query;
query.SearchString = L"knee";
SearchQuery query = new SearchQuery();
query.SearchString = "knee";

public SearchQuery()public SearchQuery(String SearchString)

This creates a view based on the search string provided. This is the same string that is generated in the Custom Search area in Xera.

ViewQuery

SearchQuery query = new SearchQuery();
query.SearchString = "knee";
ViewQuery viewQuery = new ViewQuery();
viewQuery.SearchQueryParam = query;
SearchQuery query;
query.SearchString = L"knee";
ViewQuery viewQuery;
viewQuery.__set_SearchQueryParam(query);
SearchQuery query = new SearchQuery();
query.SearchString = "knee";
ViewQuery viewQuery = new ViewQuery();
viewQuery.SearchQueryParam = query;

`public ViewQuery()

This is the structure passed to CreateView() to actually create the view. The query types are processed from first to last, and the first set one will be used exclusively. Please notice, in C++ it is not sufficient to simply set the member variable, the example code must be used instead.

View Methods

CreateView

long databaseID = 1;
SelectedRecordQuery query = new SelectedRecordQuery();
ArrayList<long> list = new ArrayList<>();
list.add(1);
query.SelectedDocIDs = list;
ViewQuery viewQuery = new ViewQuery();
viewQuery.SelRecordQueryParam = query;
String taskID = client.CreateView( databaseID, viewQuery, "2019-12-31 00:00:00" );
int64_t databaseID = 1;
SelectedRecordQuery query;
query.SelectedDocIDs.push_back(1);
ViewQuery viewQuery;
viewQuery.__set_SearchQueryParam(query);
std::wstring taskID;
client.CreateView( taskID, databaseID, viewQuery, "2019-12-31 00:00:00" );
long databaseID = 1;
SelectedRecordQuery query = new SelectedRecordQuery();
List<long> list = new List<long>();
list.Add(1);
query.SelectedDocIDs = list;
ViewQuery viewQuery = new ViewQuery();
viewQuery.SearchQueryParam = query;
string = client.CreateView( databaseID, viewQuery, "2019-12-31 00:00:00" );

string CreateView( 1: i64 DatabaseID, 2: AdminAPIStructs.ViewQuery ViewQuery, 3: string ExpirationDate ) throws ( 1: AdminAPIStructs.AdminError oException )

This function initiates the creation of a view and returns a task GUID that is passed to the IsViewReady function to determine when the view is ready for use.

Parameters

Returns
A GUID used by IsViewReady to determine when the view has been created.

IsViewReady

long databaseID = 1;
long viewID = client.IsViewReady( taskID );
int64_t databaseID = 1;
int64_t viewID = client.IsViewReady( taskID );
long databaseID = 1;
long viewID = client.IsViewReady( taskID );

i64 IsViewReady( 1: string GUID ) throws ( 1: AdminAPIStructs.AdminError oException )

This function checks if the GUID provided by CreateView has completed. If it is not, the returned value will be 0 (zero) and the consumer should sleep for a short period before calling this again. When a non-zero number is return, it is the newly created View ID and is ready for use.

Parameters

Returns
0 (zero) if the view is not yet ready, otherwise the ID of the newly created view which is now ready to use.

DeleteView

long databaseID = 1;
long viewID = 23;
client.DeleteView( databaseID, viewID );
int64_t databaseID = 1;
int64_t viewID = 23;
client.DeleteView( databaseID, viewID );
long databaseID = 1;
long viewID = 23;
client.DeleteView( databaseID, viewID );

void DeleteView( 1: i64 DatabaseID, 2: i64 ViewID ) throws ( 1: AdminAPIStructs.AdminError oException )

This function is used to manually delete a view when it is no longer needed. After this call, the View ID passed in is no longer valid and will result in an error if provided to any other method that requires a View ID.

Parameters



Change Log

December 2019