{ "components": { "schemas": { "AckOutbox": { "properties": { "consumer_id": { "type": "string" }, "event_id": { "format": "int64", "type": "integer" } }, "required": [ "consumer_id", "event_id" ], "type": "object" }, "Action": { "properties": { "action_id": { "format": "uuid", "type": "string" }, "action_timestamp": { "format": "date-time", "type": [ "string", "null" ] }, "checkpoint_completed_timestamp": { "format": "date-time", "type": [ "string", "null" ] }, "checkpoint_id": { "format": "uuid", "type": "string" }, "checkpoint_name": { "description": "The checkpoint's CEDANA_CHECKPOINT name (the env value it restores from),\nused to group automatic/named checkpoints. Null for unnamed checkpoints.", "type": [ "string", "null" ] }, "delta": { "description": "Whether the checkpoint is a (GPU delta) increment. Authoritative even\nwhen parent_checkpoint_id is null (malformed id at ingest, parent deleted)", "type": [ "boolean", "null" ] }, "details": {}, "gpu": { "type": "string" }, "node_name": { "type": [ "string", "null" ] }, "parent_checkpoint_id": { "description": "Checkpoint this one is an increment of; null for full checkpoints and\nfor deltas whose parent is unknown or deleted", "format": "uuid", "type": [ "string", "null" ] }, "platform": { "type": "string" }, "reason": { "type": [ "string", "null" ] }, "status": { "type": "string" }, "total_duration": { "format": "int64", "type": [ "integer", "null" ] }, "total_io": { "format": "int64", "type": [ "integer", "null" ] }, "type": { "type": "string" }, "workload_kind": { "description": "Owning workload kind of the checkpointed pod: \"DynamoGraphDeployment\" when\nthe pod belongs to a Dynamo deployment, else the pod's immediate\nownerReferences kind (ReplicaSet/Job/StatefulSet…). Null if unknown.", "type": [ "string", "null" ] } }, "required": [ "action_id", "checkpoint_id", "status", "type", "details", "gpu", "platform" ], "type": "object" }, "ActionDetails": { "description": "Action details response for a single action", "properties": { "action_id": { "description": "The action ID", "format": "uuid", "type": "string" }, "action_timestamp": { "description": "When the action was created", "format": "date-time", "type": [ "string", "null" ] }, "checkpoint_completed_timestamp": { "description": "When checkpoint completed (if any)", "format": "date-time", "type": [ "string", "null" ] }, "checkpoint_id": { "description": "Associated checkpoint ID (if any)", "format": "uuid", "type": [ "string", "null" ] }, "checkpoint_info": { "description": "Full checkpoint profiling info (JSON)" }, "checkpoint_name": { "description": "Checkpoint name/image", "type": [ "string", "null" ] }, "checkpoint_size": { "description": "Checkpoint size in bytes", "format": "int64", "type": [ "integer", "null" ] }, "details": { "description": "Original request details (JSONB)" }, "gpu": { "description": "GPU type used", "type": [ "string", "null" ] }, "node_name": { "description": "Node where the pod was running", "type": [ "string", "null" ] }, "platform": { "description": "Platform (e.g., containerd)", "type": [ "string", "null" ] }, "reason": { "description": "Reason for the action (heartbeat, manual, nodeTermination, etc.)", "type": [ "string", "null" ] }, "restore_path": { "description": "Restore path for the checkpoint", "type": [ "string", "null" ] }, "status": { "description": "Current status of the action", "type": "string" }, "total_duration": { "description": "Checkpoint duration in nanoseconds (from profiling)", "format": "int64", "type": [ "integer", "null" ] }, "total_io": { "description": "Total I/O in bytes (from profiling)", "format": "int64", "type": [ "integer", "null" ] }, "type": { "description": "Action type (checkpoint_pod, restore_pod, heartbeat)", "type": "string" } }, "required": [ "action_id", "type", "status", "details" ], "type": "object" }, "ActivationReport": { "properties": { "desired_state": { "type": "string" }, "endpoint": { "type": [ "string", "null" ] }, "observed_generation": { "format": "int64", "type": "integer" }, "phase": { "type": "string" }, "profile_id": { "type": "string" }, "ready": { "type": "boolean" } }, "required": [ "profile_id", "desired_state", "phase", "ready" ], "type": "object" }, "Alert": { "properties": { "date_threshold": { "type": [ "string", "null" ] }, "spend_threshold": { "type": [ "string", "null" ] } }, "type": "object" }, "ArtifactRef": { "properties": { "artifact_id": { "type": "string" }, "checkpoint_mode": { "type": "string" }, "status": { "type": "string" } }, "required": [ "artifact_id", "checkpoint_mode", "status" ], "type": "object" }, "ArtifactResidency": { "description": "Whether an artefact can still be restored from, and why. status is only what the\ncontrol plane last recorded, which a reboot does not update.", "properties": { "artifact_boot_id": { "description": "Boot id recorded when the checkpoint was taken.", "type": [ "string", "null" ] }, "boot_tied": { "description": "True when the storage tier ties the artefact to a single boot of a\nsingle node (`memory`, `local`). Durable tiers survive reboots.", "type": "boolean" }, "flags_verified": { "description": "Whether the engine flags still match what the next worker would start with. The\ncompatibility key does not cover them.", "type": [ "boolean", "null" ] }, "node_boot_id": { "description": "Boot id the node is reporting now, per the latest cluster sync.", "type": [ "string", "null" ] }, "node_last_sync": { "format": "date-time", "type": [ "string", "null" ] }, "node_name": { "type": [ "string", "null" ] }, "node_status": { "type": [ "string", "null" ] }, "reason": { "description": "One sentence an operator can act on, naming the evidence.", "type": "string" }, "state": { "description": "restorable when every check in the controller's rejectArtifact passes; otherwise\nthe value names the check that failed.", "type": "string" } }, "required": [ "state", "reason", "boot_tied" ], "type": "object" }, "AuthorizeRequest": { "properties": { "estimated_prompt_tokens": { "format": "int64", "type": "integer" }, "logical_model": { "type": "string" }, "request_id": { "type": "string" } }, "required": [ "request_id", "logical_model" ], "type": "object" }, "AuthorizeResponse": { "properties": { "authorization_id": { "format": "uuid", "type": "string" }, "expires_at": { "format": "date-time", "type": "string" }, "route_generation": { "format": "int64", "type": "integer" } }, "required": [ "authorization_id", "route_generation", "expires_at" ], "type": "object" }, "AutoDelete": { "properties": { "date_threshold": { "type": [ "string", "null" ] }, "spend_threshold": { "type": [ "string", "null" ] } }, "type": "object" }, "AutoRestorePolicyInfo": { "description": "Auto-restore policy info - represents pods/jobs with CEDANA_CHECKPOINT env var", "properties": { "checkpoint_id": { "description": "The CEDANA_CHECKPOINT value (checkpoint name)", "type": "string" }, "cluster_id": { "description": "Cluster ID", "type": "string" }, "created_at": { "description": "When the resource was created", "type": [ "string", "null" ] }, "id": { "description": "Virtual ID based on the job/pod ID", "type": "string" }, "name": { "description": "The job or pod name", "type": "string" }, "namespace": { "description": "Namespace of the resource", "type": "string" }, "pod_count": { "description": "Number of pods (1 for pods, count for jobs)", "format": "int32", "type": "integer" }, "policy_status": { "description": "Mapped policy status: \"active\", \"completed\", or \"disabled\"", "type": "string" }, "resource_type": { "description": "Type of resource: \"job\" or \"pod\"", "type": "string" }, "status": { "description": "Original job/pod status", "type": "string" } }, "required": [ "id", "name", "namespace", "cluster_id", "resource_type", "checkpoint_id", "pod_count", "status", "policy_status" ], "type": "object" }, "AvailableFilters": { "properties": { "namespaces": { "items": { "type": "string" }, "type": "array" }, "statuses": { "items": { "type": "string" }, "type": "array" } }, "required": [ "statuses", "namespaces" ], "type": "object" }, "BurstingConfigStatus": { "enum": [ "not_configured", "configured", "invalid" ], "type": "string" }, "BurstingStatus": { "properties": { "can_use_bursting": { "type": "boolean" }, "message": { "type": "string" }, "status": { "$ref": "#/components/schemas/BurstingConfigStatus" } }, "required": [ "status", "message", "can_use_bursting" ], "type": "object" }, "CapacityIntent": { "properties": { "created_at": { "description": "When this intent row was first created. Not when the request it currently\ndescribes was made: the row is reused for a repeated ask. Use requested_at for that.", "format": "date-time", "type": "string" }, "deadline": { "format": "date-time", "type": [ "string", "null" ] }, "desired_replicas": { "format": "int32", "type": "integer" }, "desired_state": { "type": "string" }, "generation": { "format": "int64", "type": "integer" }, "id": { "format": "uuid", "type": "string" }, "profile_id": { "type": "string" }, "requested_at": { "description": "When a caller last asked for this exact state and replica count, so it orders\nrequests as they were made rather than as the row happened to change.", "format": "date-time", "type": "string" }, "status": { "type": "string" }, "updated_at": { "description": "When this row last changed for any reason, including the expiry sweep. Not an\nordering key for what a caller asked for.", "format": "date-time", "type": "string" } }, "required": [ "id", "profile_id", "desired_state", "desired_replicas", "status", "generation", "created_at", "updated_at" ], "type": "object" }, "CedanaJobCheckpoint": { "properties": { "ID": { "type": "string" }, "JID": { "type": "string" }, "Path": { "type": "string" }, "Size": { "format": "int64", "type": "integer" }, "Time": { "format": "int64", "type": "integer" } }, "required": [ "JID", "Path", "Time", "Size" ], "type": "object" }, "Checkpoint": { "description": "Checkpoint is basic unit for cedana service operation\nit stores all the information regarding the snapshot we can use to save and then restore state", "properties": { "checksum": { "type": [ "string", "null" ] }, "delta": { "description": "Whether this checkpoint is a (GPU delta) increment. Authoritative even\nwhen parent_checkpoint_id is null (malformed id at ingest, parent deleted)", "type": "boolean" }, "gpu": { "type": "string" }, "id": { "format": "uuid", "type": "string" }, "info": {}, "name": { "type": [ "string", "null" ] }, "parent_checkpoint_id": { "description": "Checkpoint this one is an increment of; null for full checkpoints and\nfor deltas whose parent is unknown or deleted", "format": "uuid", "type": [ "string", "null" ] }, "platform": { "type": "string" }, "status": { "$ref": "#/components/schemas/CheckpointStatus" } }, "required": [ "id", "status", "gpu", "platform", "delta" ], "type": "object" }, "CheckpointActionConfig": { "properties": { "kind": { "type": "string" }, "runc_root": { "type": [ "string", "null" ] } }, "required": [ "kind" ], "type": "object" }, "CheckpointArtifactView": { "properties": { "artifact_id": { "type": "string" }, "checkpoint_mode": { "type": "string" }, "checksum": { "type": [ "string", "null" ] }, "compatibility_key": { "type": "string" }, "created_at": { "format": "date-time", "type": "string" }, "exact_model": { "type": "string" }, "hosting_mode": { "type": "string" }, "last_restored_at": { "description": "When a worker last became ready from this artefact.", "format": "date-time", "type": [ "string", "null" ] }, "logical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "logical_model": { "type": "string" }, "metadata": {}, "observed_restore_attempts": { "description": "Worker pods started from this artefact, ready or not. The gap against\nobserved_restores is the interesting part.", "format": "int64", "type": [ "integer", "null" ] }, "observed_restores": { "description": "Worker pods started from this artefact that went on to serve. Counted from the\npods that ran, so it answers how many times the checkpoint was actually used.", "format": "int64", "type": [ "integer", "null" ] }, "parent_artifact_id": { "type": [ "string", "null" ] }, "physical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "profile_id": { "type": "string" }, "residency": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/ArtifactResidency", "description": "Whether the bytes this artefact names are still there. Filled in after\nthe row is read (see `annotate_artifacts`); never selected from SQL." } ] }, "restore_count": { "description": "Unmaintained; do not display. Only restore_count_increment on the artifact PATCH\nwrites it, and no caller sends that. Use observed_restores.", "format": "int64", "type": "integer" }, "reused_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "source": { "type": "string" }, "status": { "type": "string" }, "storage_tier": { "type": "string" }, "updated_at": { "format": "date-time", "type": "string" }, "uri": { "type": "string" }, "written_bytes": { "format": "int64", "type": [ "integer", "null" ] } }, "required": [ "artifact_id", "profile_id", "logical_model", "exact_model", "hosting_mode", "compatibility_key", "checkpoint_mode", "storage_tier", "uri", "source", "status", "restore_count", "metadata", "created_at", "updated_at" ], "type": "object" }, "CheckpointInfo": { "properties": { "gpu": { "type": "string" }, "info": {}, "platform": { "type": "string" } }, "required": [ "gpu", "platform" ], "type": "object" }, "CheckpointKind": { "enum": [ "simple", "rootfs", "rootfsonly" ], "type": "string" }, "CheckpointOperationStatus": { "enum": [ "initialized", "processing", "checkpoint_created", "ready", "error", "not_found" ], "type": "string" }, "CheckpointOverrides": { "properties": { "asynchronous": { "type": "boolean" }, "compression": { "type": [ "string", "null" ] }, "criu_opts": { "type": [ "string", "null" ] }, "directory": { "type": [ "string", "null" ] }, "incremental": { "description": "GPU delta (incremental) checkpoint; None = cluster default", "type": [ "boolean", "null" ] }, "streams": { "format": "int32", "type": "integer" } }, "type": "object" }, "CheckpointPod": { "properties": { "action_id": { "readOnly": true, "type": [ "string", "null" ] }, "cluster_id": { "type": [ "string", "null" ] }, "kind": { "$ref": "#/components/schemas/CheckpointKind" }, "namespace": { "type": [ "string", "null" ] }, "overrides": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CheckpointOverrides" } ] }, "pod_id": { "type": [ "string", "null" ] }, "pod_name": { "type": [ "string", "null" ] }, "reason": { "$ref": "#/components/schemas/CheckpointReason" } }, "type": "object" }, "CheckpointReason": { "enum": [ "heartbeat", "manual" ], "type": "string" }, "CheckpointRequestView": { "description": "An on-demand checkpoint request and how far it has got.", "properties": { "artifact_id": { "description": "The artifact the checkpoint produced, once it succeeded.", "type": [ "string", "null" ] }, "completed_at": { "format": "date-time", "type": [ "string", "null" ] }, "error": { "description": "Why it failed, in the controller's words.", "type": [ "string", "null" ] }, "kind": { "description": "checkpoint or restart. One row per profile, so asking twice returns the open one.", "type": "string" }, "profile_id": { "type": "string" }, "reason": { "type": [ "string", "null" ] }, "replace_existing": { "type": "boolean" }, "request_id": { "description": "Identifies this attempt. A caller polling with the id it was given\ncannot be shown a later request's outcome as though it were its own.", "format": "uuid", "type": "string" }, "requested_at": { "format": "date-time", "type": "string" }, "started_at": { "format": "date-time", "type": [ "string", "null" ] }, "status": { "description": "pending → running → succeeded | failed", "type": "string" } }, "required": [ "profile_id", "kind", "request_id", "status", "replace_existing", "requested_at" ], "type": "object" }, "CheckpointSlurmJob": { "properties": { "action_id": { "readOnly": true, "type": [ "string", "null" ] }, "cluster_id": { "type": "string" }, "job_id": { "type": [ "string", "null" ] }, "job_name": { "type": [ "string", "null" ] }, "kind": { "$ref": "#/components/schemas/SlurmCheckpointKind" }, "reason": { "$ref": "#/components/schemas/SlurmCheckpointReason" } }, "required": [ "cluster_id" ], "type": "object" }, "CheckpointStatus": { "enum": [ "initializing", "updated_info", "possibly_uploaded", "ready", "deprecated" ], "type": "string" }, "CheckpointStatusWithPodSpec": { "properties": { "action_id": { "type": "string" }, "persistent_volume_claim": {}, "pod_id": { "type": [ "string", "null" ] }, "pod_metadata_spec": {}, "pod_spec": {}, "status": { "type": "string" } }, "required": [ "status", "action_id" ], "type": "object" }, "CheckpointSuccessInfo": { "properties": { "restore_path": { "type": [ "string", "null" ] } }, "type": "object" }, "Cluster": { "properties": { "id": { "format": "uuid", "type": "string" }, "kind": { "type": "string" }, "last_sync": { "format": "date-time", "type": [ "string", "null" ] }, "metadata": {}, "name": { "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "status", "kind" ], "type": "object" }, "ClusterSyncRequest": { "properties": { "cluster_id": { "format": "uuid", "type": [ "string", "null" ] }, "metadata": {}, "resource": { "$ref": "#/components/schemas/K8sResource" } }, "type": "object" }, "CompleteExperiment": { "properties": { "status": { "type": "string" } }, "required": [ "status" ], "type": "object" }, "CorrelationUsage": { "properties": { "cold_start_avoided_ms": { "format": "int64", "type": "integer" }, "fallbacks": { "format": "int64", "type": "integer" }, "requests": { "format": "int64", "type": "integer" }, "successful_requests": { "format": "int64", "type": "integer" } }, "required": [ "requests", "fallbacks", "successful_requests", "cold_start_avoided_ms" ], "type": "object" }, "CorrelationView": { "properties": { "activations": { "items": { "$ref": "#/components/schemas/NameCount" }, "type": "array" }, "artifacts": { "items": { "$ref": "#/components/schemas/ArtifactRef" }, "type": "array" }, "experiment_id": { "format": "uuid", "type": "string" }, "intents": { "items": { "$ref": "#/components/schemas/NameCount" }, "type": "array" }, "name": { "type": "string" }, "observations": { "items": { "$ref": "#/components/schemas/NameCount" }, "type": "array" }, "policy_decisions": { "items": { "$ref": "#/components/schemas/NameCount" }, "type": "array" }, "scenario": { "type": "string" }, "status": { "type": "string" }, "usage": { "$ref": "#/components/schemas/CorrelationUsage" } }, "required": [ "experiment_id", "name", "scenario", "status", "usage", "intents", "activations", "observations", "artifacts", "policy_decisions" ], "type": "object" }, "CostBreakdownRow": { "properties": { "activation_count": { "format": "int64", "type": "integer" }, "active_duration_s": { "format": "double", "type": "number" }, "compute_usd": { "format": "double", "type": "number" }, "fallback_usd": { "format": "double", "type": "number" }, "idle_time_s": { "format": "double", "type": "number" }, "node_seconds": { "format": "double", "type": "number" }, "profile_id": { "type": "string" }, "release_latency_ms": { "format": "double", "type": [ "number", "null" ] }, "storage_usd": { "format": "double", "type": "number" }, "tokens_served": { "format": "int64", "type": "integer" }, "transfer_usd": { "format": "double", "type": "number" } }, "required": [ "profile_id", "node_seconds", "active_duration_s", "idle_time_s", "activation_count", "compute_usd", "storage_usd", "transfer_usd", "fallback_usd", "tokens_served" ], "type": "object" }, "CostConfig": { "properties": { "node_hourly_usd": { "format": "double", "type": "number" }, "profile_id": { "type": "string" }, "storage_gb_hour_usd": { "format": "double", "type": "number" }, "transfer_gb_usd": { "format": "double", "type": "number" } }, "required": [ "profile_id", "node_hourly_usd", "storage_gb_hour_usd", "transfer_gb_usd" ], "type": "object" }, "CostConfigUpsert": { "properties": { "node_hourly_usd": { "format": "double", "type": "number" }, "profile_id": { "type": "string" }, "storage_gb_hour_usd": { "format": "double", "type": "number" }, "transfer_gb_usd": { "format": "double", "type": "number" } }, "required": [ "profile_id" ], "type": "object" }, "CostLeg": { "properties": { "cost_usd": { "format": "double", "type": "number" }, "heavy_activation_count": { "format": "int64", "type": "integer" }, "heavy_active_duration_s": { "format": "double", "type": "number" }, "node_seconds": { "format": "double", "type": "number" } }, "required": [ "cost_usd", "node_seconds", "heavy_activation_count", "heavy_active_duration_s" ], "type": "object" }, "CostQuality": { "properties": { "avg_ttft_ms": { "format": "double", "type": [ "number", "null" ] }, "refusal_rate": { "format": "double", "type": "number" } }, "required": [ "refusal_rate" ], "type": "object" }, "CostReport": { "properties": { "baseline": { "$ref": "#/components/schemas/CostLeg" }, "hours": { "format": "int64", "type": "integer" }, "node_seconds_saved": { "format": "double", "type": "number" }, "savings_pct": { "format": "double", "type": "number" }, "savings_usd": { "format": "double", "type": "number" }, "treatment": { "$ref": "#/components/schemas/CostLeg" }, "treatment_escalation_rate": { "format": "double", "type": "number" }, "treatment_idle_time_s": { "format": "double", "type": "number" }, "treatment_quality": { "$ref": "#/components/schemas/CostQuality" }, "treatment_release_latency_ms": { "format": "double", "type": [ "number", "null" ] }, "variance": { "type": [ "string", "null" ] } }, "required": [ "hours", "baseline", "treatment", "treatment_idle_time_s", "treatment_escalation_rate", "treatment_quality", "savings_usd", "savings_pct", "node_seconds_saved" ], "type": "object" }, "CostSavingsEstimate": { "description": "Cost savings estimate with user-provided hourly rate", "properties": { "checkpoint_overhead_cost": { "description": "Cost of checkpoint overhead (time spent checkpointing)", "format": "double", "type": "number" }, "hourly_rate": { "description": "User-provided hourly compute cost", "format": "double", "type": "number" }, "max_recovery_point_seconds": { "description": "Maximum potential data loss on failure (seconds) - worst case recovery point", "format": "double", "type": "number" }, "max_savings_per_failure": { "description": "Estimated maximum cost saved per failure event\n(time_protected - max_recovery_point) * hourly_rate / 3600", "format": "double", "type": "number" }, "net_potential_savings": { "description": "Net potential savings = max_savings - overhead_cost", "format": "double", "type": "number" }, "pods_protected": { "description": "Number of pods protected", "format": "int64", "type": "integer" }, "time_protected_seconds": { "description": "Total time protected by checkpoints (seconds)", "format": "double", "type": "number" }, "total_checkpoints": { "description": "Total checkpoints taken", "format": "int64", "type": "integer" } }, "required": [ "time_protected_seconds", "max_recovery_point_seconds", "hourly_rate", "max_savings_per_failure", "checkpoint_overhead_cost", "net_potential_savings", "pods_protected", "total_checkpoints" ], "type": "object" }, "CreateClusterRequest": { "description": "CreateClusterRequest is the request body for creating a cluster", "properties": { "cluster_name": { "type": "string" }, "kind": { "description": "Cluster kind: \"kubernetes\" (default) or \"slurm\"", "type": [ "string", "null" ] } }, "required": [ "cluster_name" ], "type": "object" }, "CreateExperiment": { "properties": { "name": { "type": "string" }, "parameters": {}, "profile_id": { "type": [ "string", "null" ] }, "scenario": { "type": "string" } }, "required": [ "name", "scenario" ], "type": "object" }, "CreateInferenceKey": { "properties": { "budget_usd": { "format": "double", "type": [ "number", "null" ] }, "models": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "rate_limit_rps": { "format": "int64", "type": [ "integer", "null" ] }, "tenant_id": { "type": [ "string", "null" ] } }, "required": [ "name" ], "type": "object" }, "CreateInstanceRequest": { "properties": { "alert": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/Alert" } ] }, "auto_delete": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/AutoDelete" } ] }, "cloud": { "type": "string" }, "envs": { "items": { "$ref": "#/components/schemas/EnvironmentVariable" }, "type": [ "array", "null" ] }, "launch_configuration": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/LaunchConfiguration" } ] }, "name": { "type": "string" }, "os": { "type": [ "string", "null" ] }, "region": { "type": "string" }, "shade_cloud": { "type": "boolean" }, "shade_instance_type": { "type": "string" }, "ssh_key_id": { "type": [ "string", "null" ] }, "tags": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "template_id": { "type": [ "string", "null" ] }, "volume_ids": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "volume_mount": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/VolumeMount" } ] } }, "required": [ "cloud", "region", "shade_instance_type", "shade_cloud", "name" ], "type": "object" }, "CreateInstanceResponse": { "properties": { "cloud_provider": { "type": "string" }, "instance_id": { "type": "string" }, "instance_type": { "type": "string" }, "region": { "type": "string" }, "status": { "type": "string" } }, "required": [ "instance_id", "status", "cloud_provider", "region", "instance_type" ], "type": "object" }, "CreateMaintenanceWindow": { "properties": { "end_time": { "format": "date-time", "type": "string" }, "nodes": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "partitions": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "reason": { "type": "string" }, "start_time": { "format": "date-time", "type": "string" }, "status": { "type": [ "string", "null" ] } }, "required": [ "start_time", "end_time", "reason" ], "type": "object" }, "CreateObservation": { "properties": { "action_id": { "type": [ "string", "null" ] }, "checkpoint_id": { "type": [ "string", "null" ] }, "checkpoint_mode": { "type": [ "string", "null" ] }, "cluster_id": { "type": [ "string", "null" ] }, "completed_at": { "format": "date-time", "type": [ "string", "null" ] }, "completion_tokens": { "format": "int64", "type": [ "integer", "null" ] }, "deadline_missed": { "type": [ "boolean", "null" ] }, "deployment_id": { "type": [ "string", "null" ] }, "dimensions": {}, "duration_ms": { "format": "int64", "type": [ "integer", "null" ] }, "event_type": { "type": "string" }, "evidence": { "type": "string" }, "experiment_id": { "format": "uuid", "type": [ "string", "null" ] }, "fallback_used": { "type": [ "boolean", "null" ] }, "logical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "metrics": {}, "node_id": { "type": [ "string", "null" ] }, "observation_key": { "type": "string" }, "physical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "profile_id": { "type": [ "string", "null" ] }, "prompt_tokens": { "format": "int64", "type": [ "integer", "null" ] }, "request_id": { "type": [ "string", "null" ] }, "reused_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "source": { "type": "string" }, "started_at": { "format": "date-time", "type": "string" }, "storage_tier": { "type": [ "string", "null" ] }, "success": { "type": [ "boolean", "null" ] }, "transferred_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "ttft_ms": { "format": "int64", "type": [ "integer", "null" ] }, "written_bytes": { "format": "int64", "type": [ "integer", "null" ] } }, "required": [ "observation_key", "event_type", "evidence", "source", "started_at" ], "type": "object" }, "CreateProfile": { "properties": { "backend_url": { "type": "string" }, "compatibility": {}, "dynamo_template": {}, "estimated_cold_start_ms": { "format": "int64", "type": "integer" }, "exact_model": { "type": "string" }, "hosting_mode": { "type": "string" }, "logical_model": { "type": "string" }, "max_queue_depth": { "format": "int32", "type": "integer" }, "max_replicas": { "format": "int32", "type": "integer" }, "min_replicas": { "format": "int32", "type": "integer" }, "profile_id": { "type": "string" }, "scale_down_idle_seconds": { "format": "int64", "type": "integer" }, "spec": {}, "target_concurrency": { "format": "int32", "type": "integer" } }, "required": [ "profile_id", "logical_model", "exact_model", "backend_url", "spec" ], "type": "object" }, "CreatedInferenceKey": { "allOf": [ { "$ref": "#/components/schemas/InferenceKeyView" }, { "properties": { "raw_key": { "description": "The raw key, shown exactly once at creation.", "type": "string" } }, "required": [ "raw_key" ], "type": "object" } ] }, "DeploymentProfile": { "properties": { "backend_url": { "type": "string" }, "compatibility_key": { "type": "string" }, "dynamo_template": {}, "estimated_cold_start_ms": { "format": "int64", "type": "integer" }, "exact_model": { "type": "string" }, "hosting_mode": { "type": "string" }, "logical_model": { "type": "string" }, "max_queue_depth": { "format": "int32", "type": "integer" }, "max_replicas": { "format": "int32", "type": "integer" }, "min_replicas": { "format": "int32", "type": "integer" }, "profile_id": { "type": "string" }, "profile_revision": { "type": "string" }, "scale_down_idle_seconds": { "format": "int64", "type": "integer" }, "spec": {}, "target_concurrency": { "format": "int32", "type": "integer" } }, "required": [ "profile_id", "logical_model", "exact_model", "profile_revision", "compatibility_key", "backend_url", "estimated_cold_start_ms", "hosting_mode", "spec", "min_replicas", "max_replicas", "target_concurrency", "max_queue_depth", "scale_down_idle_seconds" ], "type": "object" }, "DeploymentProgress": { "description": "How far a profile has got, and how long each stage took.", "properties": { "activation_started_at": { "format": "date-time", "type": [ "string", "null" ] }, "cold_start_ms": { "description": "Measured activation-start-to-ready, absent until the profile is ready. A\ntime-to-ready, and only a cold start when start_kind is not restore.", "format": "int64", "type": [ "integer", "null" ] }, "phase": { "type": [ "string", "null" ] }, "profile_id": { "type": "string" }, "ready": { "type": "boolean" }, "ready_at": { "format": "date-time", "type": [ "string", "null" ] }, "restore_checkpoint_path": { "description": "The checkpoint the worker was told to restore from, when it was.", "type": [ "string", "null" ] }, "start_kind": { "description": "How the worker behind this activation started: restore, cold, or null when no\nlive worker pod is known.", "type": [ "string", "null" ] }, "steps": { "items": { "$ref": "#/components/schemas/DeploymentStep" }, "type": "array" } }, "required": [ "profile_id", "ready", "steps" ], "type": "object" }, "DeploymentStep": { "description": "One recorded step in a profile's deployment, newest first.", "properties": { "elapsed_ms": { "description": "Milliseconds since the activation began, so a UI can draw the sequence\nwithout doing date arithmetic. Null when the activation start is unknown.", "format": "int64", "type": [ "integer", "null" ] }, "kind": { "description": "Lifecycle kind, e.g. model.weights_ready, model.ready, route.published.", "type": "string" }, "occurred_at": { "format": "date-time", "type": "string" }, "payload": {} }, "required": [ "kind", "occurred_at", "payload" ], "type": "object" }, "DockerConfiguration": { "properties": { "args": { "type": [ "string", "null" ] }, "envs": { "items": { "$ref": "#/components/schemas/EnvironmentVariable" }, "type": [ "array", "null" ] }, "image": { "type": "string" }, "port_mappings": { "items": { "$ref": "#/components/schemas/PortMapping" }, "type": [ "array", "null" ] }, "registry_credentials": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/RegistryCredentials" } ] }, "shared_memory_in_gb": { "format": "int32", "type": [ "integer", "null" ] }, "volume_mounts": { "items": { "$ref": "#/components/schemas/VolumeMapping" }, "type": [ "array", "null" ] } }, "required": [ "image" ], "type": "object" }, "DynamoCheckpointEntry": { "description": "One CEDANA_CHECKPOINT \"slot\" in the library. A name can have many individual\ncheckpoints over time (you can checkpoint the same env value repeatedly); this\naggregates them into a single slot row.", "properties": { "checkpoint_count": { "description": "Number of (non-deprecated) checkpoints captured under this name", "format": "int64", "type": "integer" }, "created_at": { "description": "Timestamp of the most recent checkpoint under this name", "format": "date-time", "type": [ "string", "null" ] }, "deployment_name": { "description": "Deployment whose CEDANA_CHECKPOINT env equals this checkpoint's name, if any.", "type": [ "string", "null" ] }, "model": { "description": "Model served by that deployment (drives the model logo + \"deploy from\").", "type": [ "string", "null" ] }, "name": { "description": "CEDANA_CHECKPOINT name (the stable restore key)", "type": "string" }, "restorable": { "description": "True if at least one checkpoint under this name is ready + restorable", "type": "boolean" } }, "required": [ "name", "checkpoint_count", "restorable" ], "type": "object" }, "DynamoCheckpointResult": { "description": "Result of checkpointing a DGD: the workers a checkpoint was issued for.", "properties": { "workers": { "items": { "$ref": "#/components/schemas/DynamoCheckpointedWorker" }, "type": "array" } }, "required": [ "workers" ], "type": "object" }, "DynamoCheckpointSummary": { "description": "A lightweight summary of checkpoints taken for a Dynamo deployment's workers.", "properties": { "has_cache": { "description": "True if at least one checkpoint with status='ready' exists", "type": "boolean" }, "latest": { "description": "Timestamp of the most recent checkpoint", "format": "date-time", "type": [ "string", "null" ] }, "pods": { "additionalProperties": { "format": "int64", "type": "integer" }, "description": "Per-pod breakdown: pod_name → checkpoint count", "propertyNames": { "type": "string" }, "type": "object" }, "total": { "description": "Total number of ready checkpoints across all worker pods", "format": "int64", "type": "integer" } }, "required": [ "total", "has_cache", "pods" ], "type": "object" }, "DynamoCheckpointedWorker": { "description": "One worker pod that a checkpoint was issued for.", "properties": { "action_id": { "type": "string" }, "pod_name": { "type": "string" } }, "required": [ "pod_name", "action_id" ], "type": "object" }, "DynamoDeployRequest": { "description": "Request body for submitting a DynamoGraphDeployment to a cluster.", "properties": { "cluster_id": { "description": "ID of the target cluster", "type": "string" }, "enable_checkpointing": { "description": "If true, inject runtimeClassName: cedana and CEDANA_CHECKPOINT into worker pod specs", "type": "boolean" }, "manifest": { "description": "Full DynamoGraphDeployment manifest (nvidia.com/v1alpha1)" } }, "required": [ "cluster_id", "manifest" ], "type": "object" }, "DynamoDeployment": { "properties": { "backend": { "type": [ "string", "null" ] }, "cedana_managed": { "type": "boolean" }, "cluster_id": { "format": "uuid", "type": "string" }, "created_at": { "format": "date-time", "type": "string" }, "id": { "format": "uuid", "type": "string" }, "model": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "namespace": { "type": "string" }, "spec": {}, "status": { "type": "string" }, "updated_at": { "format": "date-time", "type": "string" }, "worker_replicas": { "format": "int32", "type": [ "integer", "null" ] }, "worker_replicas_ready": { "format": "int32", "type": [ "integer", "null" ] } }, "required": [ "id", "cluster_id", "name", "namespace", "status", "cedana_managed", "created_at", "updated_at" ], "type": "object" }, "DynamoDeploymentView": { "allOf": [ { "$ref": "#/components/schemas/DynamoDeployment" }, { "properties": { "checkpoint_name": { "description": "CEDANA_CHECKPOINT name of the first worker service, if checkpointing is\nenabled. This is the stable key a worker restores from. None if unset.", "type": [ "string", "null" ] }, "frontend_endpoint": { "description": "Resolved frontend endpoint: external_ip:port or cluster_ip:port", "type": [ "string", "null" ] } }, "type": "object" } ], "description": "Combined view returned by the list endpoint" }, "DynamoMetricPoint": { "description": "A single metric time-series point returned to the UI.", "properties": { "metric_name": { "type": "string" }, "timestamp_ms": { "description": "Unix timestamp in milliseconds", "format": "int64", "type": "integer" }, "value": { "format": "double", "type": "number" } }, "required": [ "metric_name", "value", "timestamp_ms" ], "type": "object" }, "DynamoMetricSample": { "description": "A single metric sample sent by the watcher.", "properties": { "metric_name": { "type": "string" }, "timestamp_ms": { "description": "Unix timestamp in milliseconds", "format": "int64", "type": "integer" }, "value": { "format": "double", "type": "number" } }, "required": [ "metric_name", "value", "timestamp_ms" ], "type": "object" }, "DynamoMetricsIngestRequest": { "description": "Batch of metric samples posted by the watcher after scraping /metrics.", "properties": { "cluster_id": { "type": "string" }, "model": { "type": "string" }, "namespace": { "type": "string" }, "samples": { "items": { "$ref": "#/components/schemas/DynamoMetricSample" }, "type": "array" } }, "required": [ "cluster_id", "namespace", "samples" ], "type": "object" }, "DynamoScrapeRequest": { "description": "Body sent by the dynamo-watcher after scraping /v1/models from the live frontend.", "properties": { "backend": { "type": [ "string", "null" ] }, "cluster_id": { "format": "uuid", "type": "string" }, "model": { "type": [ "string", "null" ] }, "namespace": { "type": "string" } }, "required": [ "cluster_id", "namespace" ], "type": "object" }, "EnvironmentVariable": { "properties": { "name": { "type": "string" }, "value": { "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "EventsResponse": { "properties": { "events": { "items": { "$ref": "#/components/schemas/NotificationEvent" }, "type": "array" } }, "required": [ "events" ], "type": "object" }, "Experiment": { "properties": { "completed_at": { "format": "date-time", "type": [ "string", "null" ] }, "id": { "format": "uuid", "type": "string" }, "name": { "type": "string" }, "parameters": {}, "profile_id": { "type": [ "string", "null" ] }, "scenario": { "type": "string" }, "started_at": { "format": "date-time", "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "scenario", "status", "parameters", "started_at" ], "type": "object" }, "ExperimentSummary": { "properties": { "completed_at": { "format": "date-time", "type": [ "string", "null" ] }, "id": { "format": "uuid", "type": "string" }, "name": { "type": "string" }, "observations": { "format": "int64", "type": "integer" }, "parameters": {}, "profile_id": { "type": [ "string", "null" ] }, "scenario": { "type": "string" }, "started_at": { "format": "date-time", "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "scenario", "status", "parameters", "started_at", "observations" ], "type": "object" }, "FailureSummary": { "properties": { "count": { "format": "int64", "minimum": 0, "type": "integer" }, "operation": { "type": "string" }, "reason": { "type": "string" }, "stage": { "type": "string" } }, "required": [ "operation", "stage", "reason", "count" ], "type": "object" }, "FilteredJobResponse": { "properties": { "available_priorities": { "items": { "format": "int32", "type": "integer" }, "type": "array" }, "jobs": { "items": { "$ref": "#/components/schemas/JobFilterResponse" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "jobs", "total_count", "available_priorities" ], "type": "object" }, "Fleet": { "properties": { "availability": { "type": [ "string", "null" ] }, "budgets": {}, "created_at": { "format": "date-time", "type": "string" }, "fleet_id": { "type": "string" }, "logical_model": { "type": "string" }, "name": { "type": "string" }, "profile_ids": {}, "residency": { "type": [ "string", "null" ] } }, "required": [ "fleet_id", "name", "logical_model", "profile_ids", "budgets", "created_at" ], "type": "object" }, "FleetUpsert": { "properties": { "availability": { "type": [ "string", "null" ] }, "budgets": {}, "fleet_id": { "type": [ "string", "null" ] }, "logical_model": { "type": "string" }, "name": { "type": "string" }, "profile_ids": { "items": { "type": "string" }, "type": "array" }, "residency": { "type": [ "string", "null" ] } }, "required": [ "name", "logical_model", "profile_ids" ], "type": "object" }, "GpuMetric": { "description": "GPU metrics for a single GPU", "properties": { "gpu_index": { "type": "string" }, "gpu_utilization": { "description": "GPU utilization percentage (0-100)", "format": "double", "type": [ "number", "null" ] }, "gpu_uuid": { "type": "string" }, "memory_free_mib": { "description": "Framebuffer memory free in MiB", "format": "double", "type": [ "number", "null" ] }, "memory_used_mib": { "description": "Framebuffer memory used in MiB", "format": "double", "type": [ "number", "null" ] }, "memory_utilization": { "description": "Memory bandwidth utilization percentage (0-100)", "format": "double", "type": [ "number", "null" ] }, "model_name": { "description": "GPU model name (e.g., \"NVIDIA H100 80GB HBM3\")", "type": [ "string", "null" ] }, "namespace": { "description": "Namespace of the pod (if any)", "type": [ "string", "null" ] }, "node_name": { "type": "string" }, "pod_name": { "description": "Pod currently using this GPU (if any)", "type": [ "string", "null" ] }, "power_watts": { "description": "Power usage in Watts", "format": "double", "type": [ "number", "null" ] }, "temperature_celsius": { "description": "GPU temperature in Celsius", "format": "double", "type": [ "number", "null" ] }, "timestamp": { "type": "string" } }, "required": [ "node_name", "gpu_uuid", "gpu_index", "timestamp" ], "type": "object" }, "GpuTimeSeries": { "description": "Time-series data for a single GPU", "properties": { "data": { "items": { "$ref": "#/components/schemas/GpuTimeSeriesPoint" }, "type": "array" }, "gpu_index": { "type": "string" }, "gpu_uuid": { "type": "string" }, "model_name": { "type": [ "string", "null" ] }, "node_name": { "type": "string" } }, "required": [ "node_name", "gpu_uuid", "gpu_index", "data" ], "type": "object" }, "GpuTimeSeriesPoint": { "description": "Time-series data point for GPU metrics", "properties": { "gpu_utilization": { "format": "double", "type": [ "number", "null" ] }, "memory_free_mib": { "format": "double", "type": [ "number", "null" ] }, "memory_used_mib": { "format": "double", "type": [ "number", "null" ] }, "memory_utilization": { "format": "double", "type": [ "number", "null" ] }, "namespace": { "type": [ "string", "null" ] }, "pod_name": { "type": [ "string", "null" ] }, "timestamp": { "type": "string" } }, "required": [ "timestamp" ], "type": "object" }, "HeartbeatTriggerConfig": { "properties": { "interval_seconds": { "format": "int32", "minimum": 0, "type": "integer" }, "max_checkpoints": { "description": "Cap on successful checkpoints before auto-disable. Absent = run forever;\nwhen present must be `> 0` (rejected with 400 at creation, not stored).\n`i32` (not u32) bounds an oversized value at deserialization; matches cedana-ui.", "format": "int32", "type": [ "integer", "null" ] } }, "required": [ "interval_seconds" ], "type": "object" }, "HistogramBucket": { "properties": { "count": { "format": "int64", "minimum": 0, "type": "integer" }, "le": { "description": "Upper bound of the bucket (seconds or bytes); `null` marks the overflow bucket above the last bound.", "format": "double", "type": [ "number", "null" ] } }, "required": [ "count" ], "type": "object" }, "Host": { "properties": { "CPU": { "$ref": "#/components/schemas/HostCpu" }, "Hostname": { "type": "string" }, "ID": { "type": "string" }, "KernelArch": { "type": "string" }, "KernelVersion": { "type": "string" }, "MAC": { "type": "string" }, "Memory": { "$ref": "#/components/schemas/HostMemory" }, "OS": { "type": "string" }, "Platform": { "type": "string" } }, "type": "object" }, "HostCpu": { "properties": { "Count": { "format": "int32", "type": "integer" }, "Family": { "type": "string" }, "PhysicalID": { "type": "string" }, "VendorID": { "type": "string" } }, "type": "object" }, "HostMemory": { "properties": { "Total": { "format": "int64", "minimum": 0, "type": "integer" } }, "type": "object" }, "HttpError": { "description": "Standard JSON error body for all 4xx/5xx responses.\n\nHandlers return plain-text errors internally; [`normalize_error_response`]\nconverts anything the stack produces (handlers, extractors, the auth layer)\nto this shape, so generated SDK clients can rely on a single error schema.", "properties": { "message": { "description": "Human-readable description of what went wrong", "type": "string", "x-ms-primary-error-message": true } }, "required": [ "message" ], "type": "object" }, "InferenceAnalytics": { "properties": { "evidence": { "type": "string" }, "experiment_id": { "format": "uuid", "type": [ "string", "null" ] }, "profile_id": { "type": [ "string", "null" ] }, "sample_count": { "minimum": 0, "type": "integer" }, "serving": { "$ref": "#/components/schemas/ServingAnalytics" }, "startup": { "$ref": "#/components/schemas/StartupAnalytics" }, "storage": { "$ref": "#/components/schemas/StorageAnalytics" }, "window_hours": { "format": "int64", "type": "integer" } }, "required": [ "window_hours", "startup", "storage", "serving", "evidence", "sample_count" ], "type": "object" }, "InferenceKeyView": { "properties": { "budget_usd": { "format": "double", "type": [ "number", "null" ] }, "created_at": { "format": "date-time", "type": "string" }, "key_id": { "type": "string" }, "models": {}, "name": { "type": "string" }, "rate_limit_rps": { "format": "int64", "type": [ "integer", "null" ] }, "revoked_at": { "format": "date-time", "type": [ "string", "null" ] }, "tenant_id": { "type": [ "string", "null" ] } }, "required": [ "key_id", "name", "models", "created_at" ], "type": "object" }, "InstanceInfo": { "properties": { "cloud_provider": { "type": "string" }, "created_at": { "type": [ "string", "null" ] }, "id": { "type": "string" }, "instance_type": { "type": "string" }, "name": { "type": "string" }, "region": { "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "status", "cloud_provider", "region", "instance_type" ], "type": "object" }, "InstanceStatus": { "properties": { "created_at": { "type": [ "string", "null" ] }, "instance_id": { "type": "string" }, "ip_address": { "type": [ "string", "null" ] }, "metadata": {}, "ssh_port": { "format": "int32", "type": [ "integer", "null" ] }, "ssh_user": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "instance_id", "status", "metadata" ], "type": "object" }, "InstanceType": { "properties": { "availability": { "items": { "$ref": "#/components/schemas/InstanceTypeAvailability" }, "type": "array" }, "boot_time": { "$ref": "#/components/schemas/InstanceTypeBootTime" }, "cloud": { "type": "string" }, "cloud_instance_type": { "type": "string" }, "configuration": { "$ref": "#/components/schemas/InstanceTypeConfiguration" }, "deployment_type": { "type": "string" }, "hourly_price": { "format": "int32", "type": "integer" }, "shade_instance_type": { "type": "string" } }, "required": [ "cloud", "shade_instance_type", "cloud_instance_type", "configuration", "hourly_price", "deployment_type", "availability", "boot_time" ], "type": "object" }, "InstanceTypeAvailability": { "properties": { "available": { "type": "boolean" }, "display_name": { "type": "string" }, "region": { "type": "string" } }, "required": [ "region", "available", "display_name" ], "type": "object" }, "InstanceTypeBootTime": { "properties": { "max_boot_in_sec": { "format": "int32", "type": "integer" }, "min_boot_in_sec": { "format": "int32", "type": "integer" } }, "required": [ "min_boot_in_sec", "max_boot_in_sec" ], "type": "object" }, "InstanceTypeConfiguration": { "properties": { "gpu_type": { "type": "string" }, "interconnect": { "type": "string" }, "memory_in_gb": { "format": "int32", "type": "integer" }, "num_gpus": { "format": "int32", "type": "integer" }, "nvlink": { "type": "boolean" }, "os_options": { "items": { "type": "string" }, "type": "array" }, "storage_in_gb": { "format": "int32", "type": "integer" }, "vcpus": { "format": "int32", "type": "integer" }, "vram_per_gpu_in_gb": { "format": "int32", "type": "integer" } }, "required": [ "memory_in_gb", "storage_in_gb", "vcpus", "num_gpus", "gpu_type", "interconnect", "nvlink", "vram_per_gpu_in_gb", "os_options" ], "type": "object" }, "InstanceTypePricing": { "description": "Instance type pricing configuration", "properties": { "capacity_type": { "description": "\"spot\" or \"on-demand\"", "type": "string" }, "created_at": { "format": "date-time", "type": "string" }, "id": { "format": "uuid", "type": "string" }, "instance_type": { "type": "string" }, "ondemand_price_per_hour": { "description": "Hourly cost when running as on-demand", "format": "double", "type": [ "number", "null" ] }, "spot_price_per_hour": { "description": "Hourly cost when running as spot", "format": "double", "type": [ "number", "null" ] }, "updated_at": { "format": "date-time", "type": "string" } }, "required": [ "id", "instance_type", "capacity_type", "created_at", "updated_at" ], "type": "object" }, "Job": { "properties": { "Details": {}, "JID": { "type": "string" }, "Log": { "type": "string" }, "State": { "$ref": "#/components/schemas/ProcessState" }, "Type": { "type": "string" } }, "required": [ "Type", "State" ], "type": "object" }, "JobFilterResponse": { "properties": { "id": { "format": "uuid", "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "pod_count": { "format": "int64", "type": "integer" }, "priority": { "format": "int32", "type": [ "integer", "null" ] }, "start_time": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "id", "name", "namespace", "status", "pod_count" ], "type": "object" }, "JobPodResponse": { "properties": { "id": { "format": "uuid", "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "owner_reference": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "id", "name", "namespace", "status" ], "type": "object" }, "JobPodsResponse": { "properties": { "job_id": { "format": "uuid", "type": "string" }, "job_name": { "type": "string" }, "pods": { "items": { "$ref": "#/components/schemas/JobPodResponse" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "job_id", "job_name", "pods", "total_count" ], "type": "object" }, "JobPolicyStatus": { "properties": { "job_ids": { "items": { "type": "string" }, "type": "array" }, "job_status": { "type": [ "string", "null" ] }, "last_updated": { "type": [ "string", "null" ] }, "pod_count": { "format": "int64", "type": "integer" }, "policy_id": { "type": "string" }, "tracked_pods": { "items": { "type": "string" }, "type": "array" } }, "required": [ "policy_id", "job_ids", "tracked_pods", "pod_count" ], "type": "object" }, "JobPrioritiesResponse": { "properties": { "priorities": { "items": { "format": "int32", "type": "integer" }, "type": "array" }, "priority_counts": { "additionalProperties": { "format": "int64", "type": "integer" }, "propertyNames": { "type": "string" }, "type": "object" } }, "required": [ "priorities", "priority_counts" ], "type": "object" }, "JobResponse": { "properties": { "age": { "type": "string" }, "completions": { "type": [ "string", "null" ] }, "duration": { "type": [ "string", "null" ] }, "id": { "format": "uuid", "type": "string" }, "monitored_by_policies": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "pod_count": { "format": "int32", "type": [ "integer", "null" ] }, "pod_ids": { "items": { "type": "string" }, "type": "array" }, "policy_count": { "format": "int32", "type": [ "integer", "null" ] }, "priority": { "format": "int32", "type": [ "integer", "null" ] }, "startTime": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "id", "name", "namespace", "status", "age", "monitored_by_policies", "pod_ids" ], "type": "object" }, "JobsFilterConfig": { "properties": { "cluster_id": { "type": "string" }, "namespace": { "type": [ "string", "null" ] }, "priority": { "format": "int32", "type": [ "integer", "null" ] } }, "required": [ "cluster_id" ], "type": "object" }, "K8sResource": { "description": "A Kubernetes resource tagged by \"type\", with the resource's raw JSON fields alongside the tag", "properties": { "type": { "enum": [ "None", "Pod", "Node", "Job", "DynamoGraphDeployment", "DynamoService" ], "type": "string" } }, "required": [ "type" ], "title": "K8sResource", "type": "object" }, "KvCacheState": { "description": "What a profile's engine is currently reusing.", "properties": { "block_size": { "description": "Tokens per KV block. Reuse happens in whole blocks, so a prompt shorter than two\nof them reports no hits however often it repeats.", "format": "int64", "type": [ "integer", "null" ] }, "gpu_blocks": { "format": "int64", "type": [ "integer", "null" ] }, "pod_name": { "description": "Which worker answered, so a caller can tell a restart apart from a\ncounter that merely moved.", "type": [ "string", "null" ] }, "prefix_caching": { "type": [ "boolean", "null" ] }, "profile_id": { "type": "string" }, "queried_tokens": { "description": "Prompt tokens the engine has looked up, cumulatively.", "format": "int64", "type": "integer" }, "reused_tokens": { "description": "Of those, how many skipped prefill because they were already resident.", "format": "int64", "type": "integer" } }, "required": [ "profile_id", "queried_tokens", "reused_tokens" ], "type": "object" }, "LatencyDistribution": { "properties": { "count": { "minimum": 0, "type": "integer" }, "p50_ms": { "format": "int64", "type": "integer" }, "p95_ms": { "format": "int64", "type": "integer" } }, "required": [ "count", "p50_ms", "p95_ms" ], "type": "object" }, "LaunchConfiguration": { "properties": { "docker_configuration": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/DockerConfiguration" } ] }, "script_configuration": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/ScriptConfiguration" } ] }, "type": { "type": "string" } }, "required": [ "type" ], "type": "object" }, "LifecycleEnvelope": { "description": "Shared envelope for trusted lifecycle events.", "properties": { "action_id": { "description": "Checkpoint/restore action UUID when the event belongs to one.", "format": "uuid", "type": [ "string", "null" ] }, "activation_id": { "description": "Model activation row UUID when applicable.", "format": "uuid", "type": [ "string", "null" ] }, "artifact_id": { "description": "Checkpoint artifact UUID for checkpoint events.", "format": "uuid", "type": [ "string", "null" ] }, "boot_id": { "type": [ "string", "null" ] }, "cluster_id": { "description": "Nebius cluster (`clusters.id` UUID).", "format": "uuid", "type": "string" }, "event_id": { "description": "Idempotency key: generated once per logical event and reused across\ntransport retries (RabbitMQ redelivery, HTTP retry).", "format": "uuid", "type": "string" }, "generation": { "description": "Activation observed generation.", "format": "int64", "type": "integer" }, "kind": { "description": "One of SUPPORTED_LIFECYCLE_KINDS.", "type": "string" }, "node_uid": { "description": "Node the event came from (checkpoint tmpfs artifacts are boot-tied).", "format": "uuid", "type": [ "string", "null" ] }, "occurred_at": { "description": "When the event happened at the source (RFC3339 UTC).", "format": "date-time", "type": "string" }, "payload": { "description": "Free-form JSON; required fields vary per kind." }, "profile_id": { "description": "Deployment profile id (e.g. `qwen3-30b-a3b-l40s-fp8`).", "type": "string" }, "schema_version": { "description": "MUST be 1; anything else is dead-lettered on ingestion.", "format": "int32", "type": "integer" }, "sequence": { "description": "Per-(cluster_id, activation_id) monotonic counter; 0 when not applicable.", "format": "int64", "type": "integer" }, "workload_uid": { "description": "k8s pod/DGD UID when relevant.", "type": [ "string", "null" ] } }, "required": [ "schema_version", "event_id", "occurred_at", "cluster_id", "profile_id", "kind" ], "type": "object" }, "LifecycleEventView": { "description": "One durably-persisted lifecycle event, across every profile in the cluster.", "properties": { "event_id": { "format": "uuid", "type": "string" }, "generation": { "format": "int64", "type": [ "integer", "null" ] }, "kind": { "description": "Lifecycle kind, e.g. model.ready, route.published, route.withdrawn.", "type": "string" }, "occurred_at": { "format": "date-time", "type": "string" }, "payload": {}, "profile_id": { "description": "The profile the event belongs to, when known. Null for cluster-wide events\nand for rows written before the column existed.", "type": [ "string", "null" ] }, "sequence": { "format": "int64", "type": [ "integer", "null" ] } }, "required": [ "event_id", "kind", "occurred_at" ], "type": "object" }, "MemoryTimeSeries": { "properties": { "allocated_memory": { "items": { "$ref": "#/components/schemas/TimeSeriesDataPoint" }, "type": "array" }, "free_memory": { "items": { "$ref": "#/components/schemas/TimeSeriesDataPoint" }, "type": "array" } }, "required": [ "free_memory", "allocated_memory" ], "type": "object" }, "MetricSample": { "properties": { "metric_name": { "type": "string" }, "profile_id": { "type": "string" }, "route": { "type": "string" }, "timestamp": { "format": "int64", "type": "integer" }, "value": { "format": "double", "type": "number" } }, "required": [ "route", "profile_id", "metric_name", "value", "timestamp" ], "type": "object" }, "MetricsBatch": { "properties": { "samples": { "items": { "$ref": "#/components/schemas/MetricSample" }, "type": "array" } }, "required": [ "samples" ], "type": "object" }, "MetricsSummary": { "properties": { "average_backend_latency_ms": { "format": "double", "type": "number" }, "average_routing_latency_ms": { "format": "double", "type": "number" }, "estimated_cold_start_avoided_ms": { "format": "int64", "type": "integer" }, "fallbacks": { "format": "int64", "type": "integer" }, "requests": { "format": "int64", "type": "integer" }, "successful_requests": { "format": "int64", "type": "integer" } }, "required": [ "requests", "fallbacks", "successful_requests", "estimated_cold_start_avoided_ms", "average_routing_latency_ms", "average_backend_latency_ms" ], "type": "object" }, "ModelActivationView": { "properties": { "activation_started_at": { "format": "date-time", "type": [ "string", "null" ] }, "compatibility_key": { "type": "string" }, "desired_state": { "type": "string" }, "endpoint": { "type": [ "string", "null" ] }, "estimated_cold_start_ms": { "format": "int64", "type": "integer" }, "exact_model": { "type": "string" }, "hosting_mode": { "type": "string" }, "logical_model": { "type": "string" }, "observed_generation": { "format": "int64", "type": "integer" }, "phase": { "type": "string" }, "profile_id": { "type": "string" }, "profile_revision": { "type": "string" }, "ready": { "type": "boolean" }, "ready_at": { "format": "date-time", "type": [ "string", "null" ] }, "updated_at": { "format": "date-time", "type": "string" } }, "required": [ "profile_id", "logical_model", "exact_model", "profile_revision", "compatibility_key", "hosting_mode", "estimated_cold_start_ms", "desired_state", "phase", "ready", "observed_generation", "updated_at" ], "type": "object" }, "NameCount": { "properties": { "count": { "format": "int64", "type": "integer" }, "name": { "type": "string" } }, "required": [ "name", "count" ], "type": "object" }, "NamespaceFilterConfig": { "properties": { "cluster_id": { "type": "string" }, "namespace": { "type": "string" } }, "required": [ "cluster_id", "namespace" ], "type": "object" }, "NamespacesResponse": { "properties": { "namespaces": { "items": { "type": "string" }, "type": "array" } }, "required": [ "namespaces" ], "type": "object" }, "NodeGpuMetrics": { "description": "GPU metrics grouped by node", "properties": { "gpus": { "items": { "$ref": "#/components/schemas/GpuMetric" }, "type": "array" }, "node_name": { "type": "string" } }, "required": [ "node_name", "gpus" ], "type": "object" }, "NodeMetricItem": { "properties": { "collector": { "type": "string" }, "cpu_core": { "type": "string" }, "cpu_mode": { "type": "string" }, "filesystem": { "type": "string" }, "metric_name": { "type": "string" }, "mountpoint": { "type": "string" }, "resource": { "type": [ "string", "null" ] }, "timestamp": { "type": "string" }, "value": { "type": "string" } }, "required": [ "metric_name", "collector", "value", "timestamp" ], "type": "object" }, "NodeResourceMetricList": { "description": "New structured event state", "properties": { "details": { "items": { "$ref": "#/components/schemas/NodeMetricItem" }, "type": "array" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "NodeResponse": { "properties": { "capacity_type": { "description": "\"spot\" or \"on-demand\" - detected from node labels", "type": "string" }, "cluster_name": { "type": "string" }, "compute_type": { "type": "string" }, "id": { "format": "uuid", "type": "string" }, "instance_type": { "type": "string" }, "name": { "type": "string" }, "region": { "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "status", "cluster_name", "compute_type", "instance_type", "region", "capacity_type" ], "type": "object" }, "NotificationEvent": { "properties": { "action_id": { "type": "string" }, "checkpoint_id": { "type": "string" }, "cluster_id": { "type": "string" }, "context": { "type": "string" }, "description": { "type": "string" }, "duration_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "failure_reason": { "type": "string" }, "failure_stage": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "node_name": { "type": "string" }, "operation": { "type": "string" }, "pause_ns": { "description": "Checkpoints: time the workload was held (see facts::checkpoint_pause_ns).", "format": "int64", "minimum": 0, "type": "integer" }, "physical_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "pod_ready_at_ms": { "format": "int64", "type": [ "integer", "null" ] }, "pod_scheduled_at_ms": { "description": "Restores: PodScheduled / Ready transitions of the restored pod, once known.", "format": "int64", "type": [ "integer", "null" ] }, "pod_uid": { "type": "string" }, "read": { "type": "boolean" }, "restore_uuid": { "type": "string" }, "result": { "type": "string" }, "storage_tier": { "type": "string" }, "timestamp": { "type": "string" }, "type": { "type": "string" }, "workload_type": { "type": "string" } }, "required": [ "id", "timestamp", "type", "operation", "result", "description", "context", "read", "cluster_id", "workload_type", "node_name", "pod_uid", "name", "namespace", "action_id", "checkpoint_id", "restore_uuid", "storage_tier", "failure_stage", "failure_reason", "duration_ns", "physical_bytes", "pause_ns" ], "type": "object" }, "Observation": { "properties": { "duration_ms": { "format": "int64", "type": [ "integer", "null" ] }, "event_type": { "type": "string" }, "evidence": { "type": "string" }, "experiment_id": { "format": "uuid", "type": [ "string", "null" ] }, "id": { "format": "uuid", "type": "string" }, "observation_key": { "type": "string" }, "profile_id": { "type": [ "string", "null" ] }, "source": { "type": "string" }, "started_at": { "format": "date-time", "type": "string" } }, "required": [ "id", "observation_key", "event_type", "evidence", "source", "started_at" ], "type": "object" }, "ObservationView": { "properties": { "completion_tokens": { "format": "int64", "type": [ "integer", "null" ] }, "deadline_missed": { "type": [ "boolean", "null" ] }, "duration_ms": { "format": "int64", "type": [ "integer", "null" ] }, "event_type": { "type": "string" }, "evidence": { "type": "string" }, "experiment_id": { "format": "uuid", "type": [ "string", "null" ] }, "fallback_used": { "type": [ "boolean", "null" ] }, "id": { "format": "uuid", "type": "string" }, "logical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "observation_key": { "type": "string" }, "physical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "profile_id": { "type": [ "string", "null" ] }, "prompt_tokens": { "format": "int64", "type": [ "integer", "null" ] }, "source": { "type": "string" }, "started_at": { "format": "date-time", "type": "string" }, "success": { "type": [ "boolean", "null" ] }, "ttft_ms": { "format": "int64", "type": [ "integer", "null" ] } }, "required": [ "id", "observation_key", "event_type", "evidence", "source", "started_at" ], "type": "object" }, "OperationDetail": { "allOf": [ { "$ref": "#/components/schemas/OperationRow" }, { "properties": { "restores": { "description": "For a checkpoint, every restore made from it; empty for a restore.", "items": { "$ref": "#/components/schemas/OperationRow" }, "type": "array" }, "stages": { "items": { "$ref": "#/components/schemas/OperationStage" }, "type": "array" } }, "required": [ "stages", "restores" ], "type": "object" } ] }, "OperationRow": { "properties": { "action_id": { "type": "string" }, "checkpoint_id": { "type": "string" }, "cluster_id": { "type": "string" }, "completed_at_ms": { "format": "int64", "type": [ "integer", "null" ] }, "duration_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "failure_reason": { "type": "string" }, "failure_stage": { "type": "string" }, "gpu_model": { "type": "string" }, "kind": { "type": "string" }, "logical_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "node_name": { "type": "string" }, "op_type": { "type": "string" }, "operation_id": { "type": "string" }, "pause_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "physical_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "platform": { "type": "string" }, "pod_ready_at_ms": { "format": "int64", "type": [ "integer", "null" ] }, "pod_scheduled_at_ms": { "description": "Restores only: PodScheduled / Ready transitions of the restored pod, once known.", "format": "int64", "type": [ "integer", "null" ] }, "pod_uid": { "type": "string" }, "reason": { "type": "string" }, "restore_uuid": { "type": "string" }, "result": { "type": "string" }, "source": { "type": "string" }, "started_at_ms": { "description": "Milliseconds since the Unix epoch.", "format": "int64", "type": "integer" }, "storage_tier": { "type": "string" }, "workload_type": { "type": "string" } }, "required": [ "operation_id", "op_type", "workload_type", "cluster_id", "node_name", "pod_uid", "name", "namespace", "action_id", "checkpoint_id", "restore_uuid", "reason", "kind", "result", "failure_stage", "failure_reason", "storage_tier", "gpu_model", "platform", "started_at_ms", "duration_ns", "pause_ns", "logical_bytes", "physical_bytes", "source" ], "type": "object" }, "OperationStage": { "properties": { "bytes_in": { "format": "int64", "minimum": 0, "type": "integer" }, "bytes_out": { "format": "int64", "minimum": 0, "type": "integer" }, "duration_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "reason": { "type": "string" }, "result": { "type": "string" }, "seq": { "format": "int32", "minimum": 0, "type": "integer" }, "stage": { "type": "string" } }, "required": [ "stage", "seq", "duration_ns", "bytes_in", "bytes_out", "result", "reason" ], "type": "object" }, "OperationTotals": { "properties": { "attempts": { "format": "int64", "minimum": 0, "type": "integer" }, "bytes_total": { "format": "int64", "minimum": 0, "type": "integer" }, "duration_buckets": { "items": { "$ref": "#/components/schemas/HistogramBucket" }, "type": "array" }, "failed": { "format": "int64", "minimum": 0, "type": "integer" }, "fallbacks": { "format": "int64", "minimum": 0, "type": "integer" }, "operation": { "type": "string" }, "p50_ns": { "format": "double", "type": "number" }, "p95_ns": { "format": "double", "type": "number" }, "pause_p50_ns": { "description": "Checkpoints: pause percentiles over attempts with a pause recorded (0 otherwise).", "format": "double", "type": "number" }, "pause_p95_ns": { "format": "double", "type": "number" }, "succeeded": { "format": "int64", "minimum": 0, "type": "integer" }, "to_ready_count": { "format": "int64", "minimum": 0, "type": "integer" }, "to_ready_p50_ns": { "description": "Restores: PodScheduled→Ready percentiles over attempts whose pod reached Ready (0 otherwise).", "format": "double", "type": "number" }, "to_ready_p95_ns": { "format": "double", "type": "number" } }, "required": [ "operation", "attempts", "succeeded", "failed", "fallbacks", "p50_ns", "p95_ns", "bytes_total", "duration_buckets", "pause_p50_ns", "pause_p95_ns", "to_ready_p50_ns", "to_ready_p95_ns", "to_ready_count" ], "type": "object" }, "OperationsSummary": { "description": "Windowed aggregates over the same facts and bucket boundaries as the Prometheus export.", "properties": { "artifact_size_buckets": { "items": { "$ref": "#/components/schemas/HistogramBucket" }, "type": "array" }, "attempts": { "format": "int64", "minimum": 0, "type": "integer" }, "failed": { "format": "int64", "minimum": 0, "type": "integer" }, "failures": { "items": { "$ref": "#/components/schemas/FailureSummary" }, "type": "array" }, "fallbacks": { "format": "int64", "minimum": 0, "type": "integer" }, "operations": { "items": { "$ref": "#/components/schemas/OperationTotals" }, "type": "array" }, "stages": { "items": { "$ref": "#/components/schemas/StageSummary" }, "type": "array" }, "step_seconds": { "format": "int64", "type": "integer" }, "succeeded": { "format": "int64", "minimum": 0, "type": "integer" }, "tiers": { "items": { "$ref": "#/components/schemas/TierSummary" }, "type": "array" }, "timeline": { "items": { "$ref": "#/components/schemas/TimelinePoint" }, "type": "array" }, "window_seconds": { "format": "int64", "type": "integer" } }, "required": [ "window_seconds", "step_seconds", "attempts", "succeeded", "failed", "fallbacks", "operations", "artifact_size_buckets", "stages", "failures", "tiers", "timeline" ], "type": "object" }, "OrgCheckpointSavings": { "description": "Organization-level checkpoint savings summary", "properties": { "avg_checkpoint_interval_seconds": { "format": "double", "type": [ "number", "null" ] }, "pods_protected": { "format": "int64", "type": [ "integer", "null" ] }, "refreshed_at": { "format": "date-time", "type": [ "string", "null" ] }, "total_checkpoint_overhead_ns": { "format": "int64", "type": [ "integer", "null" ] }, "total_checkpoint_storage_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "total_checkpoints": { "format": "int64", "type": [ "integer", "null" ] }, "total_estimated_savings": { "description": "Total estimated savings across all pods (spot vs on-demand)", "format": "double", "type": [ "number", "null" ] }, "total_heartbeat_checkpoints": { "format": "int64", "type": [ "integer", "null" ] }, "total_manual_checkpoints": { "format": "int64", "type": [ "integer", "null" ] }, "total_time_protected_seconds": { "format": "double", "type": [ "number", "null" ] }, "worst_case_recovery_point_seconds": { "format": "double", "type": [ "number", "null" ] } }, "type": "object" }, "OtelCredsResponse": { "properties": { "OTEL_EXPORTER_OTLP_ENDPOINT": { "type": "string" }, "OTEL_EXPORTER_OTLP_HEADERS": { "type": "string" } }, "required": [ "OTEL_EXPORTER_OTLP_ENDPOINT", "OTEL_EXPORTER_OTLP_HEADERS" ], "type": "object" }, "OutboxEvent": { "properties": { "aggregate_id": { "type": "string" }, "aggregate_type": { "type": "string" }, "created_at": { "format": "date-time", "type": "string" }, "event_type": { "type": "string" }, "id": { "format": "int64", "type": "integer" }, "payload": {} }, "required": [ "id", "aggregate_type", "aggregate_id", "event_type", "payload", "created_at" ], "type": "object" }, "PaginatedJobResponse": { "properties": { "available_filters": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/AvailableFilters" } ] }, "jobs": { "items": { "$ref": "#/components/schemas/JobResponse" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "jobs", "total_count" ], "type": "object" }, "PaginatedPipelinePolicyResponse": { "properties": { "policies": { "items": { "$ref": "#/components/schemas/PipelinePolicyResponse" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "policies", "total_count" ], "type": "object" }, "PaginatedPodResponse": { "properties": { "available_filters": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/AvailableFilters" } ] }, "pods": { "items": { "$ref": "#/components/schemas/PodResponse" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "pods", "total_count" ], "type": "object" }, "PaginatedPolicyResponse": { "properties": { "automatic_policies": { "description": "Auto-restore policies (only included when include_automatic=true)", "items": { "$ref": "#/components/schemas/AutoRestorePolicyInfo" }, "type": [ "array", "null" ] }, "policies": { "items": { "$ref": "#/components/schemas/PolicyResponse" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "policies", "total_count" ], "type": "object" }, "PartitionNodeCount": { "description": "Node count per state for a partition", "properties": { "count": { "format": "double", "type": "number" }, "partition_name": { "type": "string" }, "state": { "type": "string" } }, "required": [ "partition_name", "state", "count" ], "type": "object" }, "PartitionStats": { "properties": { "cpu_load": { "format": "double", "type": [ "number", "null" ] }, "free_memory": { "format": "double", "type": [ "number", "null" ] }, "idle_cpus": { "format": "double", "type": [ "number", "null" ] }, "idle_nodes": { "format": "double", "type": [ "number", "null" ] }, "partition_name": { "type": "string" }, "real_memory": { "format": "double", "type": [ "number", "null" ] }, "timestamp": { "format": "int64", "type": "integer" }, "total_cpus": { "format": "double", "type": [ "number", "null" ] } }, "required": [ "partition_name", "timestamp" ], "type": "object" }, "PartitionTimeSeries": { "properties": { "cpu_load": { "items": { "$ref": "#/components/schemas/TimeSeriesDataPoint" }, "type": "array" }, "free_memory": { "items": { "$ref": "#/components/schemas/TimeSeriesDataPoint" }, "type": "array" }, "partition_name": { "type": "string" } }, "required": [ "partition_name", "cpu_load", "free_memory" ], "type": "object" }, "PendingResponse": { "properties": { "pending_profile_id": { "type": "string" }, "retry_after_ms": { "format": "int64", "type": "integer" } }, "required": [ "pending_profile_id", "retry_after_ms" ], "type": "object" }, "PipelineAction": { "description": "Action defines WHAT to do when triggered", "oneOf": [ { "properties": { "config": { "$ref": "#/components/schemas/CheckpointActionConfig" }, "type": { "enum": [ "checkpoint" ], "type": "string" } }, "required": [ "config", "type" ], "type": "object" } ] }, "PipelineFilter": { "description": "Filter defines WHAT resources are targeted", "oneOf": [ { "properties": { "config": { "$ref": "#/components/schemas/NamespaceFilterConfig" }, "type": { "enum": [ "namespace" ], "type": "string" } }, "required": [ "config", "type" ], "type": "object" }, { "properties": { "config": { "$ref": "#/components/schemas/PodsFilterConfig" }, "type": { "enum": [ "pods" ], "type": "string" } }, "required": [ "config", "type" ], "type": "object" }, { "properties": { "config": { "$ref": "#/components/schemas/JobsFilterConfig" }, "type": { "enum": [ "jobs" ], "type": "string" } }, "required": [ "config", "type" ], "type": "object" }, { "properties": { "config": { "$ref": "#/components/schemas/SlurmJobsFilterConfig" }, "type": { "enum": [ "slurm_jobs" ], "type": "string" } }, "required": [ "config", "type" ], "type": "object" } ] }, "PipelinePolicyRequest": { "description": "Request to create a policy using the pipeline format", "properties": { "name": { "type": [ "string", "null" ] }, "pipeline": { "$ref": "#/components/schemas/PolicyPipeline" } }, "required": [ "pipeline" ], "type": "object" }, "PipelinePolicyResponse": { "description": "Response for pipeline-based policies", "properties": { "id": { "type": "string" }, "job_count": { "format": "int32", "type": [ "integer", "null" ] }, "name": { "type": [ "string", "null" ] }, "pipeline": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/PolicyPipeline" } ] }, "pod_count": { "format": "int32", "type": "integer" }, "status": { "type": "string" }, "timestamp": { "type": [ "string", "null" ] } }, "required": [ "id", "status", "pod_count" ], "type": "object" }, "PipelineTrigger": { "description": "Trigger defines WHEN a policy activates", "oneOf": [ { "properties": { "config": { "$ref": "#/components/schemas/HeartbeatTriggerConfig" }, "type": { "enum": [ "heartbeat" ], "type": "string" } }, "required": [ "config", "type" ], "type": "object" } ] }, "Plugin": { "properties": { "binaries": { "items": { "$ref": "#/components/schemas/PluginBinary" }, "type": [ "array", "null" ] }, "latest_version": { "type": "string" }, "libraries": { "items": { "$ref": "#/components/schemas/PluginBinary" }, "type": [ "array", "null" ] }, "name": { "type": "string" }, "published_at": { "format": "date-time", "type": "string" }, "size": { "format": "int64", "type": "integer" }, "status": { "$ref": "#/components/schemas/Status" }, "type": { "$ref": "#/components/schemas/PluginType" }, "version": { "type": "string" } }, "required": [ "name", "type", "status", "version", "published_at" ], "type": "object" }, "PluginBinary": { "properties": { "checksum": { "type": [ "string", "null" ] }, "install_dir": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name", "install_dir" ], "type": "object" }, "PluginType": { "enum": [ 0, 1, 2, 3, 4 ], "type": "integer" }, "PluginUploadPayload": { "properties": { "arch": { "type": [ "string", "null" ] }, "build": { "type": [ "string", "null" ] }, "checksum": { "type": [ "string", "null" ] }, "repository": { "type": "string" }, "version": { "type": [ "string", "null" ] } }, "type": "object" }, "PodCheckpointCpu": { "description": "Per-pod checkpoint resource data for efficiency calculations", "properties": { "checkpoint_count": { "description": "Total number of checkpoints for this pod", "format": "int64", "type": "integer" }, "checkpoint_timestamp": { "description": "Timestamp of the last checkpoint", "type": "string" }, "cpu_at_checkpoint": { "description": "CPU usage (seconds) at the time of the last checkpoint\nThis represents the work preserved by the checkpoint", "format": "double", "type": "number" }, "gpu_memory_used_mib": { "description": "GPU memory used (MiB) at checkpoint time, if GPU was used", "format": "double", "type": [ "number", "null" ] }, "gpu_model": { "description": "GPU model name (e.g., \"NVIDIA H100 80GB HBM3\"), if GPU was used", "type": [ "string", "null" ] }, "gpu_utilization_at_checkpoint": { "description": "GPU utilization at checkpoint time (percentage 0-100), if GPU was used\nDerived from DCGM_FI_DEV_GPU_UTIL metric", "format": "double", "type": [ "number", "null" ] }, "namespace": { "description": "Namespace", "type": "string" }, "pod_name": { "description": "Pod name", "type": "string" } }, "required": [ "pod_name", "namespace", "cpu_at_checkpoint", "checkpoint_timestamp", "checkpoint_count" ], "type": "object" }, "PodCheckpointSavings": { "description": "Per-pod checkpoint savings data", "properties": { "avg_interval_seconds": { "description": "Average interval between checkpoints (seconds)", "format": "double", "type": [ "number", "null" ] }, "capacity_type": { "description": "Node capacity type: \"spot\" or \"on-demand\"", "type": [ "string", "null" ] }, "checkpoint_count": { "format": "int64", "type": [ "integer", "null" ] }, "cluster_id": { "type": [ "string", "null" ] }, "estimated_savings": { "description": "Estimated savings (if spot instance)", "format": "double", "type": [ "number", "null" ] }, "first_checkpoint": { "format": "date-time", "type": [ "string", "null" ] }, "gpu": { "type": [ "string", "null" ] }, "heartbeat_checkpoints": { "description": "Number of automatic heartbeat checkpoints", "format": "int64", "type": [ "integer", "null" ] }, "instance_type": { "description": "Node instance type (e.g., \"m5.xlarge\", \"n1-standard-4\")", "type": [ "string", "null" ] }, "last_checkpoint": { "format": "date-time", "type": [ "string", "null" ] }, "manual_checkpoints": { "description": "Number of manual checkpoints", "format": "int64", "type": [ "integer", "null" ] }, "max_recovery_point_seconds": { "description": "Maximum interval - worst case data loss on failure (seconds)", "format": "double", "type": [ "number", "null" ] }, "min_interval_seconds": { "description": "Minimum interval between checkpoints (seconds)", "format": "double", "type": [ "number", "null" ] }, "namespace": { "type": [ "string", "null" ] }, "node_name": { "description": "Node name (for linking to node details page)", "type": [ "string", "null" ] }, "node_region": { "description": "Node region", "type": [ "string", "null" ] }, "ondemand_price_per_hour": { "description": "On-demand price per hour (from user config)", "format": "double", "type": [ "number", "null" ] }, "platform": { "type": [ "string", "null" ] }, "pod_name": { "type": [ "string", "null" ] }, "protection_efficiency_ratio": { "description": "Ratio of time protected to checkpoint overhead (higher = more efficient)", "format": "double", "type": [ "number", "null" ] }, "refreshed_at": { "format": "date-time", "type": [ "string", "null" ] }, "spot_price_per_hour": { "description": "Spot price per hour (from user config)", "format": "double", "type": [ "number", "null" ] }, "time_protected_seconds": { "description": "Total time (seconds) between first and last checkpoint - time \"protected\"", "format": "double", "type": [ "number", "null" ] }, "total_checkpoint_duration_ns": { "description": "Total time spent checkpointing (nanoseconds)", "format": "int64", "type": [ "integer", "null" ] }, "total_checkpoint_size_bytes": { "description": "Total data checkpointed (bytes)", "format": "int64", "type": [ "integer", "null" ] } }, "type": "object" }, "PodResponse": { "properties": { "age": { "type": "string" }, "id": { "format": "uuid", "type": "string" }, "monitored_by_policies": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "node": { "type": "string" }, "ready": { "type": "string" }, "restarts": { "format": "int32", "type": "integer" }, "start_time": { "type": [ "string", "null" ] }, "status": { "type": "string" } }, "required": [ "id", "name", "namespace", "status", "age", "ready", "node", "restarts", "monitored_by_policies" ], "type": "object" }, "PodStartupTime": { "description": "Startup time for a single worker pod.", "properties": { "cedana_restore": { "description": "Whether this pod was started via a Cedana restore (true) or cold-started (false)", "type": "boolean" }, "pod_name": { "description": "Pod name", "type": "string" }, "start_time_ms": { "description": "Time from PodScheduled → Ready in milliseconds", "format": "int64", "type": "integer" } }, "required": [ "pod_name", "start_time_ms", "cedana_restore" ], "type": "object" }, "PodUtilization": { "description": "Pod utilization metrics grouped by pod", "properties": { "cpu_usage_seconds": { "format": "double", "type": "number" }, "memory_bytes": { "format": "double", "type": "number" }, "namespace": { "type": [ "string", "null" ] }, "node_name": { "type": "string" }, "owner_kind": { "description": "Owner kind from kube-state-metrics (e.g., \"Job\", \"ReplicaSet\", \"DaemonSet\", \"StatefulSet\")", "type": [ "string", "null" ] }, "owner_name": { "description": "Owner name from kube-state-metrics (e.g., \"my-job\", \"my-deployment-abc123\")", "type": [ "string", "null" ] }, "pod_name": { "type": [ "string", "null" ] }, "pod_uid": { "type": "string" }, "timestamp": { "type": "string" } }, "required": [ "pod_uid", "node_name", "cpu_usage_seconds", "memory_bytes", "timestamp" ], "type": "object" }, "PodsFilterConfig": { "properties": { "cluster_id": { "type": "string" }, "pod_ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "cluster_id" ], "type": "object" }, "PolicyActivityResponse": { "properties": { "failed_checkpoints": { "format": "int64", "type": "integer" }, "last_checkpoint_at": { "type": [ "string", "null" ] }, "policy_id": { "type": "string" }, "recent_checkpoints": { "items": { "$ref": "#/components/schemas/PolicyCheckpointInfo" }, "type": "array" }, "successful_checkpoints": { "format": "int64", "type": "integer" }, "total_checkpoints": { "format": "int64", "type": "integer" } }, "required": [ "policy_id", "total_checkpoints", "successful_checkpoints", "failed_checkpoints", "recent_checkpoints" ], "type": "object" }, "PolicyCheckpointInfo": { "properties": { "action_id": { "type": "string" }, "checkpoint_id": { "type": "string" }, "completed_at": { "type": [ "string", "null" ] }, "duration_ms": { "format": "int64", "type": [ "integer", "null" ] }, "namespace": { "type": "string" }, "pod_name": { "type": "string" }, "size_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "status": { "type": "string" } }, "required": [ "checkpoint_id", "action_id", "pod_name", "namespace", "status" ], "type": "object" }, "PolicyDeleteRequest": { "properties": { "id": { "format": "uuid", "type": "string" } }, "required": [ "id" ], "type": "object" }, "PolicyJobInfo": { "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "pod_count": { "format": "int64", "type": "integer" }, "priority": { "format": "int32", "type": [ "integer", "null" ] }, "status": { "type": "string" } }, "required": [ "id", "name", "namespace", "status", "pod_count" ], "type": "object" }, "PolicyJobsResponse": { "properties": { "affected_jobs": { "items": { "$ref": "#/components/schemas/PolicyJobInfo" }, "type": "array" }, "count": { "format": "int64", "type": "integer" }, "policy_id": { "type": "string" } }, "required": [ "policy_id", "affected_jobs", "count" ], "type": "object" }, "PolicyPipeline": { "description": "Complete policy pipeline definition", "properties": { "action": { "$ref": "#/components/schemas/PipelineAction" }, "filter": { "$ref": "#/components/schemas/PipelineFilter" }, "trigger": { "$ref": "#/components/schemas/PipelineTrigger" } }, "required": [ "trigger", "filter", "action" ], "type": "object" }, "PolicyPodResponse": { "properties": { "id": { "format": "uuid", "type": "string" }, "name": { "type": "string" }, "namespace": { "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "namespace", "status" ], "type": "object" }, "PolicyResponse": { "properties": { "id": { "type": "string" }, "input": { "format": "int64", "type": "integer" }, "job_count": { "format": "int64", "type": [ "integer", "null" ] }, "pod_count": { "format": "int64", "type": "integer" }, "policy_type": { "type": "string" }, "resource": { "type": "string" }, "resource_list": { "items": { "type": "string" }, "type": "array" }, "status": { "type": "string" }, "timestamp": { "format": "date-time", "type": [ "string", "null" ] } }, "required": [ "id", "status", "policy_type", "input", "resource", "resource_list", "pod_count" ], "type": "object" }, "PortMapping": { "properties": { "container_port": { "format": "int32", "type": "integer" }, "host_port": { "format": "int32", "type": "integer" } }, "required": [ "host_port", "container_port" ], "type": "object" }, "ProcessState": { "properties": { "Cmdline": { "type": "string" }, "GIDs": { "items": { "format": "int32", "minimum": 0, "type": "integer" }, "type": "array" }, "GPUEnabled": { "type": "boolean" }, "Groups": { "items": { "format": "int32", "minimum": 0, "type": "integer" }, "type": "array" }, "Host": { "$ref": "#/components/schemas/Host" }, "IsRunning": { "type": "boolean" }, "PID": { "format": "int32", "minimum": 0, "type": "integer" }, "StartTime": { "format": "int64", "minimum": 0, "type": "integer" }, "Status": { "type": "string" }, "UIDs": { "items": { "format": "int32", "minimum": 0, "type": "integer" }, "type": "array" }, "WorkingDir": { "type": "string" } }, "required": [ "PID", "Cmdline", "StartTime", "WorkingDir", "Status", "IsRunning", "Host" ], "type": "object" }, "ProfileHostingPlan": { "properties": { "checkpoint_owner": { "type": "string" }, "checkpoint_request": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CheckpointRequestView", "description": "An outstanding on-demand checkpoint, or null. Carried on the hosting plan the\ncontroller already reads each pass, so it needs no extra poll." } ] }, "compatibility_key": { "type": "string" }, "cpu_fixture": { "type": "boolean" }, "dynamo_template": {}, "hosting_mode": { "type": "string" }, "profile_id": { "type": "string" }, "profile_revision": { "type": "string" } }, "required": [ "profile_id", "hosting_mode", "profile_revision", "compatibility_key", "checkpoint_owner", "cpu_fixture" ], "type": "object" }, "ProfileStartupComparison": { "description": "Cold starts against restores, for one profile.", "properties": { "cold": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/StartLatency" } ] }, "logical_model": { "type": "string" }, "profile_id": { "type": "string" }, "restored": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/StartLatency" } ] }, "saved_ms": { "description": "Milliseconds a restore saves at the median.", "format": "int64", "type": [ "integer", "null" ] }, "speedup": { "description": "Cold median divided by restore median. Above 1 means restoring is faster.", "format": "double", "type": [ "number", "null" ] }, "starts": { "description": "Every start behind the summaries, newest first, so the numbers can be\nchecked rather than taken on faith.", "items": { "$ref": "#/components/schemas/WorkerStart" }, "type": "array" } }, "required": [ "profile_id", "logical_model", "starts" ], "type": "object" }, "PromoteArtifact": { "properties": { "deadline_ms": { "format": "int64", "type": [ "integer", "null" ] }, "tier": { "type": "string" } }, "required": [ "tier" ], "type": "object" }, "RegisterArtifact": { "properties": { "artifact_id": { "type": "string" }, "checkpoint_mode": { "type": "string" }, "checksum": { "type": [ "string", "null" ] }, "compatibility_key": { "type": "string" }, "logical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "metadata": {}, "parent_artifact_id": { "type": [ "string", "null" ] }, "physical_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "profile_id": { "type": "string" }, "reused_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "source": { "type": [ "string", "null" ] }, "storage_tier": { "type": [ "string", "null" ] }, "uri": { "type": "string" }, "written_bytes": { "format": "int64", "type": [ "integer", "null" ] } }, "required": [ "artifact_id", "profile_id", "compatibility_key", "checkpoint_mode", "uri" ], "type": "object" }, "RegistryCredentials": { "properties": { "password": { "type": "string" }, "username": { "type": "string" } }, "required": [ "username", "password" ], "type": "object" }, "ReportWorkerEndpoint": { "description": "Where a profile's worker publishes engine metrics (controller only).", "properties": { "metrics_url": { "type": "string" }, "pod_name": { "type": [ "string", "null" ] } }, "required": [ "metrics_url" ], "type": "object" }, "RequestCheckpoint": { "description": "What a caller asks for when it wants a checkpoint taken now.", "properties": { "reason": { "description": "What this checkpoint is for, carried onto the artifact so a tier holding\nseveral has something to tell them apart by.", "type": [ "string", "null" ] }, "replace_existing": { "description": "Whether the previous checkpoint may be deleted to make room. On by default,\nbecause the tier holds barely more than one dump.", "type": "boolean" } }, "type": "object" }, "ResolveRequest": { "properties": { "active_streams_by_profile": { "additionalProperties": { "format": "int64", "type": "integer" }, "propertyNames": { "type": "string" }, "type": "object" }, "authorization_id": { "format": "uuid", "type": "string" }, "logical_model": { "type": "string" }, "preferred_profile_id": { "type": [ "string", "null" ] }, "queued_requests": { "format": "int64", "type": "integer" }, "request_id": { "type": "string" } }, "required": [ "authorization_id", "request_id", "logical_model" ], "type": "object" }, "ResolveResponse": { "properties": { "activation_path": { "type": "string" }, "decision_source": { "type": "string" }, "fallback_used": { "type": "boolean" }, "profile_id": { "type": "string" }, "route_generation": { "format": "int64", "type": "integer" }, "target_name": { "type": "string" }, "upstream_model": { "type": "string" } }, "required": [ "profile_id", "target_name", "upstream_model", "route_generation", "decision_source", "fallback_used", "activation_path" ], "type": "object" }, "RestoreEventPayload": { "additionalProperties": {}, "properties": { "action_id": { "type": [ "string", "null" ] }, "action_ids": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "action_scope": { "type": [ "string", "null" ] }, "checkpoint_action_id": { "type": [ "string", "null" ] }, "checkpoint_id": { "type": [ "string", "null" ] }, "cluster_id": { "type": [ "string", "null" ] }, "completed_at": { "format": "date-time", "type": [ "string", "null" ] }, "error_message": { "type": [ "string", "null" ] }, "kind": { "type": [ "string", "null" ] }, "metadata": {}, "path_id": { "type": [ "string", "null" ] }, "profile_available_on_error": { "type": [ "boolean", "null" ] }, "profile_object_path": { "type": [ "string", "null" ] }, "reason": { "type": [ "string", "null" ] }, "request_metadata": {}, "restore_path": { "type": [ "string", "null" ] }, "restore_uuid": { "type": "string" }, "runtime_metadata": {}, "started_at": { "format": "date-time", "type": [ "string", "null" ] }, "status": { "type": [ "string", "null" ] }, "storage_provider": { "type": [ "string", "null" ] }, "workload_type": { "type": [ "string", "null" ] } }, "required": [ "restore_uuid" ], "type": "object" }, "RestoreEventResponse": { "properties": { "restore_uuid": { "format": "uuid", "type": "string" }, "status": { "type": "string" } }, "required": [ "restore_uuid", "status" ], "type": "object" }, "RestoreOverrides": { "properties": { "criu_opts": { "type": [ "string", "null" ] }, "pod_name": { "type": [ "string", "null" ] } }, "type": "object" }, "RestorePod": { "properties": { "action_id": { "type": "string" }, "cluster_id": { "type": "string" }, "overrides": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/RestoreOverrides" } ] }, "reason": { "$ref": "#/components/schemas/RestoreReason" } }, "required": [ "action_id", "reason" ], "type": "object" }, "RestoreProfileUploadResponse": { "properties": { "profile_object_path": { "type": [ "string", "null" ] }, "restore_uuid": { "format": "uuid", "type": "string" } }, "required": [ "restore_uuid" ], "type": "object" }, "RestoreReason": { "enum": [ "nodeTermination", "nodeUnschedulable", "manual" ], "type": "string" }, "RestoreSlurmJob": { "properties": { "action_id": { "type": "string" }, "cluster_id": { "type": [ "string", "null" ] }, "reason": { "$ref": "#/components/schemas/SlurmRestoreReason" } }, "required": [ "action_id" ], "type": "object" }, "RetentionPolicy": { "properties": { "enabled": { "type": "boolean" }, "max_age_days": { "format": "int64", "type": [ "integer", "null" ] }, "max_count": { "format": "int64", "type": [ "integer", "null" ] }, "min_tier": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "policy_id": { "type": "string" }, "profile_id": { "type": [ "string", "null" ] } }, "required": [ "policy_id", "name", "enabled" ], "type": "object" }, "RetentionPolicyUpsert": { "properties": { "enabled": { "type": "boolean" }, "max_age_days": { "format": "int64", "type": [ "integer", "null" ] }, "max_count": { "format": "int64", "type": [ "integer", "null" ] }, "min_tier": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "policy_id": { "type": [ "string", "null" ] }, "profile_id": { "type": [ "string", "null" ] } }, "required": [ "name" ], "type": "object" }, "RoutePolicy": { "properties": { "classifier_profile_id": { "type": [ "string", "null" ] }, "classifier_prompt": { "type": [ "string", "null" ] }, "classifier_response_schema": { "type": [ "string", "null" ] }, "generation": { "format": "int64", "type": "integer" }, "logical_model": { "type": "string" }, "mode": { "type": "string" }, "queue_timeout_ms": { "format": "int64", "type": "integer" }, "targets": { "items": { "$ref": "#/components/schemas/RouteTarget" }, "type": "array" } }, "required": [ "logical_model", "mode", "queue_timeout_ms", "generation", "targets" ], "type": "object" }, "RouteStatusView": { "properties": { "endpoint": { "type": [ "string", "null" ] }, "fallback_profile_id": { "type": [ "string", "null" ] }, "fallback_ready": { "type": "boolean" }, "logical_model": { "type": "string" }, "pending_activation": { "description": "A Pending intent asks for this profile to be Active on at least one replica, so\nsomething is trying to bring it up.", "type": "boolean" }, "pending_intent": { "description": "Any capacity intent for the primary is still Pending, either direction. Rarely the\nfield you want; prefer pending_activation or pending_release.", "type": "boolean" }, "pending_release": { "description": "A Pending intent asks for this profile to stop holding an accelerator\n(Suspended, or Active at zero replicas).", "type": "boolean" }, "primary_phase": { "type": [ "string", "null" ] }, "primary_profile_id": { "type": "string" }, "primary_ready": { "type": "boolean" }, "queue_timeout_ms": { "format": "int64", "type": "integer" }, "restore_checkpoint_path": { "description": "The checkpoint the live worker was told to restore from, when it was.", "type": [ "string", "null" ] }, "start_kind": { "description": "How the worker now on this profile started, read from the pod spec: restore when it\nwas given a checkpoint, cold otherwise.", "type": [ "string", "null" ] }, "state": { "type": "string" } }, "required": [ "logical_model", "primary_profile_id", "primary_ready", "fallback_ready", "pending_intent", "pending_activation", "pending_release", "queue_timeout_ms", "state" ], "type": "object" }, "RouteTarget": { "properties": { "priority": { "format": "int32", "type": "integer" }, "profile_id": { "type": "string" }, "tier": { "type": "string" } }, "required": [ "profile_id", "tier", "priority" ], "type": "object" }, "RouterConfig": { "properties": { "generation": { "format": "int64", "type": "integer" }, "routes": { "items": { "$ref": "#/components/schemas/RouterRouteConfig" }, "type": "array" }, "schema_version": { "format": "int32", "type": "integer" } }, "required": [ "schema_version", "generation", "routes" ], "type": "object" }, "RouterRouteConfig": { "properties": { "classifier_profile_id": { "type": [ "string", "null" ] }, "classifier_prompt": { "type": [ "string", "null" ] }, "classifier_response_schema": { "type": [ "string", "null" ] }, "generation": { "format": "int64", "type": "integer" }, "logical_model": { "type": "string" }, "mode": { "type": "string" }, "queue_timeout_ms": { "format": "int64", "type": "integer" }, "targets": { "items": { "$ref": "#/components/schemas/RouterTargetConfig" }, "type": "array" } }, "required": [ "logical_model", "mode", "queue_timeout_ms", "generation", "targets" ], "type": "object" }, "RouterTargetConfig": { "properties": { "current_replicas": { "format": "int32", "type": "integer" }, "draining": { "type": "boolean" }, "max_queue_depth": { "format": "int32", "type": "integer" }, "max_replicas": { "format": "int32", "type": "integer" }, "min_replicas": { "format": "int32", "type": "integer" }, "node_hourly_usd": { "format": "double", "type": "number" }, "priority": { "format": "int32", "type": "integer" }, "profile_id": { "type": "string" }, "ready": { "type": "boolean" }, "service_url": { "description": "Stable internal service URL; never contains an activation/generation.", "type": "string" }, "target_concurrency": { "format": "int32", "type": "integer" }, "tier": { "type": "string" }, "upstream_model": { "type": "string" } }, "required": [ "profile_id", "tier", "priority", "service_url", "upstream_model", "ready", "draining", "min_replicas", "max_replicas", "current_replicas", "target_concurrency", "max_queue_depth", "node_hourly_usd" ], "type": "object" }, "ScriptConfiguration": { "properties": { "base64_script": { "type": "string" } }, "required": [ "base64_script" ], "type": "object" }, "ServingAnalytics": { "properties": { "average_ttft_ms": { "format": "double", "type": [ "number", "null" ] }, "completion_tokens": { "format": "int64", "type": "integer" }, "deadline_misses": { "format": "int64", "type": "integer" }, "fallbacks": { "format": "int64", "type": "integer" }, "prompt_tokens": { "format": "int64", "type": "integer" }, "requests": { "format": "int64", "type": "integer" }, "tokens_per_second": { "format": "double", "type": [ "number", "null" ] } }, "required": [ "requests", "fallbacks", "deadline_misses", "prompt_tokens", "completion_tokens" ], "type": "object" }, "SetProfileState": { "properties": { "deadline_ms": { "format": "int64", "type": [ "integer", "null" ] }, "desired_replicas": { "format": "int32", "type": [ "integer", "null" ] }, "desired_state": { "type": "string" } }, "required": [ "desired_state" ], "type": "object" }, "SimulateRoute": { "properties": { "cold_share": { "format": "double", "type": "number" }, "deadline_ms": { "format": "int64", "type": "integer" }, "logical_model": { "type": "string" }, "requests_per_hour": { "format": "double", "type": "number" }, "restore_share": { "format": "double", "type": "number" } }, "required": [ "logical_model", "requests_per_hour", "cold_share", "restore_share", "deadline_ms" ], "type": "object" }, "SimulationResult": { "properties": { "cold_share": { "format": "double", "type": "number" }, "evidence": { "type": "string" }, "logical_model": { "type": "string" }, "projected_cold_p50_ms": { "format": "double", "type": [ "number", "null" ] }, "projected_deadline_miss_rate": { "format": "double", "type": "number" }, "projected_fallback_rate": { "format": "double", "type": "number" }, "projected_p50_ms": { "format": "double", "type": "number" }, "projected_restore_p50_ms": { "format": "double", "type": [ "number", "null" ] }, "requests_per_hour": { "format": "double", "type": "number" }, "restore_share": { "format": "double", "type": "number" } }, "required": [ "logical_model", "requests_per_hour", "cold_share", "restore_share", "projected_fallback_rate", "projected_deadline_miss_rate", "projected_p50_ms", "evidence" ], "type": "object" }, "SlurmCheckpoint": { "description": "Checkpoint is basic unit for cedana service operation\nit stores all the information regarding the snapshot we can use to save and then restore state", "properties": { "checksum": { "type": [ "string", "null" ] }, "gpu": { "type": "string" }, "id": { "format": "uuid", "type": "string" }, "info": {}, "name": { "type": [ "string", "null" ] }, "status": { "$ref": "#/components/schemas/SlurmCheckpointStatus" } }, "required": [ "id", "status", "gpu" ], "type": "object" }, "SlurmCheckpointInfo": { "properties": { "gpu": { "type": "string" }, "info": {}, "platform": { "type": "string" } }, "required": [ "gpu", "platform" ], "type": "object" }, "SlurmCheckpointKind": { "enum": [ "simple", "rootfs", "rootfsonly" ], "type": "string" }, "SlurmCheckpointReason": { "enum": [ "heartbeat", "manual", "preemption" ], "type": "string" }, "SlurmCheckpointStatus": { "enum": [ "initializing", "updated_info", "possibly_uploaded", "ready", "deprecated" ], "type": "string" }, "SlurmCheckpointSuccessInfo": { "properties": { "restore_path": { "type": [ "string", "null" ] } }, "type": "object" }, "SlurmCluster": { "properties": { "id": { "format": "uuid", "type": "string" }, "metadata": {}, "name": { "type": "string" }, "status": { "type": "string" } }, "required": [ "id", "name", "status" ], "type": "object" }, "SlurmClusterOverview": { "properties": { "cpu_load": { "format": "double", "type": [ "number", "null" ] }, "cpus_idle": { "format": "double", "type": [ "number", "null" ] }, "cpus_total": { "format": "double", "type": [ "number", "null" ] }, "mem_alloc": { "format": "double", "type": [ "number", "null" ] }, "mem_free": { "format": "double", "type": [ "number", "null" ] }, "mem_real": { "format": "double", "type": [ "number", "null" ] }, "timestamp": { "format": "int64", "type": "integer" } }, "required": [ "timestamp" ], "type": "object" }, "SlurmClusterSync": { "description": "SlurmClusterSync is the format sent by cedana-slurm when syncing clusters", "properties": { "id": { "type": "string" }, "metadata": {}, "name": { "type": "string" }, "status": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "SlurmClusterSyncRequest": { "properties": { "cluster_id": { "format": "uuid", "type": "string" }, "clusters": { "items": { "$ref": "#/components/schemas/SlurmClusterSync" }, "type": "array" } }, "required": [ "cluster_id", "clusters" ], "type": "object" }, "SlurmEvent": { "properties": { "derived_ec": { "format": "int64", "type": [ "integer", "null" ] }, "exit_code": { "format": "int32", "type": [ "integer", "null" ] }, "failed_node": { "description": "Node that triggered the failure, if any.", "type": [ "string", "null" ] }, "job_id": { "format": "int64", "type": "integer" }, "kill_requid": { "format": "int64", "type": [ "integer", "null" ] }, "partition": { "type": [ "string", "null" ] }, "reason": { "description": "Human-readable exit reason from slurmdbd (derived_es).", "type": [ "string", "null" ] }, "status": { "type": "string" }, "time_suspended": { "description": "Seconds the job spent suspended (preemption-with-checkpoint signal).", "format": "int64", "type": [ "integer", "null" ] }, "timestamp": { "description": "Epoch seconds; falls back to start_time, then submit_time, then 0.", "format": "int64", "type": "integer" } }, "required": [ "job_id", "status", "timestamp" ], "type": "object" }, "SlurmJob": { "description": "SlurmJob represents a SLURM job stored in the database", "properties": { "account": { "type": [ "string", "null" ] }, "cluster_id": { "type": "string" }, "derived_ec": { "description": "Numeric derived exit code (slurmdbd derived_ec — uint32, widened to i64)", "format": "int64", "type": [ "integer", "null" ] }, "derived_es": { "description": "Human-readable exit reason (e.g. \"Preempted by higher-priority job\")", "type": [ "string", "null" ] }, "end_time": { "description": "Unix epoch seconds; 0 means not yet ended", "format": "int64", "type": [ "integer", "null" ] }, "exit_code": { "format": "int64", "type": [ "integer", "null" ] }, "failed_node": { "description": "Node that triggered job failure, if any", "type": [ "string", "null" ] }, "id": { "format": "int64", "type": "integer" }, "job_id": { "format": "int64", "type": "integer" }, "kill_requid": { "description": "UID that issued the kill/preempt signal (uid_t / uint32, widened to i64)", "format": "int64", "type": [ "integer", "null" ] }, "name": { "type": "string" }, "nodes": { "type": "string" }, "num_cpus": { "format": "int64", "type": [ "integer", "null" ] }, "num_nodes": { "format": "int64", "type": [ "integer", "null" ] }, "partition": { "type": [ "string", "null" ] }, "priority": { "format": "int64", "type": "integer" }, "start_time": { "description": "Unix epoch seconds; 0 means not set", "format": "int64", "type": "integer" }, "state_reason_prev": { "description": "Reason code for prior state transition", "format": "int64", "type": [ "integer", "null" ] }, "status": { "type": "string" }, "submit_time": { "description": "Unix epoch seconds; 0 means not set", "format": "int64", "type": "integer" }, "time_suspended": { "description": "Seconds the job spent suspended", "format": "int64", "type": [ "integer", "null" ] }, "work_dir": { "type": [ "string", "null" ] } }, "type": "object" }, "SlurmJobSyncRequest": { "description": "Sync request containing a batch of jobs", "properties": { "cluster_id": { "format": "uuid", "type": "string" }, "jobs": { "description": "Raw SLURM records are retained because their schema varies by release.", "items": {}, "type": "array" } }, "required": [ "cluster_id", "jobs" ], "type": "object" }, "SlurmJobsFilterConfig": { "description": "Filter config for targeting explicit SLURM jobs by their numeric `slurm_job_id`\n(the value the UI's `SlurmJob` exposes). These are resolved to `slurm_jobs.id` UUIDs\nat policy-creation time and stored in `policy.resource_id`.", "properties": { "cluster_id": { "type": "string" }, "job_ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "cluster_id" ], "type": "object" }, "SlurmMaintenanceWindow": { "properties": { "created_at": { "format": "date-time", "type": [ "string", "null" ] }, "end_time": { "format": "date-time", "type": [ "string", "null" ] }, "id": { "type": [ "string", "null" ] }, "nodes": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "partitions": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "reason": { "type": [ "string", "null" ] }, "start_time": { "format": "date-time", "type": [ "string", "null" ] }, "status": { "type": [ "string", "null" ] } }, "type": "object" }, "SlurmMetric": { "properties": { "counter_value": { "format": "double", "type": [ "number", "null" ] }, "gauge_value": { "format": "double", "type": [ "number", "null" ] }, "id": { "format": "int64", "minimum": 0, "type": "integer" }, "kind": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "tags": {}, "timestamp": { "format": "int64", "type": "integer" } }, "required": [ "id", "name", "timestamp" ], "type": "object" }, "SlurmNode": { "properties": { "cpus": { "format": "int32", "type": [ "integer", "null" ] }, "id": { "format": "uuid", "type": "string" }, "memory": { "format": "int64", "type": [ "integer", "null" ] }, "name": { "type": [ "string", "null" ] }, "status": { "type": [ "string", "null" ] } }, "type": "object" }, "SlurmNodeSync": { "description": "SlurmNodeSync is the format sent by cedana-slurm when syncing nodes", "properties": { "cpus": { "format": "int32", "type": "integer" }, "id": { "type": "string" }, "memory": { "format": "int64", "type": "integer" }, "name": { "type": "string" }, "status": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "SlurmNodeSyncRequest": { "properties": { "cluster_id": { "format": "uuid", "type": "string" }, "nodes": { "items": { "$ref": "#/components/schemas/SlurmNodeSync" }, "type": "array" } }, "required": [ "cluster_id", "nodes" ], "type": "object" }, "SlurmPartition": { "properties": { "default_time": { "format": "int64", "type": "integer" }, "id": { "format": "uuid", "type": "string" }, "is_default": { "type": "boolean" }, "max_time": { "format": "int64", "type": "integer" }, "name": { "type": "string" }, "nodes": { "type": "string" }, "priority_tier": { "format": "int32", "type": "integer" }, "state": { "type": "string" }, "total_cpus": { "format": "int32", "type": "integer" }, "total_nodes": { "format": "int32", "type": "integer" } }, "required": [ "id", "name", "state", "total_nodes", "total_cpus", "nodes", "max_time", "default_time", "priority_tier", "is_default" ], "type": "object" }, "SlurmPartitionSync": { "properties": { "default_time": { "format": "int64", "type": "integer" }, "is_default": { "type": "boolean" }, "max_time": { "format": "int64", "type": "integer" }, "name": { "type": "string" }, "nodes": { "type": "string" }, "priority_tier": { "format": "int32", "type": "integer" }, "state": { "type": "string" }, "total_cpus": { "format": "int32", "type": "integer" }, "total_nodes": { "format": "int32", "type": "integer" } }, "required": [ "name" ], "type": "object" }, "SlurmPartitionSyncRequest": { "properties": { "cluster_id": { "format": "uuid", "type": "string" }, "partitions": { "items": { "$ref": "#/components/schemas/SlurmPartitionSync" }, "type": "array" } }, "required": [ "cluster_id", "partitions" ], "type": "object" }, "SlurmRestoreReason": { "enum": [ "nodeTermination", "nodeUnschedulable", "manual" ], "type": "string" }, "SlurmStateBreakdown": { "properties": { "cpus_by_state": { "items": { "$ref": "#/components/schemas/StateItem" }, "type": "array" }, "nodes_by_state": { "items": { "$ref": "#/components/schemas/StateItem" }, "type": "array" }, "timestamp": { "format": "int64", "type": "integer" } }, "required": [ "timestamp", "cpus_by_state", "nodes_by_state" ], "type": "object" }, "StageSummary": { "properties": { "count": { "format": "int64", "minimum": 0, "type": "integer" }, "operation": { "type": "string" }, "p50_ns": { "format": "double", "type": "number" }, "p95_ns": { "format": "double", "type": "number" }, "stage": { "type": "string" }, "total_ns": { "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "operation", "stage", "count", "p50_ns", "p95_ns", "total_ns" ], "type": "object" }, "StartLatency": { "properties": { "max_ms": { "format": "int64", "type": "integer" }, "median_ms": { "format": "int64", "type": "integer" }, "min_ms": { "format": "int64", "type": "integer" }, "samples": { "minimum": 0, "type": "integer" } }, "required": [ "samples", "min_ms", "median_ms", "max_ms" ], "type": "object" }, "StartupAnalytics": { "properties": { "cold": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/LatencyDistribution" } ] }, "restore": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/LatencyDistribution" } ] }, "saved_p50_ms": { "format": "int64", "type": [ "integer", "null" ] }, "speedup_p50": { "format": "double", "type": [ "number", "null" ] }, "warm": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/LatencyDistribution" } ] } }, "type": "object" }, "StartupComparison": { "description": "Cold-start versus Cedana-restore startup latency for a deployment.", "properties": { "cold": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/StartupLatencySummary" } ] }, "p50_saved_ms": { "description": "Milliseconds saved by restore at p50.", "format": "int64", "type": [ "integer", "null" ] }, "p50_speedup": { "description": "Cold p50 divided by restore p50. Values above 1 mean restore is faster.", "format": "double", "type": [ "number", "null" ] }, "restore": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/StartupLatencySummary" } ] } }, "type": "object" }, "StartupLatencySummary": { "description": "Startup latency distribution for one boot path.", "properties": { "max_ms": { "format": "int64", "type": "integer" }, "mean_ms": { "format": "int64", "type": "integer" }, "min_ms": { "format": "int64", "type": "integer" }, "p50_ms": { "format": "int64", "type": "integer" }, "p95_ms": { "format": "int64", "type": "integer" }, "samples": { "minimum": 0, "type": "integer" } }, "required": [ "samples", "min_ms", "mean_ms", "p50_ms", "p95_ms", "max_ms" ], "type": "object" }, "StateItem": { "properties": { "state": { "type": "string" }, "value": { "format": "double", "type": "number" } }, "required": [ "state", "value" ], "type": "object" }, "Status": { "enum": [ 0, 1, 2, 3 ], "type": "integer" }, "StatusResponse": { "properties": { "details": { "type": [ "string", "null" ] }, "status": { "$ref": "#/components/schemas/CheckpointOperationStatus" } }, "required": [ "status" ], "type": "object" }, "StatusesResponse": { "properties": { "statuses": { "items": { "type": "string" }, "type": "array" } }, "required": [ "statuses" ], "type": "object" }, "StorageAnalytics": { "properties": { "dedup_ratio": { "format": "double", "type": [ "number", "null" ] }, "incremental_ratio": { "format": "double", "type": [ "number", "null" ] }, "logical_bytes": { "format": "int64", "type": "integer" }, "physical_bytes": { "format": "int64", "type": "integer" }, "reused_bytes": { "format": "int64", "type": "integer" }, "transferred_bytes": { "format": "int64", "type": "integer" }, "written_bytes": { "format": "int64", "type": "integer" } }, "required": [ "logical_bytes", "physical_bytes", "written_bytes", "reused_bytes", "transferred_bytes" ], "type": "object" }, "StorageSummary": { "properties": { "tiers": { "items": { "$ref": "#/components/schemas/StorageTierSummary" }, "type": "array" }, "total_artifacts": { "format": "int64", "type": "integer" }, "total_bytes": { "format": "int64", "type": "integer" } }, "required": [ "tiers", "total_bytes", "total_artifacts" ], "type": "object" }, "StorageTierSummary": { "properties": { "artifacts": { "format": "int64", "type": "integer" }, "bytes": { "format": "int64", "type": "integer" }, "residency_hours": { "format": "double", "type": "number" }, "tier": { "type": "string" }, "transfers": { "format": "int64", "type": "integer" } }, "required": [ "tier", "artifacts", "bytes", "transfers", "residency_hours" ], "type": "object" }, "TelemetryRecord": { "properties": { "activation_path": { "type": [ "string", "null" ] }, "classifier_latency_ms": { "format": "int64", "type": [ "integer", "null" ] }, "classifier_profile_id": { "type": [ "string", "null" ] }, "completion_tokens": { "format": "int64", "type": [ "integer", "null" ] }, "decision_source": { "type": [ "string", "null" ] }, "end_to_end_latency_ms": { "format": "int64", "type": [ "integer", "null" ] }, "fallback_used": { "type": [ "boolean", "null" ] }, "logical_model": { "type": "string" }, "mean_inter_token_ms": { "format": "double", "type": [ "number", "null" ] }, "p95_inter_token_ms": { "format": "double", "type": [ "number", "null" ] }, "profile_id": { "type": [ "string", "null" ] }, "prompt_tokens": { "format": "int64", "type": [ "integer", "null" ] }, "queue_ms": { "format": "int64", "type": [ "integer", "null" ] }, "request_id": { "type": "string" }, "route_generation": { "format": "int64", "type": [ "integer", "null" ] }, "status_code": { "format": "int32", "type": [ "integer", "null" ] }, "stream_duration_ms": { "format": "int64", "type": [ "integer", "null" ] }, "ttft_ms": { "format": "int64", "type": [ "integer", "null" ] }, "upstream_attempts": { "format": "int32", "type": [ "integer", "null" ] } }, "required": [ "request_id", "logical_model" ], "type": "object" }, "TierSummary": { "properties": { "attempts": { "format": "int64", "minimum": 0, "type": "integer" }, "bytes_total": { "format": "int64", "minimum": 0, "type": "integer" }, "operation": { "type": "string" }, "p50_ns": { "format": "double", "type": "number" }, "storage_tier": { "type": "string" }, "succeeded": { "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "operation", "storage_tier", "attempts", "succeeded", "p50_ns", "bytes_total" ], "type": "object" }, "TimeSeriesDataPoint": { "properties": { "timestamp": { "format": "int64", "type": "integer" }, "value": { "format": "double", "type": "number" } }, "required": [ "timestamp", "value" ], "type": "object" }, "TimelinePoint": { "properties": { "bucket_ms": { "format": "int64", "type": "integer" }, "failed": { "format": "int64", "minimum": 0, "type": "integer" }, "fallbacks": { "format": "int64", "minimum": 0, "type": "integer" }, "operation": { "type": "string" }, "succeeded": { "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "bucket_ms", "operation", "succeeded", "failed", "fallbacks" ], "type": "object" }, "TopPod": { "description": "Top pods by resource usage", "properties": { "cpu_usage_seconds": { "format": "double", "type": "number" }, "memory_bytes": { "format": "double", "type": "number" }, "namespace": { "type": [ "string", "null" ] }, "node_name": { "type": "string" }, "pod_name": { "type": [ "string", "null" ] }, "pod_uid": { "type": "string" } }, "required": [ "pod_uid", "node_name", "cpu_usage_seconds", "memory_bytes" ], "type": "object" }, "TotalCountResponse": { "properties": { "total_count": { "format": "int64", "type": "integer" } }, "required": [ "total_count" ], "type": "object" }, "UpdateArtifact": { "properties": { "restore_count_increment": { "description": "Bumps the stored restore_count. Kept for compatibility; do not build on it. No\ncaller sends it, and observed_restores replaces it.", "type": [ "boolean", "null" ] }, "status": { "type": [ "string", "null" ] } }, "type": "object" }, "UpdateCheckpointRequest": { "description": "What the controller reports back about a request it picked up.", "properties": { "artifact_id": { "type": [ "string", "null" ] }, "error": { "type": [ "string", "null" ] }, "request_id": { "description": "Correlates this report to the request it describes, so a late report from a\nsuperseded attempt cannot overwrite the current outcome.", "format": "uuid", "type": "string" }, "status": { "description": "running when the dump starts, then succeeded or failed.", "type": "string" } }, "required": [ "request_id", "status" ], "type": "object" }, "UpdateMaintenanceWindow": { "properties": { "end_time": { "format": "date-time", "type": [ "string", "null" ] }, "nodes": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "partitions": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "reason": { "type": [ "string", "null" ] }, "start_time": { "format": "date-time", "type": [ "string", "null" ] }, "status": { "type": [ "string", "null" ] } }, "type": "object" }, "UploadUrlsResponse": { "properties": { "latest_upload_url": { "type": "string" }, "version_upload_url": { "type": "string" } }, "required": [ "version_upload_url", "latest_upload_url" ], "type": "object" }, "UpsertInstanceTypePricingRequest": { "description": "Request to create or update instance type pricing", "properties": { "capacity_type": { "description": "\"spot\" or \"on-demand\"", "type": "string" }, "instance_type": { "type": "string" }, "ondemand_price_per_hour": { "description": "Hourly cost when running as on-demand", "format": "double", "type": [ "number", "null" ] }, "spot_price_per_hour": { "description": "Hourly cost when running as spot", "format": "double", "type": [ "number", "null" ] } }, "required": [ "instance_type", "capacity_type" ], "type": "object" }, "UpsertRoute": { "properties": { "classifier_profile_id": { "type": [ "string", "null" ] }, "classifier_prompt": { "type": [ "string", "null" ] }, "classifier_response_schema": { "type": [ "string", "null" ] }, "logical_model": { "type": "string" }, "mode": { "type": "string" }, "queue_timeout_ms": { "format": "int64", "type": "integer" }, "targets": { "items": { "$ref": "#/components/schemas/UpsertTarget" }, "type": "array" } }, "required": [ "logical_model", "targets" ], "type": "object" }, "UpsertTarget": { "properties": { "priority": { "format": "int32", "type": "integer" }, "profile_id": { "type": "string" }, "tier": { "type": "string" } }, "required": [ "profile_id", "tier", "priority" ], "type": "object" }, "UsageBucket": { "properties": { "avg_backend_ms": { "format": "double", "type": [ "number", "null" ] }, "avg_routing_ms": { "format": "double", "type": [ "number", "null" ] }, "avg_ttft_ms": { "format": "double", "type": [ "number", "null" ] }, "bucket": { "format": "date-time", "type": "string" }, "cold_start_avoided_ms": { "format": "int64", "type": "integer" }, "completion_tokens": { "format": "int64", "type": "integer" }, "deadline_misses": { "format": "int64", "type": "integer" }, "fallbacks": { "format": "int64", "type": "integer" }, "prompt_tokens": { "format": "int64", "type": "integer" }, "requests": { "format": "int64", "type": "integer" }, "successes": { "format": "int64", "type": "integer" } }, "required": [ "bucket", "requests", "fallbacks", "successes", "deadline_misses", "prompt_tokens", "completion_tokens", "cold_start_avoided_ms" ], "type": "object" }, "VolumeMapping": { "properties": { "container_path": { "type": "string" }, "host_path": { "type": "string" } }, "required": [ "host_path", "container_path" ], "type": "object" }, "VolumeMount": { "properties": { "auto": { "type": [ "boolean", "null" ] } }, "type": "object" }, "WorkerStart": { "description": "One worker start, and whether it restored.", "properties": { "checkpoint_path": { "type": [ "string", "null" ] }, "pod_name": { "type": "string" }, "ready_at": { "format": "date-time", "type": [ "string", "null" ] }, "restored": { "description": "True when this worker was given a checkpoint to restore from.", "type": "boolean" }, "start_time_ms": { "description": "PodScheduled to Ready, in milliseconds.", "format": "int64", "type": "integer" } }, "required": [ "pod_name", "start_time_ms", "restored" ], "type": "object" }, "WorkloadReq": { "properties": { "cluster_id": { "type": "string" }, "cluster_name": { "deprecated": true, "type": [ "string", "null" ] }, "deployment": {}, "job": {}, "pod": {} }, "required": [ "cluster_id" ], "type": "object" } }, "securitySchemes": { "ServiceToken": { "scheme": "bearer", "type": "http" }, "Token": { "scheme": "bearer", "type": "http" } } }, "info": { "description": "", "license": { "name": "" }, "title": "Cedana API", "version": "0.0.0-dev" }, "openapi": "3.1.0", "paths": { "/v1/actions": { "get": { "operationId": "list", "parameters": [ { "in": "query", "name": "type", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "example": "", "schema": { "items": { "$ref": "#/components/schemas/Action" }, "type": "array" } } }, "description": "Returns the actions with status" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed list" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List actions", "tags": [ "Actions" ] } }, "/v1/actions/from_pod/{id}": { "get": { "operationId": "latest_pod_action_id", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "The action_id of the given pod_id has been fetched successfully" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to get action_id for the given pod_id" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from pods_to_actions table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get latest action belonging to a pod", "tags": [ "Actions" ] } }, "/v1/actions/upload": { "post": { "operationId": "upload_podspec", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointStatusWithPodSpec" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "Success", "schema": { "type": "string" } } }, "description": "Success" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to get action_id within the db" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from pods_to_actions table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Upload pod spec", "tags": [ "Actions" ] } }, "/v1/actions/{id}": { "get": { "description": "Returns detailed information about a specific action including associated checkpoint data", "operationId": "get_action", "parameters": [ { "description": "Action UUID", "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionDetails" } } }, "description": "Action details retrieved successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid action ID format" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Action not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get action details by ID", "tags": [ "Actions" ] } }, "/v1/cedana/job/checkpoints": { "get": { "description": "Supports filtering by `ids` and/or `jids` (comma-separated lists)", "operationId": "list_checkpoints", "parameters": [ { "description": "Comma-separated list of checkpoint UUIDs to filter by", "in": "query", "name": "ids", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Comma-separated list of job IDs to filter by", "in": "query", "name": "jids", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CedanaJobCheckpoint" }, "type": "array" } } }, "description": "Returns checkpoints" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List checkpoints for Cedana jobs", "tags": [ "Jobs" ] } }, "/v1/cedana/job/checkpoints/{id}": { "delete": { "operationId": "delete_checkpoint", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Checkpoint deleted successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to delete checkpoint" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete a checkpoint for a Cedana job", "tags": [ "Jobs" ] }, "put": { "operationId": "put_checkpoint", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CedanaJobCheckpoint" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Checkpoint created or updated successfully, returns the generated checkpoint ID" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request payload" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update a checkpoint for a Cedana job", "tags": [ "Jobs" ] } }, "/v1/cedana/jobs": { "get": { "description": "Use query params to filter jobs. Supports filtering by `jids` or `host_ids` (comma-separated lists)", "operationId": "list", "parameters": [ { "description": "Comma-separated list of job IDs to filter by", "in": "query", "name": "jids", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Comma-separated list of host IDs to filter by", "in": "query", "name": "host_ids", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Job" }, "type": "array" } } }, "description": "Returns jobs" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List jobs", "tags": [ "Jobs" ] } }, "/v1/cedana/jobs/{jid}": { "delete": { "operationId": "delete", "parameters": [ { "in": "path", "name": "jid", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Job deleted successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete a job", "tags": [ "Jobs" ] }, "put": { "operationId": "put", "parameters": [ { "in": "path", "name": "jid", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Job" } } }, "required": true }, "responses": { "200": { "description": "Job created or updated successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request payload" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update a job", "tags": [ "Jobs" ] } }, "/v1/checkpoint/path": { "get": { "description": "Returns the path of the latest successful checkpoint for a given checkpoint name", "operationId": "get_latest_checkpoint_for_container_in_action", "parameters": [ { "in": "query", "name": "name", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Returns the restore path" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to get action for request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get path of latest checkpoint", "tags": [ "Actions" ] } }, "/v1/checkpoint/pod": { "post": { "operationId": "checkpoint_pod", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointPod" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Returns the ID for the task" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request parameters" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to find checkpointable resource" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to create checkpoint or connect to eventstream" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Checkpoint pod", "tags": [ "Actions" ] } }, "/v1/checkpoint/status/{action_id}": { "get": { "description": "Returns the current status of a checkpoint action", "operationId": "get_checkpoint_status", "parameters": [ { "in": "path", "name": "action_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } }, "description": "Returns the current status of the checkpoint operation" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Action ID not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to retrieve status from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get status of checkpoint action", "tags": [ "Actions" ] } }, "/v1/checkpoints": { "get": { "description": "Use query params to filter checkpoints. Supports filtering by `ids` (comma-separated UUIDs for single or multiple checkpoints)", "operationId": "list", "parameters": [ { "description": "Comma-separated list of checkpoint UUIDs to filter by", "in": "query", "name": "ids", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Checkpoint" }, "type": "array" } } }, "description": "Returns checkpoints" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List checkpoints", "tags": [ "Checkpoints" ] }, "post": { "description": "Builds a new checkpoint without the metadata and information about the checkpoint with status initializing", "operationId": "add", "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Returns the checkpoint ID for the new checkpoint" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to create checkpoint in database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create checkpoint", "tags": [ "Checkpoints" ] } }, "/v1/checkpoints/deprecate/{id}": { "patch": { "description": "Marks checkpoint as deprecated, so that they can be removed on next internal state cleanup", "operationId": "deprecate", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Successfully deprecated checkpoint and returns id" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID provided" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Deprecate checkpoint", "tags": [ "Checkpoints" ] } }, "/v1/checkpoints/info/{id}": { "put": { "description": "Add information about the checkpoint", "operationId": "update_info", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointInfo" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Successfully updated checkpoint info and returns ID" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Put checkpoint info", "tags": [ "Checkpoints" ] } }, "/v1/checkpoints/uploaded/{id}": { "post": { "description": "Marks checkpoint as successfully uploaded and ready for restore", "operationId": "uploaded", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointSuccessInfo" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Marks the checkpoint as successfully uploaded" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to update checkpoint in database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Uploaded checkpoint", "tags": [ "Checkpoints" ] } }, "/v1/cluster": { "get": { "description": "Returns all clusters. Optional `?kind=kubernetes|slurm` filter.", "operationId": "list", "parameters": [ { "description": "Filter by cluster kind: \"kubernetes\" or \"slurm\"", "in": "query", "name": "kind", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Cluster" }, "type": "array" } } }, "description": "Returns a list of clusters" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid kind filter" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch clusters from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List clusters", "tags": [ "Clusters" ] }, "post": { "description": "Creates or updates info regarding a Kubernetes cluster", "operationId": "create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateClusterRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Returns the cluster id for the newly created or updated cluster" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request or missing cluster name" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to create cluster in database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create cluster", "tags": [ "Clusters" ] } }, "/v1/cluster/count": { "get": { "operationId": "clusters_count", "parameters": [ { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TotalCountResponse" } } }, "description": "Total count retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get clusters total count", "tags": [ "Resources" ] } }, "/v1/cluster/sync": { "post": { "description": "Syncs cluster resources such as pods, jobs, and nodes", "operationId": "sync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Resource id registered internally" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Cluster or node not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to sync resource to database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Sync cluster", "tags": [ "Clusters" ] } }, "/v1/cluster/workload": { "post": { "description": "Takes a cluster name and workload specification, then creates a Kubernetes job\non the specified cluster", "operationId": "create_workload", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadReq" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Added workload to queue" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Error parsing body" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Create workload", "tags": [ "Clusters" ] } }, "/v1/cluster/{id}": { "delete": { "description": "This endpoint deletes a cluster and all its dependent entities in a single transaction\nwhich is rolled back if any part of the deletion fails", "operationId": "delete", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "description": "Delete the given cluster, and return Status OK" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Cluster not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to delete cluster from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete cluster", "tags": [ "Clusters" ] } }, "/v1/discover/{name}": { "get": { "operationId": "discovery", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Returns url for the service named" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Service not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch service configuration" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Service discovery", "tags": [ "Service" ] } }, "/v1/download": { "get": { "operationId": "download_cedana", "parameters": [ { "description": "Exact version match, e.g. 0.9.2", "in": "query", "name": "version", "required": false, "schema": { "type": "string" } }, { "description": "Architecture, e.g. amd64", "in": "query", "name": "arch", "required": false, "schema": { "type": "string" } }, { "description": "Build type: alpha|release", "in": "query", "name": "build", "required": false, "schema": { "type": "string" } }, { "description": "set to true to fetch with exact repository name and build name", "in": "query", "name": "exact", "required": false, "schema": { "type": "string" } } ], "responses": { "302": { "description": "Redirects to a presigned S3 URL for the cedana binary" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid key format" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "cedana binary not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to cedana binary from S3" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Download the cedana binary.", "tags": [ "Plugins" ] } }, "/v1/dynamo/checkpoints": { "get": { "description": "Returns checkpoints in the given cluster, optionally filtered by\nCEDANA_CHECKPOINT name. Each entry is a reusable warm-state asset that any\ndeployment with a matching CEDANA_CHECKPOINT env restores from.", "operationId": "list_checkpoints", "parameters": [ { "description": "Cluster to scope checkpoints to.", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Optional CEDANA_CHECKPOINT name to filter by", "in": "query", "name": "name", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/DynamoCheckpointEntry" }, "type": "array" } } }, "description": "Checkpoint library" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List Dynamo checkpoints (the checkpoint library)", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deploy": { "post": { "description": "Publishes a DynamoGraphDeployment manifest to the cluster's RabbitMQ queue.\nThe controller applies it via the dynamic Kubernetes client.", "operationId": "deploy", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamoDeployRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Deployment queued" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Submit Dynamo deployment", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments": { "get": { "description": "Returns all DynamoGraphDeployments synced from the specified cluster.", "operationId": "list_deployments", "parameters": [ { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/DynamoDeploymentView" }, "type": "array" } } }, "description": "List of Dynamo deployments" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List Dynamo deployments", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}": { "delete": { "description": "Publishes a delete event for the DynamoGraphDeployment and removes the DB record.", "operationId": "delete_deployment", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Deletion queued" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "cluster_id required" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete Dynamo deployment", "tags": [ "Dynamo" ] }, "get": { "description": "Returns a single DynamoGraphDeployment by name.", "operationId": "get_deployment", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamoDeploymentView" } } }, "description": "Dynamo deployment" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get Dynamo deployment", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}/checkpoint": { "post": { "description": "Worker pods resolved by exact Dynamo label match, not `pod_name.startsWith` —\nthe prefix heuristic could hit a different DGD sharing a name prefix in the\nsame namespace (e.g. `vllm-agg` vs `vllm-agg-cedana`).", "operationId": "checkpoint_deployment", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamoCheckpointResult" } } }, "description": "Checkpoints issued" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No live worker pods found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Checkpoint every live worker pod of a DynamoGraphDeployment.", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}/checkpoints": { "get": { "description": "Returns a summary of checkpoints taken for all worker pods belonging to the deployment.\nMatches pods whose name starts with the deployment name.", "operationId": "deployment_checkpoints", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamoCheckpointSummary" } } }, "description": "Checkpoint summary" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get checkpoint summary for a Dynamo deployment", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}/metrics": { "get": { "operationId": "get_deployment_metrics", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "cluster_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Relative window in hours (default 1, max 720 = metrics TTL). Ignored when\n`from_ms`/`to_ms` are set. Anchored to the LATEST datapoint (not now()) so\na deleted deployment still returns its historical data.", "in": "query", "name": "hours", "required": false, "schema": { "format": "int32", "minimum": 0, "type": [ "integer", "null" ] } }, { "description": "Optional absolute range start (Unix ms). If set with `to_ms`, overrides `hours`.", "in": "query", "name": "from_ms", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Optional absolute range end (Unix ms). If set with `from_ms`, overrides `hours`.", "in": "query", "name": "to_ms", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/DynamoMetricPoint" }, "type": "array" } } }, "description": "Time series per metric" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Query Dynamo inference metrics for a deployment.", "tags": [ "Dynamo" ] }, "post": { "operationId": "ingest_deployment_metrics", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamoMetricsIngestRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Metrics stored" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Ingest a batch of Dynamo inference metrics from the watcher.", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}/pod-startup-times": { "get": { "description": "Returns one row per worker pod with the time it took to reach Ready, and whether\nCedana restored it from a checkpoint (cedana_restore=true) or it cold-started.", "operationId": "pod_startup_times", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PodStartupTime" }, "type": "array" } } }, "description": "Per-pod startup times" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get per-pod startup times for a Dynamo deployment's workers.", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}/scrape": { "post": { "description": "Called by the dynamo-watcher after querying /v1/models on the deployment's\nfrontend endpoint. Overwrites model and backend with ground-truth values.", "operationId": "scrape_deployment", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamoScrapeRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Updated" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Update model/backend from live scrape", "tags": [ "Dynamo" ] } }, "/v1/dynamo/deployments/{name}/startup-comparison": { "get": { "operationId": "startup_comparison", "parameters": [ { "description": "DGD name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "UUID of the cluster to filter by", "in": "query", "name": "cluster_id", "required": true, "schema": { "format": "uuid", "type": "string" } }, { "description": "Kubernetes namespace", "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StartupComparison" } } }, "description": "Cold versus restore latency distribution" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Compare recent cold-start and Cedana-restore startup latency.", "tags": [ "Dynamo" ] } }, "/v1/events": { "get": { "operationId": "list_events", "parameters": [ { "description": "Time window in seconds (default: 3600)", "in": "query", "name": "time", "required": false, "schema": { "format": "int32", "type": "integer" } }, { "description": "Time window in hours; takes precedence over `time`", "in": "query", "name": "hrs", "required": false, "schema": { "format": "int32", "type": [ "integer", "null" ] } }, { "description": "Filter by operation: checkpoint or restore", "in": "query", "name": "operation", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Filter by workload: kubernetes or slurm", "in": "query", "name": "workload", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventsResponse" } } }, "description": "Recent operation results" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "ClickHouse unavailable" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Recent checkpoint and restore results, newest first (the UI notification feed)", "tags": [ "Events" ] } }, "/v1/files/dir/{path}": { "get": { "operationId": "read_dir", "parameters": [ { "in": "path", "name": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": [ "file1.txt", "file2.txt", "subdir/" ], "schema": { "items": { "type": "string" }, "type": "array" } } }, "description": "Returns the list of files in the directory" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to list directory contents" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Read directory contents", "tags": [ "Files" ] } }, "/v1/files/{path}": { "get": { "operationId": "get_file", "parameters": [ { "in": "path", "name": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "example": "https://storage.googleapis.com/bucket/file.tar.gz?signature=...", "schema": { "type": "string" } } }, "description": "Returns the URL to download the file from" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to generate download URL" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Download file", "tags": [ "Files" ] }, "put": { "operationId": "push_files", "parameters": [ { "in": "path", "name": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "example": "https://storage.googleapis.com/bucket/file.tar.gz?signature=...", "schema": { "type": "string" } } }, "description": "Returns the URL to upload the file to" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to generate upload URL" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Upload file", "tags": [ "Files" ] } }, "/v1/hosts": { "get": { "description": "Use query params to filter hosts. Supports filtering by `ids` (comma-separated strings for single or multiple hosts)", "operationId": "list", "parameters": [ { "description": "Comma-separated list of host IDs to filter by", "in": "query", "name": "ids", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Host" }, "type": "array" } } }, "description": "Returns hosts" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List hosts", "tags": [ "Hosts" ] } }, "/v1/hosts/{id}": { "delete": { "operationId": "delete", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Host deleted successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete a host", "tags": [ "Hosts" ] }, "put": { "operationId": "put", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Host" } } }, "required": true }, "responses": { "200": { "description": "Host created or updated successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request payload" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update a host", "tags": [ "Hosts" ] } }, "/v1/inference/activations": { "get": { "operationId": "list_activations", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ModelActivationView" }, "type": "array" } } }, "description": "Activations joined with profiles" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List activations joined with profiles", "tags": [ "inference" ] } }, "/v1/inference/activations/report": { "post": { "operationId": "report_activation", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActivationReport" } } }, "required": true }, "responses": { "204": { "description": "Activation recorded" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Report activation state from the controller", "tags": [ "inference" ] } }, "/v1/inference/analytics": { "get": { "operationId": "analytics", "parameters": [ { "in": "query", "name": "profile_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "experiment_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceAnalytics" } } }, "description": "Startup/storage/serving aggregate" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Startup, serving, and storage aggregate", "tags": [ "inference" ] } }, "/v1/inference/artifacts": { "get": { "operationId": "list_artifacts", "parameters": [ { "in": "query", "name": "profile_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "mode", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CheckpointArtifactView" }, "type": "array" } } }, "description": "Checkpoint artefacts" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List checkpoint artefacts", "tags": [ "inference" ] }, "post": { "operationId": "register_artifact", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegisterArtifact" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointArtifactView" } } }, "description": "Existing artefact (idempotent)" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointArtifactView" } } }, "description": "Artefact registered" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Register a checkpoint artefact", "tags": [ "inference" ] } }, "/v1/inference/artifacts/{artifact_id}": { "delete": { "operationId": "delete_artifact", "parameters": [ { "in": "query", "name": "force", "required": false, "schema": { "type": [ "boolean", "null" ] } }, { "in": "path", "name": "artifact_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Artefact soft-deleted" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Golden artefact requires force" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Soft-delete an artefact (golden requires force)", "tags": [ "inference" ] }, "get": { "operationId": "get_artifact", "parameters": [ { "in": "path", "name": "artifact_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointArtifactView" } } }, "description": "Artefact detail" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get a checkpoint artefact", "tags": [ "inference" ] }, "patch": { "operationId": "update_artifact", "parameters": [ { "in": "path", "name": "artifact_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateArtifact" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointArtifactView" } } }, "description": "Artefact updated" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Update artefact status / restore count", "tags": [ "inference" ] } }, "/v1/inference/artifacts/{artifact_id}/ancestry": { "get": { "operationId": "artifact_ancestry", "parameters": [ { "in": "path", "name": "artifact_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CheckpointArtifactView" }, "type": "array" } } }, "description": "Parent chain oldest-first" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get the artefact parent chain", "tags": [ "inference" ] } }, "/v1/inference/artifacts/{artifact_id}/promote": { "post": { "operationId": "promote_artifact", "parameters": [ { "in": "path", "name": "artifact_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PromoteArtifact" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointArtifactView" } } }, "description": "Artefact promoted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Promote an artefact to a hotter tier", "tags": [ "inference" ] } }, "/v1/inference/capacity-intents": { "get": { "operationId": "list_capacity_intents", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CapacityIntent" }, "type": "array" } } }, "description": "Latest capacity intent per profile" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List the latest capacity intent per profile. One per profile, newest first by\nupdate, whatever its status, so a caller can show what was last asked for.", "tags": [ "inference" ] } }, "/v1/inference/chat/completions": { "post": { "operationId": "chat_completions", "requestBody": { "content": { "application/json": { "schema": {} } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Chat completion (streaming or not)" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid API key" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Model not allowed" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Unknown model alias" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Rate limit or budget" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No profile can meet deadline" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "OpenAI-compatible chat with routing. Switchyard owns the external surface and\ndoes its own selection, so this is a simpler duplicate kept for existing callers.", "tags": [ "inference" ] } }, "/v1/inference/correlation": { "get": { "operationId": "correlation", "parameters": [ { "in": "query", "name": "experiment_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CorrelationView" } } }, "description": "Experiment correlation" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Experiment not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Per-experiment correlation view", "tags": [ "inference" ] } }, "/v1/inference/costs/breakdown": { "get": { "operationId": "cost_breakdown", "parameters": [ { "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "in": "query", "name": "profile_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "experiment_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CostBreakdownRow" }, "type": "array" } } }, "description": "Per-profile cost breakdown" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Per-profile cost breakdown", "tags": [ "inference" ] } }, "/v1/inference/costs/config": { "get": { "operationId": "list_cost_config", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CostConfig" }, "type": "array" } } }, "description": "Cost rates" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List cost rates", "tags": [ "inference" ] }, "post": { "operationId": "upsert_cost_config", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CostConfigUpsert" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CostConfig" } } }, "description": "Cost rates saved" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Profile not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Set cost rates for a profile", "tags": [ "inference" ] } }, "/v1/inference/costs/report": { "get": { "operationId": "cost_report", "parameters": [ { "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "in": "query", "name": "profile_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "experiment_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CostReport" } } }, "description": "Baseline vs treatment report" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Baseline vs treatment savings report", "tags": [ "inference" ] } }, "/v1/inference/experiments": { "get": { "operationId": "list_experiments", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ExperimentSummary" }, "type": "array" } } }, "description": "Experiments with observation counts" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List experiments", "tags": [ "inference" ] }, "post": { "operationId": "create_experiment", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateExperiment" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Experiment" } } }, "description": "Experiment created" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create a load-test experiment", "tags": [ "inference" ] } }, "/v1/inference/experiments/{id}": { "get": { "operationId": "get_experiment", "parameters": [ { "description": "Experiment ID", "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Experiment" } } }, "description": "Experiment" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Experiment not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get an experiment's desired lifecycle state. Controllers use this after an\noutbox wake-up rather than trusting a replayed event payload.", "tags": [ "inference" ] } }, "/v1/inference/experiments/{id}/complete": { "post": { "operationId": "complete_experiment", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CompleteExperiment" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Experiment" } } }, "description": "Experiment updated" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Running experiment not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Complete/cancel a running experiment", "tags": [ "inference" ] } }, "/v1/inference/fleets": { "get": { "operationId": "list_fleets", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Fleet" }, "type": "array" } } }, "description": "Fleets" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List fleets", "tags": [ "inference" ] }, "post": { "operationId": "create_fleet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FleetUpsert" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Fleet" } } }, "description": "Fleet saved" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update a fleet", "tags": [ "inference" ] } }, "/v1/inference/fleets/{fleet_id}": { "delete": { "operationId": "delete_fleet", "parameters": [ { "in": "path", "name": "fleet_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Fleet deleted" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Profile still routed" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete a fleet", "tags": [ "inference" ] }, "get": { "operationId": "get_fleet", "parameters": [ { "in": "path", "name": "fleet_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Fleet" } } }, "description": "Fleet detail" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get a fleet", "tags": [ "inference" ] } }, "/v1/inference/keys": { "get": { "operationId": "list_inference_keys", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/InferenceKeyView" }, "type": "array" } } }, "description": "Issued keys" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List issued inference keys", "tags": [ "inference" ] }, "post": { "operationId": "create_inference_key", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInferenceKey" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatedInferenceKey" } } }, "description": "Key issued (raw shown once)" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Issue a scoped inference API key", "tags": [ "inference" ] } }, "/v1/inference/keys/{key_id}": { "delete": { "operationId": "delete_inference_key", "parameters": [ { "in": "path", "name": "key_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Key revoked" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Revoke an inference API key", "tags": [ "inference" ] } }, "/v1/inference/lifecycle-events": { "get": { "operationId": "list_lifecycle_events", "parameters": [ { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "description": "Only events at or after this instant, so a poller can page forward.", "in": "query", "name": "since", "required": false, "schema": { "format": "date-time", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/LifecycleEventView" }, "type": "array" } } }, "description": "Lifecycle events across all profiles" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "The cluster's recent lifecycle events across all profiles, time-ascending, so a\nUI can replay how the routing topology changed over time.", "tags": [ "inference" ] }, "post": { "description": "Documented at /inference/lifecycle-events (same collection as the GET) so\ngenerated SDKs get a single builder with both methods; the legacy\n/inference/lifecycle/events path collides with it under kiota's name\nsanitization, dropping the POST from the SDK. The legacy path stays\nregistered as an undocumented alias in api.rs for older clients.", "operationId": "ingest_lifecycle_event", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LifecycleEnvelope" } } }, "required": true }, "responses": { "204": { "description": "Lifecycle event accepted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid envelope (schema version or kind)" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Unauthorized" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Duplicate event_id" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Ingest one trusted lifecycle envelope over HTTP. Same event_id dedupe and\ntransactional ingestion as the RabbitMQ path.", "tags": [ "inference" ] } }, "/v1/inference/metrics": { "get": { "operationId": "metrics", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsSummary" } } }, "description": "Routing metrics summary" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid API key" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Routing metrics summary", "tags": [ "inference" ] } }, "/v1/inference/models": { "get": { "operationId": "models", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "OpenAI models list" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid API key" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "OpenAI-compatible model aliases", "tags": [ "inference" ] } }, "/v1/inference/observations": { "get": { "operationId": "list_observations", "parameters": [ { "in": "query", "name": "profile_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "experiment_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "in": "query", "name": "event_type", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ObservationView" }, "type": "array" } } }, "description": "Recent observations" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List recent observations", "tags": [ "inference" ] }, "post": { "operationId": "create_observation", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateObservation" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Observation" } } }, "description": "Observation recorded" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Record an observation", "tags": [ "inference" ] } }, "/v1/inference/outbox": { "get": { "operationId": "outbox", "parameters": [ { "in": "query", "name": "consumer_id", "required": true, "schema": { "type": "string" } }, { "in": "query", "name": "after", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/OutboxEvent" }, "type": "array" } } }, "description": "Outbox events after cursor" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Read durable outbox events", "tags": [ "inference" ] } }, "/v1/inference/outbox/ack": { "post": { "operationId": "ack_outbox", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AckOutbox" } } }, "required": true }, "responses": { "204": { "description": "Cursor advanced" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Advance an outbox consumer cursor", "tags": [ "inference" ] } }, "/v1/inference/profiles": { "get": { "operationId": "list_profiles", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/DeploymentProfile" }, "type": "array" } } }, "description": "List of deployment profiles" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List deployment profiles", "tags": [ "inference" ] }, "post": { "operationId": "create_profile", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateProfile" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeploymentProfile" } } }, "description": "Profile created" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint ownership conflict" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create an immutable deployment profile", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/checkpoint": { "get": { "operationId": "get_profile_checkpoint_request", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointRequestView" } } }, "description": "Latest checkpoint request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No checkpoint has been requested" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "The latest checkpoint request for a profile, outstanding or finished", "tags": [ "inference" ] }, "patch": { "operationId": "update_profile_checkpoint_request", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCheckpointRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointRequestView" } } }, "description": "Updated" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Unknown status" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No checkpoint has been requested" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Report progress on a checkpoint request (controller only)", "tags": [ "inference" ] }, "post": { "operationId": "request_profile_checkpoint", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RequestCheckpoint" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointRequestView" } } }, "description": "Checkpoint requested" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Profile not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Profile does not checkpoint" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Ask for a checkpoint of this profile's worker now. Covers the two cases the\nautomatic path refuses: a restored worker, and replacing an existing checkpoint.", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/hosting": { "get": { "operationId": "profile_hosting_plan", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileHostingPlan" } } }, "description": "Hosting plan" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Profile not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Hosting plan for a profile", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/kv-cache": { "get": { "operationId": "profile_kv_cache", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KvCacheState" } } }, "description": "Live cache counters" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No worker endpoint known" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Worker did not answer" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Live prefix-cache counters, read from the worker. The 30s scrape series is too\ncoarse to attribute to one chat turn.", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/progress": { "get": { "operationId": "get_profile_progress", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeploymentProgress" } } }, "description": "Deployment progress" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Unknown profile" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Deployment progress and cold-start timing for a profile", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/restart": { "post": { "operationId": "restart_profile_worker", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointRequestView" } } }, "description": "Restart requested" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Profile not found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Nothing to restore from" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Replace this profile's worker so it restores from its last checkpoint, coming back\nwith the KV cache it had in about a minute rather than eleven.", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/state": { "post": { "operationId": "set_profile_state", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetProfileState" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CapacityIntent" } } }, "description": "Capacity intent accepted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Set a profile Active or Suspended (capacity intent)", "tags": [ "inference" ] } }, "/v1/inference/profiles/{profile_id}/worker-endpoint": { "put": { "operationId": "report_worker_endpoint", "parameters": [ { "in": "path", "name": "profile_id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportWorkerEndpoint" } } }, "required": true }, "responses": { "204": { "description": "Recorded" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Record where a profile's worker publishes its metrics (controller only). The\npropagator can reach the port but cannot find the pod IP itself.", "tags": [ "inference" ] } }, "/v1/inference/retention-policies": { "get": { "operationId": "list_retention_policies", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RetentionPolicy" }, "type": "array" } } }, "description": "Retention policies" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List retention policies", "tags": [ "inference" ] }, "post": { "operationId": "upsert_retention_policy", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetentionPolicyUpsert" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetentionPolicy" } } }, "description": "Policy saved" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update a retention policy", "tags": [ "inference" ] } }, "/v1/inference/retention-policies/{policy_id}": { "delete": { "operationId": "delete_retention_policy", "parameters": [ { "in": "path", "name": "policy_id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "Policy deleted" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete a retention policy", "tags": [ "inference" ] } }, "/v1/inference/router/authorize": { "post": { "operationId": "authorize", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthorizeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthorizeResponse" } } }, "description": "Authorization issued" }, "402": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Key budget exhausted" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Model not allowed for this API key" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Unknown logical model" }, "429": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Rate limit exceeded" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Authenticate with the inbound Cedana inference key and issue an opaque\nauthorization that resolve consumes exactly once.", "tags": [ "Router" ] } }, "/v1/inference/router/config": { "get": { "operationId": "router_config", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RouterConfig" } } }, "description": "Routing snapshot" }, "304": { "description": "Generation unchanged" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Full routing snapshot for Switchyard, service-token-only. Generation is the sum of\nthe route generations; `If-None-Match: \"\"` gets a 304.", "tags": [ "Router" ] } }, "/v1/inference/router/metrics": { "post": { "operationId": "router_metrics", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsBatch" } } }, "required": true }, "responses": { "200": { "description": "Samples ingested" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Accept batched metric samples from Switchyard into ClickHouse,\nservice-token-only.", "tags": [ "Router" ] } }, "/v1/inference/router/resolve": { "post": { "operationId": "resolve", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResolveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResolveResponse" } } }, "description": "Target assigned" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PendingResponse" } } }, "description": "Activation pending" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Authorization already consumed" }, "410": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Authorization expired" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Queue full or activation deadline exceeded" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Assign exactly one target for an authorized request, service-token only. A row lock\nconsumes the authorization once.", "tags": [ "Router" ] } }, "/v1/inference/router/telemetry": { "post": { "operationId": "router_telemetry", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TelemetryRecord" } } }, "required": true }, "responses": { "200": { "description": "Record ingested" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "ServiceToken": [] } ], "summary": "Accept one completed-request record from Switchyard, service-token-only.\nIdempotent by request_id: replays of the same completed record are no-ops.", "tags": [ "Router" ] } }, "/v1/inference/routes": { "get": { "operationId": "list_routes", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RoutePolicy" }, "type": "array" } } }, "description": "List of route policies" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List route policies", "tags": [ "inference" ] }, "post": { "operationId": "upsert_route", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpsertRoute" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoutePolicy" } } }, "description": "Route policy saved" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update a route policy", "tags": [ "inference" ] } }, "/v1/inference/routes/simulate": { "post": { "operationId": "simulate_route", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulateRoute" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulationResult" } } }, "description": "Projected outcomes" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Unknown logical model" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Project routing outcomes for a traffic mix. A step function on p50, and a profile\nwith nothing measured yet falls back to estimates rather than measurements.", "tags": [ "inference" ] } }, "/v1/inference/routes/status": { "get": { "operationId": "route_status", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RouteStatusView" }, "type": "array" } } }, "description": "Route-state snapshot" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Live route-state snapshot per logical model", "tags": [ "inference" ] } }, "/v1/inference/startup-comparison": { "get": { "operationId": "inference_startup_comparison", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ProfileStartupComparison" }, "type": "array" } } }, "description": "Cold versus restore worker startup, per profile" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Cold start against restore, per profile. Measured from the workers that ran, not\nestimated.", "tags": [ "inference" ] } }, "/v1/inference/storage/summary": { "get": { "operationId": "storage_summary", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageSummary" } } }, "description": "Per-tier storage totals" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Per-tier storage summary", "tags": [ "inference" ] } }, "/v1/inference/usage/series": { "get": { "operationId": "usage_series", "parameters": [ { "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "in": "query", "name": "bucket", "required": false, "schema": { "type": "string" } }, { "in": "query", "name": "profile_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "experiment_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/UsageBucket" }, "type": "array" } } }, "description": "Bucketed usage" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Bad request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Bucketed usage time series", "tags": [ "inference" ] } }, "/v1/install": { "get": { "operationId": "download_install_script", "parameters": [ { "description": "Exact version match, e.g. 0.9.2", "in": "query", "name": "version", "required": false, "schema": { "type": "string" } }, { "description": "Architecture, e.g. amd64", "in": "query", "name": "arch", "required": false, "schema": { "type": "string" } }, { "description": "Build type: alpha|release", "in": "query", "name": "build", "required": false, "schema": { "type": "string" } }, { "description": "set to true to fetch with exact repository name and build name", "in": "query", "name": "exact", "required": false, "schema": { "type": "string" } } ], "responses": { "302": { "description": "Redirects to a presigned S3 URL for install-release.sh" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid key format" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "cedana install-release.sh not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to install-release.sh from cedana repository" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Download install-release.sh from cedana.", "tags": [ "Plugins" ] } }, "/v1/install/slurm": { "get": { "operationId": "download_slurm_install_script", "parameters": [ { "description": "Exact version match, e.g. 0.9.2", "in": "query", "name": "version", "required": false, "schema": { "type": "string" } }, { "description": "Architecture, e.g. amd64", "in": "query", "name": "arch", "required": false, "schema": { "type": "string" } }, { "description": "Build type: alpha|release", "in": "query", "name": "build", "required": false, "schema": { "type": "string" } }, { "description": "set to true to fetch with exact repository name and build name", "in": "query", "name": "exact", "required": false, "schema": { "type": "string" } } ], "responses": { "302": { "description": "Redirects to a presigned S3 URL for cedana-slurm install-release.sh" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid key format" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "cedana-slurm install-release.sh not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to install-release.sh from cedana-slurm repository" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Download install-release.sh from cedana-slurm.", "tags": [ "Plugins" ] } }, "/v1/instances": { "get": { "operationId": "list_instances", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/InstanceInfo" }, "type": "array" } } }, "description": "List of instances" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "List instances", "tags": [ "Cloud Bursting" ] }, "post": { "operationId": "create_instance", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInstanceRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInstanceResponse" } } }, "description": "Instance created successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create instance", "tags": [ "Cloud Bursting" ] } }, "/v1/instances/bursting-status": { "get": { "operationId": "get_bursting_status", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BurstingStatus" } } }, "description": "Bursting configuration status" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Get configuration status", "tags": [ "Cloud Bursting" ] } }, "/v1/instances/types": { "get": { "operationId": "get_instance_types", "parameters": [ { "description": "Filter by number of GPUs", "in": "query", "name": "num_gpus", "required": false, "schema": { "format": "int32", "type": "integer" } }, { "description": "Filter by GPU type", "in": "query", "name": "gpu_type", "required": false, "schema": { "type": "string" } }, { "description": "Sort results (e.g., 'price')", "in": "query", "name": "sort", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/InstanceType" }, "type": "array" } } }, "description": "Available instance types" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Get available instance types", "tags": [ "Cloud Bursting" ] } }, "/v1/instances/{instance_id}": { "delete": { "operationId": "delete_instance", "parameters": [ { "description": "Instance ID to delete", "in": "path", "name": "instance_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Instance deleted successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to delete instance" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete instance", "tags": [ "Cloud Bursting" ] } }, "/v1/instances/{instance_id}/status": { "get": { "operationId": "get_instance_status", "parameters": [ { "description": "Instance ID", "in": "path", "name": "instance_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceStatus" } } }, "description": "Instance status" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Instance not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to get status" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get instance status", "tags": [ "Cloud Bursting" ] } }, "/v1/jobs": { "get": { "operationId": "job_list", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/JobResponse" }, "type": "array" } } }, "description": "Returns jobs" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List jobs", "tags": [ "Resources" ] } }, "/v1/jobs/by-priority/{priority}": { "get": { "operationId": "jobs_by_priority", "parameters": [ { "description": "Priority value to filter jobs by", "in": "path", "name": "priority", "required": true, "schema": { "format": "int32", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedJobResponse" } } }, "description": "List of jobs filtered by priority" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "tags": [ "Resources" ] } }, "/v1/jobs/count": { "get": { "operationId": "jobs_count", "parameters": [ { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TotalCountResponse" } } }, "description": "Total count retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get total count of jobs", "tags": [ "Resources" ] } }, "/v1/jobs/filter": { "get": { "operationId": "jobs_filter", "parameters": [ { "in": "query", "name": "priority", "required": false, "schema": { "format": "int32", "type": [ "integer", "null" ] } }, { "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FilteredJobResponse" } } }, "description": "List of jobs with applied filters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "tags": [ "Resources" ] } }, "/v1/jobs/namespaces": { "get": { "operationId": "job_namespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NamespacesResponse" } } }, "description": "Available namespaces retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get job namespaces", "tags": [ "Resources" ] } }, "/v1/jobs/paginated": { "get": { "operationId": "job_list_paginated", "parameters": [ { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "in": "query", "name": "sort", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "ascending", "required": false, "schema": { "type": [ "boolean", "null" ] } }, { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "job name to query against (uses postgres ILIKE pattern search)", "in": "query", "name": "job_name", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedJobResponse" } } }, "description": "Returns paginated jobs with total count and available filters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List jobs (paginated)", "tags": [ "Resources" ] } }, "/v1/jobs/priorities": { "get": { "operationId": "job_priorities", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobPrioritiesResponse" } } }, "description": "Job priorities retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Get available job priorities with counts", "tags": [ "Resources" ] } }, "/v1/jobs/statuses": { "get": { "operationId": "job_statuses", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusesResponse" } } }, "description": "Available statuses retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get job statuses", "tags": [ "Resources" ] } }, "/v1/jobs/{job_id}/pods": { "get": { "operationId": "job_pods", "parameters": [ { "description": "Job ID to get pods for", "in": "path", "name": "job_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobPodsResponse" } } }, "description": "List of pods managed by the job" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Job not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "tags": [ "Resources" ] } }, "/v1/metrics/checkpoint-cpu": { "get": { "operationId": "get_checkpoint_cpu", "parameters": [ { "description": "Time window in hours (default: 24, max: 168 = 7 days)", "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PodCheckpointCpu" }, "type": "array" } } }, "description": "Returns per-pod checkpoint CPU data" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get checkpoint CPU data for efficiency calculations\nReturns the CPU usage at checkpoint time for each protected pod,\nallowing the frontend to calculate actual preservation ratios.", "tags": [ "Metrics" ] } }, "/v1/metrics/checkpoint-savings": { "get": { "operationId": "list_checkpoint_savings", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PodCheckpointSavings" }, "type": "array" } } }, "description": "Returns checkpoint savings data per pod" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List checkpoint savings per pod", "tags": [ "Metrics" ] } }, "/v1/metrics/checkpoint-savings/estimate": { "get": { "operationId": "get_cost_savings_estimate", "parameters": [ { "description": "Hourly compute cost rate (e.g., 10.50 for $10.50/hour)", "in": "query", "name": "hourly_rate", "required": true, "schema": { "format": "double", "type": "number" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CostSavingsEstimate" } } }, "description": "Returns cost savings estimate" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid hourly rate" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Calculate cost savings estimate with user-provided hourly rate", "tags": [ "Metrics" ] } }, "/v1/metrics/checkpoint-savings/summary": { "get": { "operationId": "get_checkpoint_savings_summary", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrgCheckpointSavings" } } }, "description": "Returns organization-level savings summary" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get organization-level checkpoint savings summary", "tags": [ "Metrics" ] } }, "/v1/metrics/export": { "get": { "operationId": "export", "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Prometheus text exposition (version 0.0.4)" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "ClickHouse unavailable or query timed out" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Prometheus exposition of checkpoint and restore metrics", "tags": [ "Metrics" ] } }, "/v1/metrics/gpu": { "get": { "operationId": "get_gpu_metrics", "parameters": [ { "description": "Filter by node name", "in": "query", "name": "node_name", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Time window in hours (default: 1, max: 24)", "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/NodeGpuMetrics" }, "type": "array" } } }, "description": "Returns GPU metrics grouped by node" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch GPU metrics" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get GPU metrics grouped by node", "tags": [ "Metrics" ] } }, "/v1/metrics/gpu/timeseries": { "get": { "operationId": "get_gpu_time_series", "parameters": [ { "description": "GPU UUID to get time-series for", "in": "query", "name": "gpu_uuid", "required": true, "schema": { "type": "string" } }, { "description": "Time window in minutes (default: 60, max: 1440)", "in": "query", "name": "minutes", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GpuTimeSeries" } } }, "description": "Returns GPU time-series data" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch GPU time-series" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get GPU time-series data for a specific GPU", "tags": [ "Metrics" ] } }, "/v1/metrics/k8": { "get": { "operationId": "get_k8_metrics", "parameters": [ { "in": "query", "name": "name", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "collector_type", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/NodeResourceMetricList" }, "type": "array" } } }, "description": "Returns k8 metrics" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch metrics" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get metrics (K8s)", "tags": [ "Metrics" ] } }, "/v1/metrics/operations/summary": { "get": { "operationId": "operations_summary", "parameters": [ { "description": "Window in seconds (default 604800, max 90 days)", "in": "query", "name": "time", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "kubernetes | slurm", "in": "query", "name": "workload", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "checkpoint | restore", "in": "query", "name": "operation", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperationsSummary" } } }, "description": "Counts, percentiles, histograms, stages, failures and a timeline for the window" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "ClickHouse unavailable or query timed out" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Windowed operation aggregates for dashboards", "tags": [ "Metrics" ] } }, "/v1/metrics/pods": { "get": { "operationId": "get_pod_utilization", "parameters": [ { "description": "Filter by pod UID", "in": "query", "name": "pod_uid", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Filter by node name", "in": "query", "name": "node_name", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Limit results (default: 100, max: 1000)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Time window in hours (default: 1, max: 168 = 7 days)", "in": "query", "name": "hours", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PodUtilization" }, "type": "array" } } }, "description": "Returns pod utilization metrics" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch pod metrics" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get pod utilization metrics", "tags": [ "Metrics" ] } }, "/v1/metrics/pods/top/cpu": { "get": { "operationId": "get_top_pods_by_cpu", "parameters": [ { "description": "Number of pods to return (default: 10, max: 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TopPod" }, "type": "array" } } }, "description": "Returns top pods by CPU" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch top pods" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get top pods by CPU usage", "tags": [ "Metrics" ] } }, "/v1/metrics/pods/top/memory": { "get": { "operationId": "get_top_pods_by_memory", "parameters": [ { "description": "Number of pods to return (default: 10, max: 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TopPod" }, "type": "array" } } }, "description": "Returns top pods by memory" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch top pods" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get top pods by memory usage", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm": { "get": { "operationId": "get_slurm_metrics", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmMetric" }, "type": "array" } } }, "description": "Returns SLURM metrics" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch SLURM metrics" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get metrics (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/overview": { "get": { "operationId": "get_slurm_cluster_overview", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmClusterOverview" } } }, "description": "Returns SLURM cluster overview" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch SLURM cluster overview" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get cluster overview (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/overview/state": { "get": { "operationId": "get_slurm_state_breakdown", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmStateBreakdown" } } }, "description": "Returns state breakdown" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch state breakdown" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get state breakdown (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/partitions": { "get": { "operationId": "get_partition_stats", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PartitionStats" }, "type": "array" } } }, "description": "Returns partition statistics" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch partition statistics" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get partition statistics (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/partitions/nodes": { "get": { "operationId": "get_partition_node_counts", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PartitionNodeCount" }, "type": "array" } } }, "description": "Returns node counts per partition per state" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch partition node counts" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get partition node counts by state (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/partitions/{name}/timeseries": { "get": { "operationId": "get_partition_timeseries", "parameters": [ { "description": "Partition name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PartitionTimeSeries" } } }, "description": "Returns partition time series" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch partition time series" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get partition time series (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/timeseries/cpu-load": { "get": { "operationId": "get_cpu_load_timeseries", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TimeSeriesDataPoint" }, "type": "array" } } }, "description": "Returns CPU load time series" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch CPU load time series" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get CPU load time series (Slurm)", "tags": [ "Metrics" ] } }, "/v1/metrics/slurm/timeseries/memory": { "get": { "operationId": "get_memory_timeseries", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MemoryTimeSeries" } } }, "description": "Returns memory time series" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch memory time series" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get memory time series (Slurm)", "tags": [ "Metrics" ] } }, "/v1/nodes": { "get": { "description": "Will only return nodes from clusters with status 'active' if no params are provided. Also, nodes\nwith last_sync older than 5 minutes are not returned.", "operationId": "node_list", "parameters": [ { "in": "query", "name": "id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/NodeResponse" }, "type": "array" } } }, "description": "Returns nodes" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List nodes", "tags": [ "Resources" ] } }, "/v1/nodes/count": { "get": { "operationId": "nodes_count", "parameters": [ { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TotalCountResponse" } } }, "description": "Total count retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get nodes total count", "tags": [ "Resources" ] } }, "/v1/operations/{id}": { "get": { "operationId": "get_operation", "parameters": [ { "description": "Checkpoint id or restore uuid", "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperationDetail" } } }, "description": "Operation fact, its stages and, for a checkpoint, the restores made from it" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No fact recorded for this id" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "ClickHouse unavailable" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "One checkpoint or restore attempt with its stage breakdown", "tags": [ "Metrics" ] } }, "/v1/otel/credentials": { "get": { "description": "Returns Otel credentials (endpoint and headers) for tracing if available.", "operationId": "get_creds", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OtelCredsResponse" } } }, "description": "Otel credentials retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Credentials not configured on server" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get Otel credentials", "tags": [ "Otel" ] } }, "/v1/plugins": { "get": { "description": "Supports direct query params (`names`, `compatibility`, `arch`, `build`)", "operationId": "list", "parameters": [ { "description": "Comma-separated plugin names, e.g. cedana,runc; each may pin a version with name@version", "in": "query", "name": "names", "required": false, "schema": { "type": "string" } }, { "description": "Exact version match, e.g. 0.9.2", "in": "query", "name": "compatibility", "required": false, "schema": { "type": "string" } }, { "description": "Architecture, e.g. amd64", "in": "query", "name": "arch", "required": false, "schema": { "type": "string" } }, { "description": "Build type: alpha|release", "in": "query", "name": "build", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/Plugin" }, "type": "array" } } }, "description": "Returns matching plugins" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query params" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch plugins from S3" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "List plugins available in S3.", "tags": [ "Plugins" ] } }, "/v1/plugins/download/{binary_name}": { "get": { "operationId": "download", "parameters": [ { "description": "Exact version match, e.g. 0.9.2", "in": "query", "name": "version", "required": false, "schema": { "type": "string" } }, { "description": "Architecture, e.g. amd64", "in": "query", "name": "arch", "required": false, "schema": { "type": "string" } }, { "description": "Build type: alpha|release", "in": "query", "name": "build", "required": false, "schema": { "type": "string" } }, { "description": "set to true to fetch with exact repository name and build name", "in": "query", "name": "exact", "required": false, "schema": { "type": "string" } }, { "in": "path", "name": "binary_name", "required": true, "schema": { "type": "string" } } ], "responses": { "302": { "description": "Redirects to a presigned S3 URL for the plugin binary" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid key format" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Plugin binary not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch plugin from S3" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Download plugin binary/library.", "tags": [ "Plugins" ] } }, "/v1/plugins/upload/{name}": { "post": { "operationId": "upload", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginUploadPayload" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadUrlsResponse" } } }, "description": "Uploaded plugins" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid payload fields" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to upload plugins to S3" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "summary": "Upload binaries/libraries to S3.", "tags": [ "Plugins" ] } }, "/v1/pods": { "get": { "description": "Will not return pods with status 'deleted', and only from clusters with status 'active' and\npods belonging to nodes whose last_sync is within the last 5 minutes.", "operationId": "pod_list", "parameters": [ { "in": "query", "name": "id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PodResponse" }, "type": "array" } } }, "description": "Returns pods" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List pods", "tags": [ "Resources" ] } }, "/v1/pods/count": { "get": { "operationId": "pods_count", "parameters": [ { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TotalCountResponse" } } }, "description": "Total count retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get total count of pods", "tags": [ "Resources" ] } }, "/v1/pods/namespaces": { "get": { "operationId": "pod_namespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NamespacesResponse" } } }, "description": "Returns distinct pod namespaces" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List pod namespaces", "tags": [ "Resources" ] } }, "/v1/pods/paginated": { "get": { "operationId": "pod_list_paginated", "parameters": [ { "in": "query", "name": "id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "in": "query", "name": "sort", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "ascending", "required": false, "schema": { "type": [ "boolean", "null" ] } }, { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "namespace", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "pod name to query against (uses postgres ILIKE pattern search)", "in": "query", "name": "pod_name", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPodResponse" } } }, "description": "Returns paginated pods with total count and available filters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List pods (paginated)", "tags": [ "Resources" ] } }, "/v1/pods/statuses": { "get": { "operationId": "pod_statuses", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusesResponse" } } }, "description": "Returns distinct pod statuses" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List pod statuses", "tags": [ "Resources" ] } }, "/v1/policy/delete": { "delete": { "operationId": "policy_delete", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyDeleteRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Policy deleted successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request body" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Policy not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to delete policy from policy table" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Delete policy", "tags": [ "Policy" ] } }, "/v1/policy/list": { "get": { "operationId": "policy_list", "parameters": [ { "description": "Number of results per page (default 50, max 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Offset for pagination (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Filter to show only policies with this status (e.g., \"active\", \"creating\", \"disabled\").\nIf not provided, defaults to excluding \"disabled\" policies.", "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Filter by resource type (e.g., \"namespace\", \"pods\", \"jobs\")", "in": "query", "name": "resource", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Include automatic restore policies (jobs/pods with CEDANA_CHECKPOINT env var)", "in": "query", "name": "include_automatic", "required": false, "schema": { "type": [ "boolean", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyResponse" } } }, "description": "Policies retrieved successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request body" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to retrieve policies from policy table" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "List policies with pagination", "tags": [ "Policy" ] } }, "/v1/policy/pipeline/create": { "post": { "operationId": "pipeline_policy_create", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelinePolicyRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Policy created successfully" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request body" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to create policy" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Create a policy using the pipeline format (Trigger -> Filter -> Action)", "tags": [ "Policy" ] } }, "/v1/policy/pipeline/list": { "get": { "operationId": "pipeline_policy_list", "parameters": [ { "description": "Number of results per page (default 50, max 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Offset for pagination (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Filter to show only policies with this status (e.g., \"active\", \"creating\", \"disabled\").\nIf not provided, defaults to excluding \"disabled\" policies.", "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Filter by resource type (e.g., \"namespace\", \"pods\", \"jobs\")", "in": "query", "name": "resource", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Include automatic restore policies (jobs/pods with CEDANA_CHECKPOINT env var)", "in": "query", "name": "include_automatic", "required": false, "schema": { "type": [ "boolean", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPipelinePolicyResponse" } } }, "description": "Policies retrieved successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to retrieve policies" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "List all policies with pipeline definitions (paginated)", "tags": [ "Policy" ] } }, "/v1/policy/pipeline/{policy_id}": { "get": { "operationId": "pipeline_policy_get", "parameters": [ { "description": "Policy UUID", "in": "path", "name": "policy_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelinePolicyResponse" } } }, "description": "Policy retrieved successfully" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Policy not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to retrieve policy" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Get a single policy with its pipeline definition", "tags": [ "Policy" ] } }, "/v1/policy/sync-jobs": { "post": { "operationId": "sync_job_policies", "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Job policies synced successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to sync job policies" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Sync job policies manually", "tags": [ "Policy" ] } }, "/v1/policy/{policy_id}/activity": { "get": { "operationId": "policy_activity", "parameters": [ { "description": "Policy ID to get activity for", "in": "path", "name": "policy_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyActivityResponse" } } }, "description": "Policy checkpoint activity" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Policy not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Get checkpoint activity for a policy", "tags": [ "Policy" ] } }, "/v1/policy/{policy_id}/job-status": { "get": { "operationId": "get_job_policy_status", "parameters": [ { "description": "Policy ID to get status for", "in": "path", "name": "policy_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobPolicyStatus" } } }, "description": "Job policy status" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Policy not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Get job policy tracking status", "tags": [ "Policy" ] } }, "/v1/policy/{policy_id}/jobs": { "get": { "operationId": "policy_jobs", "parameters": [ { "description": "Policy ID to get affected jobs for", "in": "path", "name": "policy_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyJobsResponse" } } }, "description": "Jobs affected by the policy" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Policy not found or not a job policy" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Internal server error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Get jobs affected by a policy", "tags": [ "Policy" ] } }, "/v1/policy/{policy_id}/pods": { "get": { "description": "For namespace/pods policies, returns pods directly tracked by the policy.\nFor job policies, returns pods belonging to the jobs tracked by the policy.", "operationId": "policy_pods", "parameters": [ { "description": "Policy UUID", "in": "path", "name": "policy_id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/PolicyPodResponse" }, "type": "array" } } }, "description": "Returns pods currently monitored by the policy" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid policy_id format" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Policy not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "api_key": [] } ], "summary": "Get pods monitored by a specific policy", "tags": [ "Policy" ] } }, "/v1/pricing/instance-types": { "get": { "operationId": "list_instance_type_pricing", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/InstanceTypePricing" }, "type": "array" } } }, "description": "Returns all instance type pricing configs" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List all instance type pricing configurations", "tags": [ "Pricing" ] }, "put": { "operationId": "upsert_instance_type_pricing", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpsertInstanceTypePricingRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstanceTypePricing" } } }, "description": "Returns the created/updated pricing config" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create or update instance type pricing", "tags": [ "Pricing" ] } }, "/v1/pricing/instance-types/available": { "get": { "operationId": "list_available_instance_types", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "type": "string" }, "type": "array" } } }, "description": "Returns distinct instance types from nodes" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get distinct instance types from nodes (for auto-populating the UI)", "tags": [ "Pricing" ] } }, "/v1/pricing/instance-types/{instance_type}": { "delete": { "operationId": "delete_instance_type_pricing", "parameters": [ { "description": "Instance type to delete pricing for", "in": "path", "name": "instance_type", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Pricing deleted successfully" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Pricing not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Delete instance type pricing by instance type", "tags": [ "Pricing" ] } }, "/v1/restore/pod": { "post": { "operationId": "restore_pod", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestorePod" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "550e8400-e29b-41d4-a716-446655440000", "schema": { "type": "string" } } }, "description": "Returns the action ID for the new restore" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid action_id or request parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to create restore or connect to eventstream" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Restore pod", "tags": [ "Actions" ] } }, "/v1/restores": { "get": { "operationId": "list", "parameters": [ { "in": "query", "name": "restore_uuid", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "workload_type", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "cluster_id", "required": false, "schema": { "type": [ "string", "null" ] } }, { "in": "query", "name": "checkpoint_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "in": "query", "name": "action_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "in": "query", "name": "action_scope", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Cap on rows (newest first). Omitted = all rows; failed restores carry their\nwhole CRIU log in `error_message`, so an unbounded list can hit megabytes.", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": {}, "type": "array" } } }, "description": "Restore records" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "tags": [ "Restores" ] } }, "/v1/restores/events/restore_error": { "post": { "operationId": "restore_error", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreEventPayload" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreEventResponse" } } }, "description": "Restore event accepted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid restore event" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to persist restore event" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Ingest a restore_error notification over HTTP.", "tags": [ "Restore Events" ] } }, "/v1/restores/events/restore_start": { "post": { "operationId": "restore_start", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreEventPayload" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreEventResponse" } } }, "description": "Restore event accepted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid restore event" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to persist restore event" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Ingest a restore_start notification over HTTP.", "tags": [ "Restore Events" ] } }, "/v1/restores/events/restore_success": { "post": { "operationId": "restore_success", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreEventPayload" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreEventResponse" } } }, "description": "Restore event accepted" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid restore event" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to persist restore event" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Ingest a restore_success notification over HTTP.", "tags": [ "Restore Events" ] } }, "/v1/restores/{id}": { "get": { "operationId": "get", "parameters": [ { "description": "Restore row ID", "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Restore record" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Restore not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "tags": [ "Restores" ] } }, "/v1/restores/{restore_uuid}/profile": { "put": { "operationId": "upload_profile", "parameters": [ { "description": "Restore UUID", "in": "path", "name": "restore_uuid", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": {} } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreProfileUploadResponse" } } }, "description": "Restore profile stored" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid restore UUID or profile JSON" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Restore not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to store restore profile" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "tags": [ "Restores" ] } }, "/v1/slurm/checkpoint/job": { "post": { "operationId": "checkpoint_slurm_job", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointSlurmJob" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Returns the id for the task" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Missing or malformed cluster_id" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to find checkpointable resource" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Checkpoint job", "tags": [ "Actions (Slurm)" ] } }, "/v1/slurm/checkpoint/path": { "get": { "description": "Returns the path of the latest successful checkpoint for a given checkpoint name", "operationId": "get_latest_checkpoint_path", "parameters": [ { "in": "query", "name": "name", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Returns the restore path" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to get action for request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No checkpoint exists under this name yet" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Get path of latest checkpoint", "tags": [ "Actions (Slurm)" ] } }, "/v1/slurm/checkpoints": { "get": { "description": "Use query params to filter checkpoints. Supports filtering by `ids` (comma-separated UUIDs\nfor single or multiple checkpoints), `job_id` and `cluster_id`", "operationId": "list", "parameters": [ { "description": "Comma-separated list of checkpoint UUIDs to filter by", "in": "query", "name": "ids", "required": false, "schema": { "type": "string" } }, { "description": "Filter by SLURM job id", "in": "query", "name": "job_id", "required": false, "schema": { "type": "string" } }, { "description": "Filter by cluster UUID", "in": "query", "name": "cluster_id", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmCheckpoint" }, "type": "array" } } }, "description": "Returns SLURM checkpoints" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List checkpoints", "tags": [ "Checkpoints (Slurm)" ] }, "post": { "description": "Builds a new checkpoint without the metadata and information about the checkpoint with status initializing", "operationId": "add", "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Returns the checkpoint id for the new checkpoint" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed create checkpoint" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Create checkpoint", "tags": [ "Checkpoints (Slurm)" ] } }, "/v1/slurm/checkpoints/deprecate/{id}": { "patch": { "description": "Marks checkpoint as deprecated, so that they can be removed on next internal state cleanup", "operationId": "deprecate", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Successfully deprecated checkpoint and returns id" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to find checkpoint from id" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/execute request against db" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Deprecate checkpoint", "tags": [ "Checkpoints (Slurm)" ] } }, "/v1/slurm/checkpoints/info/{id}": { "put": { "description": "Add information about the checkpoint", "operationId": "update_info", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "format": "uuid", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmCheckpointInfo" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Successfully deprecated checkpoint and returns id" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to find checkpoint from id" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/execute request against db" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Put checkpoint info", "tags": [ "Checkpoints (Slurm)" ] } }, "/v1/slurm/checkpoints/uploaded/{id}": { "post": { "operationId": "uploaded", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmCheckpointSuccessInfo" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Marks the checkpoint as successfully uploaded" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed mark checkpoint" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Uploaded checkpoint", "tags": [ "Checkpoints (Slurm)" ] } }, "/v1/slurm/clusters": { "get": { "operationId": "list", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmCluster" }, "type": "array" } } }, "description": "Returns clusters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List clusters", "tags": [ "Clusters (Slurm)" ] } }, "/v1/slurm/clusters/sync": { "post": { "description": "Receives a batch of SLURM clusters from the cedana-slurm plugin and upserts them.\nClusters missing from the payload (for this cluster_id) are marked STALE.", "operationId": "sync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmClusterSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Clusters synced successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to sync clusters to database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Sync clusters", "tags": [ "Clusters (Slurm)" ] } }, "/v1/slurm/clusters_paginated": { "get": { "operationId": "list_paginated", "parameters": [ { "description": "Number of records to skip (default: 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "description": "Maximum number of records to return (default: 50, max: 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmCluster" }, "type": "array" } } }, "description": "Returns clusters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List clusters (paginated)", "tags": [ "Clusters (Slurm)" ] } }, "/v1/slurm/events": { "get": { "description": "Derives an event stream from `slurm_jobs` rows in terminal states\n(PREEMPTED, NODE_FAIL, OOM, TIMEOUT, etc). Powered by data already\narriving via `/slurm/jobs/sync` — no separate ingestion path.", "operationId": "list", "parameters": [ { "description": "Filter by status (e.g. \"PREEMPTED\"). If omitted, returns all event statuses.", "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Only events at or after this epoch timestamp.", "in": "query", "name": "since", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmEvent" }, "type": "array" } } }, "description": "Returns events" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List job events", "tags": [ "Events (Slurm)" ] } }, "/v1/slurm/jobs": { "get": { "description": "Returns SLURM jobs from the database. Supports filtering by `job_ids` (comma-separated list)\nand `cluster_id`", "operationId": "list", "parameters": [ { "description": "Comma-separated list of SLURM job ids to filter by", "in": "query", "name": "job_ids", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Cluster id (UUID) to filter by", "in": "query", "name": "cluster_id", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmJob" }, "type": "array" } } }, "description": "Returns jobs" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid query parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List jobs", "tags": [ "Jobs (Slurm)" ] } }, "/v1/slurm/jobs/sync": { "post": { "description": "Receives a batch of SLURM jobs from the cedana-slurm plugin and upserts them into the database", "operationId": "sync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmJobSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Jobs synced successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to sync jobs to database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Sync jobs", "tags": [ "Jobs (Slurm)" ] } }, "/v1/slurm/jobs_paginated": { "get": { "description": "Returns SLURM jobs from the database with pagination", "operationId": "list_paginated", "parameters": [ { "description": "Number of records to skip (default: 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "description": "Maximum number of records to return (default: 50, max: 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmJob" }, "type": "array" } } }, "description": "Returns jobs" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List jobs (paginated)", "tags": [ "Jobs (Slurm)" ] } }, "/v1/slurm/maintenance_window": { "get": { "description": "Returns all maintenance windows", "operationId": "list_maintenance_windows", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmMaintenanceWindow" }, "type": "array" } } }, "description": "Returns all SLURM maintenance windows" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Auth Token": [] } ], "summary": "List maintenance windows", "tags": [ "Policy (Slurm)" ] }, "post": { "description": "Creates a new maintenance window for SLURM clusters", "operationId": "create_maintenance_window", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateMaintenanceWindow" } } }, "required": true }, "responses": { "201": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Returns the maintenance window id for the new maintenance window" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid request parameters" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Auth Token": [] } ], "summary": "Create maintenance window", "tags": [ "Policy (Slurm)" ] } }, "/v1/slurm/maintenance_window/{id}": { "delete": { "description": "Deletes a maintenance window by ID", "operationId": "delete_maintenance_window", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Successfully deleted maintenance window and returns id" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID provided" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Maintenance window not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Auth Token": [] } ], "summary": "Delete maintenance window", "tags": [ "Policy (Slurm)" ] }, "get": { "description": "Returns a specific maintenance window by ID", "operationId": "get_maintenance_window", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmMaintenanceWindow" } } }, "description": "Returns the maintenance window" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID provided" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Maintenance window not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Auth Token": [] } ], "summary": "Get maintenance window", "tags": [ "Policy (Slurm)" ] }, "put": { "description": "Updates an existing maintenance window", "operationId": "update_maintenance_window", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateMaintenanceWindow" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Successfully updated maintenance window and returns id" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID provided" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Maintenance window not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/execute request against database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Auth Token": [] } ], "summary": "Update maintenance window", "tags": [ "Policy (Slurm)" ] } }, "/v1/slurm/nodes": { "get": { "operationId": "list", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmNode" }, "type": "array" } } }, "description": "Returns nodes" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List nodes", "tags": [ "Nodes (Slurm)" ] } }, "/v1/slurm/nodes/sync": { "post": { "description": "Receives a batch of SLURM nodes from the cedana-slurm plugin and upserts them.\nNodes missing from the payload are marked as STALE.", "operationId": "sync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmNodeSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Nodes synced successfully" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to sync nodes to database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Sync nodes", "tags": [ "Nodes (Slurm)" ] } }, "/v1/slurm/nodes_paginated": { "get": { "operationId": "list_paginated", "parameters": [ { "description": "Number of records to skip (default: 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "description": "Maximum number of records to return (default: 50, max: 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmNode" }, "type": "array" } } }, "description": "Returns nodes" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List nodes (paginated)", "tags": [ "Nodes (Slurm)" ] } }, "/v1/slurm/partitions": { "get": { "operationId": "list", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmPartition" }, "type": "array" } } }, "description": "Returns partitions" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List partitions", "tags": [ "Partitions (Slurm)" ] } }, "/v1/slurm/partitions/sync": { "post": { "description": "Receives a batch of SLURM partitions from the cedana-slurm plugin and upserts them.\nPartitions missing from the payload are marked STALE.", "operationId": "sync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmPartitionSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Partitions synced successfully" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Cluster not registered" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to sync partitions to database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Sync partitions", "tags": [ "Partitions (Slurm)" ] } }, "/v1/slurm/partitions_paginated": { "get": { "operationId": "list_paginated", "parameters": [ { "description": "Number of records to skip (default: 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": "integer" } }, { "description": "Maximum number of records (default: 50, max: 100)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SlurmPartition" }, "type": "array" } } }, "description": "Returns partitions" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to fetch from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List partitions (paginated)", "tags": [ "Partitions (Slurm)" ] } }, "/v1/slurm/restore/job": { "post": { "operationId": "restore_slurm_job", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestoreSlurmJob" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "", "schema": { "type": "string" } } }, "description": "Returns the checkpoint id for the new checkpoint" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed create checkpoint" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed create restore" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Failed to connect/fetch from jobs table from database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Restore job", "tags": [ "Actions (Slurm)" ] } }, "/v1/user": { "get": { "operationId": "get", "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Returns UUID" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid API key" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "User not found" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "tags": [ "User" ] } } }, "tags": [ { "description": "Cedana API to get user information", "name": "User" }, { "description": "Cedana API for service discovery", "name": "Service" }, { "description": "Cedana API for checkpoints", "name": "Checkpoints" }, { "description": "Cedana API for actions", "name": "Actions" }, { "description": "Cedana API for restores", "name": "Restores" }, { "description": "Cedana API for restore events", "name": "Restore Events" }, { "description": "Cedana API for files", "name": "Files" }, { "description": "Cedana API for resources", "name": "Resources" }, { "description": "Cedana API for clusters", "name": "Clusters" }, { "description": "Cedana API for policies", "name": "Policy" }, { "description": "Cedana API for cloud bursting", "name": "Cloud Bursting" }, { "description": "Cedana API for plugin distribution", "name": "Plugins" }, { "description": "Cedana API for hosts", "name": "Hosts" }, { "description": "Cedana API for legacy jobs", "name": "Jobs" }, { "description": "Cedana API for Otel credentials", "name": "Otel" }, { "description": "Cedana inference control plane", "name": "inference" }, { "description": "Cedana API for Dynamo deployments", "name": "Dynamo" }, { "description": "Cedana API for the inference router", "name": "Router" }, { "description": "Cedana API for instance type pricing", "name": "Pricing" }, { "description": "Cedana API for jobs (Slurm)", "name": "Jobs (Slurm)" }, { "description": "Cedana API for nodes (Slurm)", "name": "Nodes (Slurm)" }, { "description": "Cedana API for actions (Slurm)", "name": "Actions (Slurm)" }, { "description": "Cedana API for clusters (Slurm)", "name": "Clusters (Slurm)" }, { "description": "Cedana API for partitions (Slurm)", "name": "Partitions (Slurm)" }, { "description": "Cedana API for checkpoints (Slurm)", "name": "Checkpoints (Slurm)" }, { "description": "Cedana API for events (Slurm)", "name": "Events (Slurm)" }, { "description": "Cedana API for policies (Slurm)", "name": "Policy (Slurm)" }, { "description": "Cedana API for events", "name": "Events" }, { "description": "Cedana API for metrics", "name": "Metrics" } ] }