Skip to main content

Alternative API changelog - 2.2 Release

Previous Release: 2.1 Release New Release: 2.2

This document covers API changes that affect customers with existing integrations for billing and GPUaaS instance creation. Please review all sections marked BREAKING carefully and update your integrations before upgrading.

Table of Contents

1. Breaking Changes Summary

The following changes require updates to existing API integrations:

Change

Impact

Action Required

Instance creation request body restructured

All instance creation calls will fail

Update request payloads to new format

GPUaaS pod creation moved from subscription to instance API

POST /gpuaas/pool/subscribe no longer used for pod creation

Use POST /service/i/create-instance with pod_opts and a pod_accelerator service

GPUaaS pod costs move to team/workspace billing

/team-billing/gpuaas-pool/ returns empty for migrated subs; historical data moves

Use team/workspace billing with nature: "pod" filter

Billing Swagger documentation corrected

Swagger/OpenAPI spec consumers may need updates

See note — actual API behavior unchanged

Billing response format changed

Billing parsers will break

Update response parsing (PCI devices moved per-instance, new metadata fields)

Instance credentials response changed

Credential parsing may break

Handle nullable fields, new ip and port fields

/service/i/details removed

Service detail calls will return 404

Use /service/i/provisioning-info instead

PoolWorkersConnectionDetails fields now nullable

Worker connection parsing may break

Handle nullable username, password, port, ip

New resource fields use float types

Clients using old integer-typed resource structs

Use new float-typed response fields

Rate limiting added (60 req/min)

High-frequency clients may get 429 errors

Implement rate limit handling and backoff

GET /gpuaas/sub/{sub_id}/pool/{pool_id}/target-url removed

Ray head port calls will fail

Remove calls to this endpoint

2. Instance Creation API Changes

BREAKING: New Request Body Format

The instance creation endpoint POST /service/i/create-instance now uses a unified request body that supports both VM and Pod instance types.

Old Request Format:

{ "service_id": "uuid", "name": "my-instance", "description": "string", "workspace_id": "string", "team_id": "uuid", "region_id": 1, "cluster_id": 1, "image_id": 1, "instance_type_id": "string", "root_storage_type_id": "string", "additional_disk_one_type_id": "string", "additional_disk_two_type_id": "string", "networks": [1, 2], "public_keys": ["ssh-rsa ..."], "pool_ids": [1], "pcidev_ids": [1], "gpu_card_count": 1, "gpu_model": "string", "recipe_id": 1 }

New Request Format:

{ "service_id": "uuid", "name": "my-instance", "description": "string", "workspace_id": "uuid", "team_id": "uuid", "region_id": 1, "image_hash": "string", "instance_type_id": "uuid", "root_storage_type_id": "uuid", "public_keys": ["ssh-rsa ..."], "vm_opts": { "additional_disk_one_type_id": "string", "additional_disk_two_type_id": "string", "networks": [1, 2], "passthrough_accelerators": "string", "gpu_card_count": 1 }, "pod_opts": { "pool_id": 1, "vgpus": 4, "shared_volumes": [1, 2] } }

Key field changes:

Field

Old

New

Notes

service_id

uuid (optional, pointer)

uuid (required, value)

Now required — must always be provided

image_id

integer

Removed

Replaced by image_hash (string)

image_hash

N/A

string

New field — images are now referenced by hash

cluster_id

integer

Removed

No longer needed; region is derived from cluster

region_id

int

uint

Type changed from signed to unsigned integer

workspace_id

string

uuid

Type changed

instance_type_id

string

*uuid (optional)

Type changed to nullable UUID pointer — omit or set null if not applicable

root_storage_type_id

string

*uuid (optional)

Type changed to nullable UUID pointer — omit or set null if not applicable

pool_ids

integer array

Removed

Replaced by pod_opts.pool_id (single uint, not an array)

pcidev_ids

integer array

Removed

Removed entirely — no direct replacement

gpu_model

string

Removed

Replaced by vm_opts.passthrough_accelerators (string)

recipe_id

integer (optional)

Removed

Managed internally — no longer a client-supplied field

vm_opts

N/A

object (optional)

New — VM-specific options grouped here

pod_opts

N/A

object (optional)

New — Pod/GPUaaS-specific options grouped here

Important: For VM services, provide vm_opts. For Pod/GPUaaS services (service type pod_accelerator), provide pod_opts. Providing the wrong options object for the service type will return an error.

New Instance Response Fields

Instance responses now include:

