{
  "components": {
    "parameters": {
      "page": {
        "description": "Page number, from 1",
        "in": "query",
        "name": "page",
        "required": false,
        "schema": {
          "default": 1,
          "minimum": 1,
          "type": "integer"
        }
      },
      "pageSize": {
        "description": "Items per page",
        "in": "query",
        "name": "pageSize",
        "required": false,
        "schema": {
          "default": 25,
          "maximum": 200,
          "minimum": 1,
          "type": "integer"
        }
      },
      "workspace": {
        "description": "Act in this workspace (id or name) instead of the current one",
        "in": "header",
        "name": "X-Spitfire-Workspace",
        "required": false,
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "Error": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "Error"
      },
      "Forbidden": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "Role too low, or an API token on a route it may not call (`forbidden`, `api_token_scope`)"
      },
      "Unauthorized": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "description": "No or invalid credential (`unauthorized`)"
      }
    },
    "schemas": {
      "Envelope": {
        "properties": {
          "data": {
            "description": "The answer; its shape depends on the operation"
          },
          "msg": {
            "type": "string"
          },
          "success": {
            "const": true,
            "type": "boolean"
          },
          "traceId": {
            "description": "W3C trace id of the request",
            "type": "string"
          }
        },
        "required": [
          "success",
          "data",
          "msg",
          "traceId"
        ],
        "type": "object"
      },
      "Error": {
        "properties": {
          "data": {
            "type": "null"
          },
          "error": {
            "properties": {
              "code": {
                "examples": [
                  "bad_request",
                  "unauthorized",
                  "forbidden",
                  "api_token_scope",
                  "not_found",
                  "conflict",
                  "too_many_attempts",
                  "internal"
                ],
                "type": "string"
              },
              "details": {},
              "message": {
                "type": "string"
              },
              "requestId": {
                "description": "On a 5xx: the id to quote to support",
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "msg": {
            "type": "string"
          },
          "success": {
            "const": false,
            "type": "boolean"
          },
          "traceId": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "msg",
          "traceId",
          "error"
        ],
        "type": "object"
      },
      "PageEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Envelope"
          },
          {
            "properties": {
              "data": {
                "items": {},
                "type": "array"
              },
              "total": {
                "description": "Items in all pages",
                "type": "integer"
              },
              "totalPages": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        ]
      },
      "ScimError": {
        "properties": {
          "detail": {
            "type": "string"
          },
          "schemas": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "scimType": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "description": "A session access token (POST /api/v1/auth/login) or a personal API token (sfpat_...).",
        "scheme": "bearer",
        "type": "http"
      },
      "gateToken": {
        "description": "The push gate's token (sfgate_...).",
        "scheme": "bearer",
        "type": "http"
      },
      "otlpToken": {
        "description": "An OTLP receiver token (Observability → connection).",
        "scheme": "bearer",
        "type": "http"
      },
      "scimToken": {
        "description": "The SCIM token (Single sign-on page).",
        "scheme": "bearer",
        "type": "http"
      },
      "towerToken": {
        "description": "A Tower's token (sftower_...), used by the Tower process.",
        "scheme": "bearer",
        "type": "http"
      },
      "updaterToken": {
        "description": "The updater container's token.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Spitfire's HTTP API: everything the web UI, the mobile app and the CLI do goes through it.\n\n## Authentication\n\nSend `Authorization: Bearer \u003ctoken\u003e`. Two kinds of token work:\n\n- **Session access token**: from `POST /api/v1/auth/login` (and `/auth/mfa` when two-step verification is on), renewed with `POST /api/v1/auth/refresh`. Short-lived; what the web UI and the mobile app use.\n- **Personal API token** (`sfpat_...`): created from the user menu → API tokens, shown once. It acts as its user, with the user's role and groups. It may call every GET (except listing API tokens) and only these writes: start a run, stop a run, validate and plan a scenario, start, stop and continue a comparative run, claim the PR comment repository, announce a deploy, planned maintenance. Elsewhere it gets 403 `api_token_scope`. Operations marked *session only* refuse API tokens.\n\nEach operation's `x-spitfire-access` names the role it needs: `public`, `user`, `workspace-admin` or `installation-admin` (the token's user must have it), or the process token it takes (Tower, gate, updater, OTLP receiver, SCIM). `x-spitfire-api-token` says whether a personal API token may call it.\n\n**Workspace**: requests act in the user's current workspace; to pick another one send `X-Spitfire-Workspace: \u003cid or name\u003e` (or `?workspace=`).\n\n**SCIM** (`/scim/v2`) takes its own token, created on the Single sign-on page by an installation admin, and answers in SCIM's own format.\n\n## Answers and errors\n\nEvery JSON answer under `/api/v1` is an envelope:\n\n```json\n{ \"success\": true, \"data\": { }, \"msg\": \"\", \"traceId\": \"4bf92f35...\" }\n```\n\nOn an error `success` is false and `error` carries a stable `code` (`bad_request`, `unauthorized`, `forbidden`, `api_token_scope`, `not_found`, `conflict`, `too_many_attempts`, `internal` ...), a `message`, sometimes `details`, and on a 5xx a `requestId` to quote to support. An unknown path under `/api/v1` is a 404 envelope too.\n\n## Pagination\n\nPaged lists (tests, runs, comparative runs, audit log, system events) take `page` (from 1) and `pageSize` (default 25, at most 200); the envelope adds `total` and `totalPages`. Other lists answer in full.\n\n## Limits\n\nSign-in, password reset and SSO routes are rate limited per address (429 `too_many_attempts`). Request bodies are JSON (UTF-8), at most 8 MB unless an operation says otherwise.",
    "title": "Spitfire API",
    "version": "1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/api-tokens": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_api_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Every user's API tokens",
        "tags": [
          "API tokens"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/audit": {
      "get": {
        "operationId": "get_audit",
        "parameters": [
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageEnvelope"
                }
              }
            },
            "description": "A page"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Audit log",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/audit/export": {
      "get": {
        "operationId": "get_audit_export",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {}
            },
            "description": "CSV download"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Export the audit log (CSV)",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "operationId": "post_auth_login",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Sign in with e-mail and password",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "operationId": "post_auth_logout",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Sign out",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/me": {
      "get": {
        "operationId": "get_auth_me",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The signed-in user (same as GET /me)",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/auth/mfa": {
      "post": {
        "operationId": "post_auth_mfa",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Complete sign-in with a two-step verification code",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/oidc/callback": {
      "get": {
        "operationId": "get_auth_oidc_callback",
        "responses": {
          "302": {
            "description": "302 redirect back to the web UI"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "OIDC callback (redirect)",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/oidc/start": {
      "get": {
        "operationId": "get_auth_oidc_start",
        "responses": {
          "302": {
            "description": "302 redirect to the identity provider"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Start OIDC sign-in (redirect)",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/password/check": {
      "post": {
        "operationId": "post_auth_password_check",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Check a password reset link",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/password/forgot": {
      "post": {
        "operationId": "post_auth_password_forgot",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Send a password reset link",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/password/reset": {
      "post": {
        "operationId": "post_auth_password_reset",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Set a new password with a reset link",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/refresh": {
      "post": {
        "operationId": "post_auth_refresh",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Refresh the access token",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/saml/acs": {
      "post": {
        "operationId": "post_auth_saml_acs",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "302": {
            "description": "302 redirect back to the web UI"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "SAML assertion consumer service",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/saml/metadata": {
      "get": {
        "operationId": "get_auth_saml_metadata",
        "responses": {
          "200": {
            "content": {
              "application/samlmetadata+xml": {}
            },
            "description": "SP metadata"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "SAML service provider metadata (XML)",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/saml/start": {
      "get": {
        "operationId": "get_auth_saml_start",
        "responses": {
          "302": {
            "description": "302 redirect to the identity provider"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Start SAML sign-in (redirect)",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/sso": {
      "get": {
        "operationId": "get_auth_sso",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Sign-in methods offered (SSO buttons)",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/auth/sso/exchange": {
      "post": {
        "operationId": "post_auth_sso_exchange",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Exchange a one-time SSO code for tokens",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/compare": {
      "get": {
        "operationId": "get_compare",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Compare runs side by side",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/comparison-shares/{id}": {
      "delete": {
        "operationId": "delete_comparison_shares_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke a comparison share link",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/comparisons": {
      "get": {
        "operationId": "get_comparisons",
        "parameters": [
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageEnvelope"
                }
              }
            },
            "description": "A page"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List comparative runs",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/comparisons/{id}": {
      "get": {
        "operationId": "get_comparisons_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a comparative run",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/comparisons/{id}/continue": {
      "post": {
        "operationId": "post_comparisons_by_id_continue",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Continue a sequential comparison (version switched)",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/comparisons/{id}/report": {
      "get": {
        "operationId": "get_comparisons_by_id_report",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "html (default) or pdf",
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {}
            },
            "description": "The report (application/pdf with format=pdf)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Comparison report (HTML or PDF)",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/comparisons/{id}/shares": {
      "get": {
        "operationId": "get_comparisons_by_id_shares",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A comparison's share links",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_comparisons_by_id_shares",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a comparison share link",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/comparisons/{id}/stop": {
      "post": {
        "operationId": "post_comparisons_by_id_stop",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Stop a comparative run",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/connections": {
      "get": {
        "operationId": "get_connections",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List connections",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_connections",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/sql/read-only-script": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_connections_sql_read_only_script",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Script for a read-only database user",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/ssh/host-key": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_ssh_host_key",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Read an SSH host key",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}": {
      "delete": {
        "operationId": "delete_connections_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_connections_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "operationId": "put_connections_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/grpc/methods": {
      "get": {
        "operationId": "get_connections_by_id_grpc_methods",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "gRPC methods of a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/connections/{id}/schema": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_connections_by_id_schema",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Schema overview",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/schema/consent-preview": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_by_id_schema_consent_preview",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Preview a schema read consent",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/schema/consents": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_connections_by_id_schema_consents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Schema read consents",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_by_id_schema_consents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Record a schema read consent",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/schema/consents/{cid}/revoke": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_by_id_schema_consents_by_cid_revoke",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke a schema read consent",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/schema/read": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_by_id_schema_read",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Read the schema",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/schema/samples": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_by_id_schema_samples",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Read sample values",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/schema/suggest": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_connections_by_id_schema_suggest",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Suggest queries from the schema",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/sql/stats": {
      "post": {
        "operationId": "post_connections_by_id_sql_stats",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "SQL statement statistics of a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/connections/{id}/test": {
      "post": {
        "operationId": "post_connections_by_id_test",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Test a connection",
        "tags": [
          "Connections"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/convert": {
      "post": {
        "operationId": "post_convert",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Convert a test script",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/dashboard": {
      "get": {
        "operationId": "get_dashboard",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Dashboard",
        "tags": [
          "Dashboard"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/data-files": {
      "get": {
        "operationId": "get_data_files",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List data files",
        "tags": [
          "Data files"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_data_files",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a data file",
        "tags": [
          "Data files"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/data-files/generate": {
      "post": {
        "operationId": "post_data_files_generate",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Generate a data file",
        "tags": [
          "Data files"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/data-files/{id}": {
      "delete": {
        "operationId": "delete_data_files_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a data file",
        "tags": [
          "Data files"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_data_files_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a data file",
        "tags": [
          "Data files"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/demo-target": {
      "get": {
        "operationId": "get_demo_target",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The built-in demo target's address",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/deploys": {
      "get": {
        "operationId": "get_deploys",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List deploys",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_deploys",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Announce a deploy (wakes the monitors it touches)",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/faults/dry-run": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_faults_dry_run",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Dry-run a fault",
        "tags": [
          "Fault injection"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/gate-tokens": {
      "get": {
        "operationId": "get_gate_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List gate tokens",
        "tags": [
          "Gate"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_gate_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a gate token",
        "tags": [
          "Gate"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/gate-tokens/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_gate_tokens_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke a gate token",
        "tags": [
          "Gate"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/gate/jobs": {
      "get": {
        "operationId": "get_gate_jobs",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "gateToken": []
          }
        ],
        "summary": "Pending push jobs (gate process)",
        "tags": [
          "Gate"
        ],
        "x-spitfire-access": "gate",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/gate/results": {
      "post": {
        "operationId": "post_gate_results",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "gateToken": []
          }
        ],
        "summary": "Push delivery results (gate process)",
        "tags": [
          "Gate"
        ],
        "x-spitfire-access": "gate",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/graphql/schema": {
      "post": {
        "operationId": "post_graphql_schema",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Read a GraphQL schema",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/groups": {
      "get": {
        "operationId": "get_groups",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List groups",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_groups",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a group",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/groups/{id}": {
      "delete": {
        "operationId": "delete_groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a group",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a group",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": true
      },
      "put": {
        "operationId": "put_groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a group",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/import/create": {
      "post": {
        "operationId": "post_import_create",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create tests from an import",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/import/parse": {
      "post": {
        "operationId": "post_import_parse",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Parse an import (OpenAPI, Postman, HAR, ...)",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/integrations": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_integrations",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Integrations (general, OTLP, SMTP)",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/integrations/general": {
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_integrations_general",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save general settings",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/integrations/otlp": {
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_integrations_otlp",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save OTLP export settings",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/integrations/otlp/test": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_integrations_otlp_test",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Test OTLP export",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/integrations/smtp": {
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_integrations_smtp",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save SMTP settings",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/integrations/smtp/test": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_integrations_smtp_test",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Send a test e-mail",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/license": {
      "delete": {
        "operationId": "delete_license",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Remove the license key",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_license",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "License, plan and limits",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "operationId": "put_license",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Install a license key",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/license/key": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_license_key",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The installed license key",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/license/pr-repo": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_license_pr_repo",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Reset the PR comment repository",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "post": {
        "operationId": "post_license_pr_repo",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Claim the free plan's PR comment repository",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/license/trials/{feature}": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_license_trials_by_feature",
        "parameters": [
          {
            "in": "path",
            "name": "feature",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Start an add-on trial",
        "tags": [
          "License"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/maintenance": {
      "post": {
        "operationId": "post_maintenance",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Start or end planned maintenance",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/me": {
      "get": {
        "operationId": "get_me",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The signed-in user",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/me/api-tokens": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_me_api_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "My API tokens",
        "tags": [
          "API tokens"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_api_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create an API token (shown once)",
        "tags": [
          "API tokens"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/api-tokens/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_me_api_tokens_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke an API token",
        "tags": [
          "API tokens"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/devices": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_me_devices",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "My registered phones",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_devices",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Register a phone for push notifications",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/devices/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_me_devices_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Remove a phone",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_me_devices_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a phone (name, events, push token)",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/mfa": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_me_mfa",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "My two-step verification status",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/mfa/disable": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_mfa_disable",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Turn off two-step verification",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/mfa/enable": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_mfa_enable",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Turn on two-step verification",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/mfa/recovery-codes": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_mfa_recovery_codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create new recovery codes",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/mfa/setup": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_mfa_setup",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Start two-step verification setup (secret and QR)",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/mfa/skip": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_mfa_skip",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Postpone the two-step verification offer",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/password": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_me_password",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Change my password",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/workspace": {
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_me_workspace",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Switch the current workspace",
        "tags": [
          "Account"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/me/write-approvals": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_me_write_approvals",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Confirmations waiting for me",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/metrics/series/{id}": {
      "get": {
        "operationId": "get_metrics_series_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A series' values over a time range",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/metrics/settings": {
      "get": {
        "operationId": "get_metrics_settings",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Continuous metrics settings (consent, retention)",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_metrics_settings",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save continuous metrics settings",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/metrics/sources": {
      "get": {
        "operationId": "get_metrics_sources",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Metric sources (servers, databases)",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/metrics/sources/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_metrics_sources_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a metric source and its data",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/metrics/sources/{id}/series": {
      "get": {
        "operationId": "get_metrics_sources_by_id_series",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A source's metric series",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/mock-services": {
      "get": {
        "operationId": "get_mock_services",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List mock services",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_mock_services",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a mock service",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/mock-services/export": {
      "get": {
        "operationId": "get_mock_services_export",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Export mock services",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/mock-services/stats": {
      "get": {
        "operationId": "get_mock_services_stats",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Mock service statistics",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/mock-services/templates": {
      "get": {
        "operationId": "get_mock_services_templates",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Mock service templates",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/mock-services/{id}": {
      "delete": {
        "operationId": "delete_mock_services_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a mock service",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_mock_services_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a mock service",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "patch": {
        "operationId": "patch_mock_services_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Change part of a mock service",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "operationId": "put_mock_services_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a mock service",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/mock-services/{id}/requests": {
      "get": {
        "operationId": "get_mock_services_by_id_requests",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Requests a mock service received",
        "tags": [
          "Mock services"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/monitors": {
      "get": {
        "operationId": "get_monitors",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List monitors",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/monitors/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_monitors_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a monitor",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_monitors_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a monitor",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_monitors_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a monitor",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/monitors/{id}/check": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_monitors_by_id_check",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Check a monitor now",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/monitors/{id}/checks": {
      "get": {
        "operationId": "get_monitors_by_id_checks",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A monitor's checks",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/monitors/{id}/dashboard": {
      "get": {
        "operationId": "get_monitors_by_id_dashboard",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Monitor dashboard (uptime, SLO, p95)",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/monitors/{id}/incidents": {
      "get": {
        "operationId": "get_monitors_by_id_incidents",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A monitor's incidents",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/notifications": {
      "get": {
        "operationId": "get_notifications",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List notifications",
        "tags": [
          "Notifications"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/notifications/check": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_notifications_check",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Check for product notices now",
        "tags": [
          "Notifications"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/notifications/consent": {
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_notifications_consent",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Consent to product notices",
        "tags": [
          "Notifications"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/notifications/read": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_notifications_read",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Mark notifications read",
        "tags": [
          "Notifications"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/observability": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_observability",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Observability connections",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/observability/connections": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_observability_connections",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create an observability connection",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/observability/connections/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_observability_connections_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete an observability connection",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_observability_connections_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update an observability connection",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/observability/connections/{id}/test": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_observability_connections_by_id_test",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Test an observability connection",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/observability/connections/{id}/token": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_observability_connections_by_id_token",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Rotate an OTLP receiver token",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/openapi.json": {
      "get": {
        "operationId": "get_openapi_json",
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "OpenAPI 3.1 document"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "This API description (OpenAPI 3.1)",
        "tags": [
          "Reference"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/push/settings": {
      "get": {
        "operationId": "get_push_settings",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Push notification settings",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_push_settings",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save push notification settings",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/push/status": {
      "get": {
        "operationId": "get_push_status",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Whether push notifications are available",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/retention": {
      "get": {
        "operationId": "get_retention",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Data retention",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "put": {
        "operationId": "put_retention",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save data retention",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runner-dist/{file}": {
      "get": {
        "operationId": "get_runner_dist_by_file",
        "parameters": [
          {
            "in": "path",
            "name": "file",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {}
            },
            "description": "The file"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Download a runner binary",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runner-endpoint": {
      "get": {
        "operationId": "get_runner_endpoint",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Address runners connect to",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runner-settings": {
      "get": {
        "operationId": "get_runner_settings",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Runner settings",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "put": {
        "operationId": "put_runner_settings",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save runner settings",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runner-tokens": {
      "get": {
        "operationId": "get_runner_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List runner tokens",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_runner_tokens",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a runner token",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runner-tokens/{id}": {
      "delete": {
        "operationId": "delete_runner_tokens_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke a runner token",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runners": {
      "get": {
        "operationId": "get_runners",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List runners",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runners/on-demand": {
      "get": {
        "operationId": "get_runners_on_demand",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "On-demand runners status",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runners/{id}": {
      "delete": {
        "operationId": "delete_runners_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Remove a runner",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runners/{id}/drain": {
      "post": {
        "operationId": "post_runners_by_id_drain",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Drain a runner",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runners/{id}/update": {
      "post": {
        "operationId": "post_runners_by_id_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a runner",
        "tags": [
          "Runners"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runs": {
      "get": {
        "operationId": "get_runs",
        "parameters": [
          {
            "description": "Runs of one test",
            "in": "query",
            "name": "testId",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Comma-separated statuses (queued, running, passed, failed, ...)",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Comma-separated run ids",
            "in": "query",
            "name": "ids",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageEnvelope"
                }
              }
            },
            "description": "A page"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List runs",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}": {
      "delete": {
        "operationId": "delete_runs_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a run",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_runs_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a run",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "patch": {
        "operationId": "patch_runs_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a run (note, tags)",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runs/{id}/abort": {
      "post": {
        "operationId": "post_runs_by_id_abort",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Abort a run (mobile, audited with the device)",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runs/{id}/backend": {
      "get": {
        "operationId": "get_runs_by_id_backend",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Backend tab (traces, metrics)",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/backend/overlay": {
      "get": {
        "operationId": "get_runs_by_id_backend_overlay",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Backend metrics over the run's timeline",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/backend/recompute": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_runs_by_id_backend_recompute",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Recompute the backend analysis",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runs/{id}/backend/traces/{trace}": {
      "get": {
        "operationId": "get_runs_by_id_backend_traces_by_trace",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "trace",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "One backend trace",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/capacity": {
      "get": {
        "operationId": "get_runs_by_id_capacity",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Capacity estimate",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_runs_by_id_capacity",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save capacity settings",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runs/{id}/error-samples": {
      "get": {
        "operationId": "get_runs_by_id_error_samples",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run error samples",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/events": {
      "get": {
        "operationId": "get_runs_by_id_events",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run event feed",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/export": {
      "get": {
        "operationId": "get_runs_by_id_export",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "summary or timeseries",
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/csv": {}
            },
            "description": "CSV download"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Export a run's data (CSV)",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/faults": {
      "get": {
        "operationId": "get_runs_by_id_faults",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Faults injected in a run",
        "tags": [
          "Fault injection"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/findings": {
      "get": {
        "operationId": "get_runs_by_id_findings",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run findings",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/report": {
      "get": {
        "operationId": "get_runs_by_id_report",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "html (default) or pdf",
            "in": "query",
            "name": "format",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {}
            },
            "description": "The report (application/pdf with format=pdf)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run report (HTML or PDF)",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/shares": {
      "get": {
        "operationId": "get_runs_by_id_shares",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A run's share links",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_runs_by_id_shares",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a run share link",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/runs/{id}/stop": {
      "post": {
        "operationId": "post_runs_by_id_stop",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Stop a run",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/stream": {
      "get": {
        "operationId": "get_runs_by_id_stream",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/event-stream": {}
            },
            "description": "Server-sent events (Last-Event-ID resumes)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Live run updates (server-sent events)",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/summary": {
      "get": {
        "operationId": "get_runs_by_id_summary",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run summary",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/runs/{id}/timeline": {
      "get": {
        "operationId": "get_runs_by_id_timeline",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run timeline (series)",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/scenarios/dry-run": {
      "post": {
        "operationId": "post_scenarios_dry_run",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Dry-run a scenario once",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/scenarios/plan": {
      "post": {
        "operationId": "post_scenarios_plan",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Plan a scenario (load shape, runners)",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/scenarios/validate": {
      "post": {
        "operationId": "post_scenarios_validate",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Validate a scenario",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/schedules": {
      "get": {
        "operationId": "get_schedules",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List schedules",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/schedules/preview": {
      "get": {
        "operationId": "get_schedules_preview",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Preview the next times of a schedule",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/schedules/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_schedules_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a schedule",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_schedules_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a schedule",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/schedules/{id}/run": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_schedules_by_id_run",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run a schedule now",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/audit-streams": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_settings_audit_streams",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List audit streams",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_settings_audit_streams",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create an audit stream",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/audit-streams/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_settings_audit_streams_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete an audit stream",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_settings_audit_streams_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update an audit stream",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/audit-streams/{id}/test": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_settings_audit_streams_by_id_test",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Send a test event to an audit stream",
        "tags": [
          "Audit"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/fault-injection": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_settings_fault_injection",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Fault injection settings",
        "tags": [
          "Fault injection"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_settings_fault_injection",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save fault injection settings",
        "tags": [
          "Fault injection"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/mfa": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_settings_mfa",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Two-step verification policy",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_settings_mfa",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save the two-step verification policy",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/peak-hours": {
      "get": {
        "operationId": "get_settings_peak_hours",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Peak hours",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_settings_peak_hours",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save peak hours",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/sso": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_settings_sso",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "SSO settings (OIDC, SAML, LDAP)",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_settings_sso",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Save SSO settings",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/sso/scim-token": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_settings_sso_scim_token",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create or rotate the SCIM token",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/sso/test-ldap": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_settings_sso_test_ldap",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Test the LDAP settings",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/sso/test-oidc": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_settings_sso_test_oidc",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Test the OIDC settings",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/settings/sso/test-saml": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_settings_sso_test_saml",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Test the SAML settings",
        "tags": [
          "Security settings"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/setup": {
      "get": {
        "operationId": "get_setup",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "First-run setup status",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      },
      "post": {
        "operationId": "post_setup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [],
        "summary": "Create the first administrator",
        "tags": [
          "Sign-in"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/shares/{id}": {
      "delete": {
        "operationId": "delete_shares_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke a run share link",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/sql/split": {
      "post": {
        "operationId": "post_sql_split",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Split a SQL script into statements",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/sql/stats": {
      "post": {
        "operationId": "post_sql_stats",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Statements from SQL statistics",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/status-pages": {
      "get": {
        "operationId": "get_status_pages",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List status pages",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": true
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_status_pages",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a status page",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/status-pages/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_status_pages_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a status page",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_status_pages_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a status page",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/status-pages/{id}/rotate": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_status_pages_by_id_rotate",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Rotate a status page link",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/support/bundle": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_support_bundle",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/zip": {}
            },
            "description": "The support bundle"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Download the support bundle (zip)",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/support/bundle/preview": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_support_bundle_preview",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Preview the support bundle",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/system-events": {
      "get": {
        "operationId": "get_system_events",
        "parameters": [
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageEnvelope"
                }
              }
            },
            "description": "A page"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List system events",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/system-events/meta": {
      "get": {
        "operationId": "get_system_events_meta",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "System event sources and levels",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/telemetry": {
      "get": {
        "operationId": "get_telemetry",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Health sharing status",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/telemetry/consent": {
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_telemetry_consent",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Turn health sharing on or off",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/telemetry/rotate": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_telemetry_rotate",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Rotate the anonymous installation id",
        "tags": [
          "Support"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/test-templates": {
      "get": {
        "operationId": "get_test_templates",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List test templates",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_test_templates",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a test template",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/test-templates/{id}": {
      "delete": {
        "operationId": "delete_test_templates_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a test template",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "operationId": "put_test_templates_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a test template",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests": {
      "get": {
        "operationId": "get_tests",
        "parameters": [
          {
            "description": "Text search in the name",
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "true lists archived tests",
            "in": "query",
            "name": "archived",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageEnvelope"
                }
              }
            },
            "description": "A page"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List tests",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_tests",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a test",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}": {
      "delete": {
        "operationId": "delete_tests_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Archive a test",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_tests_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a test",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "operationId": "put_tests_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a test",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/baseline": {
      "put": {
        "operationId": "put_tests_by_id_baseline",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Set the baseline run",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/budgets": {
      "put": {
        "operationId": "put_tests_by_id_budgets",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Set performance budgets",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/calibrations": {
      "get": {
        "operationId": "get_tests_by_id_calibrations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A test's calibrations",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_tests_by_id_calibrations",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Start a calibration",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/comparisons": {
      "post": {
        "operationId": "post_tests_by_id_comparisons",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Start a comparative run",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/tests/{id}/comparisons/precheck": {
      "post": {
        "operationId": "post_tests_by_id_comparisons_precheck",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Pre-check a comparative run",
        "tags": [
          "Comparisons"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/monitors": {
      "get": {
        "operationId": "get_tests_by_id_monitors",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A test's monitors",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_tests_by_id_monitors",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a synthetic monitor",
        "tags": [
          "Monitors"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/runs": {
      "post": {
        "operationId": "post_tests_by_id_runs",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Start a run",
        "tags": [
          "Runs"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/tests/{id}/schedules": {
      "get": {
        "operationId": "get_tests_by_id_schedules",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A test's schedules",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_tests_by_id_schedules",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a schedule",
        "tags": [
          "Schedules"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/step-trend": {
      "get": {
        "operationId": "get_tests_by_id_step_trend",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Per-step trend of a test",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/tests/{id}/trend": {
      "get": {
        "operationId": "get_tests_by_id_trend",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Run trend of a test",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/tests/{id}/versions": {
      "get": {
        "operationId": "get_tests_by_id_versions",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List versions",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/tests/{id}/versions/{v}": {
      "get": {
        "operationId": "get_tests_by_id_versions_by_v",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "v",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A test version",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/tests/{id}/versions/{v}/restore": {
      "post": {
        "operationId": "post_tests_by_id_versions_by_v_restore",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "v",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Restore a test version",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tests/{id}/write-approvals": {
      "post": {
        "operationId": "post_tests_by_id_write_approvals",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Ask for a data-write confirmation on the phone",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tower/hello": {
      "post": {
        "operationId": "post_tower_hello",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "towerToken": []
          }
        ],
        "summary": "Tower handshake (Tower process)",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "tower",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/tower/metrics": {
      "post": {
        "operationId": "post_tower_metrics",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "towerToken": []
          }
        ],
        "summary": "Send metrics (Tower process)",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "tower",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/towers": {
      "get": {
        "operationId": "get_towers",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List Towers",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_towers",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a Tower (returns its token once)",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/towers/collector-config": {
      "post": {
        "operationId": "post_towers_collector_config",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Generate a Collector configuration",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/towers/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_towers_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Revoke a Tower",
        "tags": [
          "Towers and metrics"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/traffic/create": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_traffic_create",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a test from traffic",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/traffic/parse": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_traffic_parse",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Parse a traffic log",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/traffic/profile": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_traffic_profile",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Traffic profile from a log",
        "tags": [
          "Tests"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/updater/sync": {
      "post": {
        "operationId": "post_updater_sync",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "updaterToken": []
          }
        ],
        "summary": "Updater container sync (updater process)",
        "tags": [
          "Updates"
        ],
        "x-spitfire-access": "updater",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/updates": {
      "get": {
        "operationId": "get_updates",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update status and the latest version",
        "tags": [
          "Updates"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/updates/apply": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_updates_apply",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Apply an update (one-click update)",
        "tags": [
          "Updates"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/updates/apply/cancel": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_updates_apply_cancel",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Cancel a pending update",
        "tags": [
          "Updates"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/updates/check": {
      "post": {
        "operationId": "post_updates_check",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Check for updates now",
        "tags": [
          "Updates"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/users": {
      "get": {
        "operationId": "get_users",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List users",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": true
      },
      "post": {
        "operationId": "post_users",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a user",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/users/{id}": {
      "patch": {
        "operationId": "patch_users_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a user",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/users/{id}/mfa": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_users_by_id_mfa",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Reset a user's two-step verification",
        "tags": [
          "Users and groups"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/webhooks": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_webhooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Notification channels",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_webhooks",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a notification channel",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/webhooks/sms-preview": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_webhooks_sms_preview",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Preview an SMS message",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/webhooks/{id}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_webhooks_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete a notification channel",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_webhooks_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a notification channel",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/webhooks/{id}/deliveries": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_webhooks_by_id_deliveries",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A channel's deliveries",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/webhooks/{id}/test": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_webhooks_by_id_test",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Send a test notification",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/webhooks/{id}/weekly": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_webhooks_by_id_weekly",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Send the weekly summary now",
        "tags": [
          "Integrations"
        ],
        "x-spitfire-access": "workspace-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/workspaces": {
      "get": {
        "operationId": "get_workspaces",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List workspaces",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_workspaces",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a workspace",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "installation-admin",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/workspaces/{id}": {
      "get": {
        "operationId": "get_workspaces_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Get a workspace",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "patch": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "patch_workspaces_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Update a workspace",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/workspaces/{id}/logo": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_workspaces_by_id_logo",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Delete the workspace logo",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_workspaces_by_id_logo",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "image/*": {}
            },
            "description": "The logo image"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Workspace logo (image)",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_workspaces_by_id_logo",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "image/*": {
              "schema": {
                "format": "binary",
                "type": "string"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Upload the workspace logo",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/workspaces/{id}/members": {
      "get": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "get_workspaces_by_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "List workspace members",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_workspaces_by_id_members",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Add a workspace member",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/workspaces/{id}/members/{uid}": {
      "delete": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "delete_workspaces_by_id_members_by_uid",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "uid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Remove a workspace member",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      },
      "put": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "put_workspaces_by_id_members_by_uid",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "uid",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Change a member's role",
        "tags": [
          "Workspaces"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/write-approvals/{id}": {
      "get": {
        "operationId": "get_write_approvals_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "A data-write confirmation's status",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/api/v1/write-approvals/{id}/approve": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_write_approvals_by_id_approve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Approve a data write",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/write-approvals/{id}/cancel": {
      "post": {
        "operationId": "post_write_approvals_by_id_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Cancel a data-write confirmation",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/api/v1/write-approvals/{id}/reject": {
      "post": {
        "description": "Session only: a personal API token gets 403 `api_token_scope`.",
        "operationId": "post_write_approvals_by_id_reject",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            },
            "description": "OK (200) or created (201)"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Reject a data write",
        "tags": [
          "Mobile"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": false
      }
    },
    "/healthz": {
      "get": {
        "operationId": "get_healthz",
        "responses": {
          "204": {
            "description": "Alive (204, no body; HEAD works too)"
          }
        },
        "security": [],
        "summary": "Liveness check (204)",
        "tags": [
          "Health"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/metrics": {
      "get": {
        "operationId": "get_metrics",
        "parameters": [
          {
            "$ref": "#/components/parameters/workspace"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/plain": {}
            },
            "description": "Prometheus text format"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Prometheus metrics (scrape with an API token)",
        "tags": [
          "Health"
        ],
        "x-spitfire-access": "user",
        "x-spitfire-api-token": true
      }
    },
    "/otlp/v1/logs": {
      "post": {
        "operationId": "post_otlp_v1_logs",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            },
            "application/x-protobuf": {
              "schema": {
                "format": "binary",
                "type": "string"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/x-protobuf": {}
            },
            "description": "OTLP export response"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "otlpToken": []
          }
        ],
        "summary": "OTLP/HTTP logs receiver",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "otlp",
        "x-spitfire-api-token": false
      }
    },
    "/otlp/v1/metrics": {
      "post": {
        "operationId": "post_otlp_v1_metrics",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            },
            "application/x-protobuf": {
              "schema": {
                "format": "binary",
                "type": "string"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/x-protobuf": {}
            },
            "description": "OTLP export response"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "otlpToken": []
          }
        ],
        "summary": "OTLP/HTTP metrics receiver",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "otlp",
        "x-spitfire-api-token": false
      }
    },
    "/otlp/v1/traces": {
      "post": {
        "operationId": "post_otlp_v1_traces",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            },
            "application/x-protobuf": {
              "schema": {
                "format": "binary",
                "type": "string"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/x-protobuf": {}
            },
            "description": "OTLP export response"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "otlpToken": []
          }
        ],
        "summary": "OTLP/HTTP traces receiver",
        "tags": [
          "Observability"
        ],
        "x-spitfire-access": "otlp",
        "x-spitfire-api-token": false
      }
    },
    "/r/{token}": {
      "get": {
        "operationId": "get_r_by_token",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {}
            },
            "description": "The report page"
          }
        },
        "security": [],
        "summary": "Shared run report (HTML; the link is the key)",
        "tags": [
          "Public links"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/r/{token}/pdf": {
      "get": {
        "operationId": "get_r_by_token_pdf",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/pdf": {}
            },
            "description": "The report as PDF"
          }
        },
        "security": [],
        "summary": "Shared run report as PDF",
        "tags": [
          "Public links"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/readyz": {
      "get": {
        "operationId": "get_readyz",
        "responses": {
          "204": {
            "description": "Ready (204; 503 with a text reason when the database cannot be reached)"
          }
        },
        "security": [],
        "summary": "Readiness check (database reachable)",
        "tags": [
          "Health"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/s/{token}": {
      "get": {
        "operationId": "get_s_by_token",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {}
            },
            "description": "The status page (the JSON envelope with ?format=json)"
          }
        },
        "security": [],
        "summary": "Public status page",
        "tags": [
          "Public links"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/s/{token}/badge.svg": {
      "get": {
        "operationId": "get_s_by_token_badge_svg",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "image/svg+xml": {}
            },
            "description": "The badge"
          }
        },
        "security": [],
        "summary": "Status page badge (SVG)",
        "tags": [
          "Public links"
        ],
        "x-spitfire-access": "public",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/Groups": {
      "get": {
        "operationId": "get_scim_Groups",
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "List groups",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "post": {
        "operationId": "post_scim_Groups",
        "requestBody": {
          "content": {
            "application/scim+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Create a group",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/Groups/{id}": {
      "delete": {
        "operationId": "delete_scim_Groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Delete a group",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_scim_Groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Get a group",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "patch": {
        "operationId": "patch_scim_Groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/scim+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Change a group",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "put": {
        "operationId": "put_scim_Groups_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/scim+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Replace a group",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/ResourceTypes": {
      "get": {
        "operationId": "get_scim_ResourceTypes",
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "SCIM resource types",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/Schemas": {
      "get": {
        "operationId": "get_scim_Schemas",
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "SCIM schemas",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/ServiceProviderConfig": {
      "get": {
        "operationId": "get_scim_ServiceProviderConfig",
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "SCIM service provider configuration",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/Users": {
      "get": {
        "operationId": "get_scim_Users",
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "List users",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "post": {
        "operationId": "post_scim_Users",
        "requestBody": {
          "content": {
            "application/scim+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "2XX": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Create a user",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    },
    "/scim/v2/Users/{id}": {
      "delete": {
        "operationId": "delete_scim_Users_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Delete a user",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "get": {
        "operationId": "get_scim_Users_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Get a user",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "patch": {
        "operationId": "patch_scim_Users_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/scim+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Change a user",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      },
      "put": {
        "operationId": "put_scim_Users_by_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/scim+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "SCIM resource"
          },
          "default": {
            "content": {
              "application/scim+json": {
                "schema": {
                  "$ref": "#/components/schemas/ScimError"
                }
              }
            },
            "description": "SCIM error"
          }
        },
        "security": [
          {
            "scimToken": []
          }
        ],
        "summary": "Replace a user",
        "tags": [
          "SCIM"
        ],
        "x-spitfire-access": "scim",
        "x-spitfire-api-token": false
      }
    }
  },
  "servers": [
    {
      "description": "This Spitfire controller",
      "url": "/"
    }
  ],
  "tags": [
    {
      "description": "Signing in, tokens, two-step verification, password reset and SSO (OIDC, SAML).",
      "name": "Sign-in"
    },
    {
      "description": "The signed-in user: profile, workspace, password, two-step verification.",
      "name": "Account"
    },
    {
      "description": "Personal API tokens (sfpat_) for CI pipelines and scripts. Managing tokens needs a browser session.",
      "name": "API tokens"
    },
    {
      "description": "Workspaces, their members and branding.",
      "name": "Workspaces"
    },
    {
      "description": "Users of the installation and the workspace's groups.",
      "name": "Users and groups"
    },
    {
      "description": "SSO and the two-step verification policy (installation admins).",
      "name": "Security settings"
    },
    {
      "description": "Tests, versions, templates, scenarios, imports and conversions.",
      "name": "Tests"
    },
    {
      "description": "Runs: start, stop, results, live stream, reports, exports and share links.",
      "name": "Runs"
    },
    {
      "description": "Comparative runs (A/B, sequential) and side-by-side comparison.",
      "name": "Comparisons"
    },
    {
      "description": "Scheduled runs and peak hours.",
      "name": "Schedules"
    },
    {
      "description": "Synthetic monitors, status pages, deploys and planned maintenance.",
      "name": "Monitors"
    },
    {
      "description": "Runners, their tokens and settings, and data retention.",
      "name": "Runners"
    },
    {
      "description": "Towers and the server and database metrics Collectors send through them.",
      "name": "Towers and metrics"
    },
    {
      "description": "Fault injection settings and the faults injected in a run.",
      "name": "Fault injection"
    },
    {
      "description": "Database, gRPC and other connections a test uses; SQL schema reads with consent.",
      "name": "Connections"
    },
    {
      "description": "Data files tests read (CSV and generated data).",
      "name": "Data files"
    },
    {
      "description": "Mock services the system under test calls.",
      "name": "Mock services"
    },
    {
      "description": "General, SMTP and OTLP settings; notification channels (Slack, Teams, e-mail, webhook, SMS).",
      "name": "Integrations"
    },
    {
      "description": "Observability connections (traces into the run report) and the OTLP/HTTP receiver.",
      "name": "Observability"
    },
    {
      "description": "The audit log, its export and audit streams.",
      "name": "Audit"
    },
    {
      "description": "The bell's notifications and product notices.",
      "name": "Notifications"
    },
    {
      "description": "The mobile app: phones, push notifications, abort and data-write confirmations.",
      "name": "Mobile"
    },
    {
      "description": "The dashboard's figures.",
      "name": "Dashboard"
    },
    {
      "description": "License, plan, limits, add-on trials.",
      "name": "License"
    },
    {
      "description": "Update checks and the one-click update.",
      "name": "Updates"
    },
    {
      "description": "System events, the support bundle and health sharing.",
      "name": "Support"
    },
    {
      "description": "The push gate process and its tokens.",
      "name": "Gate"
    },
    {
      "description": "Shared reports and public status pages: the secret in the link is the key.",
      "name": "Public links"
    },
    {
      "description": "Liveness, readiness and Prometheus metrics.",
      "name": "Health"
    },
    {
      "description": "This description.",
      "name": "Reference"
    },
    {
      "description": "SCIM 2.0 provisioning (RFC 7643/7644) for identity providers; Enterprise plan.",
      "name": "SCIM"
    }
  ]
}
