API Changelog: Admin Panel 2.4.1
By Volodymyr Lukashkin
5 min
Listen
2
Add a reaction
Generated from a diff of the sim_api (hai_admin_api) repository between branch ariel (2.4.0, 2026-06-11, 8a4a6f13) and branch ariel_1 (2.4.1, 2026-06-29, 6918b5f5). 374 commits in range. Source of truth for endpoints: main.go route registrations, cross-checked against docs/swagger.json for contracts. Route/behaviour changes are verified against live route registration, not Swagger annotations alone.
1. Summary
Old → New: 2.4.0 (ariel) → 2.4.1 (ariel_1).
Endpoints (live routes):20 added, 0 removed, 0 changed method/path/auth. Registered routes 526 → 546.
Headline additions: GPUaaS floating-IP management (5 endpoints), KVM high-availability control + node force-remove, Marketplace pod RootFS / factory-reset / recon-inventory, pod-instance and team sync endpoints, node/region storage availability, and admin recipe execution logs.
Documentation: Swagger documented operations 499 → 550. Beyond the 20 new live routes, ~38 pre-existing routes (the full KVM node-management surface, Marketplace OAuth/authorize, pod RootFS/scheduler, pool scheduler-config, region leader-secret) that were live since 2.4.0 but undocumented are now documented.
Contracts: 51 new DTO definitions, ~19 existing DTOs enriched. 14 DTOs renamed by an internal Go package move (identical fields — see Deprecation Notices).
Breaking changes: 1 —
rootfs_persistence_capablerelocated from node-level to pool-level DTOs (see §2).
Metric | Count |
|---|---|
Registered routes (main.go) | 526 → 546 |
Documented operations (Swagger) | 499 → 550 |
Genuinely new endpoints (live routes) | 20 |
Newly documented endpoints (already live in 2.4.0) | ~38 |
Removed endpoints (live routes) | 0 |
Removed from Swagger only (doc cleanup, never routed / renamed) | 7 |
Breaking changes (wire contract) | 1 |
New schemas / DTOs | 51 |
Renamed schemas / DTOs (package move, identical fields) | 14 |
Removed schemas / DTOs (stale, never routed) | 2 |
Enriched schemas / DTOs | ~19 |
2. ⚠️ Breaking Changes
One breaking wire change. The rootfs_persistence_capable field was removed from node-level DTOs and relocated to the pool level. Clients that read this field from node responses will no longer find it.
Area | What changed | Action required |
|---|---|---|
GPUaaS node DTOs |
| Read RootFS capability from the pool object ( |
3. ⚠️ Deprecation Notices (forward-looking)
The items below are not removed in 2.4.1 but are planned to change or be phased out. Plan integration work accordingly.
Item | Status | Recommended path |
|---|---|---|
Node-level | DEPRECATED Already removed from the node DTOs in 2.4.1 (see §2); the concept now lives only at pool level. | Consume pool-level capability only. |
Marketplace linking via plaintext token — | LEGACY The code marks this the “legacy paste-token” link path. The OAuth authorize flow ( | New integrations should link via the OAuth authorize flow rather than posting a plaintext token. |
Package-prefixed Swagger schema names (e.g. | CHANGING Schema definitions are being progressively moved from the | Clients that generate SDKs from the OpenAPI spec should expect model class-name churn and plan to regenerate. Consider pinning names via a model-name mapping. |
4. New Endpoints (live routes)
All verified as new route registrations in main.go (not present in 2.4.0). Auth = default means no explicit Secure wrapper on the route.
GPUaaS Floating IP management (5)
Method | Path | Handler | Auth | Purpose |
|---|---|---|---|---|
GET | /api/gpuaas/floating-ip/list | ListFloatingIPMappings | Secure | List floating-IP mappings |
GET | /api/gpuaas/floating-ip/available-ips | GetAvailableIPs | Secure | List available IPs for mapping |
POST | /api/gpuaas/floating-ip/create | CreateFloatingIPMapping | Secure | Create a floating-IP mapping |
PUT | /api/gpuaas/floating-ip/{id}/edit | UpdateFloatingIPMapping | Secure | Update a mapping |
DELETE | /api/gpuaas/floating-ip/{id}/delete | DeleteFloatingIPMapping | Secure | Delete a mapping |
KVM high-availability & node lifecycle (4)
Method | Path | Handler | Auth | Purpose |
|---|---|---|---|---|
GET | /api/kvm/region/{region_id}/ha/status | GetKVMHAStatus | default | Get HA status for a KVM region |
POST | /api/kvm/region/{region_id}/ha/enable | EnableKVMHA | default | Enable HA for a KVM region |
POST | /api/kvm/region/{region_id}/ha/disable | DisableKVMHA | default | Disable HA for a KVM region |
POST | /api/kvm/node/{id}/force_remove | ForceRemoveKVMClusterNode | default | Force-remove a KVM cluster node |
Marketplace pod operations (4)
Method | Path | Handler | Auth | Purpose |
|---|---|---|---|---|
GET | /api/marketplace/pods/rootfs-status | MarketplacePodRootfsStatus | MarketplaceGate | RootFS extraction status for a marketplace pod |
POST | /api/marketplace/pods/rootfs | MarketplacePodRootfs | MarketplaceGate | RootFS action on a marketplace pod |
POST | /api/marketplace/pods/factory_reset | MarketplacePodFactoryReset | MarketplaceGate | Factory-reset a marketplace pod |
GET | /api/marketplace/recon/inventory | GetReconInventory | MarketplaceGate | Reconciliation inventory of published pools/workers |
Pod-instance, team sync, storage, logs & stats (7)
Method | Path | Handler | Auth | Purpose |
|---|---|---|---|---|
POST | /api/pod-instances/sync | SyncPodInstances | default | Sync pod-instance state |
DELETE | /api/pod-instances/{worker_id} | DeletePodInstance | default | Delete a pod instance by worker ID |
POST | /api/teams/sync | SyncTeams | default | Sync teams |
GET | /api/gpuaas/nodes/storage/available | GpuaasNodesGetStorageAvailability | default | Available storage across GPUaaS nodes |
GET | /api/regions/{region_id}/storage | GetRegionStorageDetail | default | Storage detail for a region |
GET | /api/recipes/execution-logs | GetRecipeExecutionLogs | default | Admin recipe execution logs |
GET | /api/get-last-10-min-stats | GetLast10MinStats | default | Instant stats for the last 10 minutes |
5. Newly Documented Endpoints (already live in 2.4.0)
These routes existed in main.go in 2.4.0 (most were added during the europa → ariel cycle) but were absent from Swagger. They are not new API — only newly documented. The largest group is the full KVM node-management surface previously flagged as a doc gap.
~38 newly documented pre-existing endpoints
6. Removed / Cleaned-up (documentation only)
No live route was removed. The following disappeared from Swagger only — stale definitions or path corrections. No client impact.
Swagger path (2.4.0) | Reason |
|---|---|
GET /clusters/{cl_id}/pci_devs | Path corrected to match the live route |
GET /gpuaas-npu | Path corrected to match the live route |
GET /marketplace/status | Stale Swagger entries — never registered as live routes in either branch. |
POST /marketplace/connect | Documented-but-not-routed in 2.4.0 (flagged as a doc gap in the previous changelog); Swagger definitions now removed. DTOs |
7. Schema / DTO Changes
7.1 New definitions (51)
Full list of 51 new definitions
7.2 Enriched definitions
Definition | Change |
|---|---|
db.Region | + |
models.Region | + |
models.CreateRegionReq | + |
models.Status | + |
models.GPUaaSPool | + |
models.GPUaaSNodeDetails, models.NodeGpuaasResp | + |
models.AddNodeGpuaasOpts | − |
models.ProvisionPodOpts | + |
models.MarketplacePodProvisionRequest | + |
models.MarketplacePodDetail | + |
models.MarketplacePoolResponse, models.MarketplacePoolDetailResponse | + |
models.ProvisionMarketplacePoolRequest | + |
models.BaremetalSubscriptionResp | + |
models.SubscribeToBaremetalPayload | + |
models.WorkerSSHInfo | + |
models.Role |
|
models.VDisk |
|
7.3 Renamed definitions (package move — identical fields)
These 14 definitions were moved from the models package to types. The JSON wire format (field names and types) is identical; only the Swagger schema name changed. This affects OpenAPI code-generation clients (regenerate SDKs) but not clients that read/write raw JSON.
14 renamed definitions (models.X → types.X)
7.4 Removed definitions (2)
ctrls.marketplaceConnectRequest, ctrls.marketplacePool — removed together with the stale /marketplace/connect Swagger paths (never routed). No client impact.
8. Doc Gaps & QA Follow-up
Documented but not routed: none newly introduced; the previously flagged
/marketplace/connect|sync|disconnectentries were cleaned up in this release.Unauthenticated administrative routes: several new endpoints register with no
Securewrapper (Auth = default) — e.g./api/get-last-10-min-stats, the/api/kvm/region/{region_id}/ha/*controls,/api/pod-instances/sync,/api/teams/sync. Confirm these are intended to be internal/service-only and are gated at the network layer. Worth a QA/security ticket.
The customer-facing companion to this page is the child page Admin Panel API — 2.4.0 → 2.4.1 (Integrator Migration Guide). Keep both in sync when the diff is revised.