Getting Started

Anyware Manager offers a RESTful API as an alternative to using the Anyware Manager Admin Console. It allows for programmatic management and automation of resources in Anyware Manager deployments. The API can be used to create, configure, and manage Anyware Manager resources including deployments, connectors, and workstations (with a PCoIP agent installed). In addition it enables the entitlement of users to machines and power management on supported platforms. Currently Anyware Manager supports resource management on private (on-premises) clouds, Microsoft Azure, Amazon Web Services (AWS), and Google Cloud (GCP).

Anyware Manager Architecture

To better understand how Anyware Manager deploys and manages resources on clouds, please refer to Anyware Manager architecture documents.

API Format

All operations accept either query parameters or JSON request bodies and are authorized (excluding initial authentication) using JWTs (JSON Web Tokens). Operations return JSON responses following the JSend specification.

API Endpoint

The root endpoint for Anyware Manager API v1 is: https://cam.teradici.com/api/v1/

Dates

Dates and timestamps follow the ISO 8601 standard.
An example:

  • 2019-11-15T18:50:46.651Z

If a date is updated using '2019-11-15', Anyware Manager will record it as '2019-11-15T00:00:00.000Z'.
If a date is updated using '2019-11', Anyware Manager will record it as '2019-11-01T00:00:00.000Z'.

API Rate Limiting

Anyware Manager API usage is limited on a per-IP basis, and this rate limiting is calculated across all Anyware Manager APIs.
Current rate limiting:

  • 50 request/second per IP address

Requests exceeding any of the above limitations will return an HTTP 429 error:

  {"code":429, "status":"retry", "data":{"reason":"429 - Rate Limit Exceeded - Review Policy Here: https://cas.teradici.com/api/docs#section/Getting-Started/API-Rate-Limiting"}}

Clients should account for the specified rate limits and be able to gracefully handle 429 errors by delaying further requests.

API Request Methods

Anyware Manager provides the following methods for API requests:

  • GET used to retrieve resources
  • POST used to create resources
  • PUT used to update resources
  • DELETE used to delete resources

Note: Anyware Manager API uses URL-path and request body to receive query parameters. GET methods generally use URL query strings to send parameters and an example is presented in Add a remote workstation. Other methods may require parameters to be sent in the request body, and an example is shown in Create a connector. Please refer to instructions under each API.

Status Codes

A list of common status codes in Anyware Manager API v1:

  • 200 A successful request. 200 code will be returned in response to successful GET, PUT and DELETE requests.
  • 201 Your resource was created successfully. 201 code will be returned in response to successful POST requests.
  • 400 Invalid request. API requests lacking of appropriate parameters will return HTTP 400.
  • 401 Unauthorized request. Anyware Manager APIs generally require a valid JWT to be provided in the authorization header; if that token is missing or expired, an API request will return HTTP 401.
  • 403 You do not have the required permissions. API requests without required permission will return HTTP 403.
  • 404 Resource does not exist. If the resources you want to update/delete do not exit, Anyware Manager will return HTTP 404.
  • 409 Conflict. Trying to create a duplicate resource (such as having the same unique value) will return HTTP 409.
  • 412 Precondition Failed. If the access to the target resource has been denied, an API request will return HTTP 412.
  • 413 Payload Too Large. If the request body size is exceeded, Anyware Manager will return HTTP 413.
  • 429 Too Many Requests. If API requests exceed the defined rate limit, Anyware Manager will return HTTP 429.
  • 500 Internal server error. Anyware Manager server/database malfunction will return HTTP 500.

Anyware Manager API Access

To access and use the Anyware Manager APIs, you must be a member of Teradici Advantage Partner Program or have been pre-approved by Teradici. Contact Teradici for more information.

Anyware Manager Service Account

An Anyware Manager Service Account allows you to create a deployment and at most ONE Deployment Key for each deployment it creates. This key can then be used to create more Deployment Keys and interact with the deployment and the resources under that deployment.

You can create an Anyware Manager service account from within the Anyware Manager Admin Console by following these steps:

  1. Click on your account name and select Anyware Manager service account.

Anyware Manager Service Account

  1. Click the + icon from the Anyware Manager service account page and name your new account.

Anyware Manager Service Account

  1. Once you have created the Anyware Manager service account download the JSON file or copy the key ID. Ensure that you store the file securely as this key cannot be recovered if lost.
  2. Learn from this example of how to use the Anyware Manager Service Accounts you just created.

Prerequisites

Prior to using the Anyware Manager APIs, a Deployment and associated Deployment Service Account must be created. If you already have an existing Deployment and a Deployment Service Account, proceed to the examples section.

1. Sign in to Anyware Manager

Go to the Anyware Manager Admin Console and sign in.

Sign in to Anyware Manager

2. Create a Deployment

If you have never signed in to the Anyware Manager Admin Console before, you will be prompted to create a default deployment and enter your registration code and click unlock.

Register Deployment

Once you have unlocked the console or if you have already created a deployment, in the top bar Deployments kebab menu select edit Deployment to create a Deployment Service Account.

Edit Deployment

3. Create a Deployment Service Account

Click on the menu icon on the side of the deployment you want to generate a Deployment Service Account key for and click edit. At the bottom of the page, there is a section for Deployment Service Accounts. To add a new Deployment Service Account Key, click the Add icon next to the text.

Create a Deployment Service Account Key

Once the Deployment Service Account key has been generated, a modal will inform you to copy out the credentials. These are the credentials used to sign in and use the Anyware Manager API. Make sure you save these somewhere as they cannot be recovered once the window is closed.
Note: Every Deployment Service Account is associated to one deployment.

Get Deployment Service Account Key

The response contains the credentials for the service account. These credentials should be saved and used to sign in to Anyware Manager and obtain a token to authorize further requests.

API Examples

The examples use Python and the requests library. Execute the cells in order for each example to test common operations using the Anyware Manager API.

  import requests
  import pprint

  api_url = "https://cam.teradici.com/api/v1"

1. Sign in using a Service Account

Use the credentials you obtained from the Anyware Manager Admin Console in the prerequisites section to sign in and authenticate, which provides an authorization token scoped to the associated deployment. This token will be used for all API operations and is valid for one hour, after which it will expire and a new token can be generated by signing in again.

  # Paste your credentials into the variable below
  credentials = {"username":"-----","apiKey":"-----","deploymentId":"-----","tenantId":"-----"}
  request_body = dict(username=credentials.get('username'),
              password=credentials.get('apiKey'),
              tenantId=credentials.get('tenantId'))

  response = requests.post("{}/auth/signin".format(api_url),
  json=request_body)

  if not response.status_code == 200:
      raise Exception(response.text)
  response_body = response.json()

  auth_token = response_body.get('data').get('token')

  """
  There are two options to get a valid token:
  (1) Generate a token programmatically, just like in the example above. This token was created using
  a service account, and only works for the deployment associated with that service account.
  (2) Get a token from Anyware Manager Admin Console. This token has a tenant scope, which means it works
  for all deployments.
  """

  # Create session object; all subsequent requests using the session
  # will have the authorization header set
  session = requests.Session()

  session.headers.update({"Authorization": auth_token})

  pprint.pprint(auth_token)

2. Get the Deployment

Once you have signed in, you have access to the Deployment associated with the Service Account. It can be retrieved from /deployments and the deploymentId can be passed in to other API operations.


  # A valid deploymentId is required to generate this token
  # The deploymentId can be fetched by listing all deployments
  response = session.get("{}/deployments".format(api_url))

  if not response.status_code == 200:
      raise Exception(response.text)
  response_body = response.json()

  # The service account only has access to its one associated
  # deployment, so we get element 0
  deployment = response_body.get('data')[0]

  deployment_id = deployment['deploymentId']

  pprint.pprint(deployment_id)

3. Create a Connector

Prior to adding machines and entitlements, an Anyware Connector is required to handle brokering. Setting up an Anyware Connector requires two steps: first, generate a connector token, then install the connector.

3.1 Generate a connector token

In order to deploy an Anyware Connector you need to have a connector token, which associates an installed connector to a deployment. Once generated, the token will expire after one hour. If it expires, a new one can be generated by again calling the following API.

  body = dict(
      deploymentId=deployment_id,
      connectorName='connector0', # <- Enter your desired connector name here
  )

  response = session.post("{}/auth/tokens/connector".format(api_url), json=body)

  if not response.status_code == 200:
      raise Exception(response.text)
  response_body = response.json()

  connector_token = response_body.get('data').get('token')

  pprint.pprint(connector_token)

3.2 Install a Connector

Once you have generated a connector token, you can install a connector by following the installation guide. Alternatively, you can install the connector using these example Terraform scripts or pass the token to existing automation you may have.

3.3 Get the Connector

Once it's installed, you can query the API for the connector's health status.

  response = session.get("{}/deployments/connectors".format(api_url))

  if not response.status_code == 200:
      raise Exception(response.text)
  response_body = response.json()

  connectors = response_body.get('data')

  pprint.pprint(connectors)

4. Add a Remote Workstation

If you have an existing Remote Workstation joined to a domain controller and reachable by the connector you created previously, you can add it to Anyware Manager using these APIs.

4.1 Find an existing computer

The connector syncs computer records from Active Directory to Anyware Manager. All machines that are currently joined to the configured AD domain controller can be retrieved using the /adcomputers API.

  # Set the limit to retrieve more machines and the offset to shift the page
  # If you add computerName to the query params you can query a specific
  # machine ('computerName': {name})

  params = {'limit': 1, 'offset': 0, 'deploymentId': deployment_id}

  response = session.get("{}/machines/entitlements/adcomputers".format(api_url), params=params)

  """
  The above code is equivalent to
  response = session.get("{}/machine/entitlements/adcomputers?limit=1&offset=0&deploymentId={}".format(api_url, deployment_id))
  """

  if not response.status_code == 200:
      raise Exception(response.text)
  response_body = response.json()

  ad_computers = response_body.get('data')

  pprint.pprint("Total Computers: {}".format(response_body.get('total')))

  pprint.pprint(ad_computers)

  if ad_computers:
      machine_name = ad_computers[0]['computerName']
  else:
      raise Exception('No computers!')

4.2 Add a Remote Workstation

Once you have identified the machine you want to use, you can use the API to add a machine resource to Anyware Manager. When adding existing remote workstations (machines that have been deployed and joined to the domain), use the managed=False and provider="onprem" body parameters. This will ensure that Anyware Manager does not try to power manage the machine.

  body = dict(
      machineName= machine_name,
      deploymentId=deployment_id,
      provider='onprem',
      managed=False,
  )

  response = session.post("{}/machines".format(api_url), json=body)

  if not response.status_code == 201:
      raise Exception(response.text)
  response_body = response.json()

  machine = response_body.get('data')

  pprint.pprint(machine)

  machine_id = machine['machineId']

5. Assign User Entitlements

User entitlements associate a Directory User to a Remote Workstation, and are required for brokering. The userGuid from the directory service is used to associate the actual user to the remote workstation.

5.1 Query AD users

