{
  "openapi": "3.0.0",
  "info": {
    "title": "Warpgate Web Admin",
    "version": "0.13.2"
  },
  "servers": [
    {
      "url": "/@warpgate/admin/api"
    }
  ],
  "tags": [],
  "paths": {
    "/sessions": {
      "get": {
        "parameters": [
          {
            "name": "offset",
            "schema": {
              "type": "integer",
              "format": "uint64"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "limit",
            "schema": {
              "type": "integer",
              "format": "uint64"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "active_only",
            "schema": {
              "type": "boolean"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "logged_in_only",
            "schema": {
              "type": "boolean"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedResponse_SessionSnapshot"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_sessions"
      },
      "delete": {
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "close_all_sessions"
      }
    },
    "/sessions/{id}": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/SessionSnapshot"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_session"
      }
    },
    "/sessions/{id}/recordings": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Recording"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_session_recordings"
      }
    },
    "/sessions/{id}/close": {
      "post": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "201": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "close_session"
      }
    },
    "/recordings/{id}": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Recording"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_recording"
      }
    },
    "/roles": {
      "get": {
        "parameters": [
          {
            "name": "search",
            "schema": {
              "type": "string"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Role"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_roles"
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/RoleDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_role"
      }
    },
    "/role/{id}": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_role"
      },
      "put": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/RoleDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          },
          "403": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "update_role"
      },
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "403": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_role"
      }
    },
    "/role/{id}/targets": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Target"
                  }
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_role_targets"
      }
    },
    "/role/{id}/users": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/User"
                  }
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_role_users"
      }
    },
    "/tickets": {
      "get": {
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Ticket"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_tickets"
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/CreateTicketRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/TicketAndSecret"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_ticket"
      }
    },
    "/tickets/{id}": {
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_ticket"
      }
    },
    "/ssh/known-hosts": {
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/AddSshKnownHostRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/SSHKnownHost"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "add_ssh_known_host"
      },
      "get": {
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SSHKnownHost"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_ssh_known_hosts"
      }
    },
    "/ssh/known-hosts/{id}": {
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_ssh_known_host"
      }
    },
    "/ssh/own-keys": {
      "get": {
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SSHKey"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_ssh_own_keys"
      }
    },
    "/logs": {
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/GetLogsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LogEntry"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_logs"
      }
    },
    "/targets": {
      "get": {
        "parameters": [
          {
            "name": "search",
            "schema": {
              "type": "string"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Target"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_targets"
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/TargetDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Target"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_target"
      }
    },
    "/targets/{id}": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Target"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_target"
      },
      "put": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/TargetDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Target"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "update_target"
      },
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "403": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_target"
      }
    },
    "/targets/{id}/known-ssh-host-keys": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SSHKnownHost"
                  }
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_ssh_target_known_ssh_host_keys"
      }
    },
    "/targets/{id}/roles": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Role"
                  }
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_target_roles"
      }
    },
    "/targets/{id}/roles/{role_id}": {
      "post": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "role_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "201": {
            "description": ""
          },
          "409": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "add_target_role"
      },
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "role_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "403": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_target_role"
      }
    },
    "/users": {
      "get": {
        "parameters": [
          {
            "name": "search",
            "schema": {
              "type": "string"
            },
            "in": "query",
            "required": false,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/User"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_users"
      },
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_user"
      }
    },
    "/users/{id}": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_user"
      },
      "put": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/UserDataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "update_user"
      },
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_user"
      }
    },
    "/users/{id}/roles": {
      "get": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Role"
                  }
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_user_roles"
      }
    },
    "/users/{id}/roles/{role_id}": {
      "post": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "role_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "201": {
            "description": ""
          },
          "409": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "add_user_role"
      },
      "delete": {
        "parameters": [
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "role_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_user_role"
      }
    },
    "/users/{user_id}/credentials/passwords": {
      "get": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExistingPasswordCredential"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_password_credentials"
      },
      "post": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/NewPasswordCredential"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingPasswordCredential"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_password_credential"
      }
    },
    "/users/{user_id}/credentials/passwords/{id}": {
      "delete": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_password_credential"
      }
    },
    "/users/{user_id}/credentials/sso": {
      "get": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExistingSsoCredential"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_sso_credentials"
      },
      "post": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/NewSsoCredential"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingSsoCredential"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_sso_credential"
      }
    },
    "/users/{user_id}/credentials/sso/{id}": {
      "put": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/NewSsoCredential"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingSsoCredential"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "update_sso_credential"
      },
      "delete": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_sso_credential"
      }
    },
    "/users/{user_id}/credentials/public-keys": {
      "get": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExistingPublicKeyCredential"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_public_key_credentials"
      },
      "post": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/NewPublicKeyCredential"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingPublicKeyCredential"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_public_key_credential"
      }
    },
    "/users/{user_id}/credentials/public-keys/{id}": {
      "put": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/NewPublicKeyCredential"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingPublicKeyCredential"
                }
              }
            }
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "update_public_key_credential"
      },
      "delete": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_public_key_credential"
      }
    },
    "/users/{user_id}/credentials/otp": {
      "get": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExistingOtpCredential"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_otp_credentials"
      },
      "post": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/NewOtpCredential"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ExistingOtpCredential"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "create_otp_credential"
      }
    },
    "/users/{user_id}/credentials/otp/{id}": {
      "delete": {
        "parameters": [
          {
            "name": "user_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          },
          {
            "name": "id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "in": "path",
            "required": true,
            "deprecated": false,
            "explode": true
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "404": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "delete_otp_credential"
      }
    },
    "/parameters": {
      "get": {
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ParameterValues"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "get_parameters"
      },
      "patch": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ParameterUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "update_parameters"
      }
    },
    "/ssh/check-host-key": {
      "post": {
        "requestBody": {
          "content": {
            "application/json; charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/CheckSshHostKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/CheckSshHostKeyResponseBody"
                }
              }
            }
          },
          "500": {
            "description": "",
            "content": {
              "text/plain; charset=utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "TokenSecurityScheme": []
          },
          {
            "CookieSecurityScheme": []
          }
        ],
        "operationId": "check_ssh_host_key"
      }
    }
  },
  "components": {
    "schemas": {
      "AddSshKnownHostRequest": {
        "type": "object",
        "required": [
          "host",
          "port",
          "key_type",
          "key_base64"
        ],
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "int32"
          },
          "key_type": {
            "type": "string"
          },
          "key_base64": {
            "type": "string"
          }
        }
      },
      "CheckSshHostKeyRequest": {
        "type": "object",
        "required": [
          "host",
          "port"
        ],
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "uint16"
          }
        }
      },
      "CheckSshHostKeyResponseBody": {
        "type": "object",
        "required": [
          "remote_key_type",
          "remote_key_base64"
        ],
        "properties": {
          "remote_key_type": {
            "type": "string"
          },
          "remote_key_base64": {
            "type": "string"
          }
        }
      },
      "CreateTicketRequest": {
        "type": "object",
        "required": [
          "username",
          "target_name"
        ],
        "properties": {
          "username": {
            "type": "string"
          },
          "target_name": {
            "type": "string"
          },
          "expiry": {
            "type": "string",
            "format": "date-time"
          },
          "number_of_uses": {
            "type": "integer",
            "format": "int16"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "CreateUserRequest": {
        "type": "object",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "CredentialKind": {
        "type": "string",
        "enum": [
          "Password",
          "PublicKey",
          "Totp",
          "Sso",
          "WebUserApproval"
        ]
      },
      "ExistingOtpCredential": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "ExistingPasswordCredential": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "ExistingPublicKeyCredential": {
        "type": "object",
        "required": [
          "id",
          "label",
          "openssh_public_key"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string"
          },
          "date_added": {
            "type": "string",
            "format": "date-time"
          },
          "last_used": {
            "type": "string",
            "format": "date-time"
          },
          "openssh_public_key": {
            "type": "string"
          }
        }
      },
      "ExistingSsoCredential": {
        "type": "object",
        "required": [
          "id",
          "email"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "provider": {
            "type": "string"
          },
          "email": {
            "type": "string"
          }
        }
      },
      "GetLogsRequest": {
        "type": "object",
        "properties": {
          "before": {
            "type": "string",
            "format": "date-time"
          },
          "after": {
            "type": "string",
            "format": "date-time"
          },
          "limit": {
            "type": "integer",
            "format": "uint64"
          },
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          },
          "search": {
            "type": "string"
          }
        }
      },
      "LogEntry": {
        "type": "object",
        "required": [
          "id",
          "text",
          "values",
          "timestamp",
          "session_id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "text": {
            "type": "string"
          },
          "values": {},
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "NewOtpCredential": {
        "type": "object",
        "required": [
          "secret_key"
        ],
        "properties": {
          "secret_key": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "uint8"
            }
          }
        }
      },
      "NewPasswordCredential": {
        "type": "object",
        "required": [
          "password"
        ],
        "properties": {
          "password": {
            "type": "string"
          }
        }
      },
      "NewPublicKeyCredential": {
        "type": "object",
        "required": [
          "label",
          "openssh_public_key"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "openssh_public_key": {
            "type": "string"
          }
        }
      },
      "NewSsoCredential": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "provider": {
            "type": "string"
          },
          "email": {
            "type": "string"
          }
        }
      },
      "PaginatedResponse_SessionSnapshot": {
        "type": "object",
        "required": [
          "items",
          "offset",
          "total"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionSnapshot"
            }
          },
          "offset": {
            "type": "integer",
            "format": "uint64"
          },
          "total": {
            "type": "integer",
            "format": "uint64"
          }
        }
      },
      "ParameterUpdate": {
        "type": "object",
        "properties": {
          "allow_own_credential_management": {
            "type": "boolean"
          }
        }
      },
      "ParameterValues": {
        "type": "object",
        "required": [
          "allow_own_credential_management"
        ],
        "properties": {
          "allow_own_credential_management": {
            "type": "boolean"
          }
        }
      },
      "Recording": {
        "type": "object",
        "required": [
          "id",
          "name",
          "started",
          "session_id",
          "kind"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "started": {
            "type": "string",
            "format": "date-time"
          },
          "ended": {
            "type": "string",
            "format": "date-time"
          },
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "$ref": "#/components/schemas/RecordingKind"
          }
        }
      },
      "RecordingKind": {
        "type": "string",
        "enum": [
          "Terminal",
          "Traffic"
        ]
      },
      "Role": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "RoleDataRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "SSHKey": {
        "type": "object",
        "required": [
          "kind",
          "public_key_base64"
        ],
        "properties": {
          "kind": {
            "type": "string"
          },
          "public_key_base64": {
            "type": "string"
          }
        }
      },
      "SSHKnownHost": {
        "type": "object",
        "required": [
          "id",
          "host",
          "port",
          "key_type",
          "key_base64"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "int32"
          },
          "key_type": {
            "type": "string"
          },
          "key_base64": {
            "type": "string"
          }
        }
      },
      "SSHTargetAuth": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SSHTargetAuth_SshTargetPasswordAuth"
          },
          {
            "$ref": "#/components/schemas/SSHTargetAuth_SshTargetPublicKeyAuth"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "Password": "#/components/schemas/SSHTargetAuth_SshTargetPasswordAuth",
            "PublicKey": "#/components/schemas/SSHTargetAuth_SshTargetPublicKeyAuth"
          }
        }
      },
      "SSHTargetAuth_SshTargetPasswordAuth": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "Password"
                ],
                "example": "Password"
              }
            }
          },
          {
            "$ref": "#/components/schemas/SshTargetPasswordAuth"
          }
        ]
      },
      "SSHTargetAuth_SshTargetPublicKeyAuth": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "PublicKey"
                ],
                "example": "PublicKey"
              }
            }
          },
          {
            "$ref": "#/components/schemas/SshTargetPublicKeyAuth"
          }
        ]
      },
      "SessionSnapshot": {
        "type": "object",
        "required": [
          "id",
          "started",
          "protocol"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/Target"
          },
          "started": {
            "type": "string",
            "format": "date-time"
          },
          "ended": {
            "type": "string",
            "format": "date-time"
          },
          "ticket_id": {
            "type": "string",
            "format": "uuid"
          },
          "protocol": {
            "type": "string"
          }
        }
      },
      "SshTargetPasswordAuth": {
        "type": "object",
        "required": [
          "password"
        ],
        "properties": {
          "password": {
            "type": "string"
          }
        }
      },
      "SshTargetPublicKeyAuth": {
        "type": "object"
      },
      "Target": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "allow_roles",
          "options"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "allow_roles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "options": {
            "$ref": "#/components/schemas/TargetOptions"
          }
        }
      },
      "TargetDataRequest": {
        "type": "object",
        "required": [
          "name",
          "options"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "options": {
            "$ref": "#/components/schemas/TargetOptions"
          }
        }
      },
      "TargetHTTPOptions": {
        "type": "object",
        "required": [
          "url",
          "tls"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "tls": {
            "$ref": "#/components/schemas/Tls"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "external_host": {
            "type": "string"
          }
        }
      },
      "TargetMySqlOptions": {
        "type": "object",
        "required": [
          "host",
          "port",
          "username",
          "tls"
        ],
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "uint16"
          },
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "tls": {
            "$ref": "#/components/schemas/Tls"
          }
        }
      },
      "TargetOptions": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TargetOptions_TargetSSHOptions"
          },
          {
            "$ref": "#/components/schemas/TargetOptions_TargetHTTPOptions"
          },
          {
            "$ref": "#/components/schemas/TargetOptions_TargetMySqlOptions"
          },
          {
            "$ref": "#/components/schemas/TargetOptions_TargetPostgresOptions"
          },
          {
            "$ref": "#/components/schemas/TargetOptions_TargetWebAdminOptions"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "Ssh": "#/components/schemas/TargetOptions_TargetSSHOptions",
            "Http": "#/components/schemas/TargetOptions_TargetHTTPOptions",
            "MySql": "#/components/schemas/TargetOptions_TargetMySqlOptions",
            "Postgres": "#/components/schemas/TargetOptions_TargetPostgresOptions",
            "WebAdmin": "#/components/schemas/TargetOptions_TargetWebAdminOptions"
          }
        }
      },
      "TargetOptions_TargetHTTPOptions": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "Http"
                ],
                "example": "Http"
              }
            }
          },
          {
            "$ref": "#/components/schemas/TargetHTTPOptions"
          }
        ]
      },
      "TargetOptions_TargetMySqlOptions": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "MySql"
                ],
                "example": "MySql"
              }
            }
          },
          {
            "$ref": "#/components/schemas/TargetMySqlOptions"
          }
        ]
      },
      "TargetOptions_TargetPostgresOptions": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "Postgres"
                ],
                "example": "Postgres"
              }
            }
          },
          {
            "$ref": "#/components/schemas/TargetPostgresOptions"
          }
        ]
      },
      "TargetOptions_TargetSSHOptions": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "Ssh"
                ],
                "example": "Ssh"
              }
            }
          },
          {
            "$ref": "#/components/schemas/TargetSSHOptions"
          }
        ]
      },
      "TargetOptions_TargetWebAdminOptions": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "WebAdmin"
                ],
                "example": "WebAdmin"
              }
            }
          },
          {
            "$ref": "#/components/schemas/TargetWebAdminOptions"
          }
        ]
      },
      "TargetPostgresOptions": {
        "type": "object",
        "required": [
          "host",
          "port",
          "username",
          "tls"
        ],
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "uint16"
          },
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "tls": {
            "$ref": "#/components/schemas/Tls"
          }
        }
      },
      "TargetSSHOptions": {
        "type": "object",
        "required": [
          "host",
          "port",
          "username",
          "auth"
        ],
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "uint16"
          },
          "username": {
            "type": "string"
          },
          "allow_insecure_algos": {
            "type": "boolean"
          },
          "auth": {
            "$ref": "#/components/schemas/SSHTargetAuth"
          }
        }
      },
      "TargetWebAdminOptions": {
        "type": "object"
      },
      "Ticket": {
        "type": "object",
        "required": [
          "id",
          "username",
          "description",
          "target",
          "created"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "uses_left": {
            "type": "integer",
            "format": "int16"
          },
          "expiry": {
            "type": "string",
            "format": "date-time"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TicketAndSecret": {
        "type": "object",
        "required": [
          "ticket",
          "secret"
        ],
        "properties": {
          "ticket": {
            "$ref": "#/components/schemas/Ticket"
          },
          "secret": {
            "type": "string"
          }
        }
      },
      "Tls": {
        "type": "object",
        "required": [
          "mode",
          "verify"
        ],
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/TlsMode"
          },
          "verify": {
            "type": "boolean"
          }
        }
      },
      "TlsMode": {
        "type": "string",
        "enum": [
          "Disabled",
          "Preferred",
          "Required"
        ]
      },
      "User": {
        "type": "object",
        "required": [
          "id",
          "username",
          "description"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "username": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "credential_policy": {
            "$ref": "#/components/schemas/UserRequireCredentialsPolicy"
          }
        }
      },
      "UserDataRequest": {
        "type": "object",
        "required": [
          "username"
        ],
        "properties": {
          "username": {
            "type": "string"
          },
          "credential_policy": {
            "$ref": "#/components/schemas/UserRequireCredentialsPolicy"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "UserRequireCredentialsPolicy": {
        "type": "object",
        "properties": {
          "http": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CredentialKind"
            }
          },
          "ssh": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CredentialKind"
            }
          },
          "mysql": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CredentialKind"
            }
          },
          "postgres": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CredentialKind"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "CookieSecurityScheme": {
        "type": "apiKey",
        "name": "warpgate-http-session",
        "in": "cookie"
      },
      "TokenSecurityScheme": {
        "type": "apiKey",
        "name": "X-Warpgate-Token",
        "in": "header"
      }
    }
  }
}