ControlUp Master images API
The Master images API from ControlUp — 20 operation(s) for master images.
The Master images API from ControlUp — 20 operation(s) for master images.
openapi: 3.2.0
info:
title: DaaS IQ Master images 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](https://support.controlup.com/docs/create-an-api-key)
- 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:
- name: Master images
paths:
/cloud/master-images/{id}/actions:
post:
tags:
- Master images
summary: Execute an action on a master image
description: Creates a background job to perform the action (start, stop). Poll the statusUrl for progress updates.
operationId: ExecuteMasterImageAction
parameters:
- name: id
in: path
description: The unique identifier of the master image.
required: true
schema:
type: string
format: uuid
requestBody:
description: The action request containing the action type.
content:
application/json:
schema:
$ref: '#/components/schemas/MasterImageActionRequest'
required: true
responses:
'201':
description: Action job created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/JobCreatedDto'
example:
id: a1b2c3d4-5678-90ab-cdef-1234567890ab
jobType: cloudResourceImport
action: Cloud Resource Import
jobUrl: https://api.example.com/api/v1/jobs/a1b2c3d4-5678-90ab-cdef-1234567890ab
statusUrl: https://api.example.com/api/v1/jobs/a1b2c3d4-5678-90ab-cdef-1234567890ab/status
logsUrl: https://api.example.com/api/v1/jobs/a1b2c3d4-5678-90ab-cdef-1234567890ab/logs
message: Import job created successfully. Poll statusUrl for progress updates.
'400':
description: Bad request. Invalid request parameters or action not applicable.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have permission to manage settings.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found. Master image does not exist or does not belong to the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/{id}/rdp:
get:
tags:
- Master images
summary: Download an RDP file for a master image
description: 'Returns a downloadable .rdp connection descriptor for the master image''s VM, built from its resolvable connection address.
Returns a file attachment rather than JSON, and only generates the descriptor — it does not start the VM,
open a session, or supply credentials.'
operationId: GetMasterImageRdpFile
parameters:
- name: id
in: path
description: The unique identifier of the master image.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: RDP file generated successfully.
'400':
description: Bad request. Master image has no resolvable connection address.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have permission to manage settings.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found. Master image does not exist or does not belong to the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/os-families:
get:
tags:
- Master images
summary: Get supported OS families for Master Images
description: 'Returns the fixed set of operating system families that Azure Virtual Desktop supports, as id and display name.
A static catalog containing no organization data; the values populate the OS family choice when promoting a VM.'
operationId: GetOsFamilies
responses:
'200':
description: Successfully retrieved the list of supported OS families.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/OsFamilyDto'
example:
- value: windows10MultiSession
displayName: Windows 10 Enterprise Multi-Session
- value: windows10Enterprise
displayName: Windows 10 Enterprise
- value: windows11MultiSession
displayName: Windows 11 Enterprise Multi-Session
- value: windows11Enterprise
displayName: Windows 11 Enterprise
- value: windowsServer2016
displayName: Windows Server 2016
- value: windowsServer2019
displayName: Windows Server 2019
- value: windowsServer2022
displayName: Windows Server 2022
- value: windowsServer2025
displayName: Windows Server 2025
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have view permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/marketplace-images:
get:
tags:
- Master images
summary: Get curated Marketplace images for deployment
description: 'Returns the curated catalog of Azure Marketplace OS images that can be deployed as new Master Images,
all of them Gen 2, Generalized, and TrustedLaunch.
A static catalog rather than anything the organization owns, and deliberately narrower than the full Azure Marketplace.'
operationId: GetMarketplaceImages
responses:
'200':
description: Successfully retrieved the list of marketplace images.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MarketplaceImageDto'
example:
- id: win11-multisession-gen2
displayName: Windows 11 Enterprise Multi-Session, Gen 2
osFamily: windows11MultiSession
securityType: trustedLaunch
diskControllerTypes:
- SCSI
publisher: MicrosoftWindowsDesktop
offer: windows-11
sku: win11-24h2-avd
version: latest
- id: server-2022-gen2
displayName: Windows Server 2022, Gen 2
osFamily: windowsServer2022
securityType: trustedLaunch
diskControllerTypes:
- SCSI
publisher: MicrosoftWindowsServer
offer: WindowsServer
sku: 2022-datacenter-g2
version: latest
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have view permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images:
get:
tags:
- Master images
summary: List Master Images
description: 'Returns one row per managed Master Image in the organization, paginated and sorted, each with status, power state,
OS family and version, source type, region, gallery wiring, and latest published version.
No version history and no indication of which operations are currently running.'
operationId: ListMasterImages
parameters:
- name: sort
in: query
description: 'Sort expression.
Format:
field:direction,otherField:direction
Directions: asc, desc, ascending, descending — defaults to ascending when omitted
Fields (names are matched case-insensitively):
createdAt, lastUpdated, latestPublishedVersion, latestVersion, name, osFamily, osVersion, region, sourceType, status
Default when omitted: lastUpdated:desc.'
schema:
maxLength: 256
type: string
example: name:asc,lastUpdated:desc
examples:
default:
summary: default
value: lastUpdated:desc
x-foundry-sort:
fields:
- createdAt
- lastUpdated
- latestPublishedVersion
- latestVersion
- name
- osFamily
- osVersion
- region
- sourceType
- status
dynamicPaths: false
defaultField: lastUpdated
defaultAscending: false
- name: page
in: query
description: 'The page number to retrieve (1-based). Default: 1.'
schema:
maximum: 2147483647
minimum: 1
type: integer
format: int32
- name: pageSize
in: query
description: 'The number of items per page (1-100). Default: 50.'
schema:
maximum: 100
minimum: 1
type: integer
format: int32
responses:
'200':
description: Successfully retrieved Master Images.
content:
application/json:
schema:
$ref: '#/components/schemas/MasterImageDtoPagedResultDto'
example:
items:
- id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
name: Finance-Gold-Master
description: Q1 2026 Base Image
osFamily: windows11MultiSession
osVersion: 23H2
status: ready
powerState: unknown
sourceType: promotedVm
region: eastus
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Compute/virtualMachines/vm-finance-gold
subscriptionId: 9be25f1b-d323-477a-984a-935f6346e47a
subnetResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Network/virtualNetworks/vnet-avd/subnets/default
acgDefinitionResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Compute/galleries/ControlUp_DaaS_Gallery/images/Finance-Gold-Master
latestVersion: 1.0.4
latestPublishedVersion: 1.0.3
targetRegions:
- eastus
- westeurope
createdBy: ''
createdAt: '0001-01-01T00:00:00'
lastUpdated: '2026-03-10T22:14:14Z'
- id: 493d4e21-85b2-41dd-b580-b1c95bf91968
name: Win11-HR-Master
description: HR department base image
osFamily: windows11MultiSession
osVersion: 23H2
status: deploying
powerState: unknown
sourceType: deployedFromGallery
region: eastus2
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Compute/virtualMachines/win11-hr-master
subscriptionId: 9be25f1b-d323-477a-984a-935f6346e47a
subnetResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Network/virtualNetworks/vnet-prod/subnets/avd-hosts
acgDefinitionResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Compute/galleries/AVDGoldenImageGallery/images/Win11-HR-Master
latestVersion: 1.0.0
latestPublishedVersion: 1.0.0
targetRegions:
- eastus2
createdBy: ''
createdAt: '0001-01-01T00:00:00'
lastUpdated: '2026-03-10T22:11:18Z'
- id: c3d4e5f6-a1b2-7890-abcd-ef9876543210
name: Win10-Legacy-Master
osFamily: windows10MultiSession
osVersion: 22H2
status: error
statusMessage: VM not found in Azure (deleted externally)
powerState: unknown
sourceType: promotedVm
region: westus2
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Compute/virtualMachines/vm-legacy-gold
subscriptionId: 9be25f1b-d323-477a-984a-935f6346e47a
targetRegions: []
createdBy: ''
createdAt: '0001-01-01T00:00:00'
lastUpdated: '2026-03-12T14:30:00Z'
- id: d4e5f6a1-b2c3-7890-abcd-ef0123456789
name: Orphaned-Gold-Master
description: Image whose owning subscription was removed
osFamily: windows11MultiSession
osVersion: 23H2
status: error
statusMessage: The owning subscription was removed. Reimport the subscription to restore management of this image.
powerState: unknown
sourceType: promotedVm
region: eastus
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Compute/virtualMachines/vm-orphaned-gold
subscriptionId: 4f1d9b6a-3c2e-4d8a-9f7b-2a1c0e5d4b3a
targetRegions: []
createdBy: admin@contoso.com
createdAt: '2026-02-20T09:00:00Z'
lastUpdated: '2026-03-12T14:30:00Z'
page: 1
pageSize: 25
count: 4
hasMore: false
totalCount: 4
'400':
description: Bad request. Invalid pagination or sort parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have view permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/{id}:
get:
tags:
- Master images
summary: Get Master Image by ID
description: 'Returns one Master Image in the same shape as a list row: name, OS, status and power state, source type, region,
VM and gallery resource IDs, disk and security settings, and latest published version.
The image itself — not which operations run or are permitted, and not its published versions.'
operationId: GetMasterImage
parameters:
- name: id
in: path
description: The Master Image identifier
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successfully retrieved the Master Image.
content:
application/json:
schema:
$ref: '#/components/schemas/MasterImageDto'
example:
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
name: Finance-Gold-Master
description: Q1 2026 Base Image
osFamily: windows11MultiSession
osVersion: 23H2
status: ready
powerState: unknown
sourceType: promotedVm
region: eastus
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Compute/virtualMachines/vm-finance-gold
subscriptionId: 9be25f1b-d323-477a-984a-935f6346e47a
subnetResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Network/virtualNetworks/vnet-avd/subnets/default
virtualNetworkResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Network/virtualNetworks/vnet-avd
acgDefinitionResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Compute/galleries/ControlUp_DaaS_Gallery/images/Finance-Gold-Master
latestVersion: 1.0.1
latestPublishedVersion: 1.0.0
targetRegions:
- eastus
- westeurope
resourceGroup: RG-AVD-Lab
vmSize: Standard_D2s_v5
osDiskType: Premium_LRS
osDiskSizeGiB: 128
securityType: trustedLaunch
secureBoot: true
vTpm: true
integrityMonitoring: false
hyperVGeneration: V2
cpuArchitectureType: x64
galleryName: ControlUp_DaaS_Gallery
publisher: ControlUp
offer: windows-11-multisession
sku: finance-gold-master
createdBy: admin@contoso.com
createdAt: '2026-03-01T10:00:00Z'
lastUpdated: '2026-03-10T22:14:14Z'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have view permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found. The specified Master Image does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/{id}/operation-state:
get:
tags:
- Master images
summary: Get Master Image operation state
description: 'Returns the image''s single in-flight operation, if any, plus server-computed flags for the actions it now permits.
Trust these flags rather than inferring availability from lifecycle and power-state fields.
Covers the image as a whole, not any individual published version.'
operationId: GetOperationState
parameters:
- name: id
in: path
description: The Master Image identifier
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successfully retrieved the Master Image operation state.
content:
application/json:
schema:
$ref: '#/components/schemas/MasterImageOperationStateDto'
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have view permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found. The specified Master Image does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/{id}/decommission-plan:
get:
tags:
- Master images
summary: Get decommission plan
description: 'Previews what retiring the whole Master Image would delete or retain — VM, disks, gallery definition,
related Azure resources — with any warnings.
A read-only dry run covering the whole image, not the leftovers of a single publish.'
operationId: GetDecommissionPlan
parameters:
- name: id
in: path
description: The Master Image identifier
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successfully built the decommission plan.
content:
application/json:
schema:
$ref: '#/components/schemas/MasterImageDecommissionPlanDto'
example:
masterImageId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
masterImageName: Finance-Gold-Master
sourceType: deployedFromGallery
resources:
- resourceType: galleryImageVersion
resourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Compute/galleries/ControlUp_DaaS_Gallery/images/Finance-Gold-Master/versions/1.0.0
name: 1.0.0
ownership: foundryCreated
decommissionAction: delete
reason: Image version was created by Foundry and can be deleted during decommission.
existenceStatus: exists
portalUrl: https://portal.azure.com/#@contoso.onmicrosoft.com/resource/subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/rg-controlup-daas/providers/Microsoft.Compute/galleries/ControlUp_DaaS_Gallery/images/Finance-Gold-Master/versions/1.0.0
- resourceType: subnet
resourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Network/virtualNetworks/vnet-avd/subnets/default
name: default
ownership: customerOrShared
decommissionAction: retain
reason: Subnet may be shared by other resources and is retained.
existenceStatus: notChecked
portalUrl: https://portal.azure.com/#@contoso.onmicrosoft.com/resource/subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Network/virtualNetworks/vnet-avd/subnets/default
warnings: []
'401':
description: Unauthorized. User is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'402':
description: Payment required. No active license for the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden. User does not have view permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found. The specified Master Image does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service unavailable. License status could not be verified. Try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
- CookieAuth: []
/cloud/master-images/promote:
post:
tags:
- Master images
summary: Promote existing VM as Master Image
description: 'Creates a new Master Image by registering an existing Azure VM.
Creates a corresponding Image Definition in the specified Azure Compute Gallery.
The VM must be Gen 2 (Trusted Launch) and not already imported.'
operationId: PromoteVmToMasterImage
requestBody:
description: The promote request containing VM resource ID and metadata
content:
application/json:
schema:
$ref: '#/components/schemas/PromoteMasterImageRequest'
example:
subscriptionId: 9be25f1b-d323-477a-984a-935f6346e47a
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Compute/virtualMachines/vm-finance-gold
name: Finance-Gold-Master
description: Q1 2026 Base Image
osFamily: windows11MultiSession
osVersion: 23H2
publisher: ControlUp
offer: windows-11-multisession
sku: win11-hr-master
required: true
responses:
'201':
description: Successfully created the Master Image.
content:
application/json:
schema:
$ref: '#/components/schemas/MasterImageDto'
example:
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
name: Finance-Gold-Master
description: Q1 2026 Base Image
osFamily: windows11MultiSession
osVersion: 23H2
status: ready
powerState: unknown
sourceType: promotedVm
region: eastus
vmResourceId: /subscriptions/25ae2df7-d61d-4cb0-a746-4b67e1cf8535/resourceGroups/RG-AVD-Lab/providers/Microsoft.Compute/virtualMachines/vm-fi
# --- truncated at 32 KB (121 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/controlup/refs/heads/main/openapi/controlup-master-images-api-openapi.yml