Difference between revisions of "+ Developer Guide Overview"

From OSNEXUS Online Documentation Site
Jump to: navigation, search
m (Task Monitoring)
m (Archived Versions)
 
(99 intermediate revisions by the same user not shown)
Line 1: Line 1:
QuantaStor was designed from the ground up so that you can develop your own applications to remotely manage your storage systems.   
+
[[Category:dev_guide]]
 +
== Overview ==
 +
QuantaStor was designed from the start with a service oriented architecture so that all aspects of system, cluster, and storage grid configuration may be automated.  There are multiple ways to automate QuantaStor management operations including the REST API, CLI, Ansible modules, and SOAP.  The Developer Guide focuses on integration with QuantaStor via the REST APIs.   
  
 
== Supported Languages ==
 
== Supported Languages ==
 
You can use just about any programming language you like to communicate with QuantaStor via our RESTful API. Recommended tools:
 
You can use just about any programming language you like to communicate with QuantaStor via our RESTful API. Recommended tools:
  
* C/C++ - libcurl [http://curl.haxx.se/libcurl/]
+
* C/C++ - [http://curl.haxx.se/libcurl/ libcurl]
* Python - PyCurl [http://pypi.python.org/pypi/pycurl]
+
* Python - [http://pypi.python.org/pypi/pycurl PyCurl]
* Unix/Linux/VMware/XenServer scripting - curl [http://curl.haxx.se/docs/httpscripting.html]
+
* Unix/Linux/VMware/XenServer scripting - [http://curl.haxx.se/docs/httpscripting.html curl]
* PHP curl - [http://php.net/manual/en/book.curl.php]
+
* PHP - [http://php.net/manual/en/book.curl.php curl]
  
== Async vs. Sync (blocking vs non-blocking) API calls ==
+
== Browser Tools ==
  
All of the APIs for QuantaStor that modify the configuration in any way will start a task in the system. If you call any API with the flags parameter set to 0 it'll be treated as a blocking call which wait for the task to complete before returningIf you want to call the function and have it return immediately you can pass a 1 as the flags parameter which indicates to the server that the caller wants this to be an asynchronous non-blocking call.  With asynchronous calls you'll get the task object back so that you can use the taskGet API to monitor the progress of the operation.  When the task completes it will populate the customId property of the task to contain the ID(s) of the objects which were created/deleted/modified by the task.
+
We highly recommend installing a tool like [http://jsonview.com/ JSONView] or other similar browser tool so that you can view the JSON output from the various API calls in an easy to read formatWhen experimenting with various APIs you can then use your browser to call the API, see the results, and plan for how to integrate it into your script or application.
  
== Task Monitoring ==
+
== Examples ==
  
As indicated above, sometimes you'll want to call an API asynchronously so that you can monitor the progress of the task and/or because you want to queue up multiple operations to run simultaneously.  In such cases where you call an API asynchronously (flags=1) you can monitor the progress of the task using the tastGet API or the tastEnum API if you want to see all running tasks.  When the task is completed you can check the customId property to see the ID(s) of the objects created/modified.
+
Here's are some examples of how to enumerate various objects using the RESTful API and the curl utility:
  
== Security ==
+
<pre>
 +
curl -u admin:password https://192.168.0.116:8153/qstorapi/hostEnum -k
 +
curl -u admin:password https://192.168.0.116:8153/qstorapi/storageVolumeEnum -k
 +
curl -u admin:password https://192.168.0.116:8153/qstorapi/storageSystemGet -k
 +
curl -u admin:password https://192.168.0.116:8153/qstorapi/storagePoolEnum -k
 +
curl -u admin:password https://192.168.0.116:8153/qstorapi/userEnum -k
 +
curl -u admin:password https://192.168.0.116:8153/qstorapi/networkShareEnum -k
 +
</pre>
  
QuantaStor REST interface always uses SSL via HTTPS. You can change the pem keys on your system by replacing the qstorapi_server.pem file located in /opt/osnexus/quantastor/restsrv/.  If you want to use plain HTTP without SSL you can rename or remove the qstorapi_server.pem and the RESTful service will automatically fall back to using HTTPAfter removing the file just restart the RESTful service interface with:
+
One quick way to test is to just enter one of these URLs (https://192.168.0.116:8153/qstorapi/hostEnum) into your web browser which will work as long as your system admin account is still using the default passwordPretty much every known language has a curl type library/module for it so the above technique will work everywhere, you just need to get up to speed with your preferred language's curl API mechanism.
<code>service restsrv restart</code>
+
  
== Supported SOAP / WebServices Implementations ==
+
Note you can even access APIs using wget which in this example will store the results into a file called hostEnum:
 +
<pre>
 +
wget --no-check-certificate https://192.168.0.135:8153/qstorapi/hostEnum
 +
</pre>
  
* gSOAP (C++, all platforms)
+
=== Passing Args as a File ===
* Apache Axis (Java, all platforms)
+
* .NET (C# & Visual Basic, Windows)
+
  
== API List ==
+
You can also call one of our RESTful APIs by passing a file instead of command line arguments. To do this your command will look something like this:
  
=== aclAdd API ===
+
<pre>
 +
curl -k -u admin:password -d @file.json  https://192.168.0.116:8153/qstorapi/jsonrpc
 +
</pre>
  
==== Example ====
+
An example of how the file should be formatted looks like this:
<code> </code>
+
<pre>
 +
{
 +
    "method": "echo",
 +
    "params": {
 +
        "inputMessage": "Message"
 +
    }
 +
}
 +
</pre>
  
==== Argument List ====
+
The format being used is JSON. You specify the command you would like to call using the key "method". Then the parameters are passed in using the key "params". If more than one parameter is specified, separate them with a comma.
<code>
+
    objectId: <xs:string>
+
    ownerType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    ownerId: <xs:string>
+
    accessLevel: <xs:unsignedInt>
+
    objectType: <xs:unsignedInt>
+
</code>
+
  
=== aclModify API ===
+
<pre>
 +
{
 +
    "method": "command",
 +
    "params": {
 +
        "param1": "<value1>",
 +
        "param2": "<value2>",
 +
        "param3": "<value3>"
 +
    }
 +
}
 +
</pre>
  
==== Example ====
+
== Reflection ==
<code> </code>
+
The RESTful API has basic support for reflection, meaning that you can learn about all the arguments for a given API just by calling it with the 'help' parameter like so:
 +
<pre>
 +
curl -k -u admin:password https://192.168.0.116:8153/qstorapi/hostAdd?help
 +
</pre>
  
==== Argument List ====
+
== Calling APIs with Parameters ==
<code>
+
To call an API with parameters you'll need to add a & between each parameter you specify and a ? between the API name and the start of the parameters like so:
    objectId: <xs:string>
+
<pre>
    ownerType: <xs:unsignedInt>
+
curl -k -u admin:password "https://192.168.0.116:8153/qstorapi/hostAdd?iqn=iqn.1991-05.com.microsoft:osn-mediaserver3&hostname=mediaserver3&flags=0"
    flags: <xs:unsignedInt>
+
</pre>
    ownerId: <xs:string>
+
Which will return JSON output like this (note the quotes so that the ampersand is not interpreted by the shell).  Also note that sometimes it can be hard to read the JSON output so we recommend using a [http://jsonviewer.stack.hu/ JSON Formatter] when you're developing your integration code.
    accessLevel: <xs:unsignedInt>
+
<pre>
    objectType: <xs:unsignedInt>
+
{
</code>
+
  "task":{
 +
      "i18nDescription":{
 +
        "messageText":null,
 +
        "messageId":null
 +
      },
 +
      "operation":"add",
 +
      "id":"ca54a531-6386-a4f7-b9de-30f505329bb1",
 +
      "objectType":"Host",
 +
      "finishTimeStamp":"1969-12-31 16:00:00",
 +
      "isRemote":false,
 +
      "createdTimeStamp":"2012-08-23 21:53:40",
 +
      "state":0,
 +
      "acls":[
 +
        {
 +
            "reserved":0,
 +
            "objectId":"ca54a531-6386-a4f7-b9de-30f505329bb1",
 +
            "ownerType":23,
 +
            "ownerId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
 +
            "accessLevel":2,
 +
            "objectType":16
 +
        }
 +
      ],
 +
      "clientIpAddress":"127.0.0.1",
 +
      "parentId":null,
 +
      "modifiedByUserId":null,
 +
      "progress":0,
 +
      "customId":null,
 +
      "type":16,
 +
      "description":"Adding host 'mediaserver3' to service with iSCSI initiator IQN 'iqn.1991-05.com.microsoft:osn-mediaserver3'.",
 +
      "errorMessage":{
 +
        "function":null,
 +
        "severity":0,
 +
        "errorCode":0,
 +
        "file":null,
 +
        "message":{
 +
            "messageText":null,
 +
            "messageId":null
 +
        },
 +
        "line":0
 +
      },
 +
      "modifiedTimeStamp":"1969-12-31 16:00:00",
 +
      "storageSystemId":"50ce62e6-6846-c5b3-d8a1-27061a696604",
 +
      "createdByUserId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
 +
      "name":"Add Host",
 +
      "startTimeStamp":"2012-08-23 21:53:40",
 +
      "taskState":2
 +
  },
 +
  "obj":{
 +
      "username":null,
 +
      "storageSystemId":"50ce62e6-6846-c5b3-d8a1-27061a696604",
 +
      "isRemote":false,
 +
      "hostGroupId":null,
 +
      "name":"mediaserver3",
 +
      "ipAddress":null,
 +
      "createdByUserId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
 +
      "modifiedTimeStamp":"1969-12-31 16:00:00",
 +
      "createdTimeStamp":"2012-08-23 21:53:40",
 +
      "state":0,
 +
      "hostOsType":0,
 +
      "initiatorPortList":[
 +
        {
 +
            "storageSystemId":"50ce62e6-6846-c5b3-d8a1-27061a696604",
 +
            "isRemote":false,
 +
            "hostId":"4fb8c2da-235a-18f9-2620-1d8aa5da89c5",
 +
            "name":"iqn.1991-05.com.microsoft:osn-mediaserver3",
 +
            "ipAddress":null,
 +
            "createdByUserId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
 +
            "modifiedTimeStamp":"1969-12-31 16:00:00",
 +
            "createdTimeStamp":"2012-08-23 21:53:40",
 +
            "wwpn":null,
 +
            "state":0,
 +
            "iqn":"iqn.1991-05.com.microsoft:osn-mediaserver3",
 +
            "initiatorType":0,
 +
            "modifiedByUserId":null,
 +
            "customId":null,
 +
            "type":13,
 +
            "id":"535abed2-830a-a437-d6fd-5af7c5b5c263"
 +
        }
 +
      ],
 +
      "modifiedByUserId":null,
 +
      "customId":null,
 +
      "password":"********",
 +
      "type":11,
 +
      "id":"4fb8c2da-235a-18f9-2620-1d8aa5da89c5",
 +
      "description":"None"
 +
  }
 +
}
 +
</pre>
  
=== aclRemove API ===
+
== Async vs. Sync (blocking vs non-blocking) API calls ==
  
==== Example ====
+
All of the APIs for QuantaStor that modify the configuration in any way will start a task in the system.  If you call any API with the flags parameter set to 0 it'll be treated as a blocking call which wait for the task to complete before returning.  If you want to call the function and have it return immediately you can pass a 1 as the flags parameter which indicates to the server that the caller wants this to be an asynchronous non-blocking call.  With asynchronous calls you'll get the task object back so that you can use the taskGet API to monitor the progress of the operation.  When the task completes it will populate the customId property of the task to contain the ID(s) of the objects which were created/deleted/modified by the task.
<code> </code>
+
  
==== Argument List ====
+
== Task Monitoring ==
<code>
+
    ownerId: <xs:string>
+
    ownerType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    objectId: <xs:string>
+
    objectType: <xs:unsignedInt>
+
</code>
+
  
=== alertClear API ===
+
As indicated above, sometimes you'll want to call an API asynchronously so that you can monitor the progress of the task and/or because you want to queue up multiple operations to run simultaneously.  In such cases where you call an API asynchronously (flags=1) you can monitor the progress of the task using the tastGet API or the tastEnum API if you want to see all running tasks.  When the task is completed you can check the customId property to see the ID(s) of the objects created/modified.
  
==== Example ====
+
== API Error Code Definitions ==
<code> </code>
+
  
==== Argument List ====
+
For all APIs a 0 is returned for SUCCESS and a non-zero error code is returned if there is a command failure along with a description of the error.  Full list of error codes are available [[Error Codes | here]].
<code>
+
    flags: <xs:unsignedInt>
+
    id: <xs:string>
+
</code>
+
  
=== alertClearAll API ===
+
== Security ==
  
==== Example ====
+
QuantaStor REST interface always uses SSL via HTTPS.  You can change the pem keys on your system by replacing the qstorapi_server.pem file located in /opt/osnexus/quantastor/restsrv/ with your own.  If you want to use plain HTTP without SSL you can rename or remove the qstorapi_server.pem and the RESTful service will automatically fall back to using HTTP.  After removing the file just restart the RESTful service interface with:
<code> </code>
+
<pre>service restsrv restart</pre>
 +
If you want to block access to the restful interface you can stop the service and/or you can remove access to port 8153 by removing the entry associated with that port number from the /etc/init.d/iptables configuration file and then restart iptables like so:
 +
<pre>service iptables restart</pre>
 +
In a similar manner you can block access to the web management interface on port 80/8080.
  
==== Argument List ====
+
== Supported SOAP / WebServices Implementations ==
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
  
=== alertConfigGet API ===
+
* gSOAP (C++, all platforms)
 +
* Apache Axis (Java, all platforms)
 +
* .NET (C# & Visual Basic, Windows)
  
==== Example ====
+
== API List ==
<code> </code>
+
The following represents the full API list for every API in QuantaStor. Nothing is left out, if you can do it from the web management interface or the CLI, it's here.
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== alertConfigSet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    smtpServerIpAddress: <xs:string>
+
    smtpPassword: <xs:string>
+
    poolFreeSpaceCriticalAlertThreshold: <xs:unsignedInt>
+
    poolFreeSpaceAlertThreshold: <xs:unsignedInt>
+
    poolFreeSpaceWarningThreshold: <xs:unsignedInt>
+
    senderEmailAddress: <xs:string>
+
    customerSupportEmailAddress: <xs:string>
+
    flags: <xs:unsignedInt>
+
    pagerDutyServiceKey: <xs:string>
+
    smtpUsername: <xs:string>
+
    smtpAuthType: <xs:unsignedInt>
+
</code>
+
 
+
=== alertEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== alertGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    id: <xs:string>
+
</code>
+
 
+
=== alertRaise API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    message: <xs:string>
+
    flags: <xs:unsignedInt>
+
    severity: <xs:unsignedInt>
+
</code>
+
 
+
=== auditLogClear API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== auditLogDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== auditLogEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== auditLogGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    startDate: <xs:dateTime>
+
    endDate: <xs:dateTime>
+
    user: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudBackupScheduleAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    scheduleId: <xs:string>
+
    storageVolumeId: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    setEnabled: <xs:unsignedInt>
+
    name: <xs:string>
+
    startDate: <xs:dateTime>
+
    hoursOfDay: <xs:unsignedInt>
+
    daysOfWeek: <xs:unsignedInt>
+
    maxBackups: <xs:unsignedInt>
+
    priority: <xs:unsignedInt>
+
    cloudContainerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    description: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudBackupScheduleGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    setEnabled: <xs:unsignedInt>
+
    description: <xs:string>
+
    startDate: <xs:dateTime>
+
    hoursOfDay: <xs:unsignedInt>
+
    schedule: <xs:string>
+
    daysOfWeek: <xs:unsignedInt>
+
    maxBackups: <xs:unsignedInt>
+
    cloudContainerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
</code>
+
 
+
=== cloudBackupScheduleVolumeAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== cloudContainerAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageUrl: <xs:string>
+
    flags: <xs:unsignedInt>
+
    enableNfs: <xs:boolean>
+
    credentialsId: <xs:string>
+
    locationId: <xs:string>
+
    encryptionKey: <xs:string>
+
</code>
+
 
+
=== cloudContainerCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    name: <xs:string>
+
    storageUrl: <xs:string>
+
    flags: <xs:unsignedInt>
+
    locationId: <xs:string>
+
    enableNfs: <xs:boolean>
+
    credentialsId: <xs:string>
+
    encryptionKey: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== cloudContainerDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    container: <xs:string>
+
</code>
+
 
+
=== cloudContainerDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    container: <xs:string>
+
</code>
+
 
+
=== cloudContainerEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    container: <xs:string>
+
</code>
+
 
+
=== cloudContainerEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudContainerGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    container: <xs:string>
+
</code>
+
 
+
=== cloudContainerModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    container: <xs:string>
+
    name: <xs:string>
+
    flags: <xs:unsignedInt>
+
    enableNfs: <xs:boolean>
+
    encryptionKey: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== cloudContainerRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    container: <xs:string>
+
</code>
+
 
+
=== cloudContainerRepair API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    container: <xs:string>
+
</code>
+
 
+
=== cloudProviderCredentialsAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    username: <xs:string>
+
    machine: <xs:string>
+
    providerId: <xs:string>
+
    password: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudProviderCredentialsEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudProviderCredentialsGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    credentialId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudProviderCredentialsRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    credentialsId: <xs:string>
+
</code>
+
 
+
=== cloudProviderEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudProviderGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    providerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudProviderLocationAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    providerId: <xs:string>
+
    locationTag: <xs:string>
+
</code>
+
 
+
=== cloudProviderLocationEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== cloudProviderLocationGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    locationId: <xs:string>
+
</code>
+
 
+
=== cloudProviderLocationRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    locationId: <xs:string>
+
</code>
+
 
+
=== clusterFailoverGroupActivate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    clusterFailoverGroup: <xs:string>
+
</code>
+
 
+
=== clusterFailoverGroupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemCluster: <xs:string>
+
    name: <xs:string>
+
    zoneConfig: <xs:string>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== clusterFailoverGroupDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    clusterFailoverGroup: <xs:string>
+
</code>
+
 
+
=== clusterFailoverGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== clusterFailoverGroupGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    clusterFailoverGroup: <xs:string>
+
</code>
+
 
+
=== clusterFailoverGroupModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    description: <xs:string>
+
    zoneConfig: <xs:string>
+
    flags: <xs:unsignedInt>
+
    clusterFailoverGroup: <xs:string>
+
    storagePool: <xs:string>
+
    name: <xs:string>
+
</code>
+
 
+
=== customApi API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    params: <ns0:keyValuePair[]>
+
    method: <xs:string>
+
</code>
+
 
+
=== echo API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    inputMessage: <xs:string>
+
</code>
+
 
+
=== eventEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    maxEvents: <xs:unsignedInt>
+
    serviceTimeStamp: <xs:dateTime>
+
    startingIndex: <xs:unsignedInt>
+
</code>
+
 
+
=== eventListenerNotify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    list: <ns0:event[]>
+
</code>
+
 
+
=== eventListenerRegister API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    eventListenerObj: <ns0:eventListener>
+
</code>
+
 
+
=== eventListenerUnregister API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    listenerId: <xs:string>
+
</code>
+
 
+
=== fcTargetPortDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== fcTargetPortEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== fcTargetPortEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== fcTargetPortGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== getHardwareConfig API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== getLocalizedMessage API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    locale: <xs:string>
+
    flags: <xs:unsignedInt>
+
    i18nStr: <ns0:i18nString>
+
</code>
+
 
+
=== getSecurityConfig API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== getSystemConfig API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    username: <xs:string>
+
    description: <xs:string>
+
    hostname: <xs:string>
+
    hostType: <xs:unsignedInt>
+
    iqn: <xs:string>
+
    flags: <xs:unsignedInt>
+
    password: <xs:string>
+
    ipAddress: <xs:string>
+
</code>
+
 
+
=== hostEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    host: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostGroupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hostList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== hostGroupDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    host: <xs:string>
+
    flags: <xs:unsignedInt>
+
    deleteAssociatedHosts: <xs:boolean>
+
</code>
+
 
+
=== hostGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostGroupGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hostGroup: <xs:string>
+
</code>
+
 
+
=== hostGroupHostAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hostList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    hostGroup: <xs:string>
+
</code>
+
 
+
=== hostGroupModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    newName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    newDescription: <xs:string>
+
    hostGroup: <xs:string>
+
</code>
+
 
+
=== hostInitiatorAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    host: <xs:string>
+
    iqn: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostInitiatorEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    host: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostInitiatorGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    initiator: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostInitiatorRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    host: <xs:string>
+
    iqn: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hostModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    newIpAddress: <xs:string>
+
    newUsername: <xs:string>
+
    newPassword: <xs:string>
+
    newHostType: <xs:unsignedInt>
+
    host: <xs:string>
+
    flags: <xs:unsignedInt>
+
    newDescription: <xs:string>
+
</code>
+
 
+
=== hostRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    host: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwAlarmEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hwController: <xs:string>
+
</code>
+
 
+
=== hwAlarmGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwAlarm: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwBatteryBackupUnitEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hwController: <xs:string>
+
</code>
+
 
+
=== hwBatteryBackupUnitGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwBatteryBackupUnit: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerClearAlarms API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    controllerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwControllerGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hwController: <xs:string>
+
</code>
+
 
+
=== hwControllerGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerGroupGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwControllerGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerImportForeignUnits API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    controllerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerRescan API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    controllerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerRescanAll API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwControllerSilenceAlarms API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    controllerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwDiskEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hwController: <xs:string>
+
</code>
+
 
+
=== hwDiskGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwDisk: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwDiskIdentify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    durationInSeconds: <xs:unsignedInt>
+
    diskId: <xs:string>
+
</code>
+
 
+
=== hwDiskMarkHotSpare API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    clearMark: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    diskId: <xs:string>
+
</code>
+
 
+
=== hwDiskRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    diskId: <xs:string>
+
</code>
+
 
+
=== hwEnclosureEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hwController: <xs:string>
+
</code>
+
 
+
=== hwEnclosureGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwEnclosure: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwLogicalDriveEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwUnit: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwLogicalDriveGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwLogicalDrive: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchAdapterEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchAdapterGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    switchAdapterId: <xs:string>
+
</code>
+
 
+
=== hwSwitchCredentialsAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    username: <xs:string>
+
    domainPassword: <xs:string>
+
    primaryStorageSystem: <xs:string>
+
    secondaryStorageSystem: <xs:string>
+
    switchAdapterId: <xs:string>
+
    switchType: <xs:unsignedInt>
+
    managementProtocol: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    password: <xs:string>
+
    ipAddress: <xs:string>
+
</code>
+
 
+
=== hwSwitchCredentialsEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    switchAdapterId: <xs:string>
+
</code>
+
 
+
=== hwSwitchCredentialsGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    switchCredentials: <xs:string>
+
</code>
+
 
+
=== hwSwitchCredentialsModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    domainPassword: <xs:string>
+
    flags: <xs:unsignedInt>
+
    primaryStorageSystem: <xs:string>
+
    credentialsId: <xs:string>
+
    secondaryStorageSystem: <xs:string>
+
    password: <xs:string>
+
</code>
+
 
+
=== hwSwitchCredentialsRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    credsId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    switchAdapterId: <xs:string>
+
</code>
+
 
+
=== hwSwitchFailoverGroupActivate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    primaryStorageSystemId: <xs:string>
+
    name: <xs:string>
+
    secondaryStorageSystemId: <xs:string>
+
    virtualHostSubnet: <xs:string>
+
    storagePoolList: <xs:string[]>
+
    secondaryZonesetId: <xs:string>
+
    virtualHostIpAddress: <xs:string>
+
    virtualHostGateway: <xs:string>
+
    flags: <xs:unsignedInt>
+
    primaryZonesetId: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== hwSwitchFailoverGroupDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwSwitchFailoverGroupId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    primaryStorageSystemId: <xs:string>
+
    name: <xs:string>
+
    primaryZonesetId: <xs:string>
+
    secondaryStorageSystemId: <xs:string>
+
    virtualHostSubnet: <xs:string>
+
    storagePoolList: <xs:string[]>
+
    secondaryZonesetId: <xs:string>
+
    virtualHostIpAddress: <xs:string>
+
    virtualHostGateway: <xs:string>
+
    flags: <xs:unsignedInt>
+
    hwSwitchFailoverGroup: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== hwSwitchFailoverGroupPoolAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupPoolAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwSwitchFailoverGroupId: <xs:string>
+
    storagePoolId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupSetMode API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
    failoverMode: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupSystemAssocAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    zonesetId: <xs:string>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupSystemAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupSystemAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    hwSwitchFailoverGroupId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchFailoverGroupSystemAssocRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    hwSwitchFailoverGroup: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    switchId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchRescan API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    switchId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwSwitchZonesetActivate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    zonesetId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    switchCredentialsId: <xs:string>
+
</code>
+
 
+
=== hwSwitchZonesetEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    switchCredentialsId: <xs:string>
+
</code>
+
 
+
=== hwSwitchZonesetGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    switchZoneset: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwUnitCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    raidType: <xs:unsignedInt>
+
    diskList: <xs:string[]>
+
    controllerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwUnitDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    unitId: <xs:string>
+
</code>
+
 
+
=== hwUnitEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hwController: <xs:string>
+
</code>
+
 
+
=== hwUnitGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    hwUnit: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwUnitGrow API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    diskList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    stripeSizeKb: <xs:unsignedInt>
+
    initPriority: <xs:unsignedInt>
+
    unitId: <xs:string>
+
</code>
+
 
+
=== hwUnitIdentify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    durationInSeconds: <xs:unsignedInt>
+
    unitId: <xs:string>
+
</code>
+
 
+
=== hwUnitSsdCacheCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    raidType: <xs:unsignedInt>
+
    ssdDiskList: <xs:string[]>
+
    controllerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== hwUnitSsdCacheDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    unitId: <xs:string>
+
</code>
+
 
+
=== hwUnitSsdCacheEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    unitSsdCacheId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    unitId: <xs:string>
+
</code>
+
 
+
=== ibTargetPortEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== ibTargetPortGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== libratoMetricsConfigGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== libratoMetricsConfigSet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    username: <xs:string>
+
    enableAlertAnnotations: <xs:boolean>
+
    storageSystem: <xs:string>
+
    postIntervalSec: <xs:unsignedInt>
+
    token: <xs:string>
+
    enableConfigAnnotations: <xs:boolean>
+
    autoDashboardCreate: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== licenseActivate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    activationKey: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== licenseActivateOnline API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    licenseKey: <xs:string>
+
</code>
+
 
+
=== licenseAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    keyBlock: <xs:string>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== licenseEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== licenseGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    license: <xs:string>
+
</code>
+
 
+
=== licenseRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    license: <xs:string>
+
</code>
+
 
+
=== login API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    reserved: <xs:string>
+
</code>
+
 
+
=== networkShareClientAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    secure: <xs:boolean>
+
    subtreeCheck: <xs:boolean>
+
    clientFilter: <xs:string>
+
    readOnly: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    networkShareId: <xs:string>
+
    customOptions: <xs:string>
+
    async: <xs:boolean>
+
</code>
+
 
+
=== networkShareClientEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareClientGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    networkShareClientId: <xs:string>
+
    networkShareId: <xs:string>
+
</code>
+
 
+
=== networkShareClientModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    secure: <xs:boolean>
+
    subtreeCheck: <xs:boolean>
+
    networkShareClientId: <xs:string>
+
    readOnly: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    networkShareId: <xs:string>
+
    customOptions: <xs:string>
+
    async: <xs:boolean>
+
</code>
+
 
+
=== networkShareClientRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    networkShareClientId: <xs:string>
+
    networkShareId: <xs:string>
+
</code>
+
 
+
=== networkShareClone API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    description: <xs:string>
+
    readOnly: <xs:boolean>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
    cloneName: <xs:string>
+
    provisionableId: <xs:string>
+
    isActive: <xs:boolean>
+
</code>
+
 
+
=== networkShareCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    name: <xs:string>
+
    isPublic: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    provisionableId: <xs:string>
+
    isActive: <xs:boolean>
+
    description: <xs:string>
+
</code>
+
 
+
=== networkShareDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    networkShareId: <xs:string>
+
</code>
+
 
+
=== networkShareDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
    isActive: <xs:boolean>
+
    description: <xs:string>
+
</code>
+
 
+
=== networkShareNfsConfig API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    nfsMode: <xs:unsignedInt>
+
    reserved: <xs:string>
+
    enableKerberos: <xs:boolean>
+
    storageSystem: <xs:string>
+
    defaultOptions: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareRestore API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    snapshotShare: <xs:string>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== networkShareServicesRestart API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== networkShareSnapshot API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    description: <xs:string>
+
    snapshotName: <xs:string>
+
    readOnly: <xs:boolean>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
    provisionableId: <xs:string>
+
    isActive: <xs:boolean>
+
</code>
+
 
+
=== objectEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    propValue: <xs:string>
+
    flags: <xs:unsignedInt>
+
    propType: <xs:unsignedInt>
+
    propKey: <xs:string>
+
</code>
+
 
+
=== objectGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    id: <xs:string>
+
</code>
+
 
+
=== objectLock API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    id: <xs:string>
+
</code>
+
 
+
=== objectPropertyGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    objectId: <xs:string>
+
    propKey: <xs:string>
+
</code>
+
 
+
=== objectPropertySet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    propType: <xs:unsignedInt>
+
    propValue: <xs:string>
+
    flags: <xs:unsignedInt>
+
    objectId: <xs:string>
+
    propKey: <xs:string>
+
</code>
+
 
+
=== objectUnlock API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    id: <xs:string>
+
</code>
+
 
+
=== permissionDefinitionEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== physicalDiskEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    physicalDiskList: <xs:string[]>
+
</code>
+
 
+
=== physicalDiskGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    physicalDrive: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== physicalDiskIdentify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    physicalDrive: <xs:string>
+
    pattern: <xs:string>
+
    duration: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== physicalDiskPathAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    multipathDiskId: <xs:string>
+
</code>
+
 
+
=== physicalDiskPathAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    multipathDiskId: <xs:string>
+
    physicalDiskId: <xs:string>
+
</code>
+
 
+
=== physicalDiskScan API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== registerSecurityToken API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    token: <xs:string>
+
    signedToken: <xs:string>
+
</code>
+
 
+
=== remoteStoragePoolEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    remoteStorageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== replicaAssocDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    deleteReplicaAssocHead: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    assocId: <xs:string>
+
    deleteSourceReplicatable: <xs:boolean>
+
    deleteTargetReplicatable: <xs:boolean>
+
</code>
+
 
+
=== replicaAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    replicatableId: <xs:string>
+
    targetsOnly: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    sourcesOnly: <xs:boolean>
+
</code>
+
 
+
=== replicaAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    assocId: <xs:string>
+
</code>
+
 
+
=== replicaAssocUpdate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    assocObj: <ns0:replicaAssoc>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== replicaCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    replicaDescription: <xs:string>
+
    reserved: <xs:string>
+
    replicationPriority: <xs:unsignedInt>
+
    targetStoragePoolId: <xs:string>
+
    forcePrimary: <xs:boolean>
+
    replicatableId: <xs:string>
+
    smartSync: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    replicaName: <xs:string>
+
    storageSystemLinkId: <xs:string>
+
</code>
+
 
+
=== replicaCreateNetworkShareTarget API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    replicaDescription: <xs:string>
+
    sourceShare: <ns0:networkShare>
+
    reserved: <xs:string>
+
    replicationPriority: <xs:unsignedInt>
+
    sourceShareParent: <ns0:networkShare>
+
    targetStoragePoolId: <xs:string>
+
    forcePrimary: <xs:boolean>
+
    smartSync: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    replicaName: <xs:string>
+
</code>
+
 
+
=== replicaCreateVolumeTarget API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    replicaDescription: <xs:string>
+
    reserved: <xs:string>
+
    replicationPriority: <xs:unsignedInt>
+
    targetStoragePoolId: <xs:string>
+
    forcePrimary: <xs:boolean>
+
    smartSync: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    replicaName: <xs:string>
+
    sourceVolumeParent: <ns0:storageVolume>
+
    sourceVolume: <ns0:storageVolume>
+
</code>
+
 
+
=== replicaStop API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    assocId: <xs:string>
+
</code>
+
 
+
=== replicaSync API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    assocId: <xs:string>
+
</code>
+
 
+
=== replicationScheduleAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    networkShareList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== replicationScheduleAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== replicationScheduleAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    replicatableId: <xs:string>
+
    scheduleId: <xs:string>
+
</code>
+
 
+
=== replicationScheduleCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    setEnabled: <xs:unsignedInt>
+
    name: <xs:string>
+
    targetProvisionableId: <xs:string>
+
    startDate: <xs:dateTime>
+
    targetStorageCloudId: <xs:string>
+
    storageCloudId: <xs:string>
+
    daysOfWeek: <xs:unsignedInt>
+
    priority: <xs:unsignedInt>
+
    networkShareList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    storageSystemLinkId: <xs:string>
+
    hoursOfDay: <xs:unsignedInt>
+
    maxReplicas: <xs:unsignedInt>
+
    description: <xs:string>
+
</code>
+
 
+
=== replicationScheduleDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== replicationScheduleDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== replicationScheduleEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== replicationScheduleEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== replicationScheduleGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== replicationScheduleModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    setEnabled: <xs:unsignedInt>
+
    description: <xs:string>
+
    startDate: <xs:dateTime>
+
    hoursOfDay: <xs:unsignedInt>
+
    storageCloudId: <xs:string>
+
    daysOfWeek: <xs:unsignedInt>
+
    schedule: <xs:string>
+
    flags: <xs:unsignedInt>
+
    maxReplicas: <xs:unsignedInt>
+
    name: <xs:string>
+
</code>
+
 
+
=== roleCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    permissionList: <ns0:permissionAssignment[]>
+
    inheritsFrom: <xs:string>
+
    name: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== roleDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    role: <xs:string>
+
</code>
+
 
+
=== roleEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== roleGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    role: <xs:string>
+
</code>
+
 
+
=== roleModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    newName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    role: <xs:string>
+
    newDescription: <xs:string>
+
</code>
+
 
+
=== rolePermissionAssignmentEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    roleId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== rolePermissionAssignmentGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    operation: <xs:string>
+
    role: <xs:string>
+
    objectType: <xs:string>
+
</code>
+
 
+
=== rolePermissionsAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    modType: <xs:unsignedInt>
+
    role: <xs:string>
+
    permissionList: <ns0:permissionAssignment[]>
+
</code>
+
 
+
=== roleSubjectAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    role: <xs:string>
+
</code>
+
 
+
=== roleSubjectAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    role: <xs:string>
+
    subject: <xs:string>
+
</code>
+
 
+
=== sessionClose API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    sessionId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== sessionEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    host: <xs:string>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== sessionGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    sessionId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== siteAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== siteAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    siteId: <xs:string>
+
</code>
+
 
+
=== siteCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemList: <xs:string[]>
+
    location: <xs:string>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== siteDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    site: <xs:string>
+
</code>
+
 
+
=== siteEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== siteGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    site: <xs:string>
+
</code>
+
 
+
=== siteModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    location: <xs:string>
+
    siteId: <xs:string>
+
    name: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== siteStorageSystemAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    site: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    scheduleId: <xs:string>
+
    storageVolumeId: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    setEnabled: <xs:unsignedInt>
+
    name: <xs:string>
+
    startDate: <xs:dateTime>
+
    hoursOfDay: <xs:unsignedInt>
+
    storageCloudId: <xs:string>
+
    daysOfWeek: <xs:unsignedInt>
+
    networkShareList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    maxSnapshots: <xs:unsignedInt>
+
    description: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== snapshotScheduleGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    setEnabled: <xs:unsignedInt>
+
    description: <xs:string>
+
    startDate: <xs:dateTime>
+
    hoursOfDay: <xs:unsignedInt>
+
    storageCloudId: <xs:string>
+
    daysOfWeek: <xs:unsignedInt>
+
    schedule: <xs:string>
+
    flags: <xs:unsignedInt>
+
    maxSnapshots: <xs:unsignedInt>
+
    name: <xs:string>
+
</code>
+
 
+
=== snapshotScheduleVolumeAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    networkShareList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    schedule: <xs:string>
+
</code>
+
 
+
=== storageCloudCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    defaultChapPassword: <xs:string>
+
    tier: <xs:string>
+
    name: <xs:string>
+
    parentStorageCloudId: <xs:string>
+
    userList: <ns0:storageCloudSubjectAssoc[]>
+
    flags: <xs:unsignedInt>
+
    resourceList: <ns0:storageCloudResourceAssoc[]>
+
    organization: <xs:string>
+
    defaultChapUsername: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageCloudDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageCloud: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageCloudEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageCloudGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageCloud: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageCloudModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    defaultChapPassword: <xs:string>
+
    name: <xs:string>
+
    parentStorageCloudId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    tier: <xs:string>
+
    organization: <xs:string>
+
    storageCloud: <xs:string>
+
    defaultChapUsername: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageCloudResourceAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    resourceList: <ns0:storageCloudResourceAssoc[]>
+
    storageCloud: <xs:string>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageCloudResourceAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    resource: <xs:string>
+
</code>
+
 
+
=== storageCloudResourceAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageCloud: <xs:string>
+
    resource: <xs:string>
+
</code>
+
 
+
=== storageCloudResourceSetMode API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageCloud: <xs:string>
+
    resource: <ns0:storageCloudResourceAssoc>
+
</code>
+
 
+
=== storageCloudSubjectAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    subject: <xs:string>
+
</code>
+
 
+
=== storageCloudSubjectAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageCloud: <xs:string>
+
    flags: <xs:unsignedInt>
+
    subject: <xs:string>
+
</code>
+
 
+
=== storageCloudUserAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    userList: <ns0:storageCloudSubjectAssoc[]>
+
    storageCloud: <xs:string>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    profile: <xs:string>
+
    physicalDiskList: <xs:string[]>
+
    name: <xs:string>
+
    raidType: <xs:unsignedInt>
+
    poolType: <xs:unsignedInt>
+
    enableCompression: <xs:boolean>
+
    noBarriers: <xs:boolean>
+
    enableSsd: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    isDefault: <xs:boolean>
+
    description: <xs:string>
+
</code>
+
 
+
=== storagePoolDestroy API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolDeviceEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storagePoolId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolDeviceGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePoolDevice: <xs:string>
+
</code>
+
 
+
=== storagePoolEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolExpand API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolExport API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolGrow API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    raidType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    physicalDiskList: <xs:string[]>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolIdentify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    duration: <xs:unsignedInt>
+
    pattern: <xs:string>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    profile: <xs:string>
+
    newName: <xs:string>
+
    enableCompression: <xs:boolean>
+
    isDefault: <xs:boolean>
+
    storagePool: <xs:string>
+
    noBarriers: <xs:boolean>
+
    enableSsd: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    newDescription: <xs:string>
+
</code>
+
 
+
=== storagePoolProfileEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolProfileGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storagePoolProfile: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolReplicationConfigCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    primaryStoragePoolId: <xs:string>
+
    diskBarrier: <xs:boolean>
+
    protocolType: <xs:string>
+
    replicationPort: <xs:unsignedInt>
+
    secondaryStoragePoolId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    resyncRate: <xs:unsignedLong>
+
    diskFlushes: <xs:boolean>
+
    storageSystemLinkId: <xs:string>
+
</code>
+
 
+
=== storagePoolReplicationConfigDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    scrubMetadataDevice: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    storagePoolReplicationConfigId: <xs:string>
+
</code>
+
 
+
=== storagePoolReplicationConfigEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolReplicationConfigGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storagePoolReplicationConfig: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storagePoolReplicationConfigModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    diskBarrier: <xs:boolean>
+
    protocolType: <xs:string>
+
    replicationPort: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    resyncRate: <xs:unsignedLong>
+
    diskFlushes: <xs:boolean>
+
    storageSystemLinkId: <xs:string>
+
    storagePoolReplicationConfigId: <xs:string>
+
</code>
+
 
+
=== storagePoolRescan API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
    options: <xs:string>
+
</code>
+
 
+
=== storagePoolSpareAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    modType: <xs:unsignedInt>
+
    physicalDiskList: <xs:string[]>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolStart API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolStop API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storagePoolUpdateRedirect API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storagePool: <xs:string>
+
</code>
+
 
+
=== storageQuotaCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    utilizableSpace: <xs:unsignedLong>
+
    name: <xs:string>
+
    maxVolumes: <xs:unsignedInt>
+
    storageCloudId: <xs:string>
+
    policyFlags: <xs:unsignedInt>
+
    provisionableSize: <xs:unsignedLong>
+
    storagePoolId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    maxShares: <xs:unsignedInt>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageQuotaDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageQuota: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageQuotaEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageQuotaGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageQuota: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageQuotaModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    utilizableSpace: <xs:unsignedLong>
+
    name: <xs:string>
+
    maxVolumes: <xs:unsignedInt>
+
    storageCloudId: <xs:string>
+
    policyFlags: <xs:unsignedInt>
+
    provisionableSize: <xs:unsignedLong>
+
    storageQuota: <xs:string>
+
    flags: <xs:unsignedInt>
+
    maxShares: <xs:unsignedInt>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageQuotaShareAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageQuota: <xs:string>
+
    modType: <xs:unsignedInt>
+
    storageShareList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageQuotaShareAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    networkShare: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageQuotaShareAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageQuotaId: <xs:string>
+
    shareId: <xs:string>
+
</code>
+
 
+
=== storageQuotaVolumeAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    storageQuota: <xs:string>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageQuotaVolumeAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageQuotaVolumeAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageQuotaId: <xs:string>
+
    storageVolumeId: <xs:string>
+
</code>
+
 
+
=== storageSystemClusterAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    storageSystemClusterId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    targetPort: <xs:string>
+
    name: <xs:string>
+
    virtualHostIpAddress: <xs:string>
+
    virtualHostGateway: <xs:string>
+
    flags: <xs:unsignedInt>
+
    virtualHostSubnetMask: <xs:string>
+
    virtualHostName: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageSystemClusterDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemCluster: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    targetPort: <xs:string>
+
    name: <xs:string>
+
    virtualHostIpAddress: <xs:string>
+
    virtualHostGateway: <xs:string>
+
    flags: <xs:unsignedInt>
+
    virtualHostSubnetMask: <xs:string>
+
    virtualHostName: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageSystemClusterNodeAdd API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    nodeAdminUsername: <xs:string>
+
    flags: <xs:unsignedInt>
+
    nodeIpAddress: <xs:string>
+
    nodeAdminPassword: <xs:string>
+
</code>
+
 
+
=== storageSystemClusterNodeEject API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemClusterObj: <ns0:storageSystemCluster>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterNodeJoin API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystemClusterObj: <ns0:storageSystemCluster>
+
    masterNode: <ns0:storageSystem>
+
</code>
+
 
+
=== storageSystemClusterNodeRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterNodeSetMaster API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemClusterNodeSync API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystemClusterObj: <ns0:storageSystemCluster>
+
    masterNode: <ns0:storageSystem>
+
</code>
+
 
+
=== storageSystemEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupAddRemoveLinks API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkIdList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    groupId: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemGroupAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    groupId: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    groupPassword: <xs:string>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
    virtualIpAddress: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    deleteAssociatedLinks: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    groupId: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemGroupGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    groupId: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    description: <xs:string>
+
    flags: <xs:unsignedInt>
+
    groupId: <xs:string>
+
    virtualIpAddress: <xs:string>
+
    name: <xs:string>
+
</code>
+
 
+
=== storageSystemGroupSetPassword API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    groupPassword: <xs:string>
+
    flags: <xs:unsignedInt>
+
    groupId: <xs:string>
+
</code>
+
 
+
=== storageSystemLinkCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkType: <xs:unsignedInt>
+
    localIpAddress: <xs:string>
+
    description: <xs:string>
+
    remoteAdminPassword: <xs:string>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    remoteIpAddress: <xs:string>
+
    remoteAdminUser: <xs:string>
+
    bandwidthLimit: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkDisconnect API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    remoteStorageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkEstablish API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkObj: <ns0:storageSystemLink>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkType: <xs:unsignedInt>
+
    description: <xs:string>
+
    linkId: <xs:string>
+
    localIpAddress: <xs:string>
+
    flags: <xs:unsignedInt>
+
    remoteIpAddress: <xs:string>
+
    bandwidthLimit: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkRefresh API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemLinkSetCredentials API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkId: <xs:string>
+
    remoteAdminPassword: <xs:string>
+
    flags: <xs:unsignedInt>
+
    remoteAdminUser: <xs:string>
+
</code>
+
 
+
=== storageSystemLinkVerify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    linkObj: <ns0:storageSystemLink>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    searchSuffix: <xs:string>
+
    newName: <xs:string>
+
    newLocation: <xs:string>
+
    storageSystem: <xs:string>
+
    newDnsServerList: <xs:string[]>
+
    arpFilterMode: <xs:unsignedInt>
+
    bondMode: <xs:unsignedInt>
+
    domainSuffix: <xs:string>
+
    flags: <xs:unsignedInt>
+
    newDescription: <xs:string>
+
</code>
+
 
+
=== storageSystemRecover API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    recoveryPoint: <xs:string>
+
    recoverNetworkConfig: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== storageSystemRecoveryPointEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== storageSystemRestart API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== storageSystemSendLogs API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageSystemId: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageSystemShutdown API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== storageSystemUpdateCheck API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== storageSystemUpgrade API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    upgradeTarget: <xs:boolean>
+
    upgradeService: <xs:boolean>
+
    storageSystem: <xs:string>
+
    upgradeWebServer: <xs:boolean>
+
    flags: <xs:unsignedInt>
+
    upgradeManager: <xs:boolean>
+
</code>
+
 
+
=== storageVolumeAclAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    hostList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageVolumeAclAddRemoveEx API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    host: <xs:string>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageVolumeAclEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    host: <xs:string>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageVolumeAclGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    host: <xs:string>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageVolumeClone API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolume: <xs:string>
+
    description: <xs:string>
+
    accessMode: <xs:unsignedInt>
+
    cloneName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    provisionableId: <xs:string>
+
</code>
+
 
+
=== storageVolumeCloudBackupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    reserved: <xs:string>
+
    sourceVolumeId: <xs:string>
+
    priority: <xs:unsignedInt>
+
    backupVolumeName: <xs:string>
+
    cloudContainerId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    backupVolumeDescription: <xs:string>
+
</code>
+
 
+
=== storageVolumeCloudBackupRestore API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    reserved: <xs:string>
+
    recoveredVolumeName: <xs:string>
+
    sourceVolumeId: <xs:string>
+
    priority: <xs:unsignedInt>
+
    storagePoolId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    recoveredVolumeDescription: <xs:string>
+
</code>
+
 
+
=== storageVolumeCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    chapPolicy: <xs:unsignedInt>
+
    count: <xs:unsignedInt>
+
    name: <xs:string>
+
    accessMode: <xs:unsignedInt>
+
    description: <xs:string>
+
    flags: <xs:unsignedInt>
+
    thinProvisioned: <xs:boolean>
+
    chapPassword: <xs:string>
+
    provisionableId: <xs:string>
+
    chapUsername: <xs:string>
+
    size: <xs:unsignedLong>
+
</code>
+
 
+
=== storageVolumeCreateEx API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    count: <xs:unsignedInt>
+
    name: <xs:string>
+
    accessMode: <xs:unsignedInt>
+
    description: <xs:string>
+
    flags: <xs:unsignedInt>
+
    percentReserved: <xs:unsignedInt>
+
    chapPolicy: <xs:unsignedInt>
+
    chapPassword: <xs:string>
+
    provisionableId: <xs:string>
+
    chapUsername: <xs:string>
+
    size: <xs:unsignedLong>
+
</code>
+
 
+
=== storageVolumeDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    recursivelyDeleteSnapshots: <xs:boolean>
+
</code>
+
 
+
=== storageVolumeEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageVolumeGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeGroupId: <xs:string>
+
    storageVolumeId: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupClone API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeGroup: <xs:string>
+
    description: <xs:string>
+
    accessMode: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    cloneNamePrefix: <xs:string>
+
    provisionableId: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageVolumeGroup: <xs:string>
+
    deleteAssociatedVolumes: <xs:boolean>
+
</code>
+
 
+
=== storageVolumeGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageVolumeGroupGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageVolumeGroup: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    newName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    storageVolumeGroup: <xs:string>
+
    newDescription: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupSnapshot API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    count: <xs:unsignedInt>
+
    storageVolumeGroup: <xs:string>
+
    description: <xs:string>
+
    accessMode: <xs:unsignedInt>
+
    snapshotNamePrefix: <xs:string>
+
    flags: <xs:unsignedInt>
+
    provisionableId: <xs:string>
+
</code>
+
 
+
=== storageVolumeGroupVolumeAddRemove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolumeList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    modType: <xs:unsignedInt>
+
    storageVolumeGroup: <xs:string>
+
</code>
+
 
+
=== storageVolumeModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    storageVolume: <xs:string>
+
    newName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    newAccessMode: <xs:unsignedInt>
+
    chapUsername: <xs:string>
+
    chapPolicy: <xs:unsignedInt>
+
    chapPassword: <xs:string>
+
    clearSnapshotFlag: <xs:boolean>
+
    newDescription: <xs:string>
+
</code>
+
 
+
=== storageVolumeResize API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    newSizeInBytes: <xs:unsignedLong>
+
    storageVolume: <xs:string>
+
    provisionableId: <xs:string>
+
</code>
+
 
+
=== storageVolumeRestore API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    snapshotVolume: <xs:string>
+
    storageVolume: <xs:string>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageVolumeSnapshot API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    count: <xs:unsignedInt>
+
    storageVolume: <xs:string>
+
    description: <xs:string>
+
    accessMode: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    snapshotName: <xs:string>
+
    provisionableId: <xs:string>
+
</code>
+
 
+
=== storageVolumeUtilizationEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageVolume: <xs:string>
+
</code>
+
 
+
=== storageVolumeUtilizationGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    utilizationId: <xs:string>
+
</code>
+
 
+
=== storageVolumeUtilizationGetRetentionPeriod API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== storageVolumeUtilizationSetRetentionPeriod API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    daysToRetain: <xs:unsignedInt>
+
</code>
+
 
+
=== targetPortDisable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== targetPortEnable API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== targetPortEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== targetPortGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== targetPortModify API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    description: <xs:string>
+
    iscsiEnabled: <xs:boolean>
+
    mtu: <xs:unsignedInt>
+
    configType: <xs:string>
+
    netmask: <xs:string>
+
    vportFloatList: <xs:string[]>
+
    gateway: <xs:string>
+
    flags: <xs:unsignedInt>
+
    ipAddress: <xs:string>
+
    port: <xs:string>
+
</code>
+
 
+
=== targetPortRescan API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    storageSystem: <xs:string>
+
</code>
+
 
+
=== targetPortRestart API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== targetVirtualInterfaceCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    macAddress: <xs:string>
+
    description: <xs:string>
+
    portList: <xs:string[]>
+
    parentPortId: <xs:string>
+
    mtu: <xs:unsignedInt>
+
    storageSystemId: <xs:string>
+
    netmask: <xs:string>
+
    flags: <xs:unsignedInt>
+
    ipAddress: <xs:string>
+
    gateway: <xs:string>
+
</code>
+
 
+
=== targetVirtualInterfaceMove API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    targetPortId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    virtualInterfaceId: <xs:string>
+
</code>
+
 
+
=== targetVirtualPortCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    macAddress: <xs:string>
+
    description: <xs:string>
+
    portList: <xs:string[]>
+
    mtu: <xs:unsignedInt>
+
    storageSystemId: <xs:string>
+
    netmask: <xs:string>
+
    flags: <xs:unsignedInt>
+
    ipAddress: <xs:string>
+
    gateway: <xs:string>
+
</code>
+
 
+
=== targetVirtualPortDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    port: <xs:string>
+
</code>
+
 
+
=== taskCancel API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    id: <xs:string>
+
</code>
+
 
+
=== taskClearAll API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== taskEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    taskIdlist: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== taskGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    id: <xs:string>
+
</code>
+
 
+
=== userAdd API ===
+
Adds a new user to the system. User accounts can access QuantaStor via the web management interface, remote scripting and via the qstorapi RESTful API.
+
 
+
==== Example ====
+
<code> curl -U username:password -k https://hostname:8153/userAdd?username=tiger&password=passWORD1&firstName=Tiger&lastName=Woods&role=Administrator </code>
+
 
+
==== Argument List ====
+
    username: <xs:string>
+
    defaultChapPassword: <xs:string>
+
    alertSubscriptions: <xs:unsignedInt>
+
    description: <xs:string>
+
    firstName: <xs:string>
+
    lastName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    emailAddress: <xs:string>
+
    role: <xs:string>
+
    password: <xs:string>
+
    defaultChapUsername: <xs:string>
+
 
+
=== userEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
 
+
=== userGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    user: <xs:string>
+
</code>
+
 
+
=== userGroupAssocEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    user: <xs:string>
+
</code>
+
 
+
=== userGroupAssocGet API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    userId: <xs:string>
+
    userGroupId: <xs:string>
+
</code>
+
 
+
=== userGroupCreate API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    userList: <xs:string[]>
+
    flags: <xs:unsignedInt>
+
    name: <xs:string>
+
    description: <xs:string>
+
</code>
+
 
+
=== userGroupDelete API ===
+
 
+
==== Example ====
+
<code> </code>
+
 
+
==== Argument List ====
+
<code>
+
    flags: <xs:unsignedInt>
+
    userGroup: <xs:string>
+
</code>
+
 
+
=== userGroupEnum API ===
+
 
+
==== Example ====
+
<code> </code>
+
  
==== Argument List ====
+
=== Examples ===
<code>
+
<pre>  
    flags: <xs:unsignedInt>
+
curl -u username:password -k https://hostname:8153/qstorapi/aclAdd?objectId=<id>&ownerType=<int>&ownerId=<id>&accessLevel=<int>&objectType=<int>  
</code>
+
  
=== userGroupGet API ===
+
curl -u username:password -k https://hostname:8153/userAdd?username=tiger&password=passWORD1&firstName=Tiger&lastName=Woods&role=Administrator
  
==== Example ====
+
curl -u username:password -k -d @data.json https://hostname:8153/qstorapi/jsonrpc
<code> </code>
+
  
==== Argument List ====
+
</pre>
<code>
+
    flags: <xs:unsignedInt>
+
    userGroup: <xs:string>
+
</code>
+
  
=== userGroupModify API ===
+
==== Example Script ====
 +
Here is an example script in python. To use this example replace the ip address with your QuantaStor boxes ip.
  
==== Example ====
+
<pre>
<code> </code>
+
  
==== Argument List ====
+
import json
<code>
+
import subprocess
    newName: <xs:string>
+
    flags: <xs:unsignedInt>
+
    newDescription: <xs:string>
+
    userGroup: <xs:string>
+
</code>
+
  
=== userGroupUserAddRemove API ===
+
print "I am getting the storage system info..."
 +
#To get the data make an http request (such as a curl call)
  
==== Example ====
+
proc = subprocess.Popen(["curl", "-k", "-u", "admin:password",
<code> </code>
+
        "https://192.168.0.142:8153/qstorapi/storageSystemGet?"], stdout=subprocess.PIPE)
  
==== Argument List ====
+
(out, err) = proc.communicate()
<code>
+
    userList: <xs:string[]>
+
    modType: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    userGroup: <xs:string>
+
</code>
+
  
=== userModify API ===
+
print
 +
print "Here is what the returned data looks like when I get it:"
 +
print
 +
print str(out)
 +
print
  
==== Example ====
+
#call json.loads to turn it into a python dictionary
<code> </code>
+
out = json.loads(out)
 +
print "Here is how to get a single field from the output:"
 +
print
 +
storageSystemId = out["id"]
 +
print storageSystemId
  
==== Argument List ====
+
</pre>
<code>
+
    newFirstName: <xs:string>
+
    newDefaultChapPassword: <xs:string>
+
    newName: <xs:string>
+
    alertSubscriptions: <xs:unsignedInt>
+
    flags: <xs:unsignedInt>
+
    user: <xs:string>
+
    newDefaultChapUsername: <xs:string>
+
    newLastName: <xs:string>
+
    newEmailAddress: <xs:string>
+
    newDescription: <xs:string>
+
    newRole: <xs:string>
+
</code>
+
  
=== userPasswordSet API ===
+
== QuantaStor [[REST API Reference Guide]] ==
 +
All efforts are made to keep existing REST API from changing but on rare occasions API changes to existing APIs and objects may change.  As such the following sections document the APIs as per a specific released version of QuantaStor.  New versions of QuantaStor generally introduce some new APIs and object types but these are added in a backwards compatible fashion.
  
==== Example ====
+
[[REST API Reference Guide|Current Version]]
<code> </code>
+
  
==== Argument List ====
+
=== Archived Versions ===
<code>
+
    newPassword: <xs:string>
+
    oldPassword: <xs:string>
+
    flags: <xs:unsignedInt>
+
    user: <xs:string>
+
</code>
+
  
=== userRemove API ===
+
[[QuantaStor REST API Reference v5.2 ]]
  
==== Example ====
+
[[QuantaStor REST API Reference v4.2, v4.1]]
<code> </code>
+
  
==== Argument List ====
+
[[QuantaStor REST API Reference v4.0 and earlier]]
<code>
+
    flags: <xs:unsignedInt>
+
    user: <xs:string>
+
</code>
+
  
=== virtualInterfaceAssocEnum API ===
+
== Enumeration Types ==
  
==== Example ====
+
The enumeration types listed below are used with APIs noted above.  Many of the enumerations have assigned values like "OSN_CMN_FLAG_ASYNC            = 0x0001" but for those that do not have assigned values note that they are 0 indexed. 
<code> </code>
+
For example, OSN_CMN_ACCESSTYPE_READWRITE should be specified as 0 and OSN_CMN_ACCESSTYPE_READONLY specified as a 1 to the storageVolumeModify API as the accessMode for changing the configuration of a storage volume.
  
==== Argument List ====
+
* [[REST_API_Reference_Guide#Enum_Definitions|QS API Enumerations v5.5]]
<code>
+
    flags: <xs:unsignedInt>
+
</code>
+
  
=== virtualInterfaceAssocGet API ===
+
== Ansible Documentation ==
  
==== Example ====
+
Currently, OsNexus does not package the python client or the Ansible modules with the QuantaStor installation package. Individual installation instructions can be found on GitHub (Ansible modules) and PyPi (qsclient).
<code> </code>
+
  
==== Argument List ====
+
[https://github.com/OSNEXUS/QSPyClient OSNEXUS Python client in Git: OSNEXUS QSPyClient]
<code>
+
    targetPortId: <xs:string>
+
    flags: <xs:unsignedInt>
+
    virtualInterfaceId: <xs:string>
+
</code>
+
  
=== widgetCreate API ===
+
[https://pypi.org/project/quantastor-qsclient OSNEXUS QuantaStor Python Client Library ]
  
==== Example ====
+
[https://github.com/OSNEXUS/qsansible OSNEXUS Ansible Modules in Git: OSNEXUS qsansible]
<code> </code>
+
  
==== Argument List ====
+
For more information about QuantaStor Ansible automation,
<code>
+
<br>checkout our blog post
    flags: <xs:unsignedInt>
+
[https://blog.osnexus.com/2019/11/12/automating-storage-provisioning-using-ansible-with-quantastor Automating storage provisioning using Ansible with Quantastor.]
    name: <xs:string>
+
</code>
+

Latest revision as of 14:33, 11 April 2023

Overview

QuantaStor was designed from the start with a service oriented architecture so that all aspects of system, cluster, and storage grid configuration may be automated. There are multiple ways to automate QuantaStor management operations including the REST API, CLI, Ansible modules, and SOAP. The Developer Guide focuses on integration with QuantaStor via the REST APIs.

Supported Languages

You can use just about any programming language you like to communicate with QuantaStor via our RESTful API. Recommended tools:

Browser Tools

We highly recommend installing a tool like JSONView or other similar browser tool so that you can view the JSON output from the various API calls in an easy to read format. When experimenting with various APIs you can then use your browser to call the API, see the results, and plan for how to integrate it into your script or application.

Examples

Here's are some examples of how to enumerate various objects using the RESTful API and the curl utility:

curl -u admin:password https://192.168.0.116:8153/qstorapi/hostEnum -k
curl -u admin:password https://192.168.0.116:8153/qstorapi/storageVolumeEnum -k
curl -u admin:password https://192.168.0.116:8153/qstorapi/storageSystemGet -k
curl -u admin:password https://192.168.0.116:8153/qstorapi/storagePoolEnum -k
curl -u admin:password https://192.168.0.116:8153/qstorapi/userEnum -k
curl -u admin:password https://192.168.0.116:8153/qstorapi/networkShareEnum -k

One quick way to test is to just enter one of these URLs (https://192.168.0.116:8153/qstorapi/hostEnum) into your web browser which will work as long as your system admin account is still using the default password. Pretty much every known language has a curl type library/module for it so the above technique will work everywhere, you just need to get up to speed with your preferred language's curl API mechanism.

Note you can even access APIs using wget which in this example will store the results into a file called hostEnum:

wget --no-check-certificate https://192.168.0.135:8153/qstorapi/hostEnum

Passing Args as a File

You can also call one of our RESTful APIs by passing a file instead of command line arguments. To do this your command will look something like this:

curl -k -u admin:password -d @file.json  https://192.168.0.116:8153/qstorapi/jsonrpc

An example of how the file should be formatted looks like this:

{
    "method": "echo",
    "params": {
        "inputMessage": "Message"
    }
}

The format being used is JSON. You specify the command you would like to call using the key "method". Then the parameters are passed in using the key "params". If more than one parameter is specified, separate them with a comma.

{
    "method": "command",
    "params": {
        "param1": "<value1>",
        "param2": "<value2>",
        "param3": "<value3>"
    }
}

Reflection

The RESTful API has basic support for reflection, meaning that you can learn about all the arguments for a given API just by calling it with the 'help' parameter like so:

curl -k -u admin:password https://192.168.0.116:8153/qstorapi/hostAdd?help

Calling APIs with Parameters

To call an API with parameters you'll need to add a & between each parameter you specify and a ? between the API name and the start of the parameters like so:

curl -k -u admin:password "https://192.168.0.116:8153/qstorapi/hostAdd?iqn=iqn.1991-05.com.microsoft:osn-mediaserver3&hostname=mediaserver3&flags=0"

Which will return JSON output like this (note the quotes so that the ampersand is not interpreted by the shell). Also note that sometimes it can be hard to read the JSON output so we recommend using a JSON Formatter when you're developing your integration code.

{
   "task":{
      "i18nDescription":{
         "messageText":null,
         "messageId":null
      },
      "operation":"add",
      "id":"ca54a531-6386-a4f7-b9de-30f505329bb1",
      "objectType":"Host",
      "finishTimeStamp":"1969-12-31 16:00:00",
      "isRemote":false,
      "createdTimeStamp":"2012-08-23 21:53:40",
      "state":0,
      "acls":[
         {
            "reserved":0,
            "objectId":"ca54a531-6386-a4f7-b9de-30f505329bb1",
            "ownerType":23,
            "ownerId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
            "accessLevel":2,
            "objectType":16
         }
      ],
      "clientIpAddress":"127.0.0.1",
      "parentId":null,
      "modifiedByUserId":null,
      "progress":0,
      "customId":null,
      "type":16,
      "description":"Adding host 'mediaserver3' to service with iSCSI initiator IQN 'iqn.1991-05.com.microsoft:osn-mediaserver3'.",
      "errorMessage":{
         "function":null,
         "severity":0,
         "errorCode":0,
         "file":null,
         "message":{
            "messageText":null,
            "messageId":null
         },
         "line":0
      },
      "modifiedTimeStamp":"1969-12-31 16:00:00",
      "storageSystemId":"50ce62e6-6846-c5b3-d8a1-27061a696604",
      "createdByUserId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
      "name":"Add Host",
      "startTimeStamp":"2012-08-23 21:53:40",
      "taskState":2
   },
   "obj":{
      "username":null,
      "storageSystemId":"50ce62e6-6846-c5b3-d8a1-27061a696604",
      "isRemote":false,
      "hostGroupId":null,
      "name":"mediaserver3",
      "ipAddress":null,
      "createdByUserId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
      "modifiedTimeStamp":"1969-12-31 16:00:00",
      "createdTimeStamp":"2012-08-23 21:53:40",
      "state":0,
      "hostOsType":0,
      "initiatorPortList":[
         {
            "storageSystemId":"50ce62e6-6846-c5b3-d8a1-27061a696604",
            "isRemote":false,
            "hostId":"4fb8c2da-235a-18f9-2620-1d8aa5da89c5",
            "name":"iqn.1991-05.com.microsoft:osn-mediaserver3",
            "ipAddress":null,
            "createdByUserId":"252d4786-b19f-ae43-1ff6-453bee8a652e",
            "modifiedTimeStamp":"1969-12-31 16:00:00",
            "createdTimeStamp":"2012-08-23 21:53:40",
            "wwpn":null,
            "state":0,
            "iqn":"iqn.1991-05.com.microsoft:osn-mediaserver3",
            "initiatorType":0,
            "modifiedByUserId":null,
            "customId":null,
            "type":13,
            "id":"535abed2-830a-a437-d6fd-5af7c5b5c263"
         }
      ],
      "modifiedByUserId":null,
      "customId":null,
      "password":"********",
      "type":11,
      "id":"4fb8c2da-235a-18f9-2620-1d8aa5da89c5",
      "description":"None"
   }
}

Async vs. Sync (blocking vs non-blocking) API calls

All of the APIs for QuantaStor that modify the configuration in any way will start a task in the system. If you call any API with the flags parameter set to 0 it'll be treated as a blocking call which wait for the task to complete before returning. If you want to call the function and have it return immediately you can pass a 1 as the flags parameter which indicates to the server that the caller wants this to be an asynchronous non-blocking call. With asynchronous calls you'll get the task object back so that you can use the taskGet API to monitor the progress of the operation. When the task completes it will populate the customId property of the task to contain the ID(s) of the objects which were created/deleted/modified by the task.

Task Monitoring

As indicated above, sometimes you'll want to call an API asynchronously so that you can monitor the progress of the task and/or because you want to queue up multiple operations to run simultaneously. In such cases where you call an API asynchronously (flags=1) you can monitor the progress of the task using the tastGet API or the tastEnum API if you want to see all running tasks. When the task is completed you can check the customId property to see the ID(s) of the objects created/modified.

API Error Code Definitions

For all APIs a 0 is returned for SUCCESS and a non-zero error code is returned if there is a command failure along with a description of the error. Full list of error codes are available here.

Security

QuantaStor REST interface always uses SSL via HTTPS. You can change the pem keys on your system by replacing the qstorapi_server.pem file located in /opt/osnexus/quantastor/restsrv/ with your own. If you want to use plain HTTP without SSL you can rename or remove the qstorapi_server.pem and the RESTful service will automatically fall back to using HTTP. After removing the file just restart the RESTful service interface with:

service restsrv restart

If you want to block access to the restful interface you can stop the service and/or you can remove access to port 8153 by removing the entry associated with that port number from the /etc/init.d/iptables configuration file and then restart iptables like so:

service iptables restart

In a similar manner you can block access to the web management interface on port 80/8080.

Supported SOAP / WebServices Implementations

  • gSOAP (C++, all platforms)
  • Apache Axis (Java, all platforms)
  • .NET (C# & Visual Basic, Windows)

API List

The following represents the full API list for every API in QuantaStor. Nothing is left out, if you can do it from the web management interface or the CLI, it's here.

Examples

 
curl -u username:password -k https://hostname:8153/qstorapi/aclAdd?objectId=<id>&ownerType=<int>&ownerId=<id>&accessLevel=<int>&objectType=<int> 

curl -u username:password -k https://hostname:8153/userAdd?username=tiger&password=passWORD1&firstName=Tiger&lastName=Woods&role=Administrator

curl -u username:password -k -d @data.json https://hostname:8153/qstorapi/jsonrpc

Example Script

Here is an example script in python. To use this example replace the ip address with your QuantaStor boxes ip.


import json
import subprocess

print "I am getting the storage system info..."
#To get the data make an http request (such as a curl call)

proc = subprocess.Popen(["curl", "-k", "-u", "admin:password",
         "https://192.168.0.142:8153/qstorapi/storageSystemGet?"], stdout=subprocess.PIPE)

(out, err) = proc.communicate()

print
print "Here is what the returned data looks like when I get it:"
print
print str(out)
print

#call json.loads to turn it into a python dictionary
out = json.loads(out)
print "Here is how to get a single field from the output:"
print
storageSystemId = out["id"]
print storageSystemId

QuantaStor REST API Reference Guide

All efforts are made to keep existing REST API from changing but on rare occasions API changes to existing APIs and objects may change. As such the following sections document the APIs as per a specific released version of QuantaStor. New versions of QuantaStor generally introduce some new APIs and object types but these are added in a backwards compatible fashion.

Current Version

Archived Versions

QuantaStor REST API Reference v5.2

QuantaStor REST API Reference v4.2, v4.1

QuantaStor REST API Reference v4.0 and earlier

Enumeration Types

The enumeration types listed below are used with APIs noted above. Many of the enumerations have assigned values like "OSN_CMN_FLAG_ASYNC = 0x0001" but for those that do not have assigned values note that they are 0 indexed. For example, OSN_CMN_ACCESSTYPE_READWRITE should be specified as 0 and OSN_CMN_ACCESSTYPE_READONLY specified as a 1 to the storageVolumeModify API as the accessMode for changing the configuration of a storage volume.

Ansible Documentation

Currently, OsNexus does not package the python client or the Ansible modules with the QuantaStor installation package. Individual installation instructions can be found on GitHub (Ansible modules) and PyPi (qsclient).

OSNEXUS Python client in Git: OSNEXUS QSPyClient

OSNEXUS QuantaStor Python Client Library

OSNEXUS Ansible Modules in Git: OSNEXUS qsansible

For more information about QuantaStor Ansible automation,
checkout our blog post Automating storage provisioning using Ansible with Quantastor.