API Endpoint Reference (v3)
vHaaS provides two API versions. v3 is the current version and recommended for all new integrations. v2.0 is still supported for existing integrations but is considered legacy — see the v2.0 endpoint reference.
This page lists all user-facing endpoints of the vHaaS REST API v3.
Base URL: https://vhaas.vector.cloud/api/v3
All endpoints require authentication via Authorization: Bearer <JWT> or private-token: <Access Token>, unless stated otherwise. Endpoints marked Admin require the organization_admin or instance_admin role.
Organization scope
Most v3 endpoints are scoped to an Organization: /api/v3/organizations/{organization_id}/.... Replace {organization_id} with the UUID of your Organization. Use GET /api/v3/self or GET /api/v3/organizations to look up your Organization ID.
User & Profile
GET /api/v3/self
Returns the profile of the authenticated user, including Organization memberships, Group memberships, and owned Assemblies.
Response fields: user_id, email, display_name, organizations[], groups[]
GET /api/v3/self/organizations
Lists all Organizations the authenticated user is a member of.
| Query param | Type | Description |
|---|---|---|
search |
string | Filter by Organization name. |
page |
integer | Page number (default: 1). |
size |
integer | Items per page (default: 50). |
GET /api/v3/users/{user_id}
Returns public profile information for a specific user.
GET /api/v3/users/{user_id}/settings
Returns the settings for a specific user (own profile only).
PATCH /api/v3/users/{user_id}/settings
Updates settings for the authenticated user.
Personal Access Tokens
Tokens scoped to a user for use in scripts and CI pipelines.
| Method | Path | Description |
|---|---|---|
GET |
/api/v3/users/{user_id}/personal-tokens |
List all personal tokens. |
POST |
/api/v3/users/{user_id}/personal-tokens |
Create a personal token. |
GET |
/api/v3/users/{user_id}/personal-tokens/{token_id} |
Get a single token. |
PATCH |
/api/v3/users/{user_id}/personal-tokens/{token_id} |
Revoke a token. |
DELETE |
/api/v3/users/{user_id}/personal-tokens/{token_id} |
Delete a token. |
Create token request body:
Organizations
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations |
List Organizations visible to the authenticated user. | Required |
GET |
/api/v3/organizations/{organization_id} |
Get a single Organization. | Required |
POST |
/api/v3/organizations |
Create an Organization. | Admin |
PATCH |
/api/v3/organizations/{organization_id} |
Rename an Organization. | Admin |
DELETE |
/api/v3/organizations/{organization_id} |
Delete an Organization. | Admin |
Query params for GET /organizations:
| Param | Type | Description |
|---|---|---|
search |
string | Filter by name. |
page / size |
integer | Pagination. |
Organization Users
Manage which users belong to an Organization and what roles they hold.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/users |
List users in the Organization. | Required |
POST |
/api/v3/organizations/{org_id}/users |
Add a user to the Organization. | Admin |
GET |
/api/v3/organizations/{org_id}/users/{user_id} |
Get a user's role, Groups, and Assemblies within the org. | Required |
PATCH |
/api/v3/organizations/{org_id}/users/{user_id} |
Update a user's role in the Organization. | Admin |
DELETE |
/api/v3/organizations/{org_id}/users/{user_id} |
Remove a user from the Organization. | Admin |
GET |
/api/v3/organizations/{org_id}/users/{user_id}/groups |
List Groups the user belongs to in this org. | Required |
PUT |
/api/v3/organizations/{org_id}/users/{user_id}/favorite-assemblies/{assembly_ref} |
Add an Assembly to a user's favorites. | Required |
DELETE |
/api/v3/organizations/{org_id}/users/{user_id}/favorite-assemblies/{assembly_ref} |
Remove an Assembly from a user's favorites. | Required |
Query params for GET /users:
| Param | Type | Description |
|---|---|---|
search |
string | Filter by name or email. |
is_technical |
boolean | Filter to Technical Users (service accounts) only. |
exclude_group_id |
UUID | Exclude users already in a specific Group. |
page / size |
integer | Pagination. |
Groups
Groups organize users and determine which Assemblies they can access.
Group Management
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/groups |
List all Groups in the Organization. | Required |
POST |
/api/v3/organizations/{org_id}/groups |
Create a Group. | Admin |
GET |
/api/v3/organizations/{org_id}/groups/{group_id} |
Get a single Group. | Required |
PATCH |
/api/v3/organizations/{org_id}/groups/{group_id} |
Rename a Group. | Admin |
DELETE |
/api/v3/organizations/{org_id}/groups/{group_id} |
Delete a Group. | Admin |
Group Users
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/groups/{group_id}/users |
List users in the Group. | Required |
POST |
/api/v3/organizations/{org_id}/groups/{group_id}/users |
Add a user to the Group. | Admin |
PATCH |
/api/v3/organizations/{org_id}/groups/{group_id}/users/{user_id} |
Update a user's role in the Group. | Admin |
DELETE |
/api/v3/organizations/{org_id}/groups/{group_id}/users/{user_id} |
Remove a user from the Group. | Admin |
Group Assemblies
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/groups/{group_id}/assemblies |
List Assemblies assigned to the Group. | Required |
POST |
/api/v3/organizations/{org_id}/groups/{group_id}/assemblies |
Assign an Assembly to the Group. | Admin |
DELETE |
/api/v3/organizations/{org_id}/groups/{group_id}/assemblies/{assembly_ref} |
Remove an Assembly from the Group. | Admin |
Group Service Tokens
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/groups/{group_id}/service-tokens |
List service tokens for the Group. | Group Admin |
POST |
/api/v3/organizations/{org_id}/groups/{group_id}/service-tokens |
Create a Group service token. | Group Admin |
GET |
/api/v3/organizations/{org_id}/groups/{group_id}/service-tokens/{token_id} |
Get a service token. | Group Admin |
DELETE |
/api/v3/organizations/{org_id}/groups/{group_id}/service-tokens/{token_id} |
Delete a service token. | Group Admin |
Assemblies
An Assembly is a logical grouping of physical hardware (ECUs, interfaces, power supplies) available for remote access.
Assembly Collection
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/assemblies |
List Assemblies visible to the user. | Required |
GET |
/api/v3/organizations/{org_id}/assemblies/enriched |
List Assemblies with full Execution Environment, Group, and status details. | Required |
POST |
/api/v3/organizations/{org_id}/assemblies |
Create an Assembly. | Admin |
Query params for GET /assemblies:
| Param | Type | Description |
|---|---|---|
search |
string | Filter by name or reference. |
cluster_ref |
string | Filter by Cluster. |
favorite |
boolean | Show only favorite Assemblies. |
page / size |
integer | Pagination. |
Additional query params for /assemblies/enriched:
| Param | Type | Description |
|---|---|---|
status_type[] |
string | Filter by board status. |
group[] |
string | Filter by Group ID. |
vm_hostname[] |
string | Filter by Execution Environment hostname. |
supplier[] / family[] / variant[] |
string | Filter by hardware catalog attributes. |
user_name |
string | Filter by current Session owner. |
Assembly Detail
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/assemblies/{assembly_ref} |
Get a single Assembly. | Required |
PATCH |
/api/v3/organizations/{org_id}/assemblies/{assembly_ref} |
Update Assembly metadata. | Admin |
DELETE |
/api/v3/organizations/{org_id}/assemblies/{assembly_ref} |
Delete an Assembly. | Admin |
Device Sequences
Ordered lists of switching steps saved on an Assembly. All paths below are relative to
/api/v3/organizations/{org_id}/assemblies/{assembly_ref}.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
…/device-sequences |
List the device sequences of an Assembly. | Required |
POST |
…/device-sequences |
Create a device sequence. | Required |
GET |
…/device-sequences/{sequence_id} |
Get a device sequence. | Required |
PATCH |
…/device-sequences/{sequence_id} |
Update a device sequence. | Required |
DELETE |
…/device-sequences/{sequence_id} |
Delete a device sequence. | Required |
POST |
…/device-sequences/{sequence_id}/run |
Execute a device sequence. | Required |
GET |
…/device-sequences/{sequence_id}/run |
List the latest runs of a sequence. | Required |
GET |
…/device-sequences/{sequence_id}/run/{run_id} |
Get the status of a specific run. | Required |
PATCH |
…/device-sequences/{sequence_id}/run/{run_id} |
Update the run status, e.g. to cancel a running sequence. | Required |
A run is executed asynchronously: POST …/run returns immediately and the run reports its progress
through its own status. Runs of the same Assembly's Execution Environment are serialized.
Sessions & Bookings
A Session (booking) grants exclusive access to an Assembly for a defined time window.
Assembly Sessions
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/assembly-sessions |
List Sessions. | Required |
POST |
/api/v3/organizations/{org_id}/assembly-sessions |
Create (book) a Session. | Required |
GET |
/api/v3/organizations/{org_id}/assembly-sessions/{session_id} |
Get Session status and details. | Required |
PATCH |
/api/v3/organizations/{org_id}/assembly-sessions/{session_id} |
Update Session (e.g. extend end time). | Required |
DELETE |
/api/v3/organizations/{org_id}/assembly-sessions/{session_id} |
Release a Session immediately. | Required |
GET |
/api/v3/organizations/{org_id}/assembly-sessions/{session_id}/session-tasks |
Get tasks associated with a Session. | Required |
Query params for GET /assembly-sessions:
| Param | Type | Description |
|---|---|---|
assembly_ref |
string | Filter by Assembly reference. |
start_time |
datetime | Filter Sessions starting after this timestamp. |
end_time |
datetime | Filter Sessions ending before this timestamp. |
page / size |
integer | Pagination. |
Create Session request body:
{
"assembly_ref": "ASSEMBLY-101",
"start_time": "2026-07-01T08:00:00Z",
"end_time": "2026-07-01T17:00:00Z"
}
Session Contexts
A Session context is the active environment established when a booked Session starts (credentials, connection parameters).
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/assembly-session-contexts |
List Session contexts. | Required |
POST |
/api/v3/organizations/{org_id}/assembly-session-contexts |
Create a Session context. | Required |
GET |
/api/v3/organizations/{org_id}/assembly-session-contexts/{context_id} |
Get a Session context. | Required |
DELETE |
/api/v3/organizations/{org_id}/assembly-session-contexts/{context_id} |
Delete a Session context. | Required |
Session Transfers
Transfer ownership of an active Session to another user.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/assembly-session-transfers |
List transfer requests. | Required |
POST |
/api/v3/organizations/{org_id}/assembly-session-transfers |
Request a Session transfer. | Required |
PATCH |
/api/v3/organizations/{org_id}/assembly-session-transfers/{transfer_id} |
Approve or reject a transfer request. | Required |
Create transfer request body:
Approve / reject body:
Jobs
Jobs represent scheduled or running automation tasks on an Assembly.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/jobs |
List jobs. | Required |
POST |
/api/v3/organizations/{org_id}/jobs |
Create a job. | Required |
GET |
/api/v3/organizations/{org_id}/jobs/{job_id} |
Get a single job. | Required |
DELETE |
/api/v3/organizations/{org_id}/jobs/{job_id} |
Cancel / delete a job. | Required |
Query params for GET /jobs:
| Param | Type | Description |
|---|---|---|
job_ids[] |
UUID | Filter by specific job IDs. |
user_ids[] |
string | Filter by user. |
status |
string | Filter by status (e.g. running, completed, failed). |
page / size |
integer | Pagination. |
Execution Environments
Naming
Execution Environments were previously called Virtual Machines. The API keeps the old name in its paths and fields (virtual-machines, vm_id).
Execution Environments provide the remote development environment paired with an Assembly.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/virtual-machines |
List Execution Environments. | Required |
POST |
/api/v3/organizations/{org_id}/virtual-machines |
Create an Execution Environment. | Admin |
GET |
/api/v3/organizations/{org_id}/virtual-machines/{vm_id} |
Get a single Execution Environment. | Required |
PATCH |
/api/v3/organizations/{org_id}/virtual-machines/{vm_id} |
Update Execution Environment properties. | Admin |
DELETE |
/api/v3/organizations/{org_id}/virtual-machines/{vm_id} |
Delete an Execution Environment. | Admin |
GET |
/api/v3/organizations/{org_id}/virtual-machines/{vm_id}/credentials |
Get Execution Environment credentials. | Admin |
POST |
/api/v3/organizations/{org_id}/virtual-machines/{vm_id}/credentials |
Set Execution Environment credentials. | Admin |
DELETE |
/api/v3/organizations/{org_id}/virtual-machines/{vm_id}/credentials |
Delete Execution Environment credentials. | Admin |
Query params for GET /virtual-machines:
| Param | Type | Description |
|---|---|---|
assigned |
boolean | true = only Execution Environments assigned to an Assembly, false = unassigned only. |
cluster_ref |
string | Filter by Cluster. |
assembly_refs[] |
string | Filter by specific Assembly references. |
search |
string | Filter by hostname. |
page / size |
integer | Pagination. |
Clusters
Clusters Group the physical infrastructure (NUCs, network segments) that host Assemblies.
Cluster Management
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/clusters |
List Clusters. | Required |
POST |
/api/v3/organizations/{org_id}/clusters |
Create a Cluster. | Admin |
GET |
/api/v3/organizations/{org_id}/clusters/{cluster_ref} |
Get a single Cluster. | Required |
PATCH |
/api/v3/organizations/{org_id}/clusters/{cluster_ref} |
Update Cluster metadata. | Admin |
DELETE |
/api/v3/organizations/{org_id}/clusters/{cluster_ref} |
Delete a Cluster. | Admin |
Cluster Partitions
Partitions segment a Cluster into isolated network zones.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/clusters/cluster-partitions |
List all Partitions across the org. | Required |
GET |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-partitions |
List Partitions for a Cluster. | Required |
POST |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-partitions |
Create a Partition. | Admin |
PATCH |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-partitions/{partition_id} |
Update a Partition. | Admin |
DELETE |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-partitions/{partition_id} |
Delete a Partition. | Admin |
Cluster IPs & Sensors
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips |
List Cluster IP entries. | Required |
POST |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips |
Add a Cluster IP. | Admin |
GET |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips/{ip_id} |
Get a Cluster IP. | Required |
PATCH |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips/{ip_id} |
Update a Cluster IP. | Admin |
DELETE |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips/{ip_id} |
Delete a Cluster IP. | Admin |
GET |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips/{ip_id}/sensor-configs |
List sensor configurations for an IP. | Required |
GET |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips/{ip_id}/sensor-configs/{sensor_number} |
Get a specific sensor config. | Required |
PATCH |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/cluster-ips/{ip_id}/sensor-configs/{sensor_number} |
Update a sensor config. | Admin |
Cluster Assemblies
| Method | Path | Description | Auth |
|---|---|---|---|
POST |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/assemblies |
Assign an Assembly to a Cluster. | Admin |
DELETE |
/api/v3/organizations/{org_id}/clusters/{cluster_ref}/assemblies/{assembly_ref} |
Remove an Assembly from a Cluster. | Admin |
Hardware Catalog
The hardware catalog defines the device types (suppliers, families, versions) that can be used in Assembly Profiles.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/hardware/device-suppliers |
List device suppliers. | Required |
GET |
/api/v3/organizations/{org_id}/hardware/device-suppliers/{supplier_id} |
Get a supplier. | Required |
GET |
/api/v3/organizations/{org_id}/hardware/device-suppliers/{supplier_id}/families |
List device families for a supplier. | Required |
GET |
/api/v3/organizations/{org_id}/hardware/device-suppliers/{supplier_id}/families/{family_id} |
Get a device family. | Required |
GET |
/api/v3/organizations/{org_id}/hardware/device-suppliers/{supplier_id}/families/{family_id}/versions |
List device versions for a family. | Required |
Metrics & Monitoring
Query time-series metrics for Assemblies, Execution Environments, and Clusters.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/metrics/assembly-panels |
Get Assembly metrics (CPU, memory, network, disk, embedded hardware). | Required |
GET |
/api/v3/organizations/{org_id}/metrics/virtual-machine-panels |
Get Execution Environment metrics. | Required |
GET |
/api/v3/organizations/{org_id}/metrics/cluster-panels |
Get Cluster metrics. | Required |
Query params (all metrics endpoints):
| Param | Type | Description |
|---|---|---|
assembly_ref / virtual_machine_id / cluster_ref |
string | ID of the resource to query. |
query_key |
string | Metric panel identifier (e.g. cpu_load, memory, network). |
start |
datetime | Start of the time range. |
end |
datetime | End of the time range. |
step |
string | Resolution step (e.g. 1m, 5m, 1h). |
Announcement Banners
System-wide or Assembly-scoped notification messages shown in the Web UI.
Announcement Banners (global per org)
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/announcement-banners |
List announcement banners. | Required |
POST |
/api/v3/organizations/{org_id}/announcement-banners |
Create an announcement banner. | Admin |
PATCH |
/api/v3/organizations/{org_id}/announcement-banners/{banner_id} |
Update a banner. | Admin |
DELETE |
/api/v3/organizations/{org_id}/announcement-banners/{banner_id} |
Delete a banner. | Admin |
Assembly Banners (scoped to specific Assemblies)
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/banners |
List Assembly-scoped banners. | Required |
POST |
/api/v3/organizations/{org_id}/banners |
Create an Assembly banner. | Admin |
PATCH |
/api/v3/organizations/{org_id}/banners/{banner_id} |
Update a banner. | Admin |
DELETE |
/api/v3/organizations/{org_id}/banners/{banner_id} |
Delete a banner. | Admin |
Organization Service Tokens
Long-lived tokens scoped to an Organization, used for CI runners and automation pipelines.
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/organizations/{org_id}/service-tokens |
List Organization service tokens. | Admin |
POST |
/api/v3/organizations/{org_id}/service-tokens |
Create an Organization service token. | Admin |
GET |
/api/v3/organizations/{org_id}/service-tokens/{token_id} |
Get a service token. | Admin |
PATCH |
/api/v3/organizations/{org_id}/service-tokens/{token_id} |
Revoke a service token. | Admin |
DELETE |
/api/v3/organizations/{org_id}/service-tokens/{token_id} |
Delete a service token. | Admin |
Health & System
| Method | Path | Description | Auth |
|---|---|---|---|
GET |
/api/v3/config |
Returns OIDC configuration for the frontend. | None |
GET |
/livez |
Kubernetes liveness probe. | None |
GET |
/readyz |
Kubernetes readiness probe (includes database connectivity check). | None |