Field

Type

Description

nature

enum: vm, pod

Whether the instance is a VM or a Pod

vm_public_ips

string array

Public IP addresses assigned to the instance

3. GPUaaS Pod Creation: Subscription to Instance Migration

BREAKING: Pods Are Now Created as Instances, Not Subscriptions

In the previous release, GPUaaS pods were created by subscribing to a GPU pool via a dedicated endpoint. In Titan, GPUaaS pods are now first-class instances created through the same unified instance creation endpoint as VMs.

Old Approach (Oct Release): Pool Subscription

Endpoint: POST /gpuaas/pool/subscribe

Request body (SubscribeToPoolPayload):

{ "pool_id": 1, "team_id": "uuid", "is_vip_priority": false, "vgpus": 4, "guaranteed_gpu_share_percent": 100, "instance_type_id": "uuid", "ephemeral_storage_block_id": "uuid", "shared_volumes": [1, 2], "image_uuid": "uuid", "port_guid": "string (optional)", "ifb_subscription_id": "string (optional)" }

This created a PoolSubscription record, and a pod was provisioned asynchronously as a side effect of the subscription. The pod did not appear in the instances list and was managed entirely through the GPUaaS subscription system.

New Approach (Titan): Unified Instance Creation

Endpoint: POST /service/i/create-instance

Request body (same endpoint as VM creation, using pod_opts):

{ "service_id": "uuid (must be a pod_accelerator service)", "name": "my-pod", "description": "string", "workspace_id": "uuid", "team_id": "uuid", "region_id": 1, "image_hash": "string", "instance_type_id": "uuid", "root_storage_type_id": "uuid", "public_keys": ["ssh-rsa ..."], "pod_opts": { "pool_id": 1, "vgpus": 4, "shared_volumes": [1, 2] } }

The backend detects the pod_accelerator service type and provisions a pod directly. The pod is created as an Instance record with nature: "pod" and appears in the unified instances list alongside VMs.

Field Mapping: Old Subscription to New Instance Creation

Old Field (SubscribeToPoolPayload)

New Location

Notes

pool_id

pod_opts.pool_id

Same concept, nested under pod_opts

team_id

team_id

Moved to top-level shared field

vgpus

pod_opts.vgpus

Same concept, nested under pod_opts

instance_type_id

instance_type_id

Moved to top-level shared field

ephemeral_storage_block_id

root_storage_type_id

Renamed — same concept

shared_volumes

pod_opts.shared_volumes

Same concept, nested under pod_opts

image_uuid

image_hash

Renamed — images now referenced by hash string

is_vip_priority

Removed

No longer a user-supplied option

guaranteed_gpu_share_percent

Removed

No longer a user-supplied option

port_guid

Removed

Infiniband handling is now managed internally

ifb_subscription_id

Removed

Infiniband handling is now managed internally

N/A

service_id

New required field — must reference a pod_accelerator service

N/A

name

New required field — human-readable instance name

N/A

workspace_id

New required field — instances belong to a workspace

N/A

region_id

New required field — explicit region selection

N/A

public_keys

New optional field — SSH public keys for pod access

Key Behavioral Differences

Aspect

Old (Subscription)

New (Instance)

Conceptual model

"Subscribe to a GPU pool" — pod is a side effect

"Create an instance" — pod is a first-class resource

Visibility

Pod did not appear in instance listings

Pod appears in /instances/unified alongside VMs

Billing

Only via /team-billing/gpuaas-pool/

Appears in team/workspace billing with nature: "pod"

Lifecycle management

Managed via subscribe/unsubscribe endpoints

Managed via unified instance endpoints (resize, deprovision, volume actions)

GPU allocation

Implicit during provisioning

Explicit pre-reservation via HaiDra before provisioning; auto-cleanup on failure

Service selection

No service concept — user directly subscribed to a pool

Must select a pod_accelerator service, which determines available pools, instance types, and images

Workspace assignment

Pods had no workspace

Pods belong to a workspace (required for billing and access control)

Unsubscribe Replaced by Instance Deletion

Old: POST /gpuaas/pool/unsubscribe with a subscription ID.

New: Delete or deprovision the instance through the unified instance management endpoints. The pod deprovisioning flow handles GPU release and cleanup automatically.

4. Billing API Changes

Swagger Documentation Correction: timezone and region_id Parameters

Note: The previous Swagger/OpenAPI specification incorrectly documented timezone and region_id as required path parameters. In practice, the actual API has always accepted these as optional query parameters. The Titan release corrects the Swagger documentation to match the actual behavior.

