{
  "components": {
    "schemas": {
      "Activity": {
        "properties": {
          "busy": {
            "type": "boolean"
          },
          "checked": {
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "idle_since": {
            "format": "date-time",
            "type": "string"
          },
          "reasons": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "stops_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "busy",
          "checked"
        ],
        "type": "object"
      },
      "Checkpoint": {
        "properties": {
          "auto": {
            "type": "boolean"
          },
          "capture": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "created": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "restorable": {
            "type": "boolean"
          }
        },
        "required": [
          "created",
          "id",
          "restorable"
        ],
        "type": "object"
      },
      "CreateWispRequest": {
        "properties": {
          "delete_after_stopped_seconds": {
            "type": "integer"
          },
          "idle_timeout_seconds": {
            "type": "integer"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "max_lifetime_seconds": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "near": {
            "type": "string"
          },
          "no_start": {
            "type": "boolean"
          },
          "region": {
            "type": "string"
          },
          "size": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "DirEntry": {
        "properties": {
          "is_dir": {
            "type": "boolean"
          },
          "mod_time": {
            "format": "date-time",
            "type": "string"
          },
          "mode": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "size": {
            "type": "integer"
          }
        },
        "required": [
          "is_dir",
          "mod_time",
          "mode",
          "name",
          "size"
        ],
        "type": "object"
      },
      "DirList": {
        "properties": {
          "entries": {
            "items": {
              "$ref": "#/components/schemas/DirEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "entries"
        ],
        "type": "object"
      },
      "Error": {
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "Region": {
        "properties": {
          "available": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "probes": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "available",
          "name"
        ],
        "type": "object"
      },
      "RegionList": {
        "properties": {
          "regions": {
            "items": {
              "$ref": "#/components/schemas/Region"
            },
            "type": "array"
          }
        },
        "required": [
          "regions"
        ],
        "type": "object"
      },
      "Restart": {
        "properties": {
          "count": {
            "type": "integer"
          },
          "failures": {
            "type": "integer"
          },
          "last_error": {
            "type": "string"
          },
          "last_restart": {
            "format": "date-time",
            "type": "string"
          },
          "next_attempt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "count"
        ],
        "type": "object"
      },
      "RunOptions": {
        "properties": {
          "cmd": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dir": {
            "type": "string"
          },
          "encoding": {
            "type": "string"
          },
          "env": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "max_output_bytes": {
            "type": "integer"
          },
          "script": {
            "type": "string"
          },
          "stdin": {
            "type": "string"
          },
          "timeout_seconds": {
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RunResult": {
        "properties": {
          "duration_ms": {
            "type": "integer"
          },
          "encoding": {
            "type": "string"
          },
          "exit_code": {
            "type": "integer"
          },
          "stderr": {
            "type": "string"
          },
          "stderr_truncated": {
            "type": "boolean"
          },
          "stdout": {
            "type": "string"
          },
          "stdout_truncated": {
            "type": "boolean"
          },
          "timed_out": {
            "type": "boolean"
          }
        },
        "required": [
          "duration_ms",
          "encoding",
          "exit_code",
          "stderr",
          "stderr_truncated",
          "stdout",
          "stdout_truncated",
          "timed_out"
        ],
        "type": "object"
      },
      "Session": {
        "properties": {
          "clients": {
            "type": "integer"
          },
          "cols": {
            "type": "integer"
          },
          "command": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "created": {
            "format": "date-time",
            "type": "string"
          },
          "exit_code": {
            "type": "integer"
          },
          "exited": {
            "type": "boolean"
          },
          "held": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "pid": {
            "type": "integer"
          },
          "rows": {
            "type": "integer"
          },
          "tty": {
            "type": "boolean"
          }
        },
        "required": [
          "clients",
          "command",
          "created",
          "exit_code",
          "exited",
          "id",
          "pid",
          "tty"
        ],
        "type": "object"
      },
      "SessionList": {
        "properties": {
          "sessions": {
            "items": {
              "$ref": "#/components/schemas/Session"
            },
            "type": "array"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "sessions"
        ],
        "type": "object"
      },
      "UpdateOptions": {
        "properties": {
          "delete_after_stopped_seconds": {
            "type": "integer"
          },
          "idle_timeout_seconds": {
            "type": "integer"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "max_lifetime_seconds": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          }
        },
        "required": [
          "labels"
        ],
        "type": "object"
      },
      "VersionRequest": {
        "properties": {
          "ack": {
            "type": "boolean"
          },
          "action": {
            "type": "string"
          },
          "checkpoint_id": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "wisp_id": {
            "type": "string"
          }
        },
        "required": [
          "action",
          "key",
          "wisp_id"
        ],
        "type": "object"
      },
      "Wisp": {
        "properties": {
          "activity": {
            "$ref": "#/components/schemas/Activity"
          },
          "checkpoints": {
            "type": "integer"
          },
          "created": {
            "format": "date-time",
            "type": "string"
          },
          "delete_after_stopped_seconds": {
            "type": "integer"
          },
          "delete_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "idle_timeout_seconds": {
            "type": "integer"
          },
          "intent": {
            "type": "string"
          },
          "intent_pending": {
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "last_activity": {
            "format": "date-time",
            "type": "string"
          },
          "lifetime_ends_at": {
            "format": "date-time",
            "type": "string"
          },
          "max_lifetime_seconds": {
            "type": "integer"
          },
          "mode": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "near": {
            "type": "string"
          },
          "policy_pending": {
            "type": "boolean"
          },
          "region": {
            "type": "string"
          },
          "restart": {
            "$ref": "#/components/schemas/Restart"
          },
          "size": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "stop_reason": {
            "type": "string"
          }
        },
        "required": [
          "checkpoints",
          "created",
          "name",
          "size",
          "status"
        ],
        "type": "object"
      },
      "WispList": {
        "properties": {
          "wisps": {
            "items": {
              "$ref": "#/components/schemas/Wisp"
            },
            "type": "array"
          }
        },
        "required": [
          "wisps"
        ],
        "type": "object"
      },
      "WispOperation": {
        "properties": {
          "action": {
            "type": "string"
          },
          "disk_restored": {
            "type": "boolean"
          },
          "error": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "safety_checkpoint_id": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "target": {
            "type": "string"
          }
        },
        "required": [
          "action",
          "id",
          "state"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "teamToken": {
        "description": "Team token (wsk_...)",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Create, use, and manage Linux sandboxes with a team token.",
    "title": "Wisps API",
    "version": "v1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/healthz": {
      "get": {
        "operationId": "getHealthz",
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "OK"
          }
        },
        "security": [],
        "summary": "Liveness; prints ok",
        "tags": [
          "service"
        ]
      }
    },
    "/readyz": {
      "get": {
        "description": "Fleet only.",
        "operationId": "getReadyz",
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "OK"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [],
        "summary": "Readiness: 200 when the fleet database answers, otherwise 503",
        "tags": [
          "service"
        ]
      }
    },
    "/v1/regions": {
      "get": {
        "description": "Fleet only.",
        "operationId": "getRegions",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegionList"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Regions the team can create wisps in, with probe URLs for timing",
        "tags": [
          "regions"
        ]
      }
    },
    "/v1/wisps": {
      "get": {
        "operationId": "getWisps",
        "parameters": [
          {
            "description": "key=value; repeat to require several",
            "in": "query",
            "name": "label",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WispList"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "List the team's wisps, optionally only those with given labels",
        "tags": [
          "wisps"
        ]
      },
      "post": {
        "operationId": "postWisps",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWispRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Wisp"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Forbidden"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Create a wisp (name optional: one is generated); waits until it has booted unless no_start",
        "tags": [
          "wisps"
        ]
      }
    },
    "/v1/wisps/{name}": {
      "delete": {
        "operationId": "deleteWispsName",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Destroy a wisp, its disk and its checkpoints",
        "tags": [
          "wisps"
        ]
      },
      "get": {
        "operationId": "getWispsName",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Wisp"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Get one wisp; never boots it",
        "tags": [
          "wisps"
        ]
      },
      "patch": {
        "operationId": "patchWispsName",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOptions"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Wisp"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Change the lifecycle mode, idle timeout or labels",
        "tags": [
          "wisps"
        ]
      }
    },
    "/v1/wisps/{name}/checkpoints": {
      "get": {
        "operationId": "getWispsNameCheckpoints",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Checkpoint"
                  },
                  "type": "array"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "List checkpoints",
        "tags": [
          "checkpoints"
        ]
      },
      "post": {
        "operationId": "postWispsNameCheckpoints",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Same value as the body's key; the SDK sends it and the fleet forwards it",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VersionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WispOperation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Create a checkpoint (action create)",
        "tags": [
          "checkpoints"
        ]
      }
    },
    "/v1/wisps/{name}/checkpoints/{id}": {
      "delete": {
        "operationId": "deleteWispsNameCheckpointsId",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Same value as the body's key; the SDK sends it and the fleet forwards it",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VersionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WispOperation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Delete a checkpoint (action delete)",
        "tags": [
          "checkpoints"
        ]
      },
      "get": {
        "operationId": "getWispsNameCheckpointsId",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkpoint"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Get one checkpoint",
        "tags": [
          "checkpoints"
        ]
      }
    },
    "/v1/wisps/{name}/exec": {
      "get": {
        "operationId": "getWispsNameExec",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Command and arguments, one value each (repeat)",
            "in": "query",
            "name": "cmd",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "KEY=VALUE (repeat)",
            "in": "query",
            "name": "env",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Working directory",
            "in": "query",
            "name": "dir",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "1 for a terminal",
            "in": "query",
            "name": "tty",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Terminal columns",
            "in": "query",
            "name": "cols",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Terminal rows",
            "in": "query",
            "name": "rows",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "1 to keep running after disconnect",
            "in": "query",
            "name": "detachable",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Kill after this duration, e.g. 30s",
            "in": "query",
            "name": "timeout",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching to a WebSocket stream; see docs/api/wisps.md#streams"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Run a command over a WebSocket stream",
        "tags": [
          "exec"
        ]
      }
    },
    "/v1/wisps/{name}/fs": {
      "delete": {
        "operationId": "deleteWispsNameFs",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "1 to remove a directory tree",
            "in": "query",
            "name": "recursive",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Remove a file or directory",
        "tags": [
          "fs"
        ]
      },
      "get": {
        "operationId": "getWispsNameFs",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "File path; relative paths start at the user's home",
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Read a file",
        "tags": [
          "fs"
        ]
      },
      "put": {
        "operationId": "putWispsNameFs",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Octal permissions, e.g. 644",
            "in": "query",
            "name": "mode",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "1 to create parent directories",
            "in": "query",
            "name": "mkdirs",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "format": "binary",
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Write a file atomically",
        "tags": [
          "fs"
        ]
      }
    },
    "/v1/wisps/{name}/fs/list": {
      "get": {
        "operationId": "getWispsNameFsList",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Directory; default the user's home",
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DirList"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "List a directory",
        "tags": [
          "fs"
        ]
      }
    },
    "/v1/wisps/{name}/fs/mkdir": {
      "post": {
        "operationId": "postWispsNameFsMkdir",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "1 to create parents",
            "in": "query",
            "name": "parents",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Create a directory",
        "tags": [
          "fs"
        ]
      }
    },
    "/v1/wisps/{name}/operations/{key}": {
      "get": {
        "operationId": "getWispsNameOperationsKey",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WispOperation"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "State of a checkpoint operation by its key",
        "tags": [
          "operations"
        ]
      }
    },
    "/v1/wisps/{name}/proxy/{port}": {
      "get": {
        "operationId": "getWispsNameProxyPort",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "port",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching to a WebSocket stream; see docs/api/wisps.md#streams"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "TCP to a port inside the wisp, as binary WebSocket messages",
        "tags": [
          "proxy"
        ]
      }
    },
    "/v1/wisps/{name}/restore": {
      "post": {
        "operationId": "postWispsNameRestore",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Same value as the body's key; the SDK sends it and the fleet forwards it",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VersionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WispOperation"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Restore a checkpoint (action restore, ack true); saves a safety checkpoint first",
        "tags": [
          "restore"
        ]
      }
    },
    "/v1/wisps/{name}/run": {
      "post": {
        "operationId": "postWispsNameRun",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunOptions"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunResult"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Run a command to completion: exit code, stdout and stderr in one response (server-sent events with Accept: text/event-stream)",
        "tags": [
          "run"
        ]
      }
    },
    "/v1/wisps/{name}/sessions": {
      "get": {
        "operationId": "getWispsNameSessions",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionList"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "List sessions; never boots or wakes the wisp",
        "tags": [
          "sessions"
        ]
      }
    },
    "/v1/wisps/{name}/sessions/{id}": {
      "delete": {
        "operationId": "deleteWispsNameSessionsId",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Signal name, e.g. TERM",
            "in": "query",
            "name": "signal",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Signal a session (default KILL)",
        "tags": [
          "sessions"
        ]
      }
    },
    "/v1/wisps/{name}/sessions/{id}/attach": {
      "get": {
        "operationId": "getWispsNameSessionsIdAttach",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching to a WebSocket stream; see docs/api/wisps.md#streams"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Reattach to a session: scrollback, then live output",
        "tags": [
          "sessions"
        ]
      }
    },
    "/v1/wisps/{name}/sessions/{id}/hold": {
      "delete": {
        "operationId": "deleteWispsNameSessionsIdHold",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Release a kept session",
        "tags": [
          "sessions"
        ]
      },
      "post": {
        "operationId": "postWispsNameSessionsIdHold",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Bad Request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Gone"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Keep a detached session (holds an on-demand wisp awake)",
        "tags": [
          "sessions"
        ]
      }
    },
    "/v1/wisps/{name}/start": {
      "post": {
        "operationId": "postWispsNameStart",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Wisp"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Start or wake; records intent running",
        "tags": [
          "start"
        ]
      }
    },
    "/v1/wisps/{name}/stop": {
      "post": {
        "operationId": "postWispsNameStop",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Wisp"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Unauthorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Conflict"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service Unavailable"
          }
        },
        "security": [
          {
            "teamToken": []
          }
        ],
        "summary": "Stop; records intent stopped",
        "tags": [
          "stop"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.example.com"
    }
  ]
}
