ControlUp Tenants API

The Tenants API from ControlUp — 23 operation(s) for tenants.

Operations 31

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /cloud/tenants/{tenantId}/credentials List the credentials in a tenant pool · Get tenant credentials #
Ask an LLM
“Which service principals are in my cloud tenant's credential pool?”
“Can I see every credential a DaaS tenant uses, with secrets masked?”
Tell an agent
List all credentials for tenant {tenantId}.
Show the credential pool for tenant {tenantId}, including the default one.
POST /cloud/tenants/{tenantId}/credentials Add a credential to a tenant pool · Add a credential #
Ask an LLM
“Can I add another service principal to a tenant to spread API calls for load balancing?”
“What do I need to supply to add an extra credential to a ControlUp cloud tenant?”
Tell an agent
Add a {authType} credential to tenant {tenantId} using {credentials}.
Register an additional service principal in the credential pool of tenant {tenantId}.
GET /cloud/tenants/{tenantId}/credentials/{credentialId} Get one tenant credential configuration · Get a credential by ID #
Ask an LLM
“What auth type and enabled flag does a specific tenant credential have?”
“Can I look up one credential's configuration without checking its health?”
Tell an agent
Show the configuration of credential {credentialId} in tenant {tenantId}.
Get credential {credentialId} for tenant {tenantId} with its masked secret fields.
PUT /cloud/tenants/{tenantId}/credentials/{credentialId} Replace a tenant credential's auth details · Update a credential #
Ask an LLM
“Can I fully replace the authentication details of an existing tenant credential?”
“Does replacing a credential's secret clear its cooldown and health metrics?”
Tell an agent
Replace credential {credentialId} in tenant {tenantId} with auth type {authType} and {credentials}.
Overwrite all auth settings of credential {credentialId} on tenant {tenantId}.
PATCH /cloud/tenants/{tenantId}/credentials/{credentialId} Partially update a tenant credential · Patch a credential #
Ask an LLM
“Can I change just the client secret on a credential without resending everything?”
“Is there a partial update for a tenant credential where only sent fields change?”
Tell an agent
Patch credential {credentialId} in tenant {tenantId} with new {credentials} only.
Change only the auth type of credential {credentialId} on tenant {tenantId} to {authType}.
DELETE /cloud/tenants/{tenantId}/credentials/{credentialId} Delete a tenant credential · Delete a credential #
Ask an LLM
“What happens to the default when I delete a tenant's default credential?”
“Can I remove a service principal from a tenant's credential pool?”
Tell an agent destructive · confirm first
Delete credential {credentialId} from tenant {tenantId}.
Remove credential {credentialId} from the pool of tenant {tenantId} and let another be promoted to default.
POST /cloud/tenants/{tenantId}/credentials/{credentialId}/enable Enable a credential in the pool · Enable a credential #
Ask an LLM
“How do I put a disabled tenant credential back into round-robin rotation?”
“Can a credential be re-enabled so it gets picked for API operations again?”
Tell an agent
Enable credential {credentialId} for tenant {tenantId}.
Turn credential {credentialId} back on in the rotation for tenant {tenantId}.
POST /cloud/tenants/{tenantId}/credentials/{credentialId}/disable Disable a credential in the pool · Disable a credential #
Ask an LLM
“Can I take a credential out of rotation without deleting it?”
“Why can't I disable the only enabled credential on a tenant?”
Tell an agent
Disable credential {credentialId} for tenant {tenantId}.
Stop credential {credentialId} from being selected for tenant {tenantId} API calls, but keep it.
GET /cloud/tenants/{tenantId}/credentials/status Check live status of all tenant credentials · Get credentials status #
Ask an LLM
“Are any of my tenant's credentials rate-limited or in cooldown right now?”
“Which credentials in the pool are currently healthy and working?”
Tell an agent
Show live health and cooldown status for every credential in tenant {tenantId}.
Check usage metrics across the whole credential pool of tenant {tenantId}.
GET /cloud/tenants/{tenantId}/credentials/{credentialId}/status Check live status of one credential · Get credential status #
Ask an LLM
“Is a specific tenant credential in a rate-limit cooldown?”
“What are the usage metrics for one particular credential?”
Tell an agent
Show live health for credential {credentialId} in tenant {tenantId}.
Check whether credential {credentialId} on tenant {tenantId} is currently working.
POST /cloud/tenants/{tenantId}/credentials/verify Test a tenant default credential live · Verify default credentials #
Ask an LLM
“Can I test my tenant's default credential against Azure AD and get step-by-step results?”
“Does verifying the default credential clear its stale error state?”
Tell an agent
Verify the default credential of tenant {tenantId} against Azure AD.
Run a live structured check of tenant {tenantId}'s default credential.
POST /cloud/tenants/{tenantId}/credentials/{credentialId}/verify Test a specific credential live · Verify a credential by ID #
Ask an LLM
“Can I test one exact non-default credential's Azure AD authentication?”
“Will verifying a chosen credential bypass the round-robin selection?”
Tell an agent
Verify credential {credentialId} for tenant {tenantId} against Azure AD.
Test authentication and tenant access using exactly credential {credentialId} on tenant {tenantId}.
POST /cloud/tenants/{tenantId}/credentials/verify/transcript Verify default credential as readable transcript · Verify default credentials (transcript) #
Ask an LLM
“Can I get a human-readable transcript when verifying a tenant's default credential?”
“Where's the IsSuccess flag for a formatted default-credential check?”
Tell an agent
Verify tenant {tenantId}'s default credential and give me the formatted transcript lines.
Print a line-by-line verification transcript for the default credential of tenant {tenantId}.
POST /cloud/tenants/{tenantId}/credentials/{credentialId}/verify/transcript Verify one credential as readable transcript · Verify a credential by ID (transcript) #
Ask an LLM
“Can I get formatted output lines when verifying one specific credential?”
“Is there a transcript version of the per-credential verification?”
Tell an agent
Verify credential {credentialId} on tenant {tenantId} and return the transcript lines.
Give me a readable verification transcript for credential {credentialId} in tenant {tenantId}.
GET /cloud/tenants/{tenantId}/credentials/verify/stream Stream default credential check over WebSocket (old) · Verify default credentials - streaming (Deprecated) #
Ask an LLM
“Is there a deprecated WebSocket stream that reports progress while my tenant's default credential is verified?”
“What replaced the WebSocket verify stream for a tenant's default credential?”
Tell an agent
Open the deprecated WebSocket stream verifying tenant {tenantId}'s default credential.
Watch default-credential verification for tenant {tenantId} over the legacy WebSocket connection.
GET /cloud/tenants/{tenantId}/credentials/{credentialId}/verify/stream Stream one credential's check over WebSocket (old) · Verify a credential by ID - streaming (Deprecated) #
Ask an LLM
“Can existing UI clients still stream a specific credential's verification over a WebSocket?”
“Which endpoint replaces the WebSocket stream for verifying one credential by ID?”
Tell an agent
Open the legacy WebSocket verification stream for credential {credentialId} in tenant {tenantId}.
Stream step progress over WebSocket while credential {credentialId} on tenant {tenantId} is verified, using the deprecated endpoint.
POST /cloud/tenants/{tenantId}/credentials/verify/sse Stream default credential check as server-sent events · Verify default credentials - streaming #
Ask an LLM
“Can I follow each step of my tenant's default credential verification live as server-sent events?”
“What does each SSE event look like when streaming a default-credential check?”
Tell an agent
Stream the default credential verification for tenant {tenantId} as server-sent events.
Verify tenant {tenantId}'s default credential and send me step_started events as they happen over SSE.
POST /cloud/tenants/{tenantId}/credentials/{credentialId}/verify/sse Stream one credential's check as server-sent events · Verify a credential by ID - streaming #
Ask an LLM
“Can I watch a specific tenant credential being verified step by step over SSE?”
“Is there an SSE stream for checking one credential by its ID instead of the default?”
Tell an agent
Stream SSE progress while credential {credentialId} in tenant {tenantId} is verified.
Verify credential {credentialId} on tenant {tenantId} and push each step to me as server-sent events.
GET /cloud/tenants/{tenantId}/discover/subscriptions Discover subscriptions a tenant can reach · Discover subscriptions accessible by tenant's default credentials #
Ask an LLM
“Which Azure subscriptions can my tenant's service principal access?”
“Which reachable subscriptions are already managed and which are new?”
Tell an agent
Discover the subscriptions accessible to tenant {tenantId}'s default credential.
List reachable subscriptions for tenant {tenantId}, {pageSize} per page.
GET /cloud/tenants/{tenantId}/discover/resources Discover cloud resources by type · Discover resources across subscriptions in a tenant #
Ask an LLM
“Can I discover several resource types at once across my Azure subscriptions?”
“Which cloud resources haven't been imported into DaaS IQ yet?”
Tell an agent
Discover {types} resources in tenant {tenantId}.
Discover {types} resources for tenant {tenantId} only in subscriptions {subscriptionIds}.
GET /cloud/tenants/{tenantId}/discover/resources/hostpools Discover Azure host pools in a tenant · Discover host pools across all subscriptions in a tenant #
Ask an LLM
“What host pools exist in Azure for my tenant, including ones never imported?”
“Can I see the load balancer setup and session limits of discoverable host pools?”
Tell an agent
Discover all Azure Virtual Desktop host pools in tenant {tenantId}.
Find host pools in tenant {tenantId} matching {filter}.
GET /cloud/tenants/{tenantId}/discover/resources/images Discover images in a tenant (deprecated) · Discover images across all subscriptions in a tenant (Deprecated) #
Ask an LLM
“Is the old tenant image discovery endpoint still supported?”
“Can I still list VM images with their source type across a tenant's subscriptions?”
Tell an agent
Run the deprecated image discovery for tenant {tenantId}.
List discovered images in tenant {tenantId} using the legacy image discovery.
POST /cloud/tenants/{tenantId}/resources/import Import cloud resources for a tenant · Import cloud resources for a tenant #
Ask an LLM
“Can I import every resource from all subscriptions under a tenant in one job?”
“Is it possible to selectively import specific resources from chosen subscriptions?”
Tell an agent
Import all resources from every subscription in tenant {tenantId}.
Import the resources in {subscriptions} for tenant {tenantId}.
GET /cloud/tenants List cloud provider tenants · Get tenants #
Ask an LLM
“Which cloud tenants are connected to my ControlUp organization?”
“Can I filter my connected tenants to just AWS or just Azure?”
Tell an agent
List all cloud tenants in my organization.
Show only the {provider} tenants.
POST /cloud/tenants Connect a new cloud tenant · Create a new tenant with default credential #
Ask an LLM
“What do I need to connect a new Azure AD tenant with its default credential?”
“Can I create a tenant and its default credential in one call?”
Tell an agent
Create a {provider} tenant named {name} for provider tenant ID {providerTenantId} with default credential {defaultCredential}.
Connect Azure directory {providerTenantId} as a new tenant called {name}.
GET /cloud/tenants/{id} Get a tenant by ID · Get a tenant by ID #
Ask an LLM
“What provider and identifiers does a specific tenant have?”
“Can I look up one tenant's configuration and masked default credential?”
Tell an agent
Show tenant {id}.
Get the configuration of tenant {id}.
PUT /cloud/tenants/{id} Replace a tenant configuration · Update an existing tenant #
Ask an LLM
“Can I rename a tenant and replace its default credential in one full update?”
“When am I allowed to change a tenant's cloud provider?”
Tell an agent
Update tenant {id} with name {name}.
Fully replace tenant {id}'s settings with name {name} and default credential {defaultCredential}.
PATCH /cloud/tenants/{id} Partially update a tenant · Partially update a tenant #
Ask an LLM
“Can I change just a tenant's display name without touching anything else?”
“Is it possible to update only part of a tenant's default credential, like the secret?”
Tell an agent
Rename tenant {id} to {name}.
Patch only the default credential of tenant {id} with {defaultCredential}.
DELETE /cloud/tenants/{id} Delete a tenant · Delete a tenant #
Ask an LLM
“Can I remove a cloud tenant and its credentials from ControlUp?”
“Does deleting a tenant also delete its credentials?”
Tell an agent destructive · confirm first
Delete tenant {id}.
Remove tenant {id} along with its credentials.
GET /cloud/tenants/{id}/status Get a tenant's last known health · Get tenant status #
Ask an LLM
“What was my tenant's health at its last evaluation?”
“Can I see stored tenant health with per-subscription details without re-testing?”
Tell an agent
Show the stored health status of tenant {id}.
Get tenant {id} status including {include}.
POST /cloud/tenants/{id}/status/refresh Re-test a tenant's health now · Refresh tenant status #
Ask an LLM
“Can I force a fresh connectivity check of a tenant and all its subscriptions?”
“Is there a way to re-evaluate tenant health right now instead of reading the cached result?”
Tell an agent
Refresh the status of tenant {id} now.
Re-test tenant {id} against the cloud provider and include {include}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/controlup:controlup-tenants-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

controlup-tenants-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DaaS IQ Tenants API
  description: 'Multi-cloud Virtual Desktop Infrastructure Management API (Default Version: v1.0)


    🔒 **Authentication**


    This API supports two authentication methods:


    **1. API Key (Bearer Token)** - Recommended for programmatic access

    - Create an API key at API Key Management

    - Include in requests: `Authorization: Bearer YOUR_API_KEY`


    **2. Cookie Authentication** - For browser-based access

    - Login via DEX authentication service

    - The `user_dex_token` cookie will be automatically included'
  contact:
    name: ControlUp Support
    url: https://controlup.com/support
    email: support@controlup.com
  version: v1
  x-build-version: 1.0.107
servers:
- url: https://api.controlup.com/daas-iq/v1
tags:


# --- truncated at 32 KB (143 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/controlup/refs/heads/main/openapi/controlup-tenants-api-openapi.yml