If you are calling the API directly, no changes are needed — the endpoint URLs and parameter handling are unchanged.

If you generated client code from the Swagger spec, you may need to regenerate your client, as the spec now correctly reflects these as optional query parameters rather than required path segments.

The billing endpoint URLs remain:

Endpoint

URL

Query Parameters

Team billing

GET /team-billing/{team_id}/{start_date}/{end_date}/{interval}

timezone (optional, enum: local, utc, default: utc)

Shared storage billing

GET /team-billing/shared-storage/{team_id}/{start_date}/{end_date}/{interval}

region_id (optional), timezone (optional)

GPUaaS pool billing

GET /team-billing/gpuaas-pool/{team_id}/{start_date}/{end_date}/{interval}

region_id (optional), timezone (optional)

Workspace billing

GET /workspace-billing/{workspace_id}/{start_date}/{end_date}/{interval}

timezone (optional)

Team billing by workspace

GET /team-billing/group-by-workspace/{team_id}/{start_date}/{end_date}/{interval}

timezone (optional)

BREAKING: Billing Estimate Request

The billing estimate endpoint POST /calculate-instance-billing-estimate now accepts the same new UnifiedInstanceCreateOpts body described in Section 2.

BREAKING: GPUaaS Pod Costs Move to Team/Workspace Billing

In the previous release, GPUaaS pod costs were only visible through the dedicated GPUaaS pool billing endpoint (/team-billing/gpuaas-pool/). In Titan, legacy GPUaaS pods are migrated to unified instances with nature: "pod", and their costs (GPU, vRAM, TFlops, Subscription Rate, Ephemeral Storage, CPU, RAM) now appear in the standard team and workspace billing responses alongside VM instance costs.

Important: Historical billing data moves with the migration. When a legacy GPUaaS pod is migrated to a unified instance:

  • The new instance preserves the original creation timestamp of the pool subscription, so historical billing queries (e.g., for periods months before the upgrade) will return the migrated pod as an instance with nature: "pod".

  • The original pool_subscriptions row is permanently deleted from the database during migration. This means the dedicated GPUaaS pool billing endpoint (/team-billing/gpuaas-pool/) will no longer return data for migrated subscriptions — including historical periods.

  • There is no double-counting: costs appear exclusively in the team/workspace billing view after migration.

If you rely on the /team-billing/gpuaas-pool/ endpoint:

  • After upgrade, this endpoint will return empty or reduced results as migrated subscriptions are removed from the underlying data.

  • To retrieve GPUaaS pod costs, use the standard team or workspace billing endpoints and filter by nature: "pod".

  • The /team-billing/gpuaas-pool/ endpoint remains functional for any non-migrated pool subscriptions, but all legacy pods are migrated during the upgrade process.

BREAKING: Billing Response Format Changes

PCI device costs consolidated per-instance:

  • The top-level pci_devices key has been removed from team and workspace billing responses.

  • PCI device costs are now included within each instance's billing data under a pci_dev key.

New per-instance metadata fields in billing responses:

Team and workspace billing responses now include both VM and Pod instances. Each instance entry includes new metadata fields:

Field

Type

Description

instance_name

string

Human-readable instance name

nature

enum: vm, pod

Whether this is a VM or Pod instance

model_type

string (optional)

GPU model type (pod instances only)

pool_id

integer (optional)

GPUaaS pool ID (pod instances only)

pool_name

string (optional)

GPUaaS pool name (pod instances only)

sharing_ratio

uint (optional)

GPU sharing ratio (pod instances only)

vendor_type

string (optional)

GPU vendor type (pod instances only)

instance_type

object (optional)

Instance type details including ephemeral storage (pod instances only)

total_cost

decimal (optional)

Total cost for the billing period (pod instances only)

Pod instance billing resources: For instances with nature: "pod", the Resources map contains pod-specific cost categories: Subscription Rate, GPU, vRAM, CPU, RAM, Ephemeral Storage, and TFlops — rather than the VM-style resources (Disk, IP, etc.).

Usage data structure changes:

  • stats and symbol fields are now omitted when empty

  • New fields: quantity (float64) and total_usage (float64)

  • Resources field type changed from map[string]decimal to map[string]interface{} (can contain richer nested data including the Usage struct)

New Endpoint: Instance-Level Billing

Method

Endpoint

Description

GET

/instance-billing/{instance_id}/{start_date}/{end_date}/{interval}

