{ "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" ] }, "checkpoint_status": { "type": "string" }, "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", "checkpoint_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" }, "CheckpointFileEntry": { "description": "A file inside a checkpoint: an archive member, or a child of a checkpoint directory", "properties": { "is_dir": { "type": "boolean" }, "mod_time": { "description": "Modification time, Unix ms", "format": "int64", "type": "integer" }, "name": { "type": "string" }, "size": { "description": "Size in bytes", "format": "int64", "type": "integer" } }, "required": [ "name", "size", "mod_time", "is_dir" ], "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", "maintenance" ], "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" }, "CheckpointStorage": { "properties": { "checkpoint_id": { "type": "string" }, "events": { "description": "Checkpoint, restore and CSX storage events for this checkpoint, oldest first.", "items": { "$ref": "#/components/schemas/NotificationEvent" }, "type": "array" }, "residency": { "description": "Where the checkpoint lives now, per node and tier.", "items": { "$ref": "#/components/schemas/Residency" }, "type": "array" }, "truncated": { "description": "More events exist than were returned; only the newest are included.", "type": "boolean" }, "write": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CsxWrite", "description": "Set while the checkpoint is still being written." } ] } }, "required": [ "checkpoint_id", "residency", "events", "truncated" ], "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" }, "ClusterResidency": { "properties": { "checkpoints": { "description": "Checkpoints that still live somewhere, newest first.", "items": { "$ref": "#/components/schemas/CsxCheckpoint" }, "type": "array" }, "nfs_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "nfs_checkpoints": { "format": "int32", "minimum": 0, "type": "integer" }, "nodes": { "items": { "$ref": "#/components/schemas/CsxNode" }, "type": "array" } }, "required": [ "nodes", "nfs_bytes", "nfs_checkpoints", "checkpoints" ], "type": "object" }, "ClusterSavings": { "properties": { "cluster_id": { "type": "string" }, "elapsed_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "first_ms": { "format": "int64", "type": "integer" }, "measured_nodes": { "description": "Nodes with a `measured_since_ms`; only these count toward the per-node averages.", "format": "int64", "minimum": 0, "type": "integer" }, "nodes": { "format": "int64", "minimum": 0, "type": "integer" }, "saved_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "saved_per_day_per_node_ns": { "description": "Mean of the measured nodes' `saved_per_day_ns`.", "format": "double", "type": "number" }, "saved_per_month_per_node_ns": { "description": "Mean of the measured nodes' `saved_per_month_ns`.", "format": "double", "type": "number" }, "savings_pairs": { "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "cluster_id", "nodes", "first_ms", "elapsed_ns", "savings_pairs", "saved_ns", "measured_nodes", "saved_per_day_per_node_ns", "saved_per_month_per_node_ns" ], "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" }, "CpuInfo": { "description": "CPU of one node.", "properties": { "allocatable_cores": { "description": "CPUs the scheduler can hand out, after system reservations", "format": "double", "type": [ "number", "null" ] }, "architecture": { "description": "\"amd64\" or \"arm64\"", "type": [ "string", "null" ] }, "cores": { "description": "Logical CPUs on the node", "format": "double", "type": [ "number", "null" ] }, "hyperthreading": { "description": "Whether SMT/hyper-threading is on (Node Feature Discovery)", "type": [ "boolean", "null" ] }, "hypervisor": { "description": "Hypervisor the node runs under, e.g. \"kvm\"; newer NFD versions only", "type": [ "string", "null" ] }, "isa_level": { "description": "Highest x86-64 microarchitecture level, e.g. \"x86-64-v4\" (Node Feature Discovery)", "type": [ "string", "null" ] }, "vendor": { "description": "\"Intel\" or \"AMD\" (Node Feature Discovery)", "type": [ "string", "null" ] }, "virtualized": { "description": "Whether the node is a VM, from the CPUID hypervisor flag (Node Feature Discovery)", "type": [ "boolean", "null" ] } }, "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" } ] }, "CsxCheckpoint": { "properties": { "bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "checkpoint_id": { "type": "string" }, "first_seen_ms": { "format": "int64", "type": "integer" }, "last_event_ms": { "format": "int64", "type": "integer" }, "last_read": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CsxRead" } ] }, "name": { "type": "string" }, "namespace": { "type": "string" }, "reads": { "format": "int32", "minimum": 0, "type": "integer" }, "residency": { "items": { "$ref": "#/components/schemas/Residency" }, "type": "array" }, "write": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CsxWrite", "description": "Set while the checkpoint is still being written." } ] } }, "required": [ "checkpoint_id", "name", "namespace", "bytes", "first_seen_ms", "last_event_ms", "residency", "reads" ], "type": "object" }, "CsxNode": { "properties": { "disk_checkpoints": { "format": "int32", "minimum": 0, "type": "integer" }, "disk_limit_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "disk_used_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "memory_checkpoints": { "format": "int32", "minimum": 0, "type": "integer" }, "memory_limit_bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "memory_used_bytes": { "description": "Includes copies in flight, which CSX reserves up front.", "format": "int64", "minimum": 0, "type": "integer" }, "node_name": { "type": "string" }, "started_ms": { "description": "Last CSX start; the node's caches were empty then.", "format": "int64", "type": [ "integer", "null" ] }, "version": { "type": "string" }, "write_buffer_bytes": { "description": "Bytes of finished writes still in the tmpfs buffer, waiting to be persisted to NFS.", "format": "int64", "minimum": 0, "type": "integer" }, "writes_in_flight": { "format": "int32", "minimum": 0, "type": "integer" } }, "required": [ "node_name", "version", "memory_limit_bytes", "disk_limit_bytes", "memory_used_bytes", "disk_used_bytes", "write_buffer_bytes", "writes_in_flight", "memory_checkpoints", "disk_checkpoints" ], "type": "object" }, "CsxRead": { "properties": { "at_ms": { "format": "int64", "type": "integer" }, "duration_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "node_name": { "type": "string" }, "tier": { "type": "string" } }, "required": [ "node_name", "tier", "at_ms", "duration_ns" ], "type": "object" }, "CsxWrite": { "description": "A checkpoint still being written on a node; it lives on no tier until it reaches NFS.", "properties": { "bytes": { "description": "0 while the write is still open.", "format": "int64", "minimum": 0, "type": "integer" }, "node_name": { "type": "string" }, "since_ms": { "format": "int64", "type": "integer" }, "state": { "description": "writing | persisting", "type": "string" }, "target": { "description": "tmpfs (the write buffer) or nfs (written straight to NFS)", "type": "string" } }, "required": [ "node_name", "target", "state", "since_ms", "bytes" ], "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" }, "DownloadCheckpointFile": { "properties": { "entry": { "description": "Name of the file inside the checkpoint, as returned by the file listing", "type": "string" } }, "required": [ "entry" ], "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" }, "source_checkpoints": { "description": "Successful checkpoints that finished before the window but were restored inside it, so a restore can be\ncompared with its source pod's cold start. Checkpoints taken from a pod that was itself restored are left out.", "items": { "$ref": "#/components/schemas/NotificationEvent" }, "type": "array" } }, "required": [ "events", "source_checkpoints" ], "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" }, "GpuInfo": { "description": "GPU inventory of one node.", "properties": { "allocatable": { "description": "nvidia.com/gpu the scheduler can hand out (excludes MIG slices)", "format": "int64", "type": [ "integer", "null" ] }, "compute_capability": { "description": "Compute capability, e.g. \"9.0\"", "type": [ "string", "null" ] }, "count": { "description": "Physical GPUs on the node", "format": "int64", "type": [ "integer", "null" ] }, "cuda_version": { "description": "Highest CUDA version the driver supports, e.g. \"12.4\"", "type": [ "string", "null" ] }, "driver_version": { "description": "NVIDIA driver version, e.g. \"550.54.15\"", "type": [ "string", "null" ] }, "family": { "description": "Architecture family, e.g. \"hopper\"", "type": [ "string", "null" ] }, "memory_mib": { "description": "Memory per GPU in MiB", "format": "int64", "type": [ "integer", "null" ] }, "mig_devices": { "additionalProperties": { "format": "int64", "type": "integer" }, "description": "Allocatable MIG slices by profile, e.g. {\"1g.10gb\": 7}; empty when MIG is off", "propertyNames": { "type": "string" }, "type": "object" }, "mig_strategy": { "description": "MIG strategy (\"none\", \"single\" or \"mixed\"), or \"disabled\" when mig-manager has MIG off", "type": [ "string", "null" ] }, "product": { "description": "GPU model, e.g. \"NVIDIA-H100-80GB-HBM3\"", "type": [ "string", "null" ] } }, "required": [ "mig_devices" ], "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" }, "MaintenanceTriggerConfig": { "properties": { "end_time": { "format": "date-time", "type": "string" }, "start_time": { "format": "date-time", "type": "string" } }, "required": [ "start_time", "end_time" ], "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" }, "NetworkInfo": { "description": "Networking of one node: NICs, RDMA and the devices plugins expose for them.", "properties": { "network_operator": { "description": "Whether the NVIDIA Network Operator manages this node's NIC drivers", "type": "boolean" }, "nic_vendors": { "description": "High-performance NIC vendors seen on the PCI bus, e.g. [\"NVIDIA Mellanox\"] (Node Feature Discovery)", "items": { "type": "string" }, "type": "array" }, "rdma_available": { "description": "Whether the RDMA kernel modules are loaded (Node Feature Discovery)", "type": [ "boolean", "null" ] }, "rdma_capable": { "description": "Whether an RDMA-capable NIC is present (Node Feature Discovery)", "type": [ "boolean", "null" ] }, "rdma_resources": { "additionalProperties": { "format": "int64", "type": "integer" }, "description": "RDMA, InfiniBand, SR-IOV and EFA devices the node advertises, by resource name, e.g. {\"rdma/ib\": 8}", "propertyNames": { "type": "string" }, "type": "object" }, "sriov_capable": { "description": "Whether a NIC supports SR-IOV (Node Feature Discovery)", "type": [ "boolean", "null" ] }, "sriov_configured": { "description": "Whether SR-IOV virtual functions are configured (Node Feature Discovery)", "type": [ "boolean", "null" ] } }, "required": [ "nic_vendors", "network_operator", "rdma_resources" ], "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" }, "cpu": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/CpuInfo", "description": "CPU of the node" } ] }, "gpu": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/GpuInfo", "description": "GPU inventory; absent for nodes without NVIDIA GPUs" } ] }, "id": { "format": "uuid", "type": "string" }, "instance_type": { "type": "string" }, "labels": { "additionalProperties": { "type": "string" }, "description": "Node labels, without NFD's per-flag CPUID labels", "propertyNames": { "type": "string" }, "type": "object" }, "name": { "type": "string" }, "network": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/NetworkInfo", "description": "NICs, RDMA and SR-IOV of the node" } ] }, "region": { "type": "string" }, "status": { "type": "string" }, "storage": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/StorageInfo", "description": "Local storage and CSI drivers of the node" } ] }, "system": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/SystemInfo", "description": "Memory and software of the node" } ] } }, "required": [ "id", "name", "status", "cluster_name", "compute_type", "instance_type", "region", "capacity_type", "labels" ], "type": "object" }, "NodeSavings": { "properties": { "checkpoints": { "format": "int64", "minimum": 0, "type": "integer" }, "cluster_id": { "type": "string" }, "elapsed_ns": { "description": "Time Cedana spent checkpointing and restoring on this node, all attempts.", "format": "int64", "minimum": 0, "type": "integer" }, "first_ms": { "description": "First checkpoint or restore started on this node.", "format": "int64", "type": "integer" }, "last_ms": { "format": "int64", "type": "integer" }, "measured_since_ms": { "description": "First operation here with pod start times recorded; the averages run from here to now, and are 0 without one.", "format": "int64", "type": [ "integer", "null" ] }, "node_name": { "type": "string" }, "restores": { "format": "int64", "minimum": 0, "type": "integer" }, "saved_ns": { "description": "Sum over those pairs of source cold start minus restore, floored at 0 per pair.", "format": "int64", "minimum": 0, "type": "integer" }, "saved_per_day_ns": { "description": "`saved_ns` per 24h since `measured_since_ms` (at least one day).", "format": "double", "type": "number" }, "saved_per_month_ns": { "description": "`saved_ns` per calendar month since `measured_since_ms`, counting the first and current months.", "format": "double", "type": "number" }, "savings_pairs": { "description": "Restores here with PodScheduled→Ready for both the restored pod and its checkpoint's source pod.", "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "cluster_id", "node_name", "first_ms", "last_ms", "checkpoints", "restores", "elapsed_ns", "savings_pairs", "saved_ns", "saved_per_day_ns", "saved_per_month_ns" ], "type": "object" }, "NodeSummary": { "properties": { "bytes_total": { "description": "Bytes written by successful checkpoints on this node.", "format": "int64", "minimum": 0, "type": "integer" }, "checkpoints": { "format": "int64", "minimum": 0, "type": "integer" }, "cluster_id": { "type": "string" }, "cold_start_p50_ns": { "description": "Source pod's PodScheduled→Ready, i.e. what the workload took to start without a checkpoint.", "format": "double", "type": "number" }, "failed": { "format": "int64", "minimum": 0, "type": "integer" }, "fallbacks": { "format": "int64", "minimum": 0, "type": "integer" }, "last_ms": { "format": "int64", "type": "integer" }, "node_name": { "type": "string" }, "restore_p50_ns": { "format": "double", "type": "number" }, "restores": { "format": "int64", "minimum": 0, "type": "integer" }, "saved_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "savings_pairs": { "description": "Successful restores on this node with PodScheduled→Ready for both the restored pod and its\ncheckpoint's source pod; the three fields below are over these pairs (0 when there are none).", "format": "int64", "minimum": 0, "type": "integer" }, "succeeded": { "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "cluster_id", "node_name", "checkpoints", "restores", "succeeded", "failed", "fallbacks", "bytes_total", "last_ms", "savings_pairs", "restore_p50_ns", "cold_start_p50_ns", "saved_ns" ], "type": "object" }, "NotificationEvent": { "properties": { "action": { "description": "Storage rows: the CSX action (cached, evicted, persisted, read_closed, write_closed, ...); empty otherwise.", "type": "string" }, "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" }, "write_target": { "description": "Write rows: where the write landed, tmpfs (the buffer) or nfs; empty otherwise.", "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", "action", "write_target" ], "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" }, "OperationsSavings": { "description": "All-time time saved and time spent, per node and per cluster.", "properties": { "clusters": { "description": "Most time saved first.", "items": { "$ref": "#/components/schemas/ClusterSavings" }, "type": "array" }, "days": { "description": "Days with any checkpoint or restore, oldest first.", "items": { "$ref": "#/components/schemas/SavingsDay" }, "type": "array" }, "generated_at_ms": { "format": "int64", "type": "integer" }, "nodes": { "description": "Most time saved first, at most `SAVINGS_NODE_LIMIT`; clusters are computed from every node.", "items": { "$ref": "#/components/schemas/NodeSavings" }, "type": "array" } }, "required": [ "generated_at_ms", "clusters", "nodes", "days" ], "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" }, "nodes": { "description": "Nodes that ran a checkpoint or restore in the window, busiest first.", "items": { "$ref": "#/components/schemas/NodeSummary" }, "type": "array" }, "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", "nodes" ], "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" }, "PaginatedCheckpointResponse": { "properties": { "checkpoints": { "items": { "$ref": "#/components/schemas/Checkpoint" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "checkpoints", "total_count" ], "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" }, "PaginatedSlurmClusterResponse": { "properties": { "clusters": { "items": { "$ref": "#/components/schemas/SlurmCluster" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "clusters", "total_count" ], "type": "object" }, "PaginatedSlurmJobResponse": { "description": "One page of SLURM jobs plus the total number of jobs matching the query,\nso clients can compute page counts without walking every page.", "properties": { "available_filters": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/SlurmAvailableFilters" } ] }, "jobs": { "items": { "$ref": "#/components/schemas/SlurmJob" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "jobs", "total_count" ], "type": "object" }, "PaginatedSlurmNodeResponse": { "properties": { "nodes": { "items": { "$ref": "#/components/schemas/SlurmNode" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "nodes", "total_count" ], "type": "object" }, "PaginatedSlurmPartitionResponse": { "properties": { "partitions": { "items": { "$ref": "#/components/schemas/SlurmPartition" }, "type": "array" }, "total_count": { "format": "int64", "type": "integer" } }, "required": [ "partitions", "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" }, { "properties": { "config": { "$ref": "#/components/schemas/MaintenanceTriggerConfig" }, "type": { "enum": [ "maintenance" ], "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" }, "cluster_id": { "description": "Cluster the pod runs on; null if the controller has not linked it yet", "format": "uuid", "type": [ "string", "null" ] }, "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": { "cluster_id": { "description": "Cluster and namespace the policy targets, from `details`.", "type": [ "string", "null" ] }, "end_time": { "format": "date-time", "type": [ "string", "null" ] }, "id": { "type": "string" }, "input": { "format": "int64", "type": "integer" }, "job_count": { "format": "int64", "type": [ "integer", "null" ] }, "namespace": { "type": [ "string", "null" ] }, "pod_count": { "format": "int64", "type": "integer" }, "policy_type": { "type": "string" }, "resource": { "type": "string" }, "resource_list": { "items": { "type": "string" }, "type": "array" }, "start_time": { "description": "Window bounds for maintenance policies; absent for other types.", "format": "date-time", "type": [ "string", "null" ] }, "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" }, "Residency": { "description": "Where a checkpoint currently lives. `node_name` is empty for NFS, which every node shares.", "properties": { "bytes": { "format": "int64", "minimum": 0, "type": "integer" }, "node_name": { "type": "string" }, "since_ms": { "format": "int64", "type": "integer" }, "state": { "description": "writing | persisting | copying | present", "type": "string" }, "tier": { "type": "string" } }, "required": [ "node_name", "tier", "state", "bytes", "since_ms" ], "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" }, "SavingsDay": { "description": "One UTC day of `OperationsSavings`, by when each operation finished.", "properties": { "checkpoints": { "format": "int64", "minimum": 0, "type": "integer" }, "day_ms": { "format": "int64", "type": "integer" }, "elapsed_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "restores": { "format": "int64", "minimum": 0, "type": "integer" }, "saved_ns": { "format": "int64", "minimum": 0, "type": "integer" }, "savings_pairs": { "format": "int64", "minimum": 0, "type": "integer" } }, "required": [ "day_ms", "saved_ns", "savings_pairs", "elapsed_ns", "checkpoints", "restores" ], "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" }, "SlurmAvailableFilters": { "description": "Distinct filter values across all jobs (not just the current page)", "properties": { "statuses": { "items": { "type": "string" }, "type": "array" } }, "required": [ "statuses" ], "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", "maintenance", "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" }, "partial": { "description": "The batch is only some of the cluster's jobs: upsert them, but don't\nmark the jobs missing from it as completed.", "type": "boolean" } }, "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": { "cluster_id": { "description": "Cluster the window was synced from; None for manually created windows", "type": [ "string", "null" ] }, "created_at": { "format": "date-time", "type": [ "string", "null" ] }, "end_time": { "format": "date-time", "type": [ "string", "null" ] }, "id": { "type": [ "string", "null" ] }, "name": { "description": "Reservation name; set for windows synced from the cluster", "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" }, "SlurmMaintenanceWindowSync": { "description": "A SLURM maintenance reservation as reported by the cedana-slurm plugin", "properties": { "end_time": { "format": "date-time", "type": "string" }, "flags": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "metadata": {}, "name": { "description": "Reservation name, unique within the cluster", "type": "string" }, "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" }, "status": { "description": "One of scheduled, active, completed, cancelled (defaults to scheduled)", "type": [ "string", "null" ] } }, "required": [ "name", "start_time", "end_time" ], "type": "object" }, "SlurmMaintenanceWindowSyncRequest": { "properties": { "cluster_id": { "format": "uuid", "type": "string" }, "maintenance_windows": { "items": { "$ref": "#/components/schemas/SlurmMaintenanceWindowSync" }, "type": "array" } }, "required": [ "cluster_id", "maintenance_windows" ], "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" }, "StorageInfo": { "description": "Local storage of one node.", "properties": { "allocatable_ephemeral_storage_bytes": { "description": "Ephemeral storage the scheduler can hand out, after system reservations", "format": "int64", "type": [ "integer", "null" ] }, "csi_drivers": { "description": "CSI drivers serving the node, from their topology labels, e.g. [\"csi.weka.io\"]", "items": { "type": "string" }, "type": "array" }, "ephemeral_storage_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "local_ssd": { "description": "Whether the node has a non-rotational (SSD/NVMe) disk (Node Feature Discovery)", "type": [ "boolean", "null" ] } }, "required": [ "csi_drivers" ], "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" }, "SystemInfo": { "description": "Memory and software of one node.", "properties": { "allocatable_memory_bytes": { "description": "Memory the scheduler can hand out, after system reservations", "format": "int64", "type": [ "integer", "null" ] }, "container_runtime": { "description": "e.g. \"containerd://2.3.3\"", "type": [ "string", "null" ] }, "hugepages_bytes": { "description": "Huge pages reserved on the node, all page sizes together; absent when none are", "format": "int64", "type": [ "integer", "null" ] }, "kernel_version": { "type": [ "string", "null" ] }, "kubelet_version": { "type": [ "string", "null" ] }, "max_pods": { "format": "int64", "type": [ "integer", "null" ] }, "memory_bytes": { "format": "int64", "type": [ "integer", "null" ] }, "numa": { "description": "Whether memory spans several NUMA nodes (Node Feature Discovery)", "type": [ "boolean", "null" ] }, "os_image": { "description": "e.g. \"Ubuntu 24.04.4 LTS\"", "type": [ "string", "null" ] }, "zone": { "type": [ "string", "null" ] } }, "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" ] } }, { "description": "Only return actions that ran on this cluster", "in": "query", "name": "cluster_id", "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" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No ready checkpoint with the given 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 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": "Paginated. `ids` (comma-separated UUIDs) and `cluster_id` (the cluster the checkpoint action\nran on) filter the list; `total_count` is the number of matches before paging.", "operationId": "list", "parameters": [ { "description": "Comma-separated list of checkpoint UUIDs to filter by", "in": "query", "name": "ids", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Only return checkpoints whose checkpoint action ran on this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Sort column: `id`, `name`, `status`, `platform` or `gpu` (default `id`)", "in": "query", "name": "sort", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Sort ascending (default false)", "in": "query", "name": "ascending", "required": false, "schema": { "type": [ "boolean", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCheckpointResponse" } } }, "description": "Returns checkpoints with total count" }, "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": "Has a helper on the checkpoint's cluster delete its files (chosen as for the files\nendpoints: any helper for a remote checkpoint, the node holding it for a local one),\nthen marks the checkpoint deprecated. A checkpoint without a path has no files to\ndelete and is just deprecated. One with files but no cluster to ask (not taken\nthrough a checkpoint action) is kept, with a 409, rather than deprecated with its\nfiles left behind. If the helper fails to delete, the checkpoint is left as it was\nand the helper's error is returned. Concurrent requests for the same checkpoint may\nboth ask for the delete; whichever marks it deprecated first wins, the other gets 404.", "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" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint not found or already deprecated" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint has files but no cluster to delete them from" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Database operation failed" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Helper could not delete the checkpoint" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No helper on the cluster answered in time" }, "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/checkpoints/{id}/files": { "get": { "description": "Asks a helper on the checkpoint's cluster to read the checkpoint and returns the files\ninside it (the members of the checkpoint archive).", "operationId": "files", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CheckpointFileEntry" }, "type": "array" } } }, "description": "Files inside the checkpoint" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID provided" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint not found or deprecated" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint has no path or cluster yet" }, "4XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Client error" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Helper could not read the checkpoint" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No helper on the cluster answered in time" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "List checkpoint files", "tags": [ "Checkpoints" ] } }, "/v1/checkpoints/{id}/files/download": { "post": { "description": "Asks a helper on the checkpoint's cluster to copy one file out of the checkpoint into\nCedana managed storage, then returns a signed URL it can be downloaded from. Blocks\nuntil the helper has uploaded the file.", "operationId": "download_file", "parameters": [ { "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DownloadCheckpointFile" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "example": "https://cedana-checkpoints-storage.s3.amazonaws.com/checkpoint-files/550e8400-e29b-41d4-a716-446655440000/pages-1.img?X-Amz-Signature=...", "schema": { "type": "string" } } }, "description": "Returns the URL to download the file from" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid UUID or file entry provided" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint not found or deprecated" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Checkpoint has no path or cluster 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 generate signed URL" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Helper could not read or upload the file" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "No helper on the cluster answered in time" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Token": [] } ], "summary": "Download a checkpoint file", "tags": [ "Checkpoints" ] } }, "/v1/checkpoints/{id}/storage": { "get": { "operationId": "get_checkpoint_storage", "parameters": [ { "description": "Checkpoint ID", "in": "path", "name": "id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckpointStorage" } } }, "description": "Storage timeline and residency" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Invalid checkpoint 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": "Storage timeline and current residency of a CSX checkpoint", "tags": [ "Events" ] } }, "/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/csx/residency": { "get": { "operationId": "get_csx_residency", "parameters": [ { "description": "Cluster to summarize", "in": "query", "name": "cluster_id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterResidency" } } }, "description": "Cluster CSX residency" }, "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": "Where every CSX checkpoint of a cluster lives, with per-node cache usage", "tags": [ "Events" ] } }, "/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, restore, storage (CSX tier movements) or all.\nWithout one, storage rows are left out so they cannot crowd checkpoint and restore results.", "in": "query", "name": "operation", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Filter by cluster", "in": "query", "name": "cluster_id", "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://cedana-checkpoints-storage.s3.amazonaws.com/file.tar.gz?X-Amz-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://cedana-checkpoints-storage.s3.amazonaws.com/file.tar.gz?X-Amz-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": { "description": "Paginated. Only returns jobs from clusters with status 'active'. `cluster_id` scopes both the\njobs and the available filters to one cluster.", "operationId": "job_list", "parameters": [ { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Sort column: `id`, `name`, `namespace`, `status` or `start_time` (default `start_time`)", "in": "query", "name": "sort", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Sort ascending (default false)", "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" ] } }, { "description": "Only return jobs belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedJobResponse" } } }, "description": "Returns jobs with total count and available filters" }, "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": [ "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" } }, { "description": "Only consider resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "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" ] } }, { "description": "Only count resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "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" ] } }, { "description": "Only return jobs belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "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", "parameters": [ { "description": "Only consider resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "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/priorities": { "get": { "operationId": "job_priorities", "parameters": [ { "description": "Only consider resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "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", "parameters": [ { "description": "Only consider resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "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/savings": { "get": { "operationId": "operations_savings", "parameters": [ { "description": "kubernetes | slurm", "in": "query", "name": "workload", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Only include operations from this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperationsSavings" } } }, "description": "Cumulative and averaged time saved and spent per node and cluster" }, "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": "All-time time saved by restores and time spent checkpointing and restoring, per node and cluster", "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" ] } }, { "description": "Only include operations from this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "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" ] } }, { "description": "Only return nodes belonging to this cluster", "in": "query", "name": "cluster_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": "Paginated. Only returns pods from clusters with status 'active' whose node synced within the\nlast 5 minutes, and never pods with status 'deleted'. `cluster_id` scopes both the pods and\nthe available filters to one cluster. `id` looks up that single pod (still subject to\n`cluster_id`) and ignores the other filters.", "operationId": "pod_list", "parameters": [ { "description": "Exact pod id. When set, every other filter except `cluster_id` is ignored", "in": "query", "name": "id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Sort column: `id`, `name`, `namespace` or `status` (default `name`)", "in": "query", "name": "sort", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Sort ascending (default false)", "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" ] } }, { "description": "Only return pods belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPodResponse" } } }, "description": "Returns pods with total count and available filters" }, "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 pods", "tags": [ "Resources" ] } }, "/v1/pods/count": { "get": { "operationId": "pods_count", "parameters": [ { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Only count resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "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", "parameters": [ { "description": "Only consider resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "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/statuses": { "get": { "operationId": "pod_statuses", "parameters": [ { "description": "Only consider resources belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "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" }, "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": { "description": "Paginated. `total_count` is the number of SLURM clusters before paging.", "operationId": "list", "parameters": [ { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedSlurmClusterResponse" } } }, "description": "Returns clusters with total count" }, "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 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/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": "Paginated. `total_count` is the number of jobs matching the filters before paging.", "operationId": "list", "parameters": [ { "description": "Exact SLURM job id to fetch; when set, all other filters are ignored", "in": "query", "name": "id", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "One of: id, name, status, submit_time, start_time (default: start_time)", "in": "query", "name": "sort", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Sort ascending (default: false)", "in": "query", "name": "ascending", "required": false, "schema": { "type": [ "boolean", "null" ] } }, { "in": "query", "name": "status", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Job name or job id to query against (uses postgres ILIKE pattern search)", "in": "query", "name": "job_name", "required": false, "schema": { "type": [ "string", "null" ] } }, { "description": "Only return jobs belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedSlurmJobResponse" } } }, "description": "Returns jobs with total count and available filters" }, "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.\nUnless the batch is partial, jobs on the cluster missing from it are marked completed.", "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/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/sync": { "post": { "description": "Receives the full set of maintenance reservations for a cluster from the cedana-slurm\nplugin and upserts them by name. Windows previously synced for the cluster that are\nmissing from the payload are marked 'ended'.", "operationId": "sync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlurmMaintenanceWindowSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "text/plain": { "schema": { "type": "string" } } }, "description": "Maintenance windows synced successfully" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Cluster with given id does not exist" }, "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 maintenance windows to database" }, "5XX": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpError" } } }, "description": "Server error" } }, "security": [ { "Auth Token": [] } ], "summary": "Sync SLURM maintenance windows", "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": { "description": "Paginated. `total_count` is the number of nodes matching the filters before paging.", "operationId": "list", "parameters": [ { "description": "Exact node id to fetch", "in": "query", "name": "id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "description": "Only return nodes belonging to this cluster", "in": "query", "name": "cluster_id", "required": false, "schema": { "format": "uuid", "type": [ "string", "null" ] } }, { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedSlurmNodeResponse" } } }, "description": "Returns nodes with total count" }, "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 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/partitions": { "get": { "description": "Paginated. `total_count` is the number of partitions before paging.", "operationId": "list", "parameters": [ { "description": "Row offset (default 0)", "in": "query", "name": "offset", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } }, { "description": "Page size (default 50, max 500)", "in": "query", "name": "limit", "required": false, "schema": { "format": "int64", "type": [ "integer", "null" ] } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedSlurmPartitionResponse" } } }, "description": "Returns partitions with total count" }, "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 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/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" } ] }