Citrix Virtual Apps and Desktops REST APIs

How to get sessions that are running on a machine

Use REST APIs to get sessions that are running on a machine in your Citrix Virtual Apps and Desktops site.

Follow the prerequisites and examples to get started with this API.

You can make API requests using the PowerShell code, C# code, Python, or any tool that supports invoking the REST API.

Prerequisites to get sessions that are running on a machine

Get sessions that are running on a machine using any REST API tool

Learn from the following example to get sessions that are running on a machine using any REST API tool.

Request

GET https://[DdcServerAddress]/cvad/manage/Machines/{nameOrId}/Sessions HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
Authorization: CWSAuth bearer=<token-from-prerequisites>
Citrix-CustomerId: loy6oujtu6a4
Citrix-InstanceId: 22ded57c-0306-47e4-b6e8-fed6252759e1
<!--NeedCopy-->

Response

HTTP/1.1 200 OK
citrix-transactionid: ba78d60e-eb03-4e15-83fb-55ee32be61be 
content-Length: 1755
content-Type: application/json; charset=utf-8
date: "Mon, 07 Dec 2020 09:25:11 GMT"
Server: Citrix Systems, Inc.

{
  "Items": [
    {
      "Id": "c12a6ce8-a3cf-4db5-83d4-d7b23374b575",
      "Uid": 34230,
      "ApplicationsInUse": [
        {
          ...
        }
      ],
      "AppState": "Active",
      "AppStateLastChangeTime": "12/7/2020 7:25:34 AM",
      "Brokering": {
        "AutonomouslyBrokered": false,
        "DurationMilliseconds": null,
        "Time": null,
        "UserName": null,
        "UserSid": null
      },
      "Client": {
        ...
      },
      "Connection": {
        "ConnectedViaHostName": null,
        "ConnectedViaIP": "10.0.16.11",
        "ConnectionMode": "Brokered",
        "LaunchedViaHostName": null,
        "LaunchedViaIP": "52.151.217.206",
        "Protocol": "Hdx",
        "SecureIcaActive": false,
        "SmartAccessTags": []
      },
      "ContainerScopes": [
        {
          "Scopes": [
            {
              ...
            }
          ],
          "ScopeType": "MachineCatalog"
        },
        {
          "Scopes": [
            {
              ...
            }
          ],
          "ScopeType": "DeliveryGroup"
        }
      ],
    ... 
  ]
}
<!--NeedCopy-->

Get sessions that are running on a machine using PowerShell

Learn from the following example to get sessions that are running on a machine using any PowerShell code.

function GetMachineSessions {
    param (
        [Parameter(Mandatory=$true)]
        [string] $customerid,
        [Parameter(Mandatory=$true)]
        [string] $siteid,
        [Parameter(Mandatory=$true)]
        [string] $nameOrId,
        [Parameter(Mandatory=$true)]
        [string] $bearerToken
    )
    $requestUri = [string]::Format("https://[DdcServerAddress]/cvad/manage/Machines/{0}/Sessions", $nameOrId)
    $headers = @{
        "Accept" = "application/json";
        "Authorization" = "CWSAuth Bearer=$bearerToken";
        "Citrix-CustomerId" = $customerid;
        "Citrix-InstanceId" = $siteid;
    }

    $response = Invoke-RestMethod -Uri $requestUri -Method GET -Headers $headers 
    return $response
}

$customerId = "customer1"
$siteId = "61603f15-cdf9-4c7f-99ff-91636601a795"
$nameOrId = "56f1cbf3-1cc6-40cd-9c82-c95633ba88bb"
$bearerToken = "ey1.."
$response = GetMachineSessions $customerid $siteid $nameOrId $bearerToken 
<!--NeedCopy-->

Get sessions that are running on a machine using C# code

Learn from the following example to get sessions that are running on a machine using any C# code.

public static async Task<string> GetMachineSessions(
    string customerid,
    string siteid,
    string nameOrId,
    string bearerToken)
{
    var requestUri = string.Format("https://[DdcServerAddress]/cvad/manage/Machines/{0}/Sessions", nameOrId);
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
        client.DefaultRequestHeaders.Add("Citrix-CustomerId", customerid);
        client.DefaultRequestHeaders.Add("Citrix-InstanceId", siteid);
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("CWSAuth Bearer=" + bearerToken);

        var response = await client.GetAsync(requestUri);

        if (response != null)
        {
            var content = await response.Content.ReadAsStringAsync();
            return content;
        }

        return null;
    }
}
<!--NeedCopy-->

Get sessions that are running on a machine using Python

Learn from the following example to get sessions that are running on a machine using Python.

import requests 

def get_machine_sessions(bearerToken, customerid, siteid, nameOrId):
    request_uri = "https://[DdcServerAddress]/cvad/manage/Machines/{0}/Sessions".format(nameOrId)
    headers = {
                'Authorization': 'CWSAuth Bearer=%s' % bearerToken,
                'Citrix-CustomerId': customerid,
                'Citrix-InstanceId': siteid,
                'Content-Type': 'application/json',
                'Accept': 'application/json'
              }

    response = requests.get(request_uri, headers = headers)

    return response.json()
<!--NeedCopy-->
Resources
Citrix Virtual Apps and Desktops REST APIs OpenAPI Specification
Copy Download
How to get sessions that are running on a machine