Billing data for a specific instance

Optional query param: timezone (enum: local, utc).

5. GPUaaS & Pod Management Changes

BREAKING: Pool Worker Connection Details Schema Change

The PoolWorkersConnectionDetails response has changed significantly:

Field

Old Type

New Type

Notes

pool_subscription_id

uint (required)

uint (nullable)

Now nullable

username

string (required)

string (nullable)

Now nullable

password

string (required)

string (nullable)

Now nullable

port

int (required)

int (nullable)

Now nullable

ip

string (required)

string (nullable)

Now nullable

region_id

N/A

uint (required)

New field

team_id

N/A

string (required)

New field

team_name

N/A

string (nullable)

New field

pool_id

N/A

uint (required)

New field

recipe_id

N/A

uint (nullable)

New field

Available Resources: New Float-Typed Fields

The GET /gpuaas/pool/{pool_id}/available_resources endpoint is new in this release and uses float64 for CPU, memory, and storage fields. The related MaxDeployableVGpusPerNode response now includes new float32 fields (available_cpu_cores, available_memory_mb, available_storage_mb) alongside the existing integer vgpu_count. If you previously used the internal AllocatableResourcesNode struct (which had integer types for resource fields), note that the new response structs use float types instead.

BREAKING: Subscribed Teams Response Change

GET /gpuaas/pool/{pool_id}/subscribed_teams now:

  • Includes pool_subscription_id in each entry

  • The status field now always returns "subscribed" (previously returned the actual pool subscription status)

New Pod Lifecycle Endpoints

Method

Endpoint

Description

GET

/pods

List all running pods (optional search query param)

POST

/pods/provision

Provision a new pod

POST

/pods/deprovision

Deprovision a pod

POST

/pods/resize

Resize a pod (returns recipe execution UUID)

POST

/pods/volume

Attach/detach a volume to/from a pod

GET

/pods/volume-mount

Get pod volume mount info

GET

/pods/extract-info

Extract detailed pod info

GET

/pods/status

Get pod status

POST

/pods/{pool_subscription_id}/migrate_pods

Migrate legacy pods

New Pod Management Endpoints (User Panel)

Method

Endpoint

Description

POST

/pods/volume-action

Mount/unmount volumes on pods

GET

/pods/metrics

Resource usage metrics for a pod

POST

/pods/{pod_id}/resize/instance-type

Resize pod instance type

POST

/pods/{pod_id}/resize/ephemeral-storage

Resize pod ephemeral storage

GET

/pods/{pod_id}/resize/instance-type/options

Get available resize instance types

GET

/pods/{pod_id}/resize/ephemeral-storage/options

Get available resize storage options

GET

/pods/{pod_id}/resize/cost-estimate

Cost estimate for resize

New GPUaaS Resource Endpoints

Method

Endpoint

Description

GET

/gpuaas/pool/{pool_id}/available_resources

Available CPU, memory, storage per node

POST

/gpuaas/{gpuaas_id}/max_deployable_vgpus/batch

Batch query max deployable vGPUs across pools

POST

/gpuaas/node/reboot

Reboot a GPUaaS node

New Service Type: pod_accelerator

A new service type pod_accelerator has been added. API clients that parse service type enums must now handle this value in addition to the existing types (cpu_only, cpu_gpu_card, cpu_gpuaas).

GPU Subscription Flow Change

The pool subscription flow now pre-reserves GPUs before provisioning. On recipe failure, GPU assignments are automatically cleaned up. On success, assignments are confirmed. This is transparent to API clients but may affect timing expectations.

GPU Spec Listing Change

GET /gpuaas/cards-specs/all no longer requires the timestamp query parameter. The parameter is ignored if sent. The endpoint now always returns all GPU specs.

6. New Endpoints

Unified Instance Management

Method

Endpoint

Description

GET

/instances/unified

Paginated listing of all instances (VMs + Pods)

GET

/instances/unified/{instance_id}

Detailed info for a single unified instance

GET

/instances/unified/{instance_id}/exposed-services

List exposed services for a pod instance

POST

/instances/unified/{instance_id}/retry

Retry provisioning a failed VM

POST

/instances/unified/{instance_id}/refresh-connections

Force-refresh pod connection details

Service Provisioning Flow

Method

Endpoint

Description

GET

/service/i/team-accessible-scenarios

Scenarios accessible to a team

GET

/service/i/team-accessible-regions

All regions accessible to a team

GET

