Generated from git diff europa..ariel on the hostedai-user backend. Endpoint changes were verified against actual route registration in main.go, not Swagger annotations alone.
Summary
Metric | Count |
|---|---|
Documented endpoints in europa (Swagger) | 289 |
Documented endpoints in ariel (Swagger) | 321 |
Genuinely new endpoints (live routes) | 13 |
Newly documented endpoints (already existed in europa) | ~22 |
Removed endpoints (live routes) | 4 |
Breaking changes | 5 |
New schemas/DTOs | 52 |
Removed schemas/DTOs | 5 |
Modified schemas/DTOs | 41 |
The +32 net Swagger endpoint delta overstates real change. The ariel release added Swagger annotations to many endpoints that already existed as routes in europa (e.g. /gpu-specs, /baremetal/requests*, /instant-stats, /error-log/log, /pricing-policy, /service/image/{image_id}). This changelog reports actual route/behavior changes.
GET /policy-team appears as new in Swagger but the handler (GetPolicyTeamByIDs) is not registered in main.go in either branch — it is documentation-only and not a live endpoint.
⚠️ Breaking Changes
1. [BREAKING] General-image write endpoints removed — use /baremetal/images
The write operations on /general-images were removed. GET /general-images, GET /general-images/{id} and PUT /general-images/{id}/toggle remain (read + toggle only).
Removed (europa) | Replacement (ariel) |
|---|---|
|
|
|
|
|
|
The /baremetal/images CRUD endpoints already existed in europa, so this is a consolidation: baremetal image management moves entirely under /baremetal/images.
Impact: Clients creating/updating/deleting images via /general-images get 404.
Migration: Switch to the corresponding /baremetal/images endpoint. The request/response schema is CreateBaremetalImagePayload / BaremetalImageModel, not CreateGeneralImageOpts / GeneralImageModel (both removed).
2. [BREAKING] Team response model restructured — flat *_policy_id fields removed
The Team response object was reorganized. Flat policy-ID fields were removed and replaced by nested policy sets plus boolean flags.
Removed top-level fields: resource_policy_id, service_policy_id, pricing_policy_id, image_policy_id, instance_type_policy_id, baremetal_workload_image_policy_id.
Added top-level fields: has_general_policies (bool), has_baremetal_policies (bool), general (TeamPolicySet, omitempty), baremetal (TeamPolicySet, omitempty).
PolicyInfo changes: the single baremetal_workload_image_policy field was split into baremetal_image_policy, baremetal_resource_policy, baremetal_service_policy, baremetal_instance_type_policy.
Impact: Clients reading team policy assignments from the flat *_policy_id fields or from baremetal_workload_image_policy will break.
Migration: Read policy data from the new general / baremetal TeamPolicySet objects and the per-type baremetal_*_policy fields. Use has_general_policies / has_baremetal_policies for quick presence checks.
3. [BREAKING] GET /baremetal/instance-types now returns a paginated object, not an array
| europa | ariel |
|---|---|---|
Response |
|
|
New optional query params added: page, per_page, sort, order, name[contains], gpu_type[eqstr], is_active[eqstr].
Impact: Clients iterating the top-level array break — the list now lives inside the paginated wrapper.
Migration: Read items from the data/items field of PaginatedBaremetalInstanceTypes and handle pagination metadata.
4. [BREAKING] GET /instances/unified/migrated-pods/lookup removed
Before | After |
|---|---|
| ❌ Removed |
Impact: Clients calling this lookup get 404.
Migration: No direct replacement. Legacy-pod migration status is available via GET /instances/unified/migrate-legacy-pods/status.
5. [BREAKING] Policy type "baremetal" parsing and table mapping changed
In models/types/policy_types.go:
PolicyTypeFromString("baremetal")now returns an emptyPolicyType(previously returnedPolicyTypeBaremetalWorkloadImage).PolicyType.DBTableName()for the baremetal workload-image policy now maps tobaremetal_images(previouslyimages).
Impact: Any flow passing the raw string "baremetal" as a policy type (e.g. via /policy/{policy_type}) that relied on it resolving to the baremetal workload-image policy will now resolve to an empty type.
Migration: Confirm the policy-type value expected by the new baremetal policy endpoints; do not rely on the "baremetal" string resolving via PolicyTypeFromString.
New Endpoints
All verified as new route registrations in main.go (not present in europa).
Pods / RootFS
Method | Path | Handler | Purpose |
|---|---|---|---|
POST |
|
| Wipe the RootFS PVC and re-provision a pod from its original base image ( |
POST |
|
| Enable or disable rootfs for a pod instance ( |
PUT |
|
| Bulk update |
Scheduler config & pool pricing
Method | Path | Handler | Purpose |
|---|---|---|---|
PUT |
|
| Update scheduler config (VIP priority, TQ percentage) for a pod instance ( |
GET |
|
| Return scheduler mode configs for a pool. |
PUT |
|
| Update scheduler config for a pool's resource policy. |
POST |
|
| Compute weighted price distribution from a full-share price; supports |
Baremetal
Method | Path | Handler | Purpose |
|---|---|---|---|
GET |
|
| Retrieve SSH credentials for a baremetal instance the user can access ( |
PUT |
|
| Flip the |
PUT |
|
| Flip the |
Images / Teams / Volumes
Method | Path | Handler | Purpose |
|---|---|---|---|
GET |
|
| Retrieve all enabled images, including baremetal images ( |
POST |
|
| Accept the logged-in user's pending invitation to a team. |
GET |
|
| Get |
Removed Endpoints
Method | Path | Note |
|---|---|---|
POST |
| See Breaking #1 — use |
PUT |
| See Breaking #1 — use |
DELETE |
| See Breaking #1 — use |
GET |
| See Breaking #4 — no direct replacement. |
Modified Endpoints (non-breaking)
Method | Path | Change |
|---|---|---|
GET |
|
|
GET |
| Added optional |
GET |
| Added optional |
GET |
| Added optional |
GET |
| Added optional |
DELETE |
| Swagger now documents an optional |
GET |
| Swagger response schema corrected from |
Schema / DTO Changes
Removed (5): models.GeneralImageModel (was an incorrectly-referenced Swagger schema; the handler always returned Image), models.CreateGeneralImageOpts, models.UpdateGeneralImageOpts, models.ServerDetail, models.ServerUnitDetail.
New (52, selected): enums.DynamicMode (scheduler mode: disabled / user_selected / vip_priority; SchedulerMode is an alias), models.UpdateSchedulerConfigOpts, models.PricingSuggestionRequest, models.PricingSuggestionEntry, models.FactoryResetPodOpts, models.PodRootfsActionOpts, models.BulkUpdateWorkersRootfsOpts, models.InstanceCreds, models.PaginatedBaremetalInstanceTypes, models.CreateBaremetalImagePayload, models.CreateBaremetalInstanceTypePayload, models.TeamPolicySet, db.RootfsStatus, plus a large set of baremetal billing/limits/summary DTOs.
Modified (41): notably models.Team / PolicyInfo (see Breaking #2), baremetal subscription/billing models, pricing-policy and resource-policy models.
Migration Checklist
Replace all POST/PUT/DELETE /general-images* calls with /baremetal/images* (Breaking #1).
Update Team-response parsing: stop reading flat *_policy_id fields; read nested general / baremetalTeamPolicySet and baremetal_*_policy fields (Breaking #2).
Update GET /baremetal/instance-types clients to read from the paginated wrapper (Breaking #3).
Remove usage of GET /instances/unified/migrated-pods/lookup (Breaking #4).
Audit any use of the "baremetal" policy-type string (Breaking #5).