First we need to retrieve the list of "Active Directory Users (adusers)" in order to extract the userGuid for the user we are looking for, which can be done through the /adusers API.

  # Set the limit to retrieve more machines and the offset to shift the page
  # If you add name to the query params you can query a specific user by name
  # ('name': {name})

  params = {'limit': 1, 'offset': 0, 'deploymentId': deployment_id}

  response = session.get("{}/machines/entitlements/adusers?enabled=true".format(api_url), params=params)

  if not response.status_code == 200:
      raise Exception(response.text)
  response_body = response.json()

  ad_users = response_body.get('data')

  pprint.pprint("Total Users: {}".format(response_body.get('total')))

  pprint.pprint(ad_users)

  if ad_users:
      user_guid = ad_users[0]['userGuid']
  else:
      raise Exception('No users!')

5.2 Add an entitlement

This is done through the /entitlements API and requires a Remote Workstation ID, userGuid, and deploymentId.

First we will list the Remote Workstations and extract the Remote Workstation ID and deployment ID from the response. Then we will use the response from /adusers above to assign the first user to the Remote Workstations.


  body = dict(
      deploymentId=deployment_id,
      machineId=machine_id,
      userGuid=user_guid,
  )

  response = session.post("{}/machines/entitlements".format(api_url),
  json=body)

  if not response.status_code == 201:
      raise Exception(response.text)
  response_body = response.json()

  entitlement = response_body.get('data')

  pprint.pprint(entitlement)

6. Using an Anyware Manager Service Account

An Anyware Manager Service Account can be used to create a deployment and a Deployment service account for the deployment.

6.1 Signing in with an Anyware Manager Service Account

If you have an Anyware Manager Service Account or a Deployment Service Account you can use the function below to sign in and get a token.


  def signin_with_service_account(account):
      # sign in using the account
      resp = requests.post(
          '{}/auth/signin'.format(api_url),
          json=account,
          verify=True,
      ).json()

      token = resp.get('data').get('token')
      return token

6.2 Creating a deployment and a Deployment Service Account

The code below uses an Anyware Manager Service Account to create a deployment

  # this is the Anyware Manager service account that can be downloaded Anyware Manager Admin Console
  awm_service_account = {
    "keyId": "key-id",
    "username": "the-username",
    "apiKey": "the secret",
    "keyName": "awm-service-account-1"
  }

  token = signin_with_service_account(awm_service_account)

  # now, you use the token to create a deployment
  deployment = {
      'deploymentName' : 'my new deployment',
      'registrationCode': 'your-registration-code',
  }

  resp = requests.post(
      '{}/deployments'.format(api_url),
      headers=dict(authorization=token),
      verify=True,
      json=deployment
  ).json()

Now it uses the deployment ID and the same token to create a Deployment Service Account for the deployment.

  deployment_id = resp.get('data').get('deploymentId')

  resp = requests.post(
      '{}/auth/keys'.format(api_url),
      json={'deploymentId': deployment_id},
      verify=True,
      headers=dict(authorization=token),
  ).json()

  # get the Deployment Service Account from this response
  # YOU MUST SAVE IT, AS IT IS ONLY RETURNED NOW!
  deployment_service_account = resp.get('data')

6.3 Using the Deployment Service Account on your deployment

After having your Deployment Service Account you can use it to sign in and get a token.

  deployment_token = signin_with_service_account(deployment_service_account)
  Using this token you can now interact with your deployment.

  The code below uses the deployment token to change the deployment name.

  resp = requests.put(
      '{}/deployments/{}'.format(api_url, deployment_id),
      json={ 'deploymentName': 'my deployment renamed' },
      verify=True,
      headers=dict(authorization=deployment_token),
  ).json()

7. Establish a PCoIP session

Now that you have an entitled workstation running a PCoIP agent, you can connect to it and establish a session using a PCoIP client. The connection will be brokered by the connector you configured above.

6.1 Download a software client

If you do not already have a PCoIP software client or zero client, you can download a software client from Teradici here.

6.2 Connect to the remote workstation

In the client, enter the FQDN or IP address of the connector you set up above: Enter the credentials for the user you entitled, then select the machine and connect.
Use PCoIP client

Anyware Manager Service Account Keys

Programmatic access to perform operations on Anyware Manager resources

At this time these keys have two scopes, create:deployment_tenant and create:keys:tenant. This allows them to create a deployment and at most one Deployment Key for each deployment it creates. This key can then be used to create more Deployment Keys and interact with the deployment and the resources under that deployment.

Get Anyware Manager Service Account Keys

required scopes: read:keys_tenant

Allows authenticated clients to return a list of the user's Anyware Manager Service Account Keys.

Authorizations:
authorizationToken
query Parameters
limit
number [ 1 .. 100 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Create an Anyware Manager Service Account Key

required scopes: create:keys_tenant

Allows authenticated clients to create a new Anyware Manager Service Account Key.

Authorizations:
authorizationToken
Request Body schema: application/json
keyName
string [ 1 .. 64 ] characters

Name to identify the service account key

Responses

Request samples

Content type
application/json
{
  • "keyName": "sa-key-1"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": [
    ],
  • "status": "success"
}

Delete an Anyware Manager Service Account Key

required scopes: delete:keys_tenant

Allows authenticated clients to remove an Anyware Manager Service Account Key by keyId.

Authorizations:
authorizationToken
path Parameters
id
required
string

Key ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Deployment Keys

Programmatic Access to perform operations on Anyware Manager resources within a deployment

Get Deployment Keys

required scopes: read:keys read:keys_tenant

Allows authenticated clients to return a list of the user's Deployment Service Account Keys.

If using a tenant token deploymentId is required

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

limit
number [ 1 .. 100 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Create a Deployment Key

required scopes: create:keys_tenant

Allows authenticated clients to create a new Deployment API key.

If using a token with the create:keys_tenant scope deploymentId is required

If using a service account token only ONE key can be created per deployment and the deployment must have been originally created by that service account

Authorizations:
authorizationToken
Request Body schema: application/json
deploymentId
required
string

Deployment ID

keyName
string [ 1 .. 64 ] characters

Name to identify the key

Responses

Request samples

Content type
application/json
{
  • "deploymentId": "59499477544e6f46d1df4942",
  • "keyName": "deployment-key-1"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": [
    ],
  • "status": "success"
}

Delete a Deployment Key

required scopes: delete:keys, delete:keys_tenant

Allows authenticated clients to remove a single Deployment Service Account Key based on keyId.

If using a tenant token deploymentId is required

Authorizations:
authorizationToken
path Parameters
id
required
string

Key ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Token

Validate and revoke tokens

Revoke an auth token

required scopes: create:user, create:users_tenant

Allows clients to revoke an authorization token.

Authorizations:
authorizationToken

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Verify an auth token

Allows authenticated clients to verify if a token is still valid.

Authorizations:
authorizationToken

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Provider Service Accounts

Manage Provider Service Accounts

Validate a provider service account

Allows authenticated clients to validate provider service account credentials before performing other operations.

Azure Service Principal accounts, and Google Service accounts are supported. AWS Roles are only supported on Anyware Manager as a service. AWS service accounts are only supported on the installable Anyware Manager.

Authorizations:
authorizationToken
Request Body schema: application/json
One of
required
object (AwsServiceAccountCredentials)
provider
required
string
Value: "aws"

Responses

Request samples