/service/i/scenario-compatible-services

Services under a scenario for a team

GET

/service/i/provisioning-info

Replaces removed /service/i/details

GET

/service/i/storage-blocks

Compatible storage blocks for a service

GET

/service/i/shared-volumes

Compatible shared volumes (pod services)

GET

/service/i/additional-disks

Compatible additional disks for VM services

GET

/service/i/diagnose

Diagnostic info about service eligibility

Service Options

Method

Endpoint

Description

GET

/service/opts/images

Image options filtered by service

GET

/service/opts/instance-types

Instance type options by service

GET

/service/opts/storage-blocks

Storage block options by service

GET

/service/opts/accelerators

Accelerators grouped by vendor

POST

/service/opts/accelerator-pools

Accelerator pool options for a service

Instance IP Retrieval

Method

Endpoint

Description

POST

/instances/ips

Get IPs for instances updated since a timestamp

GET

/ips/instance/{instance_id}

Get public IPs for a specific instance

Recipe Execution

Method

Endpoint

Description

GET

/recipes/exec/status/{exec_uuid}

Get recipe execution status by UUID

7. Removed Endpoints

Method

Endpoint

Replacement

GET

/service/i/details

Use /service/i/provisioning-info

GET

/gpuaas/sub/{sub_id}/pool/{pool_id}/target-url

Removed (no replacement)

GET

/clusters

Removed (was already returning 403)

GET

/service/{team_id}/health

Removed

8. Instance Credentials Response Change

BREAKING

The instance credentials response now includes additional fields and makes all fields nullable:

Old format:

{ "username": "string", "password": "string" }

New format:

{ "ip": "string or null", "username": "string or null", "password": "string or null", "port": 22 }

9. Rate Limiting

A new rate limiting system has been added to all authenticated API endpoints.

Parameter

Value

Default limit

60 requests per minute

Burst allowance

10 requests

Response code when exceeded

HTTP 429 Too Many Requests

Exemption

Full administrator accounts

Action required: Implement retry logic with exponential backoff for HTTP 429 responses in your API clients.

10. New Error Codes

Instance Creation Errors

Error Code

Description

ERR_VM_OPTIONS_NOT_APPLICABLE_FOR_POD_ACCELERATOR

VM options provided for a pod_accelerator service

ERR_POD_OPTIONS_NOT_APPLICABLE_FOR_VM_SERVICES

Pod options provided for a VM service

ERR_POD_OPTIONS_MUST_BE_PROVIDED_FOR_POD_ACCELERATOR_SERVICE

Missing pod_opts for pod_accelerator service

ERR_VM_OPTIONS_MUST_BE_PROVIDED_FOR_GPU_SERVICES

Missing vm_opts for GPU VM service

ERR_INVALID_GPU_CARD_COUNT

Invalid GPU card count requested

ERR_EXCEEDED_MAXIMUM_GPU_CARD_COUNT

GPU count exceeds maximum allowed

ERR_NO_AVAILABLE_GPU_POOLS_FOR_THE_REQUESTED_SERVICE

No GPU pools available for the service

ERR_INSTANCE_CREATION_FAILED

General instance creation failure

ERR_NO_COMPATIBLE_IMAGES_FOR_SERVICE

No images compatible with the selected service

Pod Operation Errors

Error Code

Description

POD_PROVISIONING_ERR_CODE (1190004)

Pod provisioning failed

POD_ATTACH_VOLUME_ERR_CODE (1190005)

Pod volume attach failed

POD_DETACH_VOLUME_ERR_CODE (1190006)

Pod volume detach failed

POD_DEPROVISIONING_ERR_CODE (1190007)

Pod deprovisioning failed

POD_RESIZING_ERR_CODE (1190008)

Pod resizing failed

ERR_FAILED_TO_PROVISION_POD

Failed to provision pod

ERR_FAILED_TO_DEPROVISION_POD

Failed to deprovision pod

ERR_FAILED_TO_EXECUTE_POD_VOLUME_ACTION

Volume action failed

ERR_FAILED_TO_EXECUTE_POD_RESIZE

Resize failed

Billing & Service Errors

Error Code

Description

ERR_RATE_LIMIT_EXCEEDED

Rate limit exceeded (HTTP 429)

ERR_NO_ACCESSIBLE_REGIONS_FOUND_FOR_THE_TEAM

Team has no accessible regions

ERR_GPUAAS_NOT_ACTIVE_IN_SELECTED_REGION

