1+ from typing import Optional
2+
3+ from fastapi import APIRouter , Cookie , Query
4+
5+ from src .core .exception import CustomException
6+ from src .schemas .errorResponse import ErrorResponse
7+ from src .schemas .setupWizard import (
8+ SetupWizardAppResponse ,
9+ SetupWizardCompleteResponse ,
10+ SetupWizardInstallAcceptedResponse ,
11+ SetupWizardInstallRequest ,
12+ SetupWizardInstallStatusResponse ,
13+ SetupWizardPlatformInitCompleteResponse ,
14+ SetupWizardStateResponse ,
15+ )
16+ from src .services .product_auth import PRODUCT_AUTH_COOKIE_NAME
17+ from src .services .setup_wizard import SetupWizardService
18+
19+ router = APIRouter ()
20+
21+
22+ @router .get (
23+ "/setup-wizard/state" ,
24+ summary = "Get setup wizard state" ,
25+ responses = {200 : {"model" : SetupWizardStateResponse }, 400 : {"model" : ErrorResponse }, 500 : {"model" : ErrorResponse }},
26+ )
27+ def get_setup_wizard_state (
28+ session_token : Optional [str ] = Cookie (default = None , alias = PRODUCT_AUTH_COOKIE_NAME ),
29+ ):
30+ return SetupWizardService ().get_state (session_token = session_token )
31+
32+
33+ @router .get (
34+ "/setup-wizard/app" ,
35+ summary = "Get marketplace app metadata" ,
36+ responses = {200 : {"model" : SetupWizardAppResponse }, 400 : {"model" : ErrorResponse }, 404 : {"model" : ErrorResponse }, 500 : {"model" : ErrorResponse }},
37+ )
38+ def get_setup_wizard_app (
39+ locale : str = Query ("en" , regex = "^(zh|en)(-[A-Za-z]{2})?$" ),
40+ ):
41+ return SetupWizardService ().get_app (locale )
42+
43+
44+ @router .post (
45+ "/setup-wizard/platform-init-complete" ,
46+ summary = "Advance setup wizard after platform initialization" ,
47+ responses = {200 : {"model" : SetupWizardPlatformInitCompleteResponse }, 401 : {"model" : ErrorResponse }, 500 : {"model" : ErrorResponse }},
48+ )
49+ def complete_platform_initialization (
50+ session_token : Optional [str ] = Cookie (default = None , alias = PRODUCT_AUTH_COOKIE_NAME ),
51+ ):
52+ return SetupWizardService ().mark_platform_init_complete (session_token = session_token )
53+
54+
55+ @router .post (
56+ "/setup-wizard/install" ,
57+ summary = "Start marketplace app installation" ,
58+ responses = {200 : {"model" : SetupWizardInstallAcceptedResponse }, 400 : {"model" : ErrorResponse }, 401 : {"model" : ErrorResponse }, 500 : {"model" : ErrorResponse }},
59+ )
60+ def install_marketplace_app (
61+ payload : SetupWizardInstallRequest ,
62+ endpointId : int = Query (None , description = "Endpoint ID to install app on, if not set install on the local endpoint" ),
63+ session_token : Optional [str ] = Cookie (default = None , alias = PRODUCT_AUTH_COOKIE_NAME ),
64+ ):
65+ return SetupWizardService ().install_app (payload .model_dump (), session_token = session_token , endpoint_id = endpointId )
66+
67+
68+ @router .get (
69+ "/setup-wizard/install/{tracking_id}" ,
70+ summary = "Get marketplace app installation status" ,
71+ responses = {200 : {"model" : SetupWizardInstallStatusResponse }, 404 : {"model" : ErrorResponse }, 500 : {"model" : ErrorResponse }},
72+ )
73+ def get_marketplace_app_install_status (tracking_id : str ):
74+ return SetupWizardService ().get_install_status (tracking_id )
75+
76+
77+ @router .post (
78+ "/setup-wizard/complete" ,
79+ summary = "Mark setup wizard complete" ,
80+ responses = {200 : {"model" : SetupWizardCompleteResponse }, 400 : {"model" : ErrorResponse }, 401 : {"model" : ErrorResponse }, 500 : {"model" : ErrorResponse }},
81+ )
82+ def complete_setup_wizard (
83+ session_token : Optional [str ] = Cookie (default = None , alias = PRODUCT_AUTH_COOKIE_NAME ),
84+ ):
85+ return SetupWizardService ().complete (session_token = session_token )
0 commit comments