feat(ws): fix swagger warnings and only generate json output (#424)
* feat(ws): Clean and fix swagger warnings and errors Signed-off-by: Liav Weiss (EXT-Nokia) <liav.weiss.ext@nokia.com> * feat(ws): Clean and fix swagger warnings and errors Signed-off-by: Liav Weiss (EXT-Nokia) <liav.weiss.ext@nokia.com> --------- Signed-off-by: Liav Weiss (EXT-Nokia) <liav.weiss.ext@nokia.com> Co-authored-by: Liav Weiss (EXT-Nokia) <liav.weiss.ext@nokia.com>
This commit is contained in:
parent
4c91627eb0
commit
eb70a94274
|
|
@ -74,7 +74,7 @@ SWAG_DIRS := cmd,$(ALL_GO_DIRS_NO_CMD)
|
||||||
.PHONY: swag
|
.PHONY: swag
|
||||||
swag: SWAGGER
|
swag: SWAGGER
|
||||||
$(SWAGGER) fmt -g main.go -d $(SWAG_DIRS)
|
$(SWAGGER) fmt -g main.go -d $(SWAG_DIRS)
|
||||||
$(SWAGGER) init --parseDependency -q -g main.go -d $(SWAG_DIRS) --output openapi
|
$(SWAGGER) init --parseDependency -q -g main.go -d $(SWAG_DIRS) --output openapi --outputTypes go,json
|
||||||
|
|
||||||
##@ Build
|
##@ Build
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ type WorkspaceKindEnvelope Envelope[models.WorkspaceKind]
|
||||||
// @Tags workspacekinds
|
// @Tags workspacekinds
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param name path string true "Name of the workspace kind" example(jupyterlab)
|
// @Param name path string true "Name of the workspace kind" extensions(x-example=jupyterlab)
|
||||||
// @Success 200 {object} WorkspaceKindEnvelope "Successful operation. Returns the requested workspace kind details."
|
// @Success 200 {object} WorkspaceKindEnvelope "Successful operation. Returns the requested workspace kind details."
|
||||||
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid workspace kind name format."
|
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid workspace kind name format."
|
||||||
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
||||||
|
|
@ -50,7 +50,6 @@ type WorkspaceKindEnvelope Envelope[models.WorkspaceKind]
|
||||||
// @Failure 404 {object} ErrorEnvelope "Not Found. Workspace kind does not exist."
|
// @Failure 404 {object} ErrorEnvelope "Not Found. Workspace kind does not exist."
|
||||||
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
||||||
// @Router /workspacekinds/{name} [get]
|
// @Router /workspacekinds/{name} [get]
|
||||||
// @Security ApiKeyAuth
|
|
||||||
func (a *App) GetWorkspaceKindHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
func (a *App) GetWorkspaceKindHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
name := ps.ByName(ResourceNamePathParam)
|
name := ps.ByName(ResourceNamePathParam)
|
||||||
|
|
||||||
|
|
@ -102,7 +101,6 @@ func (a *App) GetWorkspaceKindHandler(w http.ResponseWriter, r *http.Request, ps
|
||||||
// @Failure 403 {object} ErrorEnvelope "Forbidden. User does not have permission to list workspace kinds."
|
// @Failure 403 {object} ErrorEnvelope "Forbidden. User does not have permission to list workspace kinds."
|
||||||
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
||||||
// @Router /workspacekinds [get]
|
// @Router /workspacekinds [get]
|
||||||
// @Security ApiKeyAuth
|
|
||||||
func (a *App) GetWorkspaceKindsHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
func (a *App) GetWorkspaceKindsHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
|
||||||
// =========================== AUTH ===========================
|
// =========================== AUTH ===========================
|
||||||
authPolicies := []*auth.ResourcePolicy{
|
authPolicies := []*auth.ResourcePolicy{
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,8 @@ type WorkspaceEnvelope Envelope[models.Workspace]
|
||||||
// @Tags workspaces
|
// @Tags workspaces
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param namespace path string true "Namespace of the workspace" example(kubeflow-user-example-com)
|
// @Param namespace path string true "Namespace of the workspace" extensions(x-example=kubeflow-user-example-com)
|
||||||
// @Param workspace_name path string true "Name of the workspace" example(my-workspace)
|
// @Param workspace_name path string true "Name of the workspace" extensions(x-example=my-workspace)
|
||||||
// @Success 200 {object} WorkspaceEnvelope "Successful operation. Returns the requested workspace details."
|
// @Success 200 {object} WorkspaceEnvelope "Successful operation. Returns the requested workspace details."
|
||||||
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid namespace or workspace name format."
|
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid namespace or workspace name format."
|
||||||
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
||||||
|
|
@ -55,7 +55,6 @@ type WorkspaceEnvelope Envelope[models.Workspace]
|
||||||
// @Failure 404 {object} ErrorEnvelope "Not Found. Workspace does not exist."
|
// @Failure 404 {object} ErrorEnvelope "Not Found. Workspace does not exist."
|
||||||
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
||||||
// @Router /workspaces/{namespace}/{workspace_name} [get]
|
// @Router /workspaces/{namespace}/{workspace_name} [get]
|
||||||
// @Security ApiKeyAuth
|
|
||||||
func (a *App) GetWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
func (a *App) GetWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
namespace := ps.ByName(NamespacePathParam)
|
namespace := ps.ByName(NamespacePathParam)
|
||||||
workspaceName := ps.ByName(ResourceNamePathParam)
|
workspaceName := ps.ByName(ResourceNamePathParam)
|
||||||
|
|
@ -109,7 +108,7 @@ func (a *App) GetWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps htt
|
||||||
// @Tags workspaces
|
// @Tags workspaces
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param namespace path string false "Namespace to filter workspaces. If not provided, returns all workspaces across all namespaces." example(kubeflow-user-example-com)
|
// @Param namespace path string true "Namespace to filter workspaces. If not provided, returns all workspaces across all namespaces." extensions(x-example=kubeflow-user-example-com)
|
||||||
// @Success 200 {object} WorkspaceListEnvelope "Successful operation. Returns a list of workspaces."
|
// @Success 200 {object} WorkspaceListEnvelope "Successful operation. Returns a list of workspaces."
|
||||||
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid namespace format."
|
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid namespace format."
|
||||||
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
||||||
|
|
@ -117,7 +116,6 @@ func (a *App) GetWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps htt
|
||||||
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
||||||
// @Router /workspaces [get]
|
// @Router /workspaces [get]
|
||||||
// @Router /workspaces/{namespace} [get]
|
// @Router /workspaces/{namespace} [get]
|
||||||
// @Security ApiKeyAuth
|
|
||||||
func (a *App) GetWorkspacesHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
func (a *App) GetWorkspacesHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
namespace := ps.ByName(NamespacePathParam)
|
namespace := ps.ByName(NamespacePathParam)
|
||||||
|
|
||||||
|
|
@ -171,7 +169,7 @@ func (a *App) GetWorkspacesHandler(w http.ResponseWriter, r *http.Request, ps ht
|
||||||
// @Tags workspaces
|
// @Tags workspaces
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param namespace path string true "Namespace for the workspace" example(kubeflow-user-example-com)
|
// @Param namespace path string true "Namespace for the workspace" extensions(x-example=kubeflow-user-example-com)
|
||||||
// @Param body body WorkspaceCreateEnvelope true "Workspace creation configuration"
|
// @Param body body WorkspaceCreateEnvelope true "Workspace creation configuration"
|
||||||
// @Success 201 {object} WorkspaceEnvelope "Workspace created successfully"
|
// @Success 201 {object} WorkspaceEnvelope "Workspace created successfully"
|
||||||
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid request body or namespace format."
|
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid request body or namespace format."
|
||||||
|
|
@ -180,7 +178,6 @@ func (a *App) GetWorkspacesHandler(w http.ResponseWriter, r *http.Request, ps ht
|
||||||
// @Failure 409 {object} ErrorEnvelope "Conflict. Workspace with the same name already exists."
|
// @Failure 409 {object} ErrorEnvelope "Conflict. Workspace with the same name already exists."
|
||||||
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
||||||
// @Router /workspaces/{namespace} [post]
|
// @Router /workspaces/{namespace} [post]
|
||||||
// @Security ApiKeyAuth
|
|
||||||
func (a *App) CreateWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
func (a *App) CreateWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
namespace := ps.ByName(NamespacePathParam)
|
namespace := ps.ByName(NamespacePathParam)
|
||||||
|
|
||||||
|
|
@ -266,8 +263,8 @@ func (a *App) CreateWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps
|
||||||
// @Tags workspaces
|
// @Tags workspaces
|
||||||
// @Accept json
|
// @Accept json
|
||||||
// @Produce json
|
// @Produce json
|
||||||
// @Param namespace path string true "Namespace of the workspace" example(kubeflow-user-example-com)
|
// @Param namespace path string true "Namespace of the workspace" extensions(x-example=kubeflow-user-example-com)
|
||||||
// @Param workspace_name path string true "Name of the workspace" example(my-workspace)
|
// @Param workspace_name path string true "Name of the workspace" extensions(x-example=my-workspace)
|
||||||
// @Success 204 {object} nil "Workspace deleted successfully"
|
// @Success 204 {object} nil "Workspace deleted successfully"
|
||||||
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid namespace or workspace name format."
|
// @Failure 400 {object} ErrorEnvelope "Bad Request. Invalid namespace or workspace name format."
|
||||||
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
// @Failure 401 {object} ErrorEnvelope "Unauthorized. Authentication is required."
|
||||||
|
|
@ -275,7 +272,6 @@ func (a *App) CreateWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps
|
||||||
// @Failure 404 {object} ErrorEnvelope "Not Found. Workspace does not exist."
|
// @Failure 404 {object} ErrorEnvelope "Not Found. Workspace does not exist."
|
||||||
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
// @Failure 500 {object} ErrorEnvelope "Internal server error. An unexpected error occurred on the server."
|
||||||
// @Router /workspaces/{namespace}/{workspace_name} [delete]
|
// @Router /workspaces/{namespace}/{workspace_name} [delete]
|
||||||
// @Security ApiKeyAuth
|
|
||||||
func (a *App) DeleteWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
func (a *App) DeleteWorkspaceHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
namespace := ps.ByName(NamespacePathParam)
|
namespace := ps.ByName(NamespacePathParam)
|
||||||
workspaceName := ps.ByName(ResourceNamePathParam)
|
workspaceName := ps.ByName(ResourceNamePathParam)
|
||||||
|
|
|
||||||
|
|
@ -85,11 +85,6 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"/workspacekinds": {
|
"/workspacekinds": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns a list of all available workspace kinds. Workspace kinds define the different types of workspaces that can be created in the system.",
|
"description": "Returns a list of all available workspace kinds. Workspace kinds define the different types of workspaces that can be created in the system.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -131,11 +126,6 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"/workspacekinds/{name}": {
|
"/workspacekinds/{name}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns details of a specific workspace kind identified by its name. Workspace kinds define the available types of workspaces that can be created.",
|
"description": "Returns details of a specific workspace kind identified by its name. Workspace kinds define the available types of workspaces that can be created.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -150,7 +140,7 @@ const docTemplate = `{
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "jupyterlab",
|
"x-example": "jupyterlab",
|
||||||
"description": "Name of the workspace kind",
|
"description": "Name of the workspace kind",
|
||||||
"name": "name",
|
"name": "name",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -199,11 +189,6 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"/workspaces": {
|
"/workspaces": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -251,11 +236,6 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"/workspaces/{namespace}": {
|
"/workspaces/{namespace}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -270,10 +250,11 @@ const docTemplate = `{
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace to filter workspaces. If not provided, returns all workspaces across all namespaces.",
|
"description": "Namespace to filter workspaces. If not provided, returns all workspaces across all namespaces.",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path"
|
"in": "path",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
|
|
@ -310,11 +291,6 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"post": {
|
"post": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Creates a new workspace in the specified namespace.",
|
"description": "Creates a new workspace in the specified namespace.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -329,7 +305,7 @@ const docTemplate = `{
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace for the workspace",
|
"description": "Namespace for the workspace",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -387,11 +363,6 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
"/workspaces/{namespace}/{workspace_name}": {
|
"/workspaces/{namespace}/{workspace_name}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns details of a specific workspace identified by namespace and workspace name.",
|
"description": "Returns details of a specific workspace identified by namespace and workspace name.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -406,7 +377,7 @@ const docTemplate = `{
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace of the workspace",
|
"description": "Namespace of the workspace",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -414,7 +385,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "my-workspace",
|
"x-example": "my-workspace",
|
||||||
"description": "Name of the workspace",
|
"description": "Name of the workspace",
|
||||||
"name": "workspace_name",
|
"name": "workspace_name",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -461,11 +432,6 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"delete": {
|
"delete": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Deletes a specific workspace identified by namespace and workspace name.",
|
"description": "Deletes a specific workspace identified by namespace and workspace name.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -480,7 +446,7 @@ const docTemplate = `{
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace of the workspace",
|
"description": "Namespace of the workspace",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -488,7 +454,7 @@ const docTemplate = `{
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "my-workspace",
|
"x-example": "my-workspace",
|
||||||
"description": "Name of the workspace",
|
"description": "Name of the workspace",
|
||||||
"name": "workspace_name",
|
"name": "workspace_name",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
|
||||||
|
|
@ -83,11 +83,6 @@
|
||||||
},
|
},
|
||||||
"/workspacekinds": {
|
"/workspacekinds": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns a list of all available workspace kinds. Workspace kinds define the different types of workspaces that can be created in the system.",
|
"description": "Returns a list of all available workspace kinds. Workspace kinds define the different types of workspaces that can be created in the system.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -129,11 +124,6 @@
|
||||||
},
|
},
|
||||||
"/workspacekinds/{name}": {
|
"/workspacekinds/{name}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns details of a specific workspace kind identified by its name. Workspace kinds define the available types of workspaces that can be created.",
|
"description": "Returns details of a specific workspace kind identified by its name. Workspace kinds define the available types of workspaces that can be created.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -148,7 +138,7 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "jupyterlab",
|
"x-example": "jupyterlab",
|
||||||
"description": "Name of the workspace kind",
|
"description": "Name of the workspace kind",
|
||||||
"name": "name",
|
"name": "name",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -197,11 +187,6 @@
|
||||||
},
|
},
|
||||||
"/workspaces": {
|
"/workspaces": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -249,11 +234,6 @@
|
||||||
},
|
},
|
||||||
"/workspaces/{namespace}": {
|
"/workspaces/{namespace}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
"description": "Returns a list of workspaces. The endpoint supports two modes:\n1. List all workspaces across all namespaces (when no namespace is provided)\n2. List workspaces in a specific namespace (when namespace is provided)",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -268,10 +248,11 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace to filter workspaces. If not provided, returns all workspaces across all namespaces.",
|
"description": "Namespace to filter workspaces. If not provided, returns all workspaces across all namespaces.",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path"
|
"in": "path",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
|
|
@ -308,11 +289,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"post": {
|
"post": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Creates a new workspace in the specified namespace.",
|
"description": "Creates a new workspace in the specified namespace.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -327,7 +303,7 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace for the workspace",
|
"description": "Namespace for the workspace",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -385,11 +361,6 @@
|
||||||
},
|
},
|
||||||
"/workspaces/{namespace}/{workspace_name}": {
|
"/workspaces/{namespace}/{workspace_name}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Returns details of a specific workspace identified by namespace and workspace name.",
|
"description": "Returns details of a specific workspace identified by namespace and workspace name.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -404,7 +375,7 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace of the workspace",
|
"description": "Namespace of the workspace",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -412,7 +383,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "my-workspace",
|
"x-example": "my-workspace",
|
||||||
"description": "Name of the workspace",
|
"description": "Name of the workspace",
|
||||||
"name": "workspace_name",
|
"name": "workspace_name",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -459,11 +430,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"delete": {
|
"delete": {
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"ApiKeyAuth": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Deletes a specific workspace identified by namespace and workspace name.",
|
"description": "Deletes a specific workspace identified by namespace and workspace name.",
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
|
|
@ -478,7 +444,7 @@
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "kubeflow-user-example-com",
|
"x-example": "kubeflow-user-example-com",
|
||||||
"description": "Namespace of the workspace",
|
"description": "Namespace of the workspace",
|
||||||
"name": "namespace",
|
"name": "namespace",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
@ -486,7 +452,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "my-workspace",
|
"x-example": "my-workspace",
|
||||||
"description": "Name of the workspace",
|
"description": "Name of the workspace",
|
||||||
"name": "workspace_name",
|
"name": "workspace_name",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
|
|
|
||||||
|
|
@ -1,934 +0,0 @@
|
||||||
basePath: /api/v1
|
|
||||||
definitions:
|
|
||||||
api.ErrorCause:
|
|
||||||
properties:
|
|
||||||
validation_errors:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/api.ValidationError'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
api.ErrorEnvelope:
|
|
||||||
properties:
|
|
||||||
error:
|
|
||||||
$ref: '#/definitions/api.HTTPError'
|
|
||||||
type: object
|
|
||||||
api.HTTPError:
|
|
||||||
properties:
|
|
||||||
cause:
|
|
||||||
$ref: '#/definitions/api.ErrorCause'
|
|
||||||
code:
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
api.NamespaceListEnvelope:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/namespaces.Namespace'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
api.ValidationError:
|
|
||||||
properties:
|
|
||||||
field:
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
$ref: '#/definitions/field.ErrorType'
|
|
||||||
type: object
|
|
||||||
api.WorkspaceCreateEnvelope:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
$ref: '#/definitions/workspaces.WorkspaceCreate'
|
|
||||||
type: object
|
|
||||||
api.WorkspaceEnvelope:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
$ref: '#/definitions/workspaces.Workspace'
|
|
||||||
type: object
|
|
||||||
api.WorkspaceKindEnvelope:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
$ref: '#/definitions/workspacekinds.WorkspaceKind'
|
|
||||||
type: object
|
|
||||||
api.WorkspaceKindListEnvelope:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspacekinds.WorkspaceKind'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
api.WorkspaceListEnvelope:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.Workspace'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
field.ErrorType:
|
|
||||||
enum:
|
|
||||||
- FieldValueNotFound
|
|
||||||
- FieldValueRequired
|
|
||||||
- FieldValueDuplicate
|
|
||||||
- FieldValueInvalid
|
|
||||||
- FieldValueNotSupported
|
|
||||||
- FieldValueForbidden
|
|
||||||
- FieldValueTooLong
|
|
||||||
- FieldValueTooMany
|
|
||||||
- InternalError
|
|
||||||
- FieldValueTypeInvalid
|
|
||||||
type: string
|
|
||||||
x-enum-varnames:
|
|
||||||
- ErrorTypeNotFound
|
|
||||||
- ErrorTypeRequired
|
|
||||||
- ErrorTypeDuplicate
|
|
||||||
- ErrorTypeInvalid
|
|
||||||
- ErrorTypeNotSupported
|
|
||||||
- ErrorTypeForbidden
|
|
||||||
- ErrorTypeTooLong
|
|
||||||
- ErrorTypeTooMany
|
|
||||||
- ErrorTypeInternal
|
|
||||||
- ErrorTypeTypeInvalid
|
|
||||||
health_check.HealthCheck:
|
|
||||||
properties:
|
|
||||||
status:
|
|
||||||
$ref: '#/definitions/health_check.ServiceStatus'
|
|
||||||
systemInfo:
|
|
||||||
$ref: '#/definitions/health_check.SystemInfo'
|
|
||||||
type: object
|
|
||||||
health_check.ServiceStatus:
|
|
||||||
enum:
|
|
||||||
- Healthy
|
|
||||||
- Unhealthy
|
|
||||||
type: string
|
|
||||||
x-enum-varnames:
|
|
||||||
- ServiceStatusHealthy
|
|
||||||
- ServiceStatusUnhealthy
|
|
||||||
health_check.SystemInfo:
|
|
||||||
properties:
|
|
||||||
version:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
namespaces.Namespace:
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspacekinds.ImageConfig:
|
|
||||||
properties:
|
|
||||||
default:
|
|
||||||
type: string
|
|
||||||
values:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspacekinds.ImageConfigValue'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspacekinds.ImageConfigValue:
|
|
||||||
properties:
|
|
||||||
description:
|
|
||||||
type: string
|
|
||||||
displayName:
|
|
||||||
type: string
|
|
||||||
hidden:
|
|
||||||
type: boolean
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
labels:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspacekinds.OptionLabel'
|
|
||||||
type: array
|
|
||||||
redirect:
|
|
||||||
$ref: '#/definitions/workspacekinds.OptionRedirect'
|
|
||||||
type: object
|
|
||||||
workspacekinds.ImageRef:
|
|
||||||
properties:
|
|
||||||
url:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspacekinds.OptionLabel:
|
|
||||||
properties:
|
|
||||||
key:
|
|
||||||
type: string
|
|
||||||
value:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspacekinds.OptionRedirect:
|
|
||||||
properties:
|
|
||||||
message:
|
|
||||||
$ref: '#/definitions/workspacekinds.RedirectMessage'
|
|
||||||
to:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspacekinds.PodConfig:
|
|
||||||
properties:
|
|
||||||
default:
|
|
||||||
type: string
|
|
||||||
values:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspacekinds.PodConfigValue'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspacekinds.PodConfigValue:
|
|
||||||
properties:
|
|
||||||
description:
|
|
||||||
type: string
|
|
||||||
displayName:
|
|
||||||
type: string
|
|
||||||
hidden:
|
|
||||||
type: boolean
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
labels:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspacekinds.OptionLabel'
|
|
||||||
type: array
|
|
||||||
redirect:
|
|
||||||
$ref: '#/definitions/workspacekinds.OptionRedirect'
|
|
||||||
type: object
|
|
||||||
workspacekinds.PodMetadata:
|
|
||||||
properties:
|
|
||||||
annotations:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
labels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
workspacekinds.PodTemplate:
|
|
||||||
properties:
|
|
||||||
options:
|
|
||||||
$ref: '#/definitions/workspacekinds.PodTemplateOptions'
|
|
||||||
podMetadata:
|
|
||||||
$ref: '#/definitions/workspacekinds.PodMetadata'
|
|
||||||
volumeMounts:
|
|
||||||
$ref: '#/definitions/workspacekinds.PodVolumeMounts'
|
|
||||||
type: object
|
|
||||||
workspacekinds.PodTemplateOptions:
|
|
||||||
properties:
|
|
||||||
imageConfig:
|
|
||||||
$ref: '#/definitions/workspacekinds.ImageConfig'
|
|
||||||
podConfig:
|
|
||||||
$ref: '#/definitions/workspacekinds.PodConfig'
|
|
||||||
type: object
|
|
||||||
workspacekinds.PodVolumeMounts:
|
|
||||||
properties:
|
|
||||||
home:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspacekinds.RedirectMessage:
|
|
||||||
properties:
|
|
||||||
level:
|
|
||||||
$ref: '#/definitions/workspacekinds.RedirectMessageLevel'
|
|
||||||
text:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspacekinds.RedirectMessageLevel:
|
|
||||||
enum:
|
|
||||||
- Info
|
|
||||||
- Warning
|
|
||||||
- Danger
|
|
||||||
type: string
|
|
||||||
x-enum-varnames:
|
|
||||||
- RedirectMessageLevelInfo
|
|
||||||
- RedirectMessageLevelWarning
|
|
||||||
- RedirectMessageLevelDanger
|
|
||||||
workspacekinds.WorkspaceKind:
|
|
||||||
properties:
|
|
||||||
deprecated:
|
|
||||||
type: boolean
|
|
||||||
deprecationMessage:
|
|
||||||
type: string
|
|
||||||
description:
|
|
||||||
type: string
|
|
||||||
displayName:
|
|
||||||
type: string
|
|
||||||
hidden:
|
|
||||||
type: boolean
|
|
||||||
icon:
|
|
||||||
$ref: '#/definitions/workspacekinds.ImageRef'
|
|
||||||
logo:
|
|
||||||
$ref: '#/definitions/workspacekinds.ImageRef'
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
podTemplate:
|
|
||||||
$ref: '#/definitions/workspacekinds.PodTemplate'
|
|
||||||
type: object
|
|
||||||
workspaces.Activity:
|
|
||||||
properties:
|
|
||||||
lastActivity:
|
|
||||||
description: Unix Epoch time
|
|
||||||
type: integer
|
|
||||||
lastProbe:
|
|
||||||
$ref: '#/definitions/workspaces.LastProbeInfo'
|
|
||||||
lastUpdate:
|
|
||||||
description: Unix Epoch time
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
workspaces.HttpService:
|
|
||||||
properties:
|
|
||||||
displayName:
|
|
||||||
type: string
|
|
||||||
httpPath:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.ImageConfig:
|
|
||||||
properties:
|
|
||||||
current:
|
|
||||||
$ref: '#/definitions/workspaces.OptionInfo'
|
|
||||||
desired:
|
|
||||||
$ref: '#/definitions/workspaces.OptionInfo'
|
|
||||||
redirectChain:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.RedirectStep'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspaces.ImageRef:
|
|
||||||
properties:
|
|
||||||
url:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.LastProbeInfo:
|
|
||||||
properties:
|
|
||||||
endTimeMs:
|
|
||||||
description: Unix Epoch time in milliseconds
|
|
||||||
type: integer
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
result:
|
|
||||||
$ref: '#/definitions/workspaces.ProbeResult'
|
|
||||||
startTimeMs:
|
|
||||||
description: Unix Epoch time in milliseconds
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
workspaces.OptionInfo:
|
|
||||||
properties:
|
|
||||||
description:
|
|
||||||
type: string
|
|
||||||
displayName:
|
|
||||||
type: string
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
labels:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.OptionLabel'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspaces.OptionLabel:
|
|
||||||
properties:
|
|
||||||
key:
|
|
||||||
type: string
|
|
||||||
value:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.PodConfig:
|
|
||||||
properties:
|
|
||||||
current:
|
|
||||||
$ref: '#/definitions/workspaces.OptionInfo'
|
|
||||||
desired:
|
|
||||||
$ref: '#/definitions/workspaces.OptionInfo'
|
|
||||||
redirectChain:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.RedirectStep'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspaces.PodMetadata:
|
|
||||||
properties:
|
|
||||||
annotations:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
labels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
workspaces.PodMetadataMutate:
|
|
||||||
properties:
|
|
||||||
annotations:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
labels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
workspaces.PodSecretInfo:
|
|
||||||
properties:
|
|
||||||
defaultMode:
|
|
||||||
type: integer
|
|
||||||
mountPath:
|
|
||||||
type: string
|
|
||||||
secretName:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.PodSecretMount:
|
|
||||||
properties:
|
|
||||||
defaultMode:
|
|
||||||
type: integer
|
|
||||||
mountPath:
|
|
||||||
type: string
|
|
||||||
secretName:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.PodTemplate:
|
|
||||||
properties:
|
|
||||||
options:
|
|
||||||
$ref: '#/definitions/workspaces.PodTemplateOptions'
|
|
||||||
podMetadata:
|
|
||||||
$ref: '#/definitions/workspaces.PodMetadata'
|
|
||||||
volumes:
|
|
||||||
$ref: '#/definitions/workspaces.PodVolumes'
|
|
||||||
type: object
|
|
||||||
workspaces.PodTemplateMutate:
|
|
||||||
properties:
|
|
||||||
options:
|
|
||||||
$ref: '#/definitions/workspaces.PodTemplateOptionsMutate'
|
|
||||||
podMetadata:
|
|
||||||
$ref: '#/definitions/workspaces.PodMetadataMutate'
|
|
||||||
volumes:
|
|
||||||
$ref: '#/definitions/workspaces.PodVolumesMutate'
|
|
||||||
type: object
|
|
||||||
workspaces.PodTemplateOptions:
|
|
||||||
properties:
|
|
||||||
imageConfig:
|
|
||||||
$ref: '#/definitions/workspaces.ImageConfig'
|
|
||||||
podConfig:
|
|
||||||
$ref: '#/definitions/workspaces.PodConfig'
|
|
||||||
type: object
|
|
||||||
workspaces.PodTemplateOptionsMutate:
|
|
||||||
properties:
|
|
||||||
imageConfig:
|
|
||||||
type: string
|
|
||||||
podConfig:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.PodVolumeInfo:
|
|
||||||
properties:
|
|
||||||
mountPath:
|
|
||||||
type: string
|
|
||||||
pvcName:
|
|
||||||
type: string
|
|
||||||
readOnly:
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
workspaces.PodVolumeMount:
|
|
||||||
properties:
|
|
||||||
mountPath:
|
|
||||||
type: string
|
|
||||||
pvcName:
|
|
||||||
type: string
|
|
||||||
readOnly:
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
workspaces.PodVolumes:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.PodVolumeInfo'
|
|
||||||
type: array
|
|
||||||
home:
|
|
||||||
$ref: '#/definitions/workspaces.PodVolumeInfo'
|
|
||||||
secrets:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.PodSecretInfo'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspaces.PodVolumesMutate:
|
|
||||||
properties:
|
|
||||||
data:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.PodVolumeMount'
|
|
||||||
type: array
|
|
||||||
home:
|
|
||||||
type: string
|
|
||||||
secrets:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.PodSecretMount'
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
workspaces.ProbeResult:
|
|
||||||
enum:
|
|
||||||
- Success
|
|
||||||
- Failure
|
|
||||||
- Timeout
|
|
||||||
type: string
|
|
||||||
x-enum-varnames:
|
|
||||||
- ProbeResultSuccess
|
|
||||||
- ProbeResultFailure
|
|
||||||
- ProbeResultTimeout
|
|
||||||
workspaces.RedirectMessage:
|
|
||||||
properties:
|
|
||||||
level:
|
|
||||||
$ref: '#/definitions/workspaces.RedirectMessageLevel'
|
|
||||||
text:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.RedirectMessageLevel:
|
|
||||||
enum:
|
|
||||||
- Info
|
|
||||||
- Warning
|
|
||||||
- Danger
|
|
||||||
type: string
|
|
||||||
x-enum-varnames:
|
|
||||||
- RedirectMessageLevelInfo
|
|
||||||
- RedirectMessageLevelWarning
|
|
||||||
- RedirectMessageLevelDanger
|
|
||||||
workspaces.RedirectStep:
|
|
||||||
properties:
|
|
||||||
message:
|
|
||||||
$ref: '#/definitions/workspaces.RedirectMessage'
|
|
||||||
sourceId:
|
|
||||||
type: string
|
|
||||||
targetId:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.Service:
|
|
||||||
properties:
|
|
||||||
httpService:
|
|
||||||
$ref: '#/definitions/workspaces.HttpService'
|
|
||||||
type: object
|
|
||||||
workspaces.Workspace:
|
|
||||||
properties:
|
|
||||||
activity:
|
|
||||||
$ref: '#/definitions/workspaces.Activity'
|
|
||||||
deferUpdates:
|
|
||||||
type: boolean
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
namespace:
|
|
||||||
type: string
|
|
||||||
paused:
|
|
||||||
type: boolean
|
|
||||||
pausedTime:
|
|
||||||
type: integer
|
|
||||||
pendingRestart:
|
|
||||||
type: boolean
|
|
||||||
podTemplate:
|
|
||||||
$ref: '#/definitions/workspaces.PodTemplate'
|
|
||||||
services:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/workspaces.Service'
|
|
||||||
type: array
|
|
||||||
state:
|
|
||||||
$ref: '#/definitions/workspaces.WorkspaceState'
|
|
||||||
stateMessage:
|
|
||||||
type: string
|
|
||||||
workspaceKind:
|
|
||||||
$ref: '#/definitions/workspaces.WorkspaceKindInfo'
|
|
||||||
type: object
|
|
||||||
workspaces.WorkspaceCreate:
|
|
||||||
properties:
|
|
||||||
deferUpdates:
|
|
||||||
type: boolean
|
|
||||||
kind:
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
paused:
|
|
||||||
type: boolean
|
|
||||||
podTemplate:
|
|
||||||
$ref: '#/definitions/workspaces.PodTemplateMutate'
|
|
||||||
type: object
|
|
||||||
workspaces.WorkspaceKindInfo:
|
|
||||||
properties:
|
|
||||||
icon:
|
|
||||||
$ref: '#/definitions/workspaces.ImageRef'
|
|
||||||
logo:
|
|
||||||
$ref: '#/definitions/workspaces.ImageRef'
|
|
||||||
missing:
|
|
||||||
type: boolean
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
workspaces.WorkspaceState:
|
|
||||||
enum:
|
|
||||||
- Running
|
|
||||||
- Terminating
|
|
||||||
- Paused
|
|
||||||
- Pending
|
|
||||||
- Error
|
|
||||||
- Unknown
|
|
||||||
type: string
|
|
||||||
x-enum-varnames:
|
|
||||||
- WorkspaceStateRunning
|
|
||||||
- WorkspaceStateTerminating
|
|
||||||
- WorkspaceStatePaused
|
|
||||||
- WorkspaceStatePending
|
|
||||||
- WorkspaceStateError
|
|
||||||
- WorkspaceStateUnknown
|
|
||||||
host: localhost:4000
|
|
||||||
info:
|
|
||||||
contact: {}
|
|
||||||
description: |-
|
|
||||||
This API provides endpoints to manage notebooks in a Kubernetes cluster.
|
|
||||||
For more information, visit https://www.kubeflow.org/docs/components/notebooks/
|
|
||||||
license:
|
|
||||||
name: Apache 2.0
|
|
||||||
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
title: Kubeflow Notebooks API
|
|
||||||
version: 1.0.0
|
|
||||||
paths:
|
|
||||||
/healthcheck:
|
|
||||||
get:
|
|
||||||
description: Provides a healthcheck response indicating the status of key services.
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful healthcheck response
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/health_check.HealthCheck'
|
|
||||||
"500":
|
|
||||||
description: Internal server error
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
summary: Returns the health status of the application
|
|
||||||
tags:
|
|
||||||
- healthcheck
|
|
||||||
/namespaces:
|
|
||||||
get:
|
|
||||||
description: Provides a list of all namespaces that the user has access to
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful namespaces response
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.NamespaceListEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
summary: Returns a list of all namespaces
|
|
||||||
tags:
|
|
||||||
- namespaces
|
|
||||||
/workspacekinds:
|
|
||||||
get:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: Returns a list of all available workspace kinds. Workspace kinds
|
|
||||||
define the different types of workspaces that can be created in the system.
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful operation. Returns a list of all available workspace
|
|
||||||
kinds.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceKindListEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to list workspace
|
|
||||||
kinds.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: List workspace kinds
|
|
||||||
tags:
|
|
||||||
- workspacekinds
|
|
||||||
/workspacekinds/{name}:
|
|
||||||
get:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: Returns details of a specific workspace kind identified by its
|
|
||||||
name. Workspace kinds define the available types of workspaces that can be
|
|
||||||
created.
|
|
||||||
parameters:
|
|
||||||
- description: Name of the workspace kind
|
|
||||||
example: jupyterlab
|
|
||||||
in: path
|
|
||||||
name: name
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful operation. Returns the requested workspace kind
|
|
||||||
details.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceKindEnvelope'
|
|
||||||
"400":
|
|
||||||
description: Bad Request. Invalid workspace kind name format.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to access the workspace
|
|
||||||
kind.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"404":
|
|
||||||
description: Not Found. Workspace kind does not exist.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: Get workspace kind
|
|
||||||
tags:
|
|
||||||
- workspacekinds
|
|
||||||
/workspaces:
|
|
||||||
get:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: |-
|
|
||||||
Returns a list of workspaces. The endpoint supports two modes:
|
|
||||||
1. List all workspaces across all namespaces (when no namespace is provided)
|
|
||||||
2. List workspaces in a specific namespace (when namespace is provided)
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful operation. Returns a list of workspaces.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceListEnvelope'
|
|
||||||
"400":
|
|
||||||
description: Bad Request. Invalid namespace format.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to list workspaces.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: List workspaces
|
|
||||||
tags:
|
|
||||||
- workspaces
|
|
||||||
/workspaces/{namespace}:
|
|
||||||
get:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: |-
|
|
||||||
Returns a list of workspaces. The endpoint supports two modes:
|
|
||||||
1. List all workspaces across all namespaces (when no namespace is provided)
|
|
||||||
2. List workspaces in a specific namespace (when namespace is provided)
|
|
||||||
parameters:
|
|
||||||
- description: Namespace to filter workspaces. If not provided, returns all
|
|
||||||
workspaces across all namespaces.
|
|
||||||
example: kubeflow-user-example-com
|
|
||||||
in: path
|
|
||||||
name: namespace
|
|
||||||
type: string
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful operation. Returns a list of workspaces.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceListEnvelope'
|
|
||||||
"400":
|
|
||||||
description: Bad Request. Invalid namespace format.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to list workspaces.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: List workspaces
|
|
||||||
tags:
|
|
||||||
- workspaces
|
|
||||||
post:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: Creates a new workspace in the specified namespace.
|
|
||||||
parameters:
|
|
||||||
- description: Namespace for the workspace
|
|
||||||
example: kubeflow-user-example-com
|
|
||||||
in: path
|
|
||||||
name: namespace
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
- description: Workspace creation configuration
|
|
||||||
in: body
|
|
||||||
name: body
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceCreateEnvelope'
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"201":
|
|
||||||
description: Workspace created successfully
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceEnvelope'
|
|
||||||
"400":
|
|
||||||
description: Bad Request. Invalid request body or namespace format.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to create workspace.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"409":
|
|
||||||
description: Conflict. Workspace with the same name already exists.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: Create workspace
|
|
||||||
tags:
|
|
||||||
- workspaces
|
|
||||||
/workspaces/{namespace}/{workspace_name}:
|
|
||||||
delete:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: Deletes a specific workspace identified by namespace and workspace
|
|
||||||
name.
|
|
||||||
parameters:
|
|
||||||
- description: Namespace of the workspace
|
|
||||||
example: kubeflow-user-example-com
|
|
||||||
in: path
|
|
||||||
name: namespace
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
- description: Name of the workspace
|
|
||||||
example: my-workspace
|
|
||||||
in: path
|
|
||||||
name: workspace_name
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"204":
|
|
||||||
description: Workspace deleted successfully
|
|
||||||
"400":
|
|
||||||
description: Bad Request. Invalid namespace or workspace name format.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to delete the workspace.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"404":
|
|
||||||
description: Not Found. Workspace does not exist.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: Delete workspace
|
|
||||||
tags:
|
|
||||||
- workspaces
|
|
||||||
get:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: Returns details of a specific workspace identified by namespace
|
|
||||||
and workspace name.
|
|
||||||
parameters:
|
|
||||||
- description: Namespace of the workspace
|
|
||||||
example: kubeflow-user-example-com
|
|
||||||
in: path
|
|
||||||
name: namespace
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
- description: Name of the workspace
|
|
||||||
example: my-workspace
|
|
||||||
in: path
|
|
||||||
name: workspace_name
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: Successful operation. Returns the requested workspace details.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.WorkspaceEnvelope'
|
|
||||||
"400":
|
|
||||||
description: Bad Request. Invalid namespace or workspace name format.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"401":
|
|
||||||
description: Unauthorized. Authentication is required.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"403":
|
|
||||||
description: Forbidden. User does not have permission to access the workspace.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"404":
|
|
||||||
description: Not Found. Workspace does not exist.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
"500":
|
|
||||||
description: Internal server error. An unexpected error occurred on the
|
|
||||||
server.
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/api.ErrorEnvelope'
|
|
||||||
security:
|
|
||||||
- ApiKeyAuth: []
|
|
||||||
summary: Get workspace
|
|
||||||
tags:
|
|
||||||
- workspaces
|
|
||||||
schemes:
|
|
||||||
- http
|
|
||||||
- https
|
|
||||||
swagger: "2.0"
|
|
||||||
Loading…
Reference in New Issue