GPUaaS not active in the selected region

ERR_SERVICE_NOT_GPU_SERVICE

Service is not a GPU service

ERR_SERVICE_NOT_POD_ACCELERATOR

Service is not a pod_accelerator

11. Migration Guide

Step 1: Migrate GPUaaS Pod Creation from Subscription to Instance API

If you create GPUaaS pods via POST /gpuaas/pool/subscribe:

  1. Switch to POST /service/i/create-instance with a pod_accelerator service.

  2. Map your existing fields to the new format (see Section 3 for full field mapping):

    • pool_id -> pod_opts.pool_id

    • vgpus -> pod_opts.vgpus

    • shared_volumes -> pod_opts.shared_volumes

    • instance_type_id -> top-level instance_type_id

    • ephemeral_storage_block_id -> root_storage_type_id

    • image_uuid -> image_hash

    • team_id -> top-level team_id

  3. Add new required fields: service_id (a pod_accelerator service), name, workspace_id, region_id.

  4. Remove fields that no longer exist: is_vip_priority, guaranteed_gpu_share_percent, port_guid, ifb_subscription_id.

  5. Replace POST /gpuaas/pool/unsubscribe with instance deletion/deprovisioning through the unified instance endpoints.

Step 2: Update VM Instance Creation Calls

  1. service_id is now required (previously optional) — always provide it.

  2. Replace image_id (integer) with image_hash (string).

  3. Remove cluster_id from requests.

  4. Change workspace_id to UUID format. Change instance_type_id and root_storage_type_id to UUID format (these are now nullable — omit or set null when not applicable).

  5. Move VM-specific fields (additional_disk_*, networks, gpu_card_count) into a vm_opts object. Note: gpu_model is now vm_opts.passthrough_accelerators.

  6. Remove pcidev_ids and recipe_id — these fields no longer exist.

Step 3: Update Billing Response Parsing

Note: The billing endpoint URLs are unchanged. The timezone and region_id parameters were always optional query parameters in practice — the previous Swagger spec was incorrect and has now been corrected. If you generated client code from the old Swagger spec, regenerate it.

  1. Update billing response parsers:

    • Remove top-level pci_devices parsing; PCI costs are now within each instance entry under a pci_dev key.

    • Handle new per-instance metadata fields (instance_name, nature, model_type, pool_id, pool_name, total_cost).

    • Update Resources parsing to handle map[string]interface{} instead of map[string]decimal.

  2. Team/workspace billing now includes pod instances (migrated GPUaaS pods) alongside VMs. Filter by nature field ("vm" or "pod") if you need to separate them. Pod instances have different resource categories (e.g., Subscription Rate, GPU, TFlops) than VMs.

  3. If you use /team-billing/gpuaas-pool/: After upgrade, migrated pool subscriptions are permanently removed from the database, so this endpoint will return empty or reduced results. Switch to the team/workspace billing endpoints and filter by nature: "pod" to retrieve GPUaaS pod costs. Historical billing data for all periods (including pre-upgrade) is available through the team/workspace billing path.

Step 4: Update Billing Estimate Calls

Update POST /calculate-instance-billing-estimate to use the same new UnifiedInstanceCreateOpts request body format.

Step 5: Handle Nullable Fields in Worker Connection Details

If you parse PoolWorkersConnectionDetails, update your code to handle:

  • username, password, port, ip as nullable (may be null)

  • New required fields: region_id, team_id, pool_id

Step 6: Update Instance Credentials Parsing

Handle ip, username, password as nullable strings and add handling for the new port field.

Step 7: Replace Removed Endpoints

  • Replace /service/i/details with /service/i/provisioning-info.

  • Remove any calls to /gpuaas/sub/{sub_id}/pool/{pool_id}/target-url.

Step 8: Handle Available Resources Response Types

The GET /gpuaas/pool/{pool_id}/available_resources endpoint is new and returns float64 for CPU, memory, and storage fields. The MaxDeployableVGpusPerNode response also now includes new float32 resource fields. Ensure your client models use float types for these fields.

Step 9: Implement Rate Limit Handling

Add retry logic with exponential backoff for HTTP 429 responses. The default limit is 60 requests per minute with a burst of 10.

Step 10: Handle New Service Type

Update service type parsing to handle the new pod_accelerator enum value in addition to cpu_only, cpu_gpu_card, and cpu_gpuaas.

For the complete Swagger/OpenAPI specification, refer to the updated swagger.json and swagger.yaml files included in this release.