{
  "openapi": "3.1.0",
  "info": {
    "title": "EMT Compute API",
    "version": "0.8.0",
    "description": "EMT Compute GPU rentals, clusters, storage, monitoring, guided causal-LM training and scientific experiment jobs. Monetary amounts are integer micro-USD unless explicitly named otherwise (1 USD = 1,000,000 micro-USD). Authenticated operations use an EMT workspace API key. Read /health and /me for current service readiness and account requirements; a listed operation does not imply every service is enabled. Accept current terms in the console before paid use. Persist and reuse Idempotency-Key after an uncertain result. Worker callback and internal administration routes are not a general customer integration contract."
  },
  "servers": [
    {
      "url": "https://emtcompute.com/api/v1",
      "description": "Production"
    },
    {
      "url": "/api/v1",
      "description": "Current origin"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "VolumeInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "description": {
            "type": "string",
            "maxLength": 500
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "BackupConfig": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "/root or a child directory. /mnt is excluded."
          },
          "frequency": {
            "type": "integer",
            "minimum": 1,
            "maximum": 168
          },
          "retention": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365
          }
        },
        "required": [
          "path",
          "frequency",
          "retention"
        ],
        "additionalProperties": false
      },
      "SafeStop": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "/root or a child directory. /mnt is excluded."
          },
          "frequency": {
            "type": "integer",
            "minimum": 1,
            "maximum": 168
          },
          "retention": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365
          },
          "checkpointClosed": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "path",
          "frequency",
          "retention",
          "checkpointClosed"
        ],
        "additionalProperties": false
      },
      "RegistryInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string",
            "writeOnly": true
          },
          "registry": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "username",
          "password"
        ],
        "additionalProperties": false
      },
      "TemplateInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "image": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          },
          "digest": {
            "type": "string"
          },
          "command": {
            "type": "string"
          },
          "entrypoint": {
            "type": "string"
          },
          "volume": {
            "type": "string"
          },
          "ports": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 65535
            },
            "maxItems": 32
          },
          "environment": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "writeOnly": true
          },
          "readme": {
            "type": "string"
          },
          "docker": {
            "type": "boolean"
          },
          "registryId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "name",
          "image"
        ],
        "additionalProperties": false
      },
      "RestoreInput": {
        "type": "object",
        "properties": {
          "backup": {
            "type": "string",
            "format": "uuid"
          },
          "sourceOrder": {
            "type": "string",
            "format": "uuid"
          },
          "sourceMember": {
            "type": "string",
            "format": "uuid"
          },
          "sourcePage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "default": 1
          },
          "path": {
            "type": "string",
            "description": "New or empty directory strictly below /root"
          },
          "emptyDirectory": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "backup",
          "sourceOrder",
          "path",
          "emptyDirectory"
        ],
        "additionalProperties": false
      },
      "AttachVolume": {
        "type": "object",
        "properties": {
          "volume": {
            "type": "string",
            "format": "uuid"
          },
          "restart": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "volume",
          "restart"
        ],
        "additionalProperties": false
      },
      "TrainingConfig": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "model",
          "revision",
          "method",
          "precision",
          "gradientCheckpointing",
          "learningRate",
          "maxSteps",
          "sequenceLength",
          "microBatch",
          "accumulation",
          "seed",
          "evalPercent",
          "checkpointSteps",
          "evalSteps",
          "keepCheckpoints",
          "loraRank",
          "loraAlpha",
          "maxHours",
          "maxBudgetMicro",
          "gpuCount"
        ],
        "properties": {
          "model": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*/[a-zA-Z0-9][a-zA-Z0-9_.-]*$"
          },
          "revision": {
            "type": "string",
            "pattern": "^[a-f0-9]{40}$"
          },
          "method": {
            "enum": [
              "lora",
              "full",
              "scratch"
            ]
          },
          "precision": {
            "enum": [
              "fp32",
              "bf16"
            ]
          },
          "gradientCheckpointing": {
            "type": "boolean"
          },
          "learningRate": {
            "type": "number",
            "minimum": 1e-7,
            "maximum": 0.01
          },
          "maxSteps": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "sequenceLength": {
            "type": "integer",
            "minimum": 32,
            "maximum": 32768
          },
          "microBatch": {
            "type": "integer",
            "minimum": 1,
            "maximum": 64
          },
          "accumulation": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1024
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "evalPercent": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30
          },
          "checkpointSteps": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000
          },
          "evalSteps": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000
          },
          "keepCheckpoints": {
            "type": "integer",
            "minimum": 2,
            "maximum": 20
          },
          "loraRank": {
            "type": "integer",
            "minimum": 4,
            "maximum": 128
          },
          "loraAlpha": {
            "type": "integer",
            "minimum": 4,
            "maximum": 256
          },
          "maxHours": {
            "type": "integer",
            "minimum": 1,
            "maximum": 720
          },
          "maxBudgetMicro": {
            "type": "integer",
            "minimum": 1000000,
            "maximum": 100000000000
          },
          "gpuCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          }
        },
        "description": "Immutable job configuration. GPU budget and trainer elapsed time are cumulative across attempts. DDP replicates the model on every GPU; it does not pool VRAM."
      },
      "TrainingUpload": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 134217728
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        },
        "required": [
          "name",
          "size",
          "sha256"
        ]
      },
      "TrainingPrepare": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "dataset": {
            "type": "string",
            "format": "uuid"
          },
          "config": {
            "$ref": "#/components/schemas/TrainingConfig"
          }
        },
        "required": [
          "name",
          "dataset",
          "config"
        ]
      },
      "TrainingStart": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "quote": {
            "type": "string",
            "format": "uuid"
          },
          "volume": {
            "type": "string",
            "format": "uuid"
          },
          "ssh": {
            "type": "string",
            "description": "Optional SSH public key, only to open the machine yourself: the managed engine does not need it."
          },
          "acknowledgeStorageCharges": {
            "const": true
          }
        },
        "required": [
          "quote",
          "volume",
          "acknowledgeStorageCharges"
        ]
      },
      "ExperimentQuoteInput": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8,
            "default": 1
          },
          "nodes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "minVram": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1024,
            "default": 8
          },
          "model": {
            "type": "string",
            "maxLength": 80
          },
          "fp64": {
            "type": "boolean",
            "default": false
          },
          "maxMinutes": {
            "type": "integer",
            "minimum": 10,
            "maximum": 1440,
            "default": 60
          },
          "node": {
            "type": "string",
            "maxLength": 200
          },
          "environment": {
            "type": "string",
            "enum": [
              "emt-lab",
              "emt-lab-devel",
              "emt-lab-jax"
            ],
            "default": "emt-lab"
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "ExperimentJobInput": {
        "type": "object",
        "properties": {
          "quotes": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "minItems": 1,
            "maxItems": 4
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "experiment": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "preset"
                  },
                  "preset": {
                    "type": "string",
                    "maxLength": 64
                  }
                },
                "required": [
                  "kind",
                  "preset"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "script"
                  },
                  "entry": {
                    "type": "string",
                    "maxLength": 120,
                    "pattern": "^[\\w][\\w .()+-]*\\.py$"
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 120
                  }
                },
                "required": [
                  "kind",
                  "entry"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "command"
                  },
                  "environment": {
                    "type": "string",
                    "enum": [
                      "emt-lab",
                      "emt-lab-devel",
                      "emt-lab-jax"
                    ],
                    "default": "emt-lab"
                  },
                  "setup": {
                    "type": "string",
                    "maxLength": 20000,
                    "default": ""
                  },
                  "command": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 20000
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 120
                  }
                },
                "required": [
                  "kind",
                  "command"
                ],
                "additionalProperties": false
              }
            ]
          },
          "level": {
            "type": "string",
            "enum": [
              "student",
              "lab",
              "frontier"
            ],
            "default": "student"
          },
          "runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "params": {
                  "type": "object",
                  "propertyNames": {
                    "type": "string",
                    "maxLength": 64
                  },
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 2000
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  }
                }
              },
              "required": [
                "params"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 64
          },
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 20,
            "default": []
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483648,
            "default": 0
          },
          "config": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "maxLength": 64
            },
            "additionalProperties": {}
          },
          "resume": {
            "type": "object",
            "properties": {
              "job": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "job"
            ],
            "additionalProperties": false
          },
          "auto": {
            "type": "object",
            "properties": {
              "budgetMicro": {
                "type": "integer",
                "minimum": 100000,
                "maximum": 100000000000
              },
              "maxSegments": {
                "type": "integer",
                "minimum": 2,
                "maximum": 1000
              }
            },
            "required": [
              "budgetMicro",
              "maxSegments"
            ],
            "additionalProperties": false
          },
          "ssh": {
            "type": "string",
            "maxLength": 4096
          }
        },
        "required": [
          "quotes",
          "name",
          "experiment",
          "runs"
        ],
        "additionalProperties": false
      },
      "ExperimentEditInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "notes": {
            "type": "string",
            "maxLength": 4000
          },
          "archived": {
            "type": "boolean"
          },
          "autoStop": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "ExperimentClusterInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "experiment": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "preset"
                  },
                  "preset": {
                    "type": "string",
                    "maxLength": 64
                  }
                },
                "required": [
                  "kind",
                  "preset"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "script"
                  },
                  "entry": {
                    "type": "string",
                    "maxLength": 120,
                    "pattern": "^[\\w][\\w .()+-]*\\.py$"
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 120
                  }
                },
                "required": [
                  "kind",
                  "entry"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "command"
                  },
                  "environment": {
                    "type": "string",
                    "enum": [
                      "emt-lab",
                      "emt-lab-devel",
                      "emt-lab-jax"
                    ],
                    "default": "emt-lab"
                  },
                  "setup": {
                    "type": "string",
                    "maxLength": 20000,
                    "default": ""
                  },
                  "command": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 20000
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 120
                  }
                },
                "required": [
                  "kind",
                  "command"
                ],
                "additionalProperties": false
              }
            ]
          },
          "level": {
            "type": "string",
            "enum": [
              "student",
              "lab",
              "frontier"
            ],
            "default": "student"
          },
          "runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "params": {
                  "type": "object",
                  "propertyNames": {
                    "type": "string",
                    "maxLength": 64
                  },
                  "additionalProperties": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "string",
                        "maxLength": 2000
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  }
                }
              },
              "required": [
                "params"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 64
          },
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 20,
            "default": []
          },
          "seed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483648,
            "default": 0
          },
          "config": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "maxLength": 64
            },
            "additionalProperties": {}
          },
          "ssh": {
            "type": "string",
            "maxLength": 4096
          },
          "clusterOrder": {
            "type": "string",
            "format": "uuid"
          },
          "maxMinutes": {
            "type": "integer",
            "minimum": 10,
            "maximum": 1440,
            "default": 60
          },
          "releaseCluster": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "name",
          "experiment",
          "runs",
          "clusterOrder",
          "releaseCluster"
        ],
        "additionalProperties": false
      }
    }
  },
  "paths": {
    "/health": {
      "get": {
        "summary": "GET /health",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        }
      }
    },
    "/catalog": {
      "get": {
        "summary": "GET /catalog",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Model, location or node ID"
          },
          {
            "name": "gpu",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated GPU models"
          },
          {
            "name": "count",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated rentable GPU quantities per node"
          },
          {
            "name": "country",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Country code"
          },
          {
            "name": "cuda",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum CUDA"
          },
          {
            "name": "tier",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "secure or spot"
          },
          {
            "name": "nvlink",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "1 requires NVLink"
          },
          {
            "name": "vram",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum GB per GPU"
          },
          {
            "name": "totalVram",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum total available VRAM GB"
          },
          {
            "name": "cpu",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum CPU count"
          },
          {
            "name": "ram",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum RAM GB"
          },
          {
            "name": "disk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum free local disk GB"
          },
          {
            "name": "download",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum Mbps"
          },
          {
            "name": "upload",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum Mbps"
          },
          {
            "name": "reliability",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum percentage"
          },
          {
            "name": "uptime",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum hours"
          },
          {
            "name": "minPrice",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Minimum retail USD/hour"
          },
          {
            "name": "maxPrice",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Maximum retail USD/hour"
          },
          {
            "name": "priceMode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "gpu or total (all available GPUs on that node)"
          },
          {
            "name": "mode",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "whole or split"
          }
        ]
      }
    },
    "/templates": {
      "get": {
        "summary": "GET /templates",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        }
      }
    },
    "/me": {
      "get": {
        "summary": "GET /me",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/quotes": {
      "post": {
        "summary": "POST /quotes",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "node",
                  "count",
                  "hours"
                ],
                "properties": {
                  "node": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 256
                  },
                  "hours": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 720
                  }
                }
              }
            }
          }
        }
      }
    },
    "/orders": {
      "get": {
        "summary": "GET /orders",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "POST /orders",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "quote",
                  "name",
                  "template",
                  "ssh"
                ],
                "properties": {
                  "quote": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 80
                  },
                  "template": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "ssh": {
                    "type": "string"
                  },
                  "jupyter": {
                    "type": "boolean"
                  },
                  "volume": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "backups": {
                    "type": "boolean",
                    "default": false
                  },
                  "ports": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 200,
                    "default": 10
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128
            }
          }
        ]
      }
    },
    "/orders/{id}": {
      "get": {
        "summary": "GET /orders/{id}",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      },
      "delete": {
        "summary": "DELETE /orders/{id}",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/orders/{id}/refresh": {
      "post": {
        "summary": "POST /orders/{id}/refresh",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/reboot": {
      "post": {
        "summary": "POST /orders/{id}/reboot",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/settle": {
      "post": {
        "summary": "POST /orders/{id}/settle",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/logs": {
      "get": {
        "summary": "GET /orders/{id}/logs",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/orders/{id}/metrics": {
      "get": {
        "summary": "GET /orders/{id}/metrics",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/resources": {
      "get": {
        "summary": "GET /resources",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "draft",
                "ssh",
                "volume-plan",
                "template",
                "ticket"
              ]
            }
          }
        ]
      },
      "post": {
        "summary": "POST /resources",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "draft",
                "ssh",
                "volume-plan",
                "template",
                "ticket"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/resources/{id}": {
      "delete": {
        "summary": "DELETE /resources/{id}",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/keys": {
      "get": {
        "summary": "GET /keys",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "summary": "POST /keys",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "name",
                  "scopes"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "scopes": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4,
                    "items": {
                      "enum": [
                        "read",
                        "rent",
                        "manage",
                        "billing"
                      ]
                    }
                  },
                  "budgetUsd": {
                    "type": "number",
                    "minimum": 1,
                    "maximum": 100000
                  },
                  "expiresInDays": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 365
                  }
                }
              }
            }
          }
        },
        "description": "Create a key from an authenticated Sites browser session; Bearer API keys cannot mint keys. budgetUsd is a total lifetime GPU spending cap including outstanding reservations."
      }
    },
    "/keys/{id}": {
      "delete": {
        "summary": "DELETE /keys/{id}",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/ledger": {
      "get": {
        "summary": "GET /ledger",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/audit": {
      "get": {
        "summary": "GET /audit",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/billing/checkout": {
      "post": {
        "summary": "POST /billing/checkout",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation failure"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope or session required"
          },
          "409": {
            "description": "Conflict, expired quote or pending reconciliation"
          },
          "503": {
            "description": "Service not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "amount"
                ],
                "properties": {
                  "amount": {
                    "type": "integer",
                    "minimum": 10,
                    "maximum": 1000
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ]
      }
    },
    "/catalog/clusters": {
      "get": {
        "summary": "Free compatible whole nodes grouped by RDMA fabric",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid selection"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope required"
          },
          "409": {
            "description": "Capacity or price changed; quote expired; reconciliation required"
          },
          "503": {
            "description": "Live rentals not activated"
          }
        }
      }
    },
    "/cluster-quotes": {
      "post": {
        "summary": "Validate a selection of 2–16 whole nodes and reserve a price for 120 seconds",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid selection"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope required"
          },
          "409": {
            "description": "Capacity or price changed; quote expired; reconciliation required"
          },
          "503": {
            "description": "Live rentals not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "cluster",
                  "nodes",
                  "hours"
                ],
                "additionalProperties": false,
                "properties": {
                  "cluster": {
                    "type": "string"
                  },
                  "nodes": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 16,
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    }
                  },
                  "hours": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 720
                  }
                }
              }
            }
          }
        }
      }
    },
    "/cluster-orders": {
      "post": {
        "summary": "Place an idempotent cluster order; atomic total credit reservation",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid selection"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope required"
          },
          "409": {
            "description": "Capacity or price changed; quote expired; reconciliation required"
          },
          "503": {
            "description": "Live rentals not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "quote",
                  "name",
                  "ssh"
                ],
                "additionalProperties": false,
                "properties": {
                  "quote": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 80
                  },
                  "ssh": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128
            }
          }
        ]
      }
    },
    "/orders/{id}/members/{pod}/logs": {
      "get": {
        "summary": "Cluster member logs",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid selection"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope required"
          },
          "409": {
            "description": "Capacity or price changed; quote expired; reconciliation required"
          },
          "503": {
            "description": "Live rentals not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pod",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/orders/{id}/members/{pod}/metrics": {
      "get": {
        "summary": "Cluster member metrics",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid selection"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope required"
          },
          "409": {
            "description": "Capacity or price changed; quote expired; reconciliation required"
          },
          "503": {
            "description": "Live rentals not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pod",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/orders/{id}/members/{pod}/reboot": {
      "post": {
        "summary": "Cluster member reboot",
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invalid selection"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope required"
          },
          "409": {
            "description": "Capacity or price changed; quote expired; reconciliation required"
          },
          "503": {
            "description": "Live rentals not activated"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pod",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/volumes": {
      "get": {
        "summary": "List owned volumes",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        }
      },
      "post": {
        "summary": "Create volumes",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128
            },
            "description": "Persist and reuse for this logical action. An uncertain result is not permission to create another operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VolumeInput"
              }
            }
          }
        }
      }
    },
    "/volumes/{id}": {
      "patch": {
        "summary": "Update owned volumes",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VolumeInput"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete owned volumes",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/volumes/{id}/refresh": {
      "post": {
        "summary": "Refresh remote metadata",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/volumes/{id}/editor": {
      "get": {
        "summary": "Load editable configuration",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "description": "Requires manage scope. Template environments are returned only to the owner with manage scope; registry passwords are never returned."
      }
    },
    "/registries": {
      "get": {
        "summary": "List owned registries",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        }
      },
      "post": {
        "summary": "Create registries",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128
            },
            "description": "Persist and reuse for this logical action. An uncertain result is not permission to create another operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistryInput"
              }
            }
          }
        }
      }
    },
    "/registries/{id}": {
      "patch": {
        "summary": "Update owned registries",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistryInput"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete owned registries",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/registries/{id}/refresh": {
      "post": {
        "summary": "Refresh remote metadata",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/registries/{id}/editor": {
      "get": {
        "summary": "Load editable configuration",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "description": "Requires manage scope. Template environments are returned only to the owner with manage scope; registry passwords are never returned."
      }
    },
    "/custom-templates": {
      "get": {
        "summary": "List owned custom-templates",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        }
      },
      "post": {
        "summary": "Create custom-templates",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128
            },
            "description": "Persist and reuse for this logical action. An uncertain result is not permission to create another operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateInput"
              }
            }
          }
        }
      }
    },
    "/custom-templates/{id}": {
      "patch": {
        "summary": "Update owned custom-templates",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TemplateInput"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete owned custom-templates",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/custom-templates/{id}/refresh": {
      "post": {
        "summary": "Refresh remote metadata",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/custom-templates/{id}/editor": {
      "get": {
        "summary": "Load editable configuration",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "description": "Requires manage scope. Template environments are returned only to the owner with manage scope; registry passwords are never returned."
      }
    },
    "/storage/pricing": {
      "get": {
        "summary": "EMT storage unit price and activation state",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        }
      }
    },
    "/storage/costs": {
      "get": {
        "summary": "Owned storage charge history",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        }
      }
    },
    "/orders/{id}/monitor": {
      "get": {
        "summary": "Live node or cluster snapshot",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          }
        ],
        "description": "15-second client polling, 12-second server cache, bounded hardware API budget. Missing readings are null. Persistent-volume usage includes its measurement timestamp."
      }
    },
    "/orders/{id}/backup-config": {
      "get": {
        "summary": "Read, configure or disable scheduled backups",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          }
        ]
      },
      "post": {
        "summary": "Read, configure or disable scheduled backups",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupConfig"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Read, configure or disable scheduled backups",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          }
        ]
      }
    },
    "/orders/{id}/backups": {
      "get": {
        "summary": "List retained node backups",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1
            },
            "description": "Page of owned backups, 100 entries per page. Include the same page when addressing a backup."
          }
        ]
      },
      "post": {
        "summary": "Request a manual backup",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128
            },
            "description": "Persist and reuse for this logical action. An uncertain result is not permission to create another operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VolumeInput"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/backups/{backup}": {
      "get": {
        "summary": "Inspect or delete one owned backup",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "backup",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1
            },
            "description": "Page of owned backups, 100 entries per page. Include the same page when addressing a backup."
          }
        ]
      },
      "delete": {
        "summary": "Inspect or delete one owned backup",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "backup",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1
            },
            "description": "Page of owned backups, 100 entries per page. Include the same page when addressing a backup."
          }
        ]
      }
    },
    "/orders/{id}/backups/{backup}/cancel": {
      "post": {
        "summary": "Cancel an active backup",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "backup",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 1
            },
            "description": "Page of owned backups, 100 entries per page. Include the same page when addressing a backup."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "required": [],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/orders/{id}/restore": {
      "post": {
        "summary": "Restore an owned backup into an empty directory",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 128
            },
            "description": "Persist and reuse for this logical action. An uncertain result is not permission to create another operation."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestoreInput"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/restores": {
      "get": {
        "summary": "List restore progress",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          }
        ]
      }
    },
    "/orders/{id}/volume": {
      "post": {
        "summary": "Attach persistent volume and restart container",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "member",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Required for per-node operations on a cluster"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachVolume"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/safe-stop": {
      "post": {
        "summary": "Back up every node before termination",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "description": "Requires a qualified backup evidence policy. A failure blocks all node deletion. The acknowledgement means checkpoints are flushed and no longer being written. Volumes and backups remain retained and billed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SafeStop"
              }
            }
          }
        }
      }
    },
    "/orders/{id}/safety": {
      "get": {
        "summary": "Read durable safety-run state",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/orders/{id}/safety/{run}": {
      "delete": {
        "summary": "Cancel a safety run before termination begins",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation error"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Insufficient scope"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflict or uncertain operation; reconcile before retrying with another key"
          },
          "503": {
            "description": "Integration not qualified or available"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "run",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/admin/orders/{id}/service-credit": {
      "post": {
        "summary": "Admin account credit for a documented service incident after settlement",
        "description": "Browser administrator session required. Exactly-once EMT balance correction capped at the uncredited final GPU charge. Does not refund a payment card.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "amountMicro",
                  "caseReference"
                ],
                "properties": {
                  "amountMicro": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "caseReference": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9._:-]{3,80}$"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Applied or replayed adjustment"
          },
          "403": {
            "description": "Administrator browser session required"
          },
          "409": {
            "description": "Pending bill, duplicate mismatch, or amount exceeds remaining charge"
          }
        }
      }
    },
    "/training/files": {
      "get": {
        "summary": "List uploaded datasets (512 MiB quota per account)",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        }
      },
      "post": {
        "summary": "Reserve upload with original SHA256",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrainingUpload"
              }
            }
          }
        }
      }
    },
    "/training/files/{id}": {
      "get": {
        "summary": "Read dataset validation and resumable parts",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      },
      "delete": {
        "summary": "Delete unused dataset; retained jobs prevent deletion",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/training/files/{id}/parts/{part}": {
      "put": {
        "summary": "Upload immutable 8 MiB part",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "part",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "X-Content-SHA256",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        }
      }
    },
    "/training/files/{id}/complete": {
      "post": {
        "summary": "Verify full hash and deterministic split",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "seed": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "evalPercent": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 30
                  }
                },
                "required": []
              }
            }
          }
        }
      }
    },
    "/training/files/{id}/download": {
      "get": {
        "summary": "Download original authenticated JSONL",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Original dataset",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/training/models/resolve": {
      "post": {
        "summary": "Resolve a public ungated safetensors causal model and immutable revision",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "model": {
                    "type": "string"
                  },
                  "revision": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{40}$"
                  }
                },
                "required": [
                  "model"
                ]
              }
            }
          }
        }
      }
    },
    "/training/jobs": {
      "get": {
        "summary": "List immutable training jobs",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        }
      },
      "post": {
        "summary": "Validate and prepare job without renting GPUs",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrainingPrepare"
              }
            }
          }
        }
      }
    },
    "/training/jobs/{id}": {
      "get": {
        "summary": "Read training job and associated GPU order",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/training/jobs/{id}/recipe": {
      "get": {
        "summary": "Export pinned runtime recipe",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/training/jobs/{id}/events": {
      "get": {
        "summary": "Read sequential events",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "latest",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "Return latest 100 events, ascending order"
          }
        ]
      }
    },
    "/training/jobs/{id}/start": {
      "post": {
        "summary": "Reserve quoted hardware and start qualified training runtime",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrainingStart"
              }
            }
          }
        }
      }
    },
    "/training/jobs/{id}/stop": {
      "post": {
        "summary": "Request cooperative checkpoint stop; retain volume",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/training/jobs/{id}/resume": {
      "post": {
        "summary": "Prepare a new attempt only after settlement and a committed checkpoint",
        "tags": [
          "Training"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Result for authenticated owner"
          },
          "400": {
            "description": "Invalid configuration or integrity check failed"
          },
          "401": {
            "description": "Authentication required"
          },
          "403": {
            "description": "Scope not permitted"
          },
          "404": {
            "description": "Owned resource not found"
          },
          "409": {
            "description": "Conflicting retry, immutable state, capacity or recovery gate"
          },
          "503": {
            "description": "Service not enabled or not qualified; no allocation performed"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/notifications": {
      "get": {
        "summary": "Browser session notification preferences and delivery history",
        "responses": {
          "200": {
            "description": "Verified contact status, low balance threshold and latest email receipts"
          },
          "403": {
            "description": "Browser session required"
          }
        }
      },
      "post": {
        "summary": "Update low-balance alert threshold (USD) and opt-in",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "lowBalanceUsd",
                  "enabled"
                ],
                "properties": {
                  "lowBalanceUsd": {
                    "type": "number",
                    "minimum": 1,
                    "maximum": 10000
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Saved"
          },
          "403": {
            "description": "Browser session required"
          }
        }
      }
    },
    "/devices": {
      "post": {
        "summary": "Register this app installation's FCM token for push notifications in the pinned workspace",
        "description": "Push messages are data-only (kind and an opaque reference) and only ask the app to sync. Re-registering the same token refreshes it; the token is stored sealed and never returned.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "token",
                  "platform"
                ],
                "properties": {
                  "token": {
                    "type": "string",
                    "minLength": 32,
                    "maxLength": 4096
                  },
                  "platform": {
                    "type": "string",
                    "enum": [
                      "android"
                    ]
                  },
                  "locale": {
                    "type": "string",
                    "maxLength": 35,
                    "description": "BCP 47 tag such as it-IT"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Device id, platform, locale, created, lastSeen and whether push delivery is configured"
          },
          "400": {
            "description": "Invalid input"
          },
          "409": {
            "description": "Session writes must pin the workspace with X-EMT-Workspace"
          }
        }
      }
    },
    "/devices/{id}": {
      "delete": {
        "summary": "Remove a push registration (only the person who registered it)",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted"
          },
          "404": {
            "description": "Unknown device"
          }
        }
      }
    },
    "/account/deletion": {
      "get": {
        "summary": "GET /account/deletion",
        "description": "Status of the signed-in person's account deletion request (session only).",
        "responses": {
          "200": {
            "description": "Deletion request status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "requestedAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date-time"
                    },
                    "customerCode": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "activeInstances": {
                      "type": "integer"
                    },
                    "runningJobs": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "POST /account/deletion",
        "description": "Request deletion of the signed-in person's account (privacy policy, account deletion). Session only; one request per 30 days. Confirmed by email and completed by EMT within one month; legally required records are kept.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "confirm"
                ],
                "properties": {
                  "confirm": {
                    "const": true
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Request recorded",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "requestedAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date-time"
                    },
                    "customerCode": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "activeInstances": {
                      "type": "integer"
                    },
                    "runningJobs": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/environments": {
      "get": {
        "summary": "List ready GPU environments",
        "description": "Public image and runtime choices for GPU setup.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/models": {
      "get": {
        "summary": "List supported model presets",
        "description": "Public model, license, quantization and parallelism metadata. This is not an inference endpoint.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiments/config": {
      "get": {
        "summary": "Read experiment service configuration",
        "description": "Returns the public GPU-compute mode flag. Account-specific launch eligibility still applies.",
        "security": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiment-quotes": {
      "post": {
        "summary": "Quote GPUs for an experiment",
        "description": "Requires rent scope and experiment service availability. Does not rent a GPU. Returns ids (one quote per node), hourly and reserve in micro-USD, expires in Unix milliseconds, nodeInfo and alternatives. Quotes last about two minutes; availability is rechecked at launch.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentQuoteInput"
              }
            }
          }
        }
      }
    },
    "/experiment-jobs": {
      "get": {
        "summary": "List experiment jobs",
        "description": "Requires read scope. Returns items and available. Each job can contain a sweep of parameter sets.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        },
        "parameters": [
          {
            "name": "archived",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ],
              "default": "0"
            }
          }
        ]
      },
      "post": {
        "summary": "Start a paid experiment job",
        "description": "Requires rent scope, current terms, sufficient credit, eligible hardware and fresh quote IDs. Runs a built-in preset, uploaded Python script or customer command. Multiple nodes distribute independent runs; they do not make every solver a distributed solver. Optional auto continuation can rent subsequent segments within its budget and maxSegments. Output archive is limited to 95 MiB per node; retrieve results and check completion/release state.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9._:-]{16,120}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentJobInput"
              }
            }
          }
        }
      }
    },
    "/experiment-jobs/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Read an owned experiment job",
        "description": "Requires read scope. Includes lifecycle, progress, result indices and related order state. Completion and GPU release may occur at different times.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      },
      "patch": {
        "summary": "Update experiment metadata or stop continuation",
        "description": "Requires manage scope. Updates name, notes or archived state. autoStop prevents subsequent automatic segments; it does not cancel the running segment.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentEditInput"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Permanently delete an inactive experiment",
        "description": "Requires manage scope. Refused while active or GPU release is pending. Deletes results and unused uploads; checkpoints are deleted when the last job in the chain is removed.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiment-jobs/{id}/cancel": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "summary": "Cancel an experiment and request GPU release",
        "description": "Requires manage scope. Poll the job and orders until release is confirmed; an acknowledgement alone does not prove billing has ended.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiment-jobs/{id}/results/{index}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "index",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Download an experiment result",
        "description": "Requires read scope. Gzip-compressed EMT result JSON for an available zero-based run index.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Requires read scope. Gzip-compressed EMT result JSON for an available zero-based run index.",
            "content": {
              "application/gzip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Owned result or file not available"
          }
        }
      }
    },
    "/experiment-jobs/{id}/outputs/{node}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "node",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Download produced files",
        "description": "Requires read scope. ZIP archive for a zero-based node index; archive must have been saved successfully.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Requires read scope. ZIP archive for a zero-based node index; archive must have been saved successfully.",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Owned result or file not available"
          }
        }
      }
    },
    "/experiment-jobs/{id}/checkpoints/{sequence}/{part}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "sequence",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "part",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Download a saved checkpoint part",
        "description": "Requires read scope and ownership of the checkpoint chain. Use the saved sequence and zero-based part index; multi-part checkpoints must be reassembled in order.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Requires read scope and ownership of the checkpoint chain. Use the saved sequence and zero-based part index; multi-part checkpoints must be reassembled in order.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Owned result or file not available"
          }
        }
      }
    },
    "/experiment-storage": {
      "get": {
        "summary": "Read experiment storage usage",
        "description": "Requires read scope. Returns used/quota bytes, uploads, checkpoints and experiment count. Includes which saved jobs reference uploads.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiment-uploads": {
      "post": {
        "summary": "Upload an experiment input file",
        "description": "Requires rent scope and experiment availability. Maximum 50 MiB per file, 20 GiB workspace upload quota and 300 uploads/hour. Returns id, name and size. Reference IDs in ExperimentJobInput.files.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        },
        "parameters": [
          {
            "name": "X-File-Name",
            "in": "header",
            "required": true,
            "description": "URL-encoded base filename, at most 120 characters after decoding; letters, numbers, spaces, dot, underscore, parentheses, plus and hyphen.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        }
      }
    },
    "/experiment-uploads/{id}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "delete": {
        "summary": "Delete an unused experiment input",
        "description": "Requires manage scope. Refused while referenced by a saved experiment.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiment-jobs/cluster": {
      "post": {
        "summary": "Prepare an experiment on an owned rented cluster",
        "description": "Requires rent and manage scopes and current terms. Attach a running dedicated cluster with 2–4 nodes, at least one independent run per node and sufficient remaining rental time. releaseCluster=true acknowledges automatic whole-cluster termination. Does not rent a new cluster. Start the downloaded SSH connector from a computer holding the cluster SSH key. Automatic checkpoint continuation is not supported for this mode.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExperimentClusterInput"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9._:-]{16,120}$"
            }
          }
        ]
      }
    },
    "/experiment-jobs/{id}/cluster-bootstrap": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "post": {
        "summary": "Read an active cluster experiment bootstrap",
        "description": "Requires manage scope and ownership. Returns scientific image, runtime hash, SSH connections and a job-scoped secret token. Never log or share this response. The customer's SSH private key remains local.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "default": {
            "description": "Error response. Check status, error and message; never retry a paid operation with a new idempotency key after an uncertain result."
          }
        }
      }
    },
    "/experiment-jobs/{id}/reports/{index}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "index",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Download the computation report",
        "description": "Requires read scope. HTML printable as PDF, Markdown, JSON provenance and recorded-series CSV. Includes hashes, assigned node, runtime, method and program-declared calculation steps. Not an independent mathematical proof. Available for jobs run with the reporting runtime; older jobs have no reconstructed report.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Requires read scope. HTML printable as PDF, Markdown, JSON provenance and recorded-series CSV. Includes hashes, assigned node, runtime, method and program-declared calculation steps. Not an independent mathematical proof. Available for jobs run with the reporting runtime; older jobs have no reconstructed report.",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Owned result or file not available"
          }
        }
      }
    },
    "/experiment-jobs/{id}/inputs/{index}": {
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "index",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ],
      "get": {
        "summary": "Download original input or source",
        "description": "Requires read scope and job ownership. Zero-based index in job.files, retaining the original bytes for reproducibility.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Requires read scope and job ownership. Zero-based index in job.files, retaining the original bytes for reproducibility.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "Owned result or file not available"
          }
        }
      }
    }
  }
}
