Product Documentation


Sep 29, 2015

The Citrix® Command Center NITRO protocol allows you to configure the Command Center server programmatically.

NITRO exposes its functionality through Representational State Transfer (REST) interfaces. Therefore, NITRO applications can be developed in any programming language. Additionally, for applications that must be developed in Java or .NET, NITRO APIs are exposed through Java and .NET libraries that are packaged as separate Software Development Kits (SDKs).

Note: You must have a basic understanding of the Command Center server before using the NITRO protocol. 

To use the NITRO protocol, the client application needs only the following:

  • Access to a Command Center server, version 5.1 build 30.x or later.
  • To use REST interfaces, you must have a system to generate HTTP or HTTPS requests (payload in JSON format) to the Command Center server. You can use any programming language or tool.
  • For Java clients, you must have a system where Java Development Kit (JDK) 1.5 or later is available. The JDK can be downloaded from
  • For .NET clients, you must have a system with .NET framework 3.5 or later installed. The .NET framework can be downloaded from
This topic includes the following details:

Obtaining the NITRO Package

The NITRO package is available as a tar file on the Downloads page of the Command Center server GUI. You must download and un-tar the file to a folder on your local system. This folder is referred to as <NITRO_SDK_HOME> in this documentation.

The folder contains the NITRO libraries (JARs for Java and DLLs for .NET) in the lib subfolder. The libraries must be added to the client application's classpath to access NITRO functionality. The <NITRO_SDK_HOME> folder also provides samples and documentation that can help you understand the NITRO SDK.

Note: The REST package contains only documentation for using the REST interfaces.

How NITRO Works

The NITRO infrastructure consists of a client application and the NITRO Web service running on a Command Center server. The communication between the client application and the NITRO web service is based on REST architecture using HTTP or HTTPS.

Figure 1. NITRO execution flow

As shown in the above figure, a NITRO request is executed as follows:

  1. The client application sends REST request message to the NITRO web service. When using Java or .NET SDKs, an API call is translated into the appropriate REST request message.
  2. The web service processes the REST request message.
  3. The NITRO web service returns the corresponding REST response message to the client application. When using Java or .NET SDKs, the REST response message is translated into the appropriate response for the API call.

To minimize network traffic, you retrieve the whole state of a resource from the server, make modifications to the state of the resource locally, and then upload it back to the server in one network transaction.

Note: Local operations on a resource (changing its properties) do not affect its state on the server until the state of the object is explicitly uploaded.

NITRO APIs are synchronous in nature. This means that the client application waits for a response from the NITRO web service before executing another NITRO API.