Content type
application/json
Example
{
  • "credential": {
    },
  • "provider": "aws"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a list of Provider Service Accounts

required scopes: read:user, read:users_tenant

Allows authenticated clients to retrieve a list of all of their providers service accounts.

An example API call: GET https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26/cloudServiceAccounts

Azure Service Principal accounts, and Google Service accounts are supported. AWS Roles are only supported on Anyware Manager as a service. AWS service accounts are only supported on the installable Anyware Manager.

Previous endpoint https://cam.teradici.com/api/v1/auth/users/cloudServiceAccount is being deprecated and may not be supported in future

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Register a provider service account

required scopes: create:user, create:users_tenant

Allows authenticated clients to register provider service accounts that can be used to manage their infrastructure.

An example API call: POST https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26/cloudServiceAccounts

Azure Service Principal accounts, and Google Service accounts are supported. AWS Roles are only supported on Anyware Manager as a service. AWS service accounts are only supported on the installable Anyware Manager.

Anyware Manager currently supports only one service account for each provider

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Request Body schema: application/json
One of
required
object (AwsServiceAccountCredentials)
provider
required
string
Value: "aws"

Responses

Request samples

Content type
application/json
Example
{
  • "credential": {
    },
  • "provider": "aws"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "status": "success",
  • "data": {
    }
}

Delete a provider service account

required scopes: update:user, update:users_tenant

Allows authenticated clients to remove a provider service account.

An example API call: DELETE https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26/cloudServiceAccounts/123456

Azure Service Principal accounts, and Google Service accounts are supported. AWS Roles are only supported on Anyware Manager as a service. AWS service accounts are only supported on the installable Anyware Manager.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

id
required
string

Provider service account ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get the information to create an AWS Role for Anyware Manager to assume.

required scopes: read:user, read:users_tenant

Allows authenticated clients to get the information needed to create an AWS Role that Anyware Manager can assume.

This API is only available on Anyware Manager as a service and is not available on the installable Anyware Manager

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Check the expiration for secrets used in provider service accounts

Allows authenticated clients to check the expiration date for client secrets used in provider service accounts. Requires an Azure provider service account with an applicationObjectId field or Application.Read.All permissions in Microsoft Graph API.

Only Azure Service Principal accounts are supported

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Signin

Sign in to Anyware Manager service

Sign in using Azure Active Directory

Provides the ability to retrieve an API key via an Azure Active Directory credential.

In order to use this method, API clients must have already acquired a Microsoft Access Token

Authorizations:
microsoftAccessToken

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Sign in using Google

Provides the ability to retrieve an API key via a Google credential.

In order to use this method, API clients must have already acquired a Google Access Token

Authorizations:
googleAccessToken

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Sign in using a service account

Issue a programmatic authentication request with a service account.

Either the apiKey or the password field must be populated with the SA apiKey credential

Request Body schema: application/json
One of
apiKey
required
string

Service Account apiKey

username
required
string

Service Account username

Responses

Request samples

Content type
application/json
Example
{
  • "apiKey": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJvaWQ...",
  • "username": "507f1f77bcf86cd799439011"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Users

Manage users

Get users

required scope: read:users_tenant

Retrieve user account objects in our system.

An example API call: https://cam.teradici.com/api/v1/auth/users/?tenantId=666999777888

Authorizations:
authorizationToken
query Parameters
limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

tenantId
string

Query users based on a tenant ID

username
string

Query users by username

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 15,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Get a user

required scope: read:user or read:users_tenant

Allows authorized client to retrieve user account object based on userId.

An example API call: https://cam.teradici.com/api/v1/auth/users/111666999777888

Authorizations:
authorizationToken
path Parameters
id
required
string

User ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update policy acceptance dates

required scope: update:users_tenant

Updates privacy policy, eula and/or data export accepted properties when respective flag is set in the message body

Authorizations:
authorizationToken
path Parameters
id
required
string

User ID

Request Body schema: application/json
dataExportAccepted
boolean

Flag indicating whether data export consent was provided or not

eulaAccepted
boolean

Flag indicating whether EULA was accepted or not

monitorEulaAccepted
boolean

Flag indicating whether Anyware Monitor EULA was accepted or not

privacyPolicyAccepted
boolean

Flag indicating whether privacy policy was accepted or not

Responses

Request samples

Content type
application/json
{
  • "dataExportAccepted": true,
  • "eulaAccepted": true,
  • "monitorEulaAccepted": true,
  • "privacyPolicyAccepted": true
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

SAML Configuration

Manage SAML configuration

Get SAML configuration

required scope: read:signin_config

You should receive a 403 if the idp of your API token is 'saml' as users logged in via SAML can not read or change SAML configurations.

Retrieve the SAML configuration for Anyware Manager

An example API call: https://cam.teradici.com/api/v1/auth/saml

Authorizations:
authorizationToken

Responses

Response samples

Content type
application/json
{}

Create a SAML configuration

required scopes: create:signin_config

Create the SAML configuration

Authorizations:
authorizationToken
Request Body schema: application/json
domain
required
string
idpCertificate
string
name
string
signInUrl
string^https:\/\/.*

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Delete a SAML Configuration

required scope: delete:signin_config

Deletes the specified SAML configuration.

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML Configuration ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Updates a SAML configuration

required scopes: update:signin_config

Update the existing SAML configuration

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML Configuration ID

Request Body schema: application/json
enabled
boolean

Whether the configuration is enabled or not

idpCertificate
string
name
string
signInUrl
string^https:\/\/.*

Responses

Request samples

Content type
application/json
{
  • "domain": "cam.teradici.com",
  • "enabled": true,
  • "idpCertificate": "xxxxxx",
  • "name": "SAML Config",
}

Response samples

Content type
application/json
{}

SAML Allowed Users

Manage Users allowed to login via the identity provider from the SAML configuration.

Get SAML Users

required scope: read:signin_config

You should receive a 403 if the idp of your API token is 'saml' as users logged in via SAML can not read or change SAML configurations.

Retrieve the list of users allowed to login via the identity provider added to the SAML configuration.

An example API call: https://cam.teradici.com/api/v1/auth/saml/5ec86efcf26f04445d18ec12/allowedUsers

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML configuration id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success",
  • "data": [
    ]
}

Creates a new SAML allowed user

required scopes: create:signin_config

Creates a new user allowed to login using the identity provider added to the SAML configuration

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML configuration id

Request Body schema: application/json
upn
required
string

Responses

Request samples

Content type
application/json
{
  • "upn": "user@example.com"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete a SAML allowed user

required scope: update:signin_config

Deletes the user from the list of users allowed to login via SAML identity provider.

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML configuration id

userId
required
string

SAML allowed user id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

SAML Allowed Groups

Manage User Groups allowed to login via the identity provider from the SAML configuration.

Get SAML Groups

required scope: read:signin_config

You should receive a 403 if the idp of your API token is 'saml' as users logged in via SAML can not read or change SAML configurations.

Retrieve the list of user groups allowed to login via the identity provider added to the SAML configuration.

An example API call: https://cam.teradici.com/api/v1/auth/saml/5ec86efcf26f04445d18ec12/allowedUsers

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML configuration id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success",
  • "data": [
    ]
}

Creates a new SAML allowed group

required scopes: create:signin_config

Creates a new group allowed to login using the identity provider added to the SAML configuration

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML configuration id

Request Body schema: application/json
groupName
required
string

Responses

Request samples

Content type
application/json
{
  • "groupName": "CAS Manager Admins"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete a SAML allowed group

required scope: update:signin_config

Deletes the group from the list of groups allowed to login via SAML identity provider.

Authorizations:
authorizationToken
path Parameters
configurationId
required
string

SAML configuration id

groupId
required
string

SAML allowed group id

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Cloudsmith dowload token

Get a Cloudsmith download token for a given Anyware Manager repository

required scopes: read:keys_tenant or read:keys

Allows authenticated clients to get a Cloudsmith download token for a given Anyware Manager repository.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

repoName
required
string
Enum: "anyware-manager" "anyware-manager-beta" "anyware-manager-dev"
Example: anyware-manager

Name of the Anyware Manager repository to get the Cloudsmith download token for

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Deployments

Manage Deployments

Get deployments

required scopes: read:deployment or read:deployment_tenant

Allows authenticated clients to retrieve their corresponding deployments.

The current query max limit is 200. API Clients can filter requests with the parameters below.

An example API call: https://cam.teradici.com/api/v1/deployments?deploymentName=gcpproject&showactive=true

Authorizations:
authorizationToken
query Parameters
deploymentName
string

Query resources by deploymentName.

deploymentNameFilter
string

Modifies deploymentName queries. If deploymentNameFilter=includes, then deploymentName={term} becomes a search for all deployments with a deploymentName that includes that term.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

showactive
boolean
Default: true

Query resources that have the status "active".

showdeleted
boolean
Default: false

Query resources that have the status "deleted".

showdeleting
boolean
Default: false

Query resources that have the status "deleting".

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 15,
  • "offset": 0,
  • "status": "success",
  • "total": 2
}

Create a deployment

required scopes: create:deployment or create:deployment_tenant

Register a new deployment to the system.

Authorizations:
authorizationToken
Request Body schema: application/json
deploymentName
string

Name of the new deployment

registrationCode
required
string

Teradici registration code

Responses

Request samples

Content type
application/json
{
  • "deploymentName": "dep1",
  • "registrationCode": "1234-1234-1234"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete a deployment

required scopes: delete:deployment or delete:deployment_tenant

Allows authenticated clients to remove a single deployment based on deploymentId.

An example API call: https://cam.teradici.com/api/v1/deployments/5d9e3739106cee0011de4a29

Authorizations:
authorizationToken
path Parameters
id
required
string

Deployment ID

Request Body schema: application/json
deleteFromProvider
boolean
Default: false

If true, the machines in the deployment will also be deleted from the public cloud. The deployment must have valid credentials for the providers where machines are located.

Responses

Request samples

Content type
application/json
{
  • "deleteFromProvider": true
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a deployment

required scopes: read:deployment or read:deployment_tenant

Retrieve detailed deployment information.

An example API call: https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26

Authorizations:
authorizationToken
path Parameters
id
required
string

Deployment ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update a deployment

required scopes: update:deployment or update:deployment_tenant

Allows authenticated clients to update deployment information.

Authorizations:
authorizationToken
path Parameters
id
required
string

Deployment ID

Request Body schema: application/json
deploymentName
required
string

New name of the deployment

registrationCode
string

Teradici registration code

scannedOn
string

A timestamp indicating when the deployment was last scanned

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Deployment Settings

Configure Deployment Settings

Delete a deployment setting

required scopes: delete:deployment_settings or delete:deployment_settings_tenant

Delete a deployment setting with the given name.

You may not delete the following deployment settings. Attempts to do so will result in a 400 class error.

Reserved Setting Name Description
reserved Reserved for future Use
logconfig Key for logging platform used by Anyware Connectors
An example API call: `https://cam.teradici.com/api/v1/deployments/123456789/settings/gcpsettingname`
Authorizations:
authorizationToken
path Parameters
id
required
string

Deployment ID

name
required
string

Deployment setting name

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a deployment setting

required scopes: read:deployment_settings or read:deployment_settings_tenant

A deployment setting is stored as a pair name-value. Use this API to read a deployment setting with the setting name.

An example API call: https://cam.teradici.com/api/v1/deployments/123456789/settings/gcpsettingname

Authorizations:
authorizationToken
path Parameters
id
required
string

Deployment ID

name
required
string

Deployment setting name

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": "setting-value",
  • "status": "success"
}

Create or update a deployment setting

required scopes: update:deployment_settings or update:deployment_settings_tenant

Update a deployment setting with the setting name. If the setting does not exist, it will be created

You may not update the following deployment settings. Attempts to do so will result in a 400 class error.

Reserved Setting Name Description
reserved Reserved for future Use
logconfig Key for logging platform used by Anyware Connectors
An example API call: `https://cam.teradici.com/api/v1/deployments/123456789/settings/gcpsettingname`
Authorizations:
authorizationToken
path Parameters
id
required
string

Deployment ID

name
required
string

Deployment setting name

Request Body schema: application/json
value
required
string

The content of the setting

Responses

Request samples

Content type
application/json
{
  • "value": "setting-value"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Entitlements

Manage Entitlements

Get entitlements

required scope: read:entitlements or read:entitlements_tenant

Allows authenticated clients to retrieve their corresponding entitlements.

When querying using the userGuid, machineId, poolId or groupGuid query parameters, API clients can search using a single or multiple comma separated parameters.

The response will contain all entitlements that match any one of these parameters. The userGuid, machineId, poolId and groupGuid parameters are limited to 100 parameters, the max length is 4096 characters.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
entitlementType
string
Enum: "user" "group"

Query resources by entitlement types

groupGuid
Array of strings

Query entitlements by using single or multiple comma separated groupGuids.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

machineId
Array of strings

Query resources by using single or multiple comma separated machineIds.

offset
number
Default: 0

Query resources starting from offset.

poolId
Array of strings

Query by using single or multiple comma separated poolIds.

showactive
boolean
Default: true

Query resources that have the status "active".

showdeleted
boolean
Default: false

Query resources that have the status "deleted".

showdeleting
boolean
Default: false

Query resources that have the status "deleting".

upn
Array of strings

Query resources by using single or multiple comma separated UPNs. UPN is case insensitive.

userGuid
Array of strings

Query resources by using single or multiple comma separated userGuids.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Create a new entitlement

required scopes: create:entitlements or create:entitlements_tenant

Allows authenticated clients to create an entitlement. This call allows you to associate either a userGuid or groupGuid from synced directory data, or a upn (which can be from any source) with a registered machineId or poolId in our application. By leveraging your synced directory data, you can entitle users or groups. Alternatively, you can also use a upn regardless of whether it is from synced data or not. If the machine is not registered, an HTTP 400 error response will be returned.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Request Body schema: application/json
One of
poolId
required
string

Pool ID

userGuid
required
string

UserGuid from domain controller

Responses

Request samples

Content type
application/json
Example
{
  • "poolId": "of34161234712345",
  • "userGuid": "12341-12341-41123412"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete an entitlement

required scope: delete:entitlements or delete:entitlements_tenant

Allows authenticated clients to remove a single entitlement object based on entitlementId.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

entitlementId
required
string

Entitlement ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get an entitlement

required scopes: read:entitlements or read:entitlements_tenant

Allows authenticated clients to retrieve a single entitlement object based on entitlementId.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

entitlementId
required
string

Entitlement ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Allocate a machine for an entitlement

required scopes: read:entitlements or read:entitlements_tenant

Allows authenticated clients to allocate a machine for an entitlement. This call will resolve the machine associated with the entitlement to an actual machine resource.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

entitlementId
required
string

Entitlement ID

Request Body schema: application/json
userGuid
required
string

UserGuid from domain controller

Responses

Request samples

Content type
application/json
{
  • "userGuid": "12341-12341-41123412"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

AD Users

Manage AD Users. POST/POST/DELETE APIs under this section are used to synchronize user data between customers' Active Directory and Anyware Manager service. These APIs only manipulate AD User data in Anyware Manager service and Anyware Manager itself cannot create or delete users in customers' Active Directory. APIs under this section are generally used by Anyware Connector (provide data synchronization) and Anyware Manager Admin Console (allow customers to see human readable information from their domains). Anyware Manager only maintains the latest AD User data from customers' Domain Controllers. Any AD User data, if not present in the subsequent Anyware Connector's synchronization, will be deleted from Anyware Manager service.

Delete multiple AD User objects

required scope: delete:entitlements

Allows authenticated clients to delete Active Directory Users based on userGuid from Anyware Manager.

The request body can contain either base64-encoded content or a JSON array.

Note: This API only deletes AD User data from Anyware Manager and has no effect on the Domain Controller.

This operation is restricted to 1 request per second per authenticated token

Authorizations:
authorizationToken
Request Body schema: application/json
One of
Array
deploymentId
string

Deployment ID

userGuid
required
string

UserGuid from domain controller

Responses

Request samples

Content type
application/json
Example
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get AD User objects

required scope: read:entitlements or read:entitlements_tenant

Allows authenticated clients to retrieve their registered AD Users from Anyware Manager service. AD User data is synchronized between Anyware Manager and customers' Active Directory by Anyware Connectors.

This operation is restricted to 1 request per second per authenticated token

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

enabled
boolean

Query resources that have the flag enabled.

entitlementResourceType
string
Enum: "machine" "pool"

Specify the type of the entitlement resource to consider when withEntitlements=true. If withEntitlements=true and entitlementResourceType=machine, it will only return users entitled to machines. This option has no effect if withEntitlements=false or is not present.

fields
string

Comma seperated list of exclusive fields to return. Valid fields are 'name', 'userName', 'upn', 'userGuid', 'enabled', and 'createdOn'.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

name
string

Query adUsers by name.

nameFilter
string

Modifies name queries. If nameFilter=includes, then name={term} becomes a search for all adUsers with a name that includes that term.

offset
number
Default: 0

Query resources starting from offset.

sortKey
string

The field upon which adUsers are sorted on. By default, we return adUsers sorted by name in ascending alphabetical order. Sorting is only supported on name, userName, userGuid, enabled, and createdOn.

upn
string

Query resources by UPN. UPN is case insensitive.

userGuid
string

Query entitlements by using either a single userGuid or multiple comma separated userGuids.

userName
string

Username of the user in Active Directory

userNameFilter
string

Modifies userName queries. If userNameFilter=includes, then userName={term} becomes a search for all adUsers with a userName that includes that term.

withEntitlements
boolean

Only return users that have at least one entitlement to a remote workstation or pool. If false, returns users that are not entitled to any machines or pools.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Create multiple AD User objects

required scope: create:entitlements

Allows authenticated clients to create or update Active Directory (AD) User information in Anyware Manager.

The request body can contain either base64-encoded content or a JSON array The total body size for this request cannot exceed 5 MB, otherwise an HTTP 413 error will be returned.

Note: This API only creates/updates AD User data in Anyware Manager and has no effect on the Domain Controller.

This operation is restricted to 1 request per second per authenticated token

Authorizations:
authorizationToken
Request Body schema: application/json
One of
createdBy
required
string

ID of the user in Anyware Manager

createdOn
required
string

Creation timestamp

deploymentId
required
string

Deployment ID

enabled
required
boolean

Whether the user is enabled or not

groups
required
Array of strings

Groups that the user belongs to in Active Directory

name
required
string

Full name of the user in Active Directory

upn
string or null

Upn of the user in Active Directory

userGuid
required
string

UserGuid from domain controller

userName
required
string

Username of the user in Active Directory

usnChanged
required
string

USN-Changed attribute in Active Directory

Responses

Request samples

Content type
application/json
Example
{
  • "createdBy": "5a4ead5dd4f0710029b02b9a",
  • "createdOn": "2018-01-05T00:06:29.180Z",
  • "deploymentId": "123456234241",
  • "enabled": true,
  • "groups": [
    ],
  • "name": "testUser",
  • "upn": "testUser@example.com",
  • "userGuid": "12341123412",
  • "userName": "testUser",
  • "usnChanged": "no"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "status": "success"
}

AD Computers

Manage AD Computers. POST/POST/DELETE APIs under this section are used to synchronize computer data between customers' Active Directory and Anyware Manager service. These APIs only manipulate AD Computer data in Anyware Manager service and Anyware Manager itself cannot create or delete computers in customers' Active Directory. APIs under this section are generally used by Anyware Connector (provide data synchronization) and Anyware Manager Admin Console (allow customers to see human readable information from their domains). Anyware Manager only maintains the latest AD Computer data from customers' Domain Controllers. Any AD Computer data, if not present in the subsequent Anyware Connector's synchronization, will be deleted from Anyware Manager service.

Delete multiple AD Computer objects

required scope: delete:entitlements

Allows authenticated clients to delete Active Directory Computers based on a computerHostname and deploymentId.

The request body can contain either base64-encoded content or a JSON array.

Note: This API only deletes AD Computer data from Anyware Manager and has no effect on the Domain Controller.

This operation is restricted to 1 request per second per authenticated token

Authorizations:
authorizationToken
Request Body schema: application/json
One of
Array
computerHostname
required
string

Host name of the computer in Active Directory

deploymentId
required
string

Deployment ID

Responses

Request samples

Content type
application/json
Example
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get AD Computer objects

required scope: read:entitlements or read:entitlements_tenant

Allows authenticated clients to retrieve their registered Active Directory (AD) Computers. AD Computer data is synchronized between Anyware Manager and customers' Active Directory by Anyware Connectors.

This operation is restricted to 1 request per second per authenticated token

Authorizations:
authorizationToken
query Parameters
computerName
string

Query adComputers by computerName.
You can search for computerNames that include a specific term by providing ?computerName=includes:{term}. You can also search by computer names providing a comma separated list of computer names as ?computerName=name1,name2,name3. The computer names for this parameter are case insensitive.

deploymentId
string

Query resources based on the deploymentId.

filterAdded
boolean
Default: false

Filter computers that have already been added to Anyware Manager.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Create or update multiple AD Computer objects

required scope: create:entitlements

Create or update Active Directory (AD) Computer Objects by ID.

The request body can contain either base64-encoded content or a JSON array. The total body size for this request cannot exceed 5 MB, otherwise an HTTP 413 error will be returned.

Note: This API only creates/updates AD Computer data in Anyware Manager and has no effect on the Domain Controller.

This operation is restricted to 1 request per second per authenticated token

Authorizations:
authorizationToken
Request Body schema: application/json
One of
Array
computerHostname
required
string

Host name of the computer in Active Directory.

computerName
required
string

Name of the computer in Active Directory

createdBy
required
string

ID of the user in Anyware Manager

createdOn
string <date-time>

Creation timestamp

deploymentId
required
string

Deployment ID

operatingSystem
required
string

Operating system of the computer

operatingSystemVersion
required
string

Operating system version of the computer

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
{
  • "code": 201,
  • "status": "success"
}

Connectors

Manage Connectors

Create a connector token

required scopes: create:connectors_tenant, create:connectors

The connector token is used to add a new Anyware Connector to an existing deployment. As such, while using this API, you must provide a deploymentId that the provided authorization token has access to. Once the connector token is generated, it can be passed to the Anyware Connector Installer. You can also get a connector token from Anyware Manager Admin Console.

Authorizations:
authorizationToken
Request Body schema: application/json
connectorId
string

ID of another connector to copy settings from

connectorName
required
string

Name of the connector

createdBy
string

The ID of the user that created the resource

deploymentId
required
string

Deployment ID

Responses

Request samples

Content type
application/json
{
  • "connectorName": "my_connector",
  • "createdBy": "5a4ead5dd4f0710029b02b9a",
  • "deploymentId": "59499477544e6f46d1df4942"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get Anyware Connectors

required scopes: read:connectors or read:connectors_tenant

Allows authenticated clients to retrieve their corresponding connectors.

API Clients can filter requests with the parameters below. Connectors are ordered by createdOn, showing most recent first.

An example API call: https://cam.teradici.com/api/v1/deployments/connectors?deploymentId=5d9e3739106cee0011de4a256

Authorizations:
authorizationToken
query Parameters
connectorId
string

Query connectors by using single or multiple comma separated connectorIds

connectorName
string

Query resources by connectorName.

connectorNameFilter
string

Modifies connectorName queries. If connectorNameFilter=includes, then connectorName={term} becomes a search for all connectors with a connectorName that includes that term.

deploymentId
string

Query resources based on the deploymentId.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

showactive
boolean
Default: true

Query resources that have the status "active".

showdeleted
boolean
Default: false

Query resources that have the status "deleted".

showdeleting
boolean
Default: false

Query resources that have the status "deleting".

showpending
boolean
Default: true

Query resources that have the status "pending".

sortAsc
boolean
Default: true

Determines whether or not connectors are returned in ascending order.

sortKey
string

The field upon which connectors are sorted on. By default, we return connectors from most recent createdOn to least recent. Sorting is only supported on connectorName, createdOn, and updatedOn.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Create an Anyware Connector object

required scopes: create:connectors, create_connectors_tenant

Allows authenticated clients to register new Cloud Access connectors.

Connector names must be unique

The connector name is contained within the connector token

Authorizations:
authorizationToken
Request Body schema: application/json
Array of objects

Capabilities of the connector

connectorName
string

Name of the new connector

connectorToken
string

Connector Token is created by a Anyware Manager API

dcIp
Array of strings

IP address of domain controllers

internalIp
string

Internal IP address

status
string
Enum: "active" "pending"

State to set connector to

Responses

Request samples

Content type
application/json
{
  • "capabilities": [
    ],
  • "connectorToken": "JWT",
  • "dcIp": [
    ],
  • "internalIp": "127.0.0.1"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete an Anyware Connector object

required scopes: delete:connectors, delete:connectors_tenant

Allows authenticated clients to remove a single connector object based on connectorId.

An example API call: https://cam.teradici.com/api/v1/deployments/connectors/5d9e3739106cee0018de4a256

Authorizations:
authorizationToken
path Parameters
id
required
string

Connector ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get an Anyware Connector object

required scopes: read:connectors or read:connectors_tenant

Allows authenticated clients to retrieve a single connector object based on connectorId.

An example API call: https://cam.teradici.com/api/v1/deployments/connectors/5d9e3739106cee0018de4a256

Authorizations:
authorizationToken
path Parameters
id
required
string

Connector ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update an Anyware Connector object

required scopes: update:connectors or update:connectors_tenant

Allows authenticated clients to update a single connector object based on connectorId. Currently only support connectorName update.

Authorizations:
authorizationToken
path Parameters
id
required
string

Connector ID

Request Body schema: application/json
object

Capabilities of the connector

connectorName
string

New name for the connector

enterpriseReadiness
boolean

Overall enterprise readiness of the connector

Responses

Request samples

Content type
application/json
{
  • "capabilities": {
    },
  • "connectorName": "New connector name",
  • "enterpriseReadiness": true
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update an Anyware Connector object's health

required scopes: update:connectors update:connectors_tenant

Allows connectors to update health status by passing their components. This API is only applicable to connectors.

Authorizations:
authorizationToken
path Parameters
id
required
string

Connector ID

Request Body schema: application/json
required
object

Components of connectors

connectorId
required
string

Connector ID

Responses

Request samples

Content type
application/json
{
  • "components": {
    },
  • "connectorId": "1"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Connector Events

Get Anyware Connector Events

required scopes: read:connectors or read:connectors_tenant

Allows authenticated clients to retrieve their corresponding Connector events. Connector events are sent from the Connector upon a command execution.

API Clients can filter requests with the parameters below. An example API call: https://cam.teradici.com/api/v1/deployments/connectors/events?commandId=5d9e3739106cee0011de4a256

Authorizations:
authorizationToken
path Parameters
connectorId
required
string

Connector ID

query Parameters
commandId
string

The commandID of the associated events to query for.

eventType
string
Enum: "event" "commandStatusUpdate"

The type of event to query for.

level
string
Enum: "debug" "info" "warn" "error"

The event level of the events to query for.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

sortAsc
boolean
Default: false

Determines whether or not events are returned in ascending order.

sortKey
string
Enum: "timestamp" "commandId"

The field upon which Connector events are sorted on.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 20,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Create one or more Connector events

required scopes: create:connectors, create:connectors_tenant, create:events

Allows authenticated clients create one or more Connector events.

Authorizations:
authorizationToken
path Parameters
connectorId
required
string

Connector ID

Request Body schema: application/json
action
string

The action a user should take to resolve the problem described in the event.

commandId
required
string

The ID of the command associated with the event.

data
object

Additional data associated with the event.

eventType
required
string
Enum: "event" "commandStatusUpdate"

The type of the event.

level
required
string
Enum: "warn" "info" "error" "debug"

The level of severity of the event.

summary
required
string

A summary of the event.

timestamp
required
string <date-time>

The timestamp when the event occurred.

Responses

Request samples

Content type
application/json
{
  • "action": "string",
  • "commandId": "string",
  • "data": { },
  • "eventType": "event",
  • "level": "warn",
  • "summary": "string",
  • "timestamp": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Get a Connector event

required scopes: read:connectors or read:connectors_tenant

Allows authenticated clients to retrieve a single Connector event, based on the event ID.

An example API call: https://cam.teradici.com/api/v1/deployments/connectors/5d9e3739106cee0018de4a256/events/625b7263a172fa926172ce31

Authorizations:
authorizationToken
path Parameters
connectorId
required
string

Connector ID

eventId
required
string

Event ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Get the latest Connector events

required scopes: read:connectors or read:connectors_tenant

Allows authenticated clients to retrieve the events associated with the latest Connector command execution.

An example API call: https://cam.teradici.com/api/v1/deployments/connectors/5d9e3739106cee0011de4a256/events/latest

Authorizations:
authorizationToken
path Parameters
connectorId
required
string

Connector ID

query Parameters
limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

sortAsc
boolean
Default: false

Determines whether or not events are returned in ascending order.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Pools

Manage Pools

Get pools

required scopes: read:pools or read:pools_tenant

Allows authenticated clients to retrieve their pools.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
assignmentPolicy
string
Default: ""
Enum: "floating" "persistent"

Query pools on assignment policy. "floating", "persistent", or either if left empty.

limit
number [ 1 .. 200 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 25,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Create a pool

required scopes: create:pools or create:pools_tenant

Create a pool

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Request Body schema: application/json
assignmentHoldingTime
integer [ 20 .. 1576800 ]
Default: 20

Holding time in minutes

assignmentPolicy
string
Default: "persistent"
Enum: "persistent" "floating"
poolName
required
string [ 1 .. 64 ] characters

Name of the pool

Responses

Request samples

Content type
application/json
{
  • "assignmentHoldingTime": 20,
  • "assignmentPolicy": "floating",
  • "poolName": "floating-pool-2"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete a pool

required scopes: delete:pools or delete:pools_tenant

Delete an existing pool.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

Request Body schema: application/json
deleteFromProvider
boolean
Default: false

If true, remote workstations in the pool will also be deleted from the provider. This only occurs if deleteMachines is also set to true.

deleteMachines
boolean
Default: false

If true, remote workstations in the pool will be deleted.

Responses

Request samples

Content type
application/json
{
  • "deleteFromProvider": false,
  • "deleteMachines": false
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a pool

required scopes: read:pools or read:pools_tenant

Allows authenticated clients to retrieve details about a pool.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update a pool

required scopes: update:pools or update:pools_tenant

Update the attributes of a pool.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

Request Body schema: application/json
assignmentHoldingTime
integer [ 20 .. 1576800 ]

Holding time in minutes

poolName
string [ 1 .. 64 ] characters

Name of the pool

Responses

Request samples

Content type
application/json
{
  • "assignmentHoldingTime": 20,
  • "poolName": "pool-0"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Pool Machines

Manage assignment of machines to pools

Remove a machine from a pool

required scopes: delete:pools or delete:pools_tenant

Remove a machine that has been assigned to a pool

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

Request Body schema: application/json
object (PoolMachinesCreateEntitlement)
machineId
required
string

Machine Id

Responses

Request samples

Content type
application/json
{
  • "entitlement": {
    },
  • "machineId": "507f1f77bcf86cd799420591"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get the machines assigned to a pool

required scopes: read:pools or read:pools_tenant

Allows authenticated clients to retrieve machines assigned to a pool.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

query Parameters
assigned
boolean

Query assigned machines if the value is true or unassigned machines if the value is false. If not set at all, query all assigned and unassigned machines. This parameter is ignored if assignedTo is set.

assignedTo
string

Query pool machines by the userGuid assigned to them

limit
number [ 1 .. 200 ]
Default: 25

Query the given number of machines.

machineName
string

Query pool machines based on machineName. machineName is the name of the machine that is assigned to a specific pool

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 25,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Add a machine to a pool

required scopes: update:pools or update:pools_tenant

Add a machine within Anyware Manager to a pool. There are two scenarios based on whether a machine has already been entitled to individual users before adding this machine to a pool:

Scenario 1: If the machine has not been entitled to any individual user, request body does not need the entitlement option. Only set up machineId in the request body and the machine will be added to the pool.

Scenario 2: If the machine has already been entitled to individual users, entitlement option is required in the request body to indicate entitlement migration. If you do not want to migrate entitlement, just set up {entitlement: {userGuid: null}} in the request body and Anyware Manager will ignore entitlement migration.

One example: machine-1 has already been entitled to userGuid-1. When add machine-1 to pool-1, we can set up {entitlement: {userGuid: userGuid-1}} in the API request body to migrate existing entitlement (userGuid-1 -> machine-1). Then userGuid-1 can access machine-1 through pool-1 (userGuid-1 -> pool-1 -> machine-1). Users need to be entitled to pools before entitlement migration. In this example, Anyware Manager will return 404 error if userGuid-1 has not been entitled to pool-1. Existing entitlement (userGuid-1 -> machine-1) will be still valid after this entitlement migration.

Note: Anyware Manager can migrate at most one entitlement for each machine. If a machine has been directly entitled to multiple users, you may have to choose one of them for entitlement migration.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

Request Body schema: application/json
object (PoolMachinesCreateEntitlement)
machineId
required
string

Machine Id

Responses

Request samples

Content type
application/json
{
  • "entitlement": {
    },
  • "machineId": "507f1f77bcf86cd799420591"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Update the assignment of a machine

required scopes: update:pools or update:pools_tenant

Update the assignment of a machine within a pool. Each machine in a pool can be assigned to a single user. The assignedTo property can be passed as a directory userGuid to set the assigned user or setting it to null or empty string to unassign the machine.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

poolId
required
string

Pool ID

Request Body schema: application/json
assignedTo
string or null

Assigned user ID. Set null or '' to unassign user

machineId
required
string

Machine Id

Responses

Request samples

Content type
application/json
{
  • "assignedTo": "507f191e810c14832de860xz",
  • "machineId": "507f1f77bcf86cd799420591"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get the configuration of pool machines in a deployment

required scopes: read:pools or read:pools_tenant

Allows authenticated clients to retrieve configuration details of machines assigned to pools within a deployment.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
limit
number [ 1 .. 200 ]
Default: 25

Query the given number of machines.

machineId
string

Query machines by using single or multiple comma separated machineIds.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 25,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Machines

Manage Machines

Get machines

required scope: read:machine or read:machine_tenant

Allows authenticated clients to retrieve their corresponding machines.

API clients can search for a single machine by providing its ID in the machineId parameter. To search for multiple machines, provide a list of comma-separated machine IDs in the machineId parameter, up to a maximum of 100 machine IDs. Keep in mind that the overall URL length is limited to 4,096 characters, so you may not be able to provide all 100 machine IDs.

An example API call: https://cam.teradici.com/api/v1/machines?machineId=12345,67891,3421&deploymentId=666999777

Authorizations:
authorizationToken
query Parameters
agentMonitored
boolean

Boolean indicating if the Anyware Monitor should be enabled in the workstation

connectorId
string

Query connectors by using single or multiple comma separated connectorIds

deploymentId
string

Query resources based on the deploymentId.

filterPoolMachines
boolean
Default: false

Query machines that have not been added to any pools.

forceRefresh
boolean

A parameter that determines the source of the workstations details. If set to true, the details are retrieved from the provider. If set to false, the details are retrieved from cache. The default value is false.
Note that using the provider as the source may increase the response time for large queries.

hostName
string

Query machines based on hostName, which is either the name of the machine in Active Directory or a private IP address accessible by an Anyware Connector. It can be different from the machineName.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

machineId
string

Query machines by using single or multiple comma separated machineIds.

machineName
string

Query machines based on machineName. machineName is the name of the machine (instance) within a provider, and may match the hostname in Active Directory. Multiple machineNames can be queried if ?machineName is a comma-separated list of machineNames.

machineNameFilter
string

Modifies machineName queries. If machineNameFilter=includes, then machineName={term} becomes a search for all machines with a machineName that includes that term. If a machineNameFilter is specified, a comma-separated list of machineNames is treated as a single machineName.

managed
boolean

Query only managed machines.

offset
number
Default: 0

Query resources starting from offset.

provider
string
Enum: "aws" "azure" "gcp" "onprem"

Name of the provider used to access the remote workstation and enable power management.

refreshMachineState
boolean

Retrieve the updated machine state from the workstation provider. Defaults to false.
Setting this to true for a large query will result in longer response time.

resourceGroup
string

Query based on the resourceGroup.

showactive
boolean
Default: true

Query resources that have the status "active".

showdeleted
boolean
Default: false

Query resources that have the status "deleted".

showdeleting
boolean
Default: false

Query resources that have the status "deleting".

sortAsc
boolean
Default: true

Determines whether or not machines are returned in ascending order.

sortKey
string

The field upon which machines are sorted on. By default, we return machines from most recent createdOn to least recent. Sorting is only supported on machineName, managed, provider, powerState, createdOn, and updatedOn.

subscriptionId
string

Query based on the subscriptionId.

withEntitlements
boolean

Only return machines with entitlements. If false, returns machines with and without entitlements.

withRecentMonitorTelemetry
boolean

Specify true to return only workstations that have recent Anyware Monitor telemetry. Specify false to return only workstations with outdated or never updated Anyware Monitor telemetry. If not set, returns all workstations regardless of their Anyware Monitor telemetry status.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Add an existing machine

required scopes: create:machine or create:machine_tenant

Add an existing machine to a deployment.

Authorizations:
authorizationToken
query Parameters
verifyExistsInProvider
boolean
Default: false

If true, Anyware Manager will verify that the workstation exists in the specified provider before completing the operation. If the workstation could not be found, then Anyware Manager will return a 400 response.

Request Body schema: application/json
One of
agentMonitored
boolean

If the Anyware Monitor is enabled or not

connectorId
string

Connector ID

deploymentId
string

Deployment ID

hostName
string

Name of the machine in Active Directory or a private IP address accessible by an Anyware Connector. hostName should be unique under one deployment. (If this field is not provided, it will be automatically copied from the machineName. If the machineName is longer than 15 characters, hostName will be truncated to 15 characters)

instanceId
required
string

Instance ID of the machine in AWS

machineName
required
string

Name of the machine (instance) from the workstation provider.

managed
boolean
Default: true
poolId
string

Specifies the ID of the pool the machine will be added to.

protocol
Array of strings
Default: ["PCOIP"]
Items Enum: "PCOIP" "RDP" "ICA" "WEBRTC_RDP" "WEBRTC"

A list of supported protocols

provider
required
string
Value: "aws"
region
required
string

Region where the machine is located in AWS

Responses

Request samples

Content type
application/json
Example
{
  • "connectorId": "dffefde34235u405890efeidpsf",
  • "deploymentId": "5a4ead5e79f06d001d1a2ef5",
  • "hostName": "awsvmhostname",
  • "instanceId": "i-0dd652476b7b3c4d1",
  • "machineName": "awsmachine",
  • "managed": true,
  • "provider": "aws",
  • "region": "us-east-2"
}

Response samples

Content type
application/json
Example
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Delete a machine

required scopes: delete:machine or delete:machine_tenant

Delete the machine based on machineId.

If the user has read and delete entitlements permission, it will also delete the entitlements associated with this machine.

An example API call: https://cam.teradici.com/api/v1/machines/666999777

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Request Body schema: application/json
deleteFromProvider
boolean
Default: false

If true, the actual machine will also be deleted from the provider.

Responses

Request samples

Content type
application/json
{
  • "deleteFromProvider": true
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a machine

required scope: read:machine or read:machine_tenant

Retrieve the information for the given machine based on machineId.

If the machine is registered in the system but can not be verified with the provider, the machine will be set to inactive and powerState to unknown.

An example API call: https://cam.teradici.com/api/v1/machines/666999777

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

query Parameters
forceRefresh
boolean

A parameter that determines the source of the workstations details. If set to true, the details are retrieved from the provider. If set to false, the details are retrieved from cache. The default value is false.
Note that using the provider as the source may increase the response time for large queries.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update a machine

required scopes: update:machine or update:machine_tenant

Allows authenticated clients to update a machine information based on machineId by providing the field name and value as part of the request body.

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

query Parameters
verifyExistsInProvider
boolean
Default: false

If true, Anyware Manager will verify that the workstation exists in the specified provider before completing the operation. If the workstation could not be found, then Anyware Manager will return a 400 response.

Request Body schema: application/json
One of
active
boolean

If the workstation is active or not

agentMonitored
boolean

If the Anyware Monitor is enabled or not

hostName
string

Name of the machine in Active Directory. The length of hostName must be at most 15 characters. hostName should be unique under one deployment.

machineName
string

Name of the machine. The length of machine name must be at most 15 characters.

managed
boolean

Managed or not

protocol
Array of strings
Items Enum: "PCOIP" "RDP" "ICA" "WEBRTC_RDP" "WEBRTC"

A list of supported protocols

providerAlternateHostName
string

The alternate hostname used by the provider. If not set, the provider will default to the hostName property.

Responses

Request samples

Content type
application/json
Example
{
  • "active": true,
  • "agentMonitored": true,
  • "hostName": "string",
  • "machineName": "string",
  • "managed": true,
  • "protocol": [
    ],
  • "providerAlternateHostName": "string"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Power Management

Power manage machines

Restart a machine

required scopes: create:machine or create:machine_tenant

Allows authenticated clients to restart a machine.

The machine must be managed

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Start a machine

required scopes: create:machine or create:machine_tenant

Allows authenticated clients to start a machine.

The machine must be managed

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Stop a machine

required scopes: create:machine or create:machine_tenant

Allows authenticated clients to stop a machine.

The machine must be managed

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

AWS Provider Info

List AWS EC2 instances

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to get a list of AWS EC2 instances
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/aws/instances?deploymentId=5e26eef7f0&region=us-east-2

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

filterAdded
boolean
Default: false

Filter computers that have already been added to Anyware Manager.

region
required
string

Name of the region in the cloud

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Azure Provider Info

List Azure VM instances

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to get a list of Azure VM instances
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/azure/instances?deploymentId=5e26eef7f0

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

filterAdded
boolean
Default: false

Filter computers that have already been added to Anyware Manager.

resourceGroup
string

Query based on the resourceGroup.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get available locations

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to list available locations from Azure
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/azure/locations?deploymentId=5e2635f367aa2f0021eef7f0

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Get available Azure resource groups

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to get the resource groups list from Azure
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/azure/resourceGroups?deploymentId=5e2635f367aa2f0021eef7f0&subscriptionId=779dc830-3fd1-5dcf-a53e-06dec45cd781

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

subscriptionId
required
string

Query based on the subscriptionId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Get available subnets

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to list available subnets from Azure for a given resource group
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/azure/subnets?deploymentId=5e2635f367aa2f0021eef7f0&resourceGroup=example-resource-group

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

resourceGroup
required
string

Name of the azure resource group

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Get available VM sizes

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to list available VM sizes from Azure for a given location
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/azure/vmsizes?deploymentId=5e2635f367aa2f0021eef7f0&location=eastus2

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

location
required
string

Name of the azure location in the cloud

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

GCP Provider Info

Get Google cloud information

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get GCP information.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp?deploymentId=5cfee4cbddb3990011d61ea9

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

List GCP VM instances

required scopes: read:deployments or read:deployments_tenant



Description

Allows authenticated clients to get a list of GCP VM instances
An example API call:
https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/instances?deploymentId=5e26eef7f0

Authorizations:
authorizationToken
query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

filterAdded
boolean
Default: false

Filter computers that have already been added to Anyware Manager.

zone
string

Name of the zone in the cloud

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get network information

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get network information from GCP.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/networks?deploymentId=5cfee4cbddb3990011d61ea0

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get region information

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get region information from GCP.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/regions?deploymentId=5cfee4cbddb3990011d61ea0

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get Subnetwork information

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get subnetwork information in a region from GCP.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/regions/asia-east1/Subnetworks?deploymentId=5d9e3739106cee0011de4a28

Authorizations:
authorizationToken
path Parameters
region
required
string

Region in the cloud

query Parameters
deploymentId
string

Query resources based on the deploymentId.

network
string

Name of the network in the cloud

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get zone information

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get zone information from regions from GCP.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/regions/asia-east1/zones?deploymentId=5d9e3739106cee0011de4a29

Authorizations:
authorizationToken
path Parameters
region
required
string

Region in the cloud

query Parameters
deploymentId
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get available accelerator types

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get accelerator types from GCP.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/zones/us-central1-c/acceleratorTypes?deploymentId=5d9e3739106cee0011de4a21

Authorizations:
authorizationToken
path Parameters
zone
required
string

Name of the zone in the cloud

query Parameters
deploymentId
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get available boot disk types

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get types of boot disks from GCP.

An example API call: https://cam.teradici.com/api/v1/machines/cloudproviders/gcp/zones/us-central1-c/bootableDiskTypes?deploymentId=5d9e3739106cee0011de4a22

Authorizations:
authorizationToken
path Parameters
zone
required
string

Name of the zone in the cloud

query Parameters
deploymentId
string

Query resources based on the deploymentId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Get machine types

required scopes: read:deployments or read:deployment_tenant

Allows authenticated clients to get machine types from GCP.

An example API call: https://cam.teradici.com//api/v1/machines/cloudproviders/gcp/zones/us-central1-c/machineTypes?deploymentId=5d9e3739106cee0011de4a25

Authorizations:
authorizationToken
path Parameters
zone
required
string

Name of the zone in the cloud

query Parameters
deploymentId
required
string

Query resources based on the deploymentId.

minimumCpu
integer

Query resources with at least the specified number of CPUs.

minimumRamGb
number

Query resources with at least the specified amount of RAM measured in GB.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Activity Logs

View logs of actions performed in your Anyware Manager environment.

Get activity logs

required scopes: read:logs, read:logs_tenant

Allows authenticated clients to return a list of logs from actions performed in Anyware Manager.

Authorizations:
authorizationToken
query Parameters
connectorId
string

Query connectors by using single or multiple comma separated connectorIds

deploymentId
string

Query resources based on the deploymentId.

from
string

Query for activity logs made on and after the specified date-time. Accepts ISO date strings. Cannot be a date-time that is ahead of the "to" parameter.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

operation
string

The operation which occurred in your Anyware Manager environment (e.g. UpdateMachine, CreateDeployment).

sortAsc
boolean
Default: false

Determines whether or not logs are returned in ascending order.

sortKey
string
Default: "createdOn"

The field upon which logs are sorted on. By default, we return logs from most recent createdOn to least recent. Sorting is only supported on createdOn and upn.

to
string

Query for activity logs made until the specified date-time. Accepts ISO date strings.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Download activity logs

required scopes: read:logs, read:logs_tenant

Allows authenticated clients to download a csv file of logs from actions performed in Anyware Manager.

Authorizations:
authorizationToken
query Parameters
connectorId
string

Query connectors by using single or multiple comma separated connectorIds

deploymentId
string

Query resources based on the deploymentId.

from
string

Query for activity logs made on and after the specified date-time. Accepts ISO date strings. Cannot be a date-time that is ahead of the "to" parameter.

limit
number [ 1 .. 100000 ]
Default: 100000

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

operation
string

The operation which occurred in your Anyware Manager environment (e.g. UpdateMachine, CreateDeployment).

to
string

Query for activity logs made until the specified date-time. Accepts ISO date strings.

Responses

Response samples

Content type
application/json
{
  • "code": 400,
  • "data": {
    },
  • "status": "fail"
}

Health Check

Check the system health

Get system health

Provides an overall health status for the system.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Anyware Monitor Actions

Logout user from a workstation

required scopes: create:machine or create:machine_tenant

Allows authenticated API clients to logout users from a workstation that is running the AWM Monitor. This process is async and a successful result from this API implicate that the logout request was queued to be forwarded to the workstation.

The workstation must have the AWM Monitor installed and running. The monitor must be shown as healthy in the workstation properties on the Anyware Manger in order to have the command delivered to the workstation. It is required that the property agentMonitored is set to true in the machine object. This will happen automatically when the AWM Monitor is installed in the user workstation.

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Request Body schema: application/json
secondsBeforeSend
integer
Default: 0

The minimum number of seconds to wait before actually execute the action. The number of seconds value is not precisely respected. The action can occur up to 20 seconds after the specified number of seconds.

userName
required
string

The username of of the user who should be logged out from the workstation.

Responses

Request samples

Content type
application/json
{
  • "secondsBeforeSend": 300,
  • "userName": "john"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Send a notification message

required scopes: create:machine or create:machine_tenant

Allows authenticated API clients to send a notification message to the user logged in to the workstation where the AWM Monitor is running. This process is async and a successful result from this API does not implicate that the user received the notification, but only that the notification was queued to be forwarded to the AWM Monitor on the workstation.

The workstation must have the AWM Monitor installed and running. The monitor must be shown as healthy in the workstation properties on the Anyware Manger in order to have the command delivered to the workstation. It is required that the property agentMonitored is set to true in the machine object. This will happen automatically when the AWM Monitor is installed in the user workstation.

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Request Body schema: application/json
body
required
string

The main text of the notification that will be displayed to the user on the workstation.

secondsBeforeSend
integer
Default: 0

The minimum number of seconds to wait before actually execute the action. The number of seconds value is not precisely respected. The action can occur up to 20 seconds after the specified number of seconds.

title
required
string

The title of the notification that will be displayed to the user on the workstation.

Responses

Request samples

Content type
application/json
{
  • "body": "This is body of the notification. A multi-line message that the user will see.",
  • "secondsBeforeSend": 300,
  • "title": "This is the title of the notification"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Request monitor to send update

required scopes: create:machine or create:machine_tenant

Allows authenticated clients to request an update from the Anyware monitor running on the workstation. This process is async and a successful result from this API implicate that update request was queued to be forwarded to the workstation.

The workstation must have the AWM Monitor installed and running. The monitor must be shown as healthy in the workstation properties on the Anyware Manger in order to have the command delivered to the workstation. It is required that the property agentMonitored is set to true in the machine object. This will happen automatically when the AWM Monitor is installed in the user workstation.

Authorizations:
authorizationToken
path Parameters
id
required
string

Machine ID

Request Body schema: application/json
secondsBeforeSend
integer
Default: 0

The minimum number of seconds to wait before actually execute the action. The number of seconds value is not precisely respected. The action can occur up to 20 seconds after the specified number of seconds.

Responses

Request samples

Content type
application/json
{
  • "secondsBeforeSend": 0
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Monitor Enrollment

Get Enrollment Keys

required scopes: read:enrollment_keys, read:deployment_tenant, read:deployment

Allows authenticated clients to return a list of the user's Enrollment Keys.

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

includePendingApprovals
boolean
Default: false

Determines whether or not the number of pending approval enrollments using that key will returned.

keyName
string

Query enrollment keys based on their name.

keyNameFilter
string

Modifies keyName queries. If keyNameFilter=includes, then keyName={term} becomes a search for all enrollments keys with a keyName that includes that term.

limit
number [ 1 .. 100 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

sortAsc
boolean
Default: true

Determines whether or not enrollments keys are returned in ascending order.

sortKey
string

The field upon which enrollments keys are sorted on. By default, enrollments are returned from most recent createdOn to least recent.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success",
  • "data": [
    ]
}

Create an Enrollment Key

required scopes: create:enrollment_keys, create:deployment_tenant, create:deployment

Allows authenticated clients to create a new Enrollment key.

Authorizations:
authorizationToken
Request Body schema: application/json
deploymentId
required
string

Deployment ID

keyName
required
string [ 1 .. 64 ] characters

A name to allow easily identify the enrollment key

Responses

Request samples

Content type
application/json
{
  • "deploymentId": "59499477544e6f46d1df4942",
  • "keyName": "Ubuntu Golden Image 2023_03"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "status": "success",
  • "data": {
    }
}

Delete Enrollment Key

required scopes: delete:enrollment_keys, delete:deployment_tenant, delete:deployment

Allows authenticated clients to delete an Enrollment key.

Authorizations:
authorizationToken
path Parameters
enrollmentKeyId
required
string

The id of the enrollment key

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get Enrollment Key

required scopes: read:enrollment_keys, read:deployment_tenant, read:deployment

Allows authenticated clients to return a specific Enrollment key.

Authorizations:
authorizationToken
path Parameters
enrollmentKeyId
required
string

The id of the enrollment key

query Parameters
enrollmentKeyId
string

Query resources based on the enrollmentKeyId.

limit
number [ 1 .. 100 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success",
  • "data": {
    }
}

Update Enrollment Key

required scopes: read:enrollment_keys, read:deployment_tenant, read:deployment

Allows authenticated clients to update a specific Enrollment key.

Authorizations:
authorizationToken
path Parameters
enrollmentKeyId
required
string

The id of the enrollment key

Request Body schema: application/json
validateCertificate
boolean

Whether to validate or not the TLS certificate while generating the enrollment command.

Responses

Request samples

Content type
application/json
{
  • "validateCertificate": true
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success",
  • "data": {
    }
}

Get enrollments

required scopes: (read:enrollment_tenant or read:enrollment) + (delete:deployment or delete:deployment_tenant)

Returns a list of all existing enrollments for a given deployment.

The current query max limit is 200. API Clients can filter requests using the query parameters below.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
hostName
string

Query enrollments based on hostName, which is the name of the workstation where the monitor that created the enrollment is installed to.

hostNameFilter
string

Modifies hostName queries. If hostNameFilter=includes, then hostName={term} becomes a search for all enrollments with a hostName that includes that term.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

sortAsc
boolean
Default: true

Determines whether or not enrollments are returned in ascending order.

sortKey
string

The field upon which enrollments are sorted on. By default, enrollments are returned from most recent createdOn to least recent.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "limit": 15,
  • "offset": 0,
  • "status": "success",
  • "total": 2,
  • "data": [
    ]
}

Create enrollment

required scope: create:enrollment

Create an enrollment for a given monitor installation. An enrollment must be accepted so that the AWM monitor can communicate with the AWM Manager from the remote workstation.

The request body contain information about the workstation where the monitor is running on

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Request Body schema: application/json
hostName
required
string non-empty

The host name of the workstation where the monitor is installed.

Array of objects

The list network interfaces of the workstation where the monitor is installed.

object

The provider where the workstation is running. If it is not part of the known cloud providers listed above, it must be set as onprem.

Responses

Request samples

Content type
application/json
{
  • "hostName": "server01",
  • "networkInterfaces": [
    ],
  • "provider": {
    }
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "status": "success",
  • "data": {
    }
}

Accept enrollment

required scope: delete:enrollment_tenant or delete:enrollment

Accepts an enrolment. This must be be called when the enrolment is identified as a valid monitor installation. Calling this API will add the workstation referenced in the monitor as a AWM Workstation. After this the monitor will be able to communicate with AWM Manager and exchange information about the workstation where it is installed.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

enrollmentId
required
string

Enrollment ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Reject enrollment

required scopes: (delete:enrollment_tenant or delete:enrollment) + (delete:deployment or delete:deployment_tenant)

Rejects an enrolment. This must be be called when the enrolment is not recognized as a valid monitor installation. Calling this API will delete the enrollment and the monitor installation that created the enrollment will be invalidated. The monitor will NOT be able to communicate with Anyware Manager anymore.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

enrollmentId
required
string

Enrollment ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Monitor Registration

Delete registration key

required scopes: delete:machine, delete:machine_tenant

Allows authenticated clients to delete registration keys

Authorizations:
authorizationToken
Request Body schema: application/json
machineIds
Array of strings

A comma-separated list of machine ids to have their monitor service accounts deleted.

Responses

Request samples

Content type
application/json
{
  • "machineIds": [
    ]
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Create a registration token

required scopes: read:machine_tenant, read:machine

The registration token is used to install the Anyware Monitor in a single remote workstation. One registration token is needed for each workstation.

Authorizations:
authorizationToken
Request Body schema: application/json
deploymentId
required
string

ID of the deployment

machineId
required
string

ID of the machine

Responses

Request samples

Content type
application/json
{
  • "deploymentId": "59499477544e6f46d1df4942",
  • "machineId": "5a4ead5dd4f0710029b02b9a"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Monitor Stats

Get Latest Monitor Telemetry

required scope: read:telemetry

Allows authenticated clients to retrieve the latest Anyware Monitor telemetry.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
from
string

Oldest creation date for the given resources

machineId
Array of strings

Query resources by using single or multiple comma separated machineIds.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success",
  • "data": [
    ]
}

Session History

Get Session History

required scope: read:telemetry

Allows authenticated clients to retrieve the session history.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
fetchRelatedFields
boolean
Default: false

If it should include related fields in the response such as connectorName.

from
string

Oldest creation date for the given resources

limit
number [ 1 .. 200 ]
Default: 25

Query the given number of resources.

machineId
string

Query machines by using single or multiple comma separated machineIds.

machineName
string

Query machines based on machineName. machineName is the name of the machine (instance) within a provider, and may match the hostname in Active Directory. Multiple machineNames can be queried if ?machineName is a comma-separated list of machineNames.

machineNameFilter
string

Modifies machineName queries. If machineNameFilter=includes, then machineName={term} becomes a search for all machines with a machineName that includes that term. If a machineNameFilter is specified, a comma-separated list of machineNames is treated as a single machineName.

offset
number
Default: 0

Query resources starting from offset.

pcoipSessionId
string

Query resources based on the pcoipSessionId.

sortAsc
boolean
Default: true

Determines whether or not resources are returned in ascending order.

sortKey
string

The field upon which sessions are sorted on. By default, we return sessions from most recent startedOn to least recent. Sorting is only supported on startedOn field.

to
string

Newest creation date for the given resources

userName
string

Username of the user in Active Directory

userNameFilter
string

Modifies userName queries. If userNameFilter=includes, then userName={term} becomes a search for all adUsers with a userName that includes that term.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Beta Disclaimer

All routes listed here are beta features only. They may be new, experimental or partially completed. These features are subject to change.

Service Account Keys (Beta)

Programmatic access to perform operations on Anyware Manager resources.

Get Service Account Keys

required scopes: read:keys_tenant, read:keys

Allows authenticated clients to return a list of the user's owned User Service Account Keys or Deployment Service Account Keys.

The type of retrievable key depends on the authorization token and the type specified in the query.

Authorizations:
authorizationToken
query Parameters
limit
number [ 1 .. 100 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

type
string
Default: "user"
Enum: "user" "deployment" "all"

Query keys of this type.

user: Query all User Service Account Keys.

deployment: Query all Deployment Service Account Keys.

all: Query both User Service Account and Deployment Service Account Keys.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Create a Service Account Key

required scopes: create:keys_tenant, create:keys

Allows authenticated clients to create a new Service Account Keys.

Type of keys:

  • User Service Account: Enables management across deployments or other settings at the account level.
  • Deployment Service Account: Interacts with resources within a particular deployment. The parameters roleId and deploymentId are required.
Authorizations:
authorizationToken
Request Body schema: application/json
deploymentId
string = 24 characters

Deployment ID. Only required if roleId is provided.

expiresOn
string

The expiration date of the service account in ISO 8601 format, default is 3 years from the current date.

keyName
required
string [ 1 .. 64 ] characters

Name to identify the service account key.

roleId
string = 24 characters

Role ID. Only required if deploymentId is provided.

Responses

Request samples

Content type
application/json
{
  • "deploymentId": "59499477544e6f46d1df4943",
  • "expiresOn": "2026-12-13T16:44:09.380Z",
  • "keyName": "sa-key-1",
  • "roleId": "5a4ead5e79f06d001d1a2ef5"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": [
    ],
  • "status": "success"
}

Delete a Service Account Key

required scopes: delete:keys_tenant, delete:keys

Allows authenticated clients to remove a Service Account Key by keyId.

The type of deletable key depends on the authorization token.

Authorizations:
authorizationToken
path Parameters
id
required
string

Key ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Stats (Beta)

Stats reporting and ingesting.

Ingest stats

required scope: create:telemetry

Ingest one or more component based statistics records.

The request body can contain one or more statistics records in a JSON array. See Example.

An example API call: POST https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26/stats

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Request Body schema: application/json
One of
Array
clientAudioBytes
integer

Number of PCoIP audio bytes that the Security Gateway has received from the PCoIP client

clientAudioCount
integer

Number of PCoIP audio packets that the Security Gateway has received from the PCoIP client

clientImagingBytes
integer

Number of PCoIP imaging bytes that the Security Gateway has received from the PCoIP client

clientImagingCount
integer

Number of PCoIP imaging packets that the Security Gateway has received from the PCoIP client

clientOutOfOrder
integer

Number of PCoIP packets that the Security Gateway has received out of order from the PCoIP client

clientPacketBytes
integer

Total number of PCoIP bytes that the Security Gateway has received from the PCoIP client

clientPacketCount
integer

Total number of PCoIP packets that the Security Gateway has received from the PCoIP client

clientSessionTime
required
integer

Client session time in seconds

componentType
required
string
Value: "securityGateway"

Component type

componentVersion
string
Value: "20.04.12341"

Component version

connectorId
string

Anyware Connector ID

pcoipSessionId
required
string [ 1 .. 64 ] characters

PCoIP session ID

serverAudioBytes
integer

Number of PCoIP audio bytes that the Security Gateway has received from the PCoIP server

serverAudioCount
integer

Number of PCoIP audio packets that the Security Gateway has received from the PCoIP server

serverImagingBytes
integer

Number of PCoIP imaging bytes that the Security Gateway has received from the PCoIP server

serverImagingCount
integer

Number of PCoIP imaging packets that the Security Gateway has received from the PCoIP server

serverOutOfOrder
integer

Number of PCoIP packets that the Security Gateway has received out of order from the PCoIP server

serverPacketBytes
integer

Total number of PCoIP bytes that the Security Gateway has received from the PCoIP server

serverPacketCount
integer

Total number of PCoIP packets that the Security Gateway has received from the PCoIP server

timestamp
required
string <date-time>

A timestamp indicating when the data was collected

Responses

Request samples

Content type
application/json
Example
[ ]

Response samples

Content type
application/json
{
  • "code": 202,
  • "status": "success"
}

Get active sessions

required scope: read:telemetry

Allows authenticated clients to retrieve active sessions statistics. A PCoIP Session is considered active if a remote workstation has been allocated in the system and Security Gateway statistics have been reported within 20 minutes.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
limit
number [ 1 .. 200 ]
Default: 25

Query the given number of resources.

machineId
Array of strings

Query resources by using single or multiple comma separated machineIds.

offset
number
Default: 0

Query resources starting from offset.

userGuid
Array of strings

Query resources by using single or multiple comma separated userGuids.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Get PCoIP Session Attempts for a Remote Workstation

required scope: read:telemetry

Allows authenticated clients to retrieve PCoIP Session attempts associated to a single remote workstation.

The response will contain the last 25 session attempts unless limit is provided as a query parameter.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

machineId
required
string

Machine ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Get security gateway stats

required scope: read:telemetry

Allows authenticated clients to retrieve their Security Gateway statistics.

When querying using the pcoipSessionId or connectorId query parameters, API clients can search using a single parameter.

The response will contain all Security Gateway statistics that match any of these parameters.

An example API call: GET https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26/stats/pcoip/security-gateway

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
connectorId
string

Query connectors by using single or multiple comma separated connectorIds

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

offset
number
Default: 0

Query resources starting from offset.

pcoipSessionId
string

Query resources based on the pcoipSessionId.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Get session state

required scope: read:telemetry

Allows authenticated clients to retrieve session states. A PCoIP Session is considered active if a remote workstation has been allocated in the system and Security Gateway statistics have been reported within 20 minutes. If a machine has been allocated over 24 hours and Anyware Manager did not receive Security Gateway statistics in the last 20 minutes, it has Not-In-Session state. Otherwise, it has Unknown session state.

This endpoint allows the ability to query for one or more remote workstation ids using the machineId query parameter providing a single or comma separated machineId's.

The response will contain session state for each machine in the API query. The machineId parameter is limited to 100 coma separated values, the max length is 4096 characters.

An example API call: GET https://cam.teradici.com/api/v1/deployments/5d321400e62258001254ac26/stats/pcoip/sessions?machineId=5a4ead5e79f06d001d1a2ef5

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
machineId
Array of strings

Query resources by using single or multiple comma separated machineIds.

userGuid
Array of strings

Query resources by using single or multiple comma separated userGuids.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Roles

Retrieve role information

Get Anyware Manager Roles

required scopes: read:roles_tenant, read:roles

Allows authenticated clients to return a list of the roles that can be specified while creating SAs.

Authorizations:
authorizationToken
query Parameters
limit
number [ 1 .. 100 ]
Default: 25

Query the given number of resources.

offset
number
Default: 0

Query resources starting from offset.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Licenses

Retrieve license information

Get Licenses

required scopes: read:license_tenant

Allows authenticated clients to return a list of licenses associated to the tenant.

Authorizations:
authorizationToken
query Parameters
ownerOid
string

Query licenses based on an owner Oid

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "status": "success"
}

Create a License

required scopes: create:license_tenant

Allows authenticated clients to create a license associated to the tenant.

Authorizations:
authorizationToken
Request Body schema: application/json

The license to create.

registrationCode
required
string

Registration code

Responses

Request samples

Content type
application/json
{
  • "registrationCode": "1234-1234-1234"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Delete a License

required scopes: delete:license_tenant

Allows authenticated clients to remove a specific license associated to the tenant.

Authorizations:
authorizationToken
path Parameters
id
required
string

License ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a License

required scopes: read:license_tenant

Allows authenticated clients to return a specific license associated to the tenant.

Authorizations:
authorizationToken
path Parameters
id
required
string

License ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Webhooks

Retrieve Webhook information

Get Webhook configuration settings

required scopes: read:deployment_settings or read:deployment_settings_tenant

Allows authenticated clients to retrieve all Webhook configuration settings for a specific deployment.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

query Parameters
eventType
string
Enum: "authenticate" "get-resource-list" "allocate-resource" "session-start" "session-end"

Query webhook setting based on the Event Type.

limit
number [ 1 .. 200 ]
Default: 25

Query the given number of webhook config settings.

name
string

Query webhook setting based on the Name. The name refers to webhook setting name.

offset
number
Default: 0

Query resources starting from offset.

resourceId
string

Query Webhook setting based on the ResourceId. The resourceId refers to the associated resource in the config. Currently, it's a poolId

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 25,
  • "offset": 0,
  • "status": "success",
  • "total": 2
}

Create a Webhook configuration setting

required scopes: read, create:deployment_settings or read, create:deployment_settings_tenant

Allows authenticated clients to create an AWC configuration

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Request Body schema: application/json
additionalData
string

Maximum length is 4096 characters

associatedResources
Array of strings

Refers to pool ID, having value as '*' represents all pools

description
string

Maximum length is 1024 characters

endpoint
required
string
eventType
required
string
Enum: "authenticate" "get-resource-list" "allocate-resource" "session-start" "session-end"
name
required
string

Maximum length is 512 characters

Responses

Request samples

Content type
application/json
{
  • "additionalData": "AdditionalData1",
  • "associatedResources": [
    ],
  • "description": "This webhook is used for testing",
  • "endpoint": "https://example.com",
  • "eventType": "authenticate",
  • "name": "Name123"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete a Webhook configuration setting

required scopes: read, delete:deployment_settings or read, delete:deployment_settings_tenant

Allows authenticated clients to delete a saved Webhook configuration.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Id
required
string

Webhook Setting ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get a Webhook configuration setting

required scopes: read:deployment_settings or read:deployment_settings_tenant

Allows authenticated clients to retrieve a saved Webhook configuration.

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Id
required
string

Webhook Setting ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Update a Webhook configuration setting

required scopes: read, update:deployment_settings or read,update:deployment_settings_tenant

Allows authenticated clients to update a saved Webhook configuration

Authorizations:
authorizationToken
path Parameters
deploymentId
required
string

Deployment ID

Id
required
string

Webhook Setting ID

Request Body schema: application/json
additionalData
string

Maximum length is 4096 characters

associatedResources
Array of strings

Refers to pool ID, having value as "*" represents all pools

description
string

Maximum length is 1024 characters

endpoint
string
eventType
string
Enum: "authenticate" "get-resource-list" "allocate-resource" "session-start" "session-end"
name
string

Maximum length is 512 characters

Responses

Request samples

Content type
application/json
{
  • "additionalData": "AdditionalData1",
  • "associatedResources": [
    ],
  • "description": "This webhook is used for testing",
  • "endpoint": "https://example.com",
  • "eventType": "authenticate",
  • "name": "Name123"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}

Entitlements (Deprecated)

Manage Entitlements

Get entitlements Deprecated

required scope: read:entitlements or read:entitlements_tenant

Allows authenticated clients to retrieve their corresponding entitlements.

When querying using the userGuid or machineId query parameters, API clients can search using a single or multiple comma separated parameters.

The response will contain all entitlements that match any one of these parameters. The userGuid or machineId parameters are limited to 100 parameters, the max length is 4096 characters.

An example API call: https://cam.teradici.com/api/v1/machines/entitlements?userGuid=GUID1,GUID2,GUID3,GUID4&machineId=123456

Authorizations:
authorizationToken
query Parameters
deploymentId
string

Query resources based on the deploymentId.

limit
number
Default: 15

Query the given number of resources. If not provided, defaults to 15.

machineId
Array of strings

Query resources by using single or multiple comma separated machineIds.

offset
number
Default: 0

Query resources starting from offset.

showactive
boolean
Default: true

Query resources that have the status "active".

showdeleted
boolean
Default: false

Query resources that have the status "deleted".

showdeleting
boolean
Default: false

Query resources that have the status "deleting".

userGuid
Array of strings

Query resources by using single or multiple comma separated userGuids.

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": [
    ],
  • "limit": 1,
  • "offset": 0,
  • "status": "success",
  • "total": 1
}

Create a new entitlement Deprecated

required scopes: create:entitlements or create:entitlements_tenant

Allows authenticated clients to create an entitlement. This call will associate a userGuid (from domain controller) to a machineId that has been registered in our application. If the machine is not registered, an HTTP 400 error response will be returned.

Authorizations:
authorizationToken
Request Body schema: application/json
deploymentId
required
string

Deployment ID

machineId
required
string

Machine ID

userGuid
required
string

UserGuid from domain controller

Responses

Request samples

Content type
application/json
{
  • "deploymentId": "1",
  • "machineId": "of3416123471234",
  • "userGuid": "12341-12341-41123412"
}

Response samples

Content type
application/json
{
  • "code": 201,
  • "data": {
    },
  • "status": "success"
}

Delete an entitlement Deprecated

required scope: delete:entitlements or delete:entitlements_tenant

Allows authenticated clients to remove a single entitlement object based on entitlementId.

An example API call: https://cam.teradici.com/api/v1/machines/entitlements/1234560000

Authorizations:
authorizationToken
path Parameters
id
required
string

Entitlement ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "status": "success"
}

Get an entitlement Deprecated

required scopes: read:entitlements or read:entitlements_tenant

Allows authenticated clients to retrieve a single entitlement object based on entitlementId.

An example API call: https://cam.teradici.com/api/v1/machines/entitlements/1234560000

Authorizations:
authorizationToken
path Parameters
id
required
string

Entitlement ID

Responses

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    },
  • "status": "success"
}