---
title: Control API Structures
slug: ps/help/en_us/vtm/controlapi/control-api-structures
docTags: 
createdAt: 2026-08-02T08:52:21.020Z
---

A Structure is a complex datatype that contains several parameters. For example, the key configuration settings for a Virtual Server are represented by a VirtualServer.BasicInfo structure that defines the port, protocol, and default pool for that Virtual Server:

```bash
VirtualServer.BasicInfo

# This structure contains the basic information for a virtual server. It is used when creating
# a server, or modifying the port, protocol or default pool of a server.

struct VirtualServer.BasicInfo {
   # The port to listen for incoming connections on.
   Integer port;

   # The protocol that this virtual server handles.
   VirtualServer.Protocol protocol;

   # The default pool that traffic to this virtual server will go
   # to.
   String default_pool;
}
```

This structure contains three elements; an integer (the port number), an enumeration (the protocol: VirtualServer.Protocol) and a string (the name of the default pool).

The method VirtualServer.addVirtualServer() takes a VirtualServer.BasicInfo structure that can be constructed as follows:

```bash
my $basicInfo = {
port => '443',
protocol => 'https',
default_pool => 'Server Pool 1'
};
$res = $conn->addVirtualServer( [ $vsName ], [ $basicInfo ] );
```

If you call the method VirtualServer.getBasicInfo(), it will return a corresponding array of VirtualServer.BasicInfo structures that can be unpacked as follows:

```bash
$res = $conn->getBasicInfo( [ $vsName ] );
my $r = @{$res->result}[0];

print "Virtual Server $vsName:\n";
print " port $r->{port}, protocol $r->{protocol}, " .
"pool $r->{default_pool}\n";
```

The following code sample illustrates how to create a virtual server and manage the BasicInfo structure:

```bash
#!/usr/bin/perl -w

use SOAP::Lite 0.6;

# Provide our own Deserializer so to deserialize enums correctly
BEGIN {
package MyDeserializer;
@MyDeserializer::ISA = 'SOAP::Deserializer';
sub typecast {
my( $self, $val, $name, $attrs, $children, $type ) = @_;
if( $type && $type =~ m@http://soap.zeus.com/zxtm/@) {
return $val;
}
return undef;
};
}

# This is the url of the Admin Server
my $admin_server = 'https://user:password@hostname:9090';

# The virtual server to create
my $vsName = $ARGV[0] or die "No vs specified";
my $conn = SOAP::Lite
-> ns('http://soap.zeus.com/zxtm/1.0/VirtualServer/')
-> proxy("$admin_server/soap")
-> deserializer( MyDeserializer->new )
-> on_fault( sub {
my( $conn, $res ) = @_;
die ref $res?$res->faultstring:$conn->transport->status; } );
# Construct the basic info structure
my $basicInfo = {
port => '443',
protocol => 'https',
default_pool => 'discard'
};

$res = $conn->addVirtualServer( [ $vsName ], [ $basicInfo ] );

$res = $conn->getBasicInfo( [ $vsName ] );
my $r = @{$res->result}[0];

print "Virtual Server $vsName:\n";
print " port $r->{port}, protocol $r->{protocol}, " .
"pool $r->{default_pool}\n";
```
