From a6a727e8a4cebf45c0a698cca2eefcf52799d088 Mon Sep 17 00:00:00 2001 From: Xin Zhang Date: Sun, 26 Jan 2025 15:36:56 +0800 Subject: [PATCH] feat: add inner API to create workspace without requiring email (#13021) --- .../inner_api/workspace/workspace.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/api/controllers/inner_api/workspace/workspace.py b/api/controllers/inner_api/workspace/workspace.py index d7346b13b1..8b2a7c0c4e 100644 --- a/api/controllers/inner_api/workspace/workspace.py +++ b/api/controllers/inner_api/workspace/workspace.py @@ -1,3 +1,5 @@ +import json + from flask_restful import Resource, reqparse # type: ignore from controllers.console.wraps import setup_required @@ -29,4 +31,34 @@ class EnterpriseWorkspace(Resource): return {"message": "enterprise workspace created."} +class EnterpriseWorkspaceNoOwnerEmail(Resource): + @setup_required + @inner_api_only + def post(self): + parser = reqparse.RequestParser() + parser.add_argument("name", type=str, required=True, location="json") + args = parser.parse_args() + + tenant = TenantService.create_tenant(args["name"], is_from_dashboard=True) + + tenant_was_created.send(tenant) + + resp = { + "id": tenant.id, + "name": tenant.name, + "encrypt_public_key": tenant.encrypt_public_key, + "plan": tenant.plan, + "status": tenant.status, + "custom_config": json.loads(tenant.custom_config) if tenant.custom_config else {}, + "created_at": tenant.created_at.isoformat() if tenant.created_at else None, + "updated_at": tenant.updated_at.isoformat() if tenant.updated_at else None, + } + + return { + "message": "enterprise workspace created.", + "tenant": resp, + } + + api.add_resource(EnterpriseWorkspace, "/enterprise/workspace") +api.add_resource(EnterpriseWorkspaceNoOwnerEmail, "/enterprise/workspace/ownerless")