diff --git a/scaleway-async/scaleway_async/account/v3/__init__.py b/scaleway-async/scaleway_async/account/v3/__init__.py index 1d357a35a..f1f5a5ccc 100644 --- a/scaleway-async/scaleway_async/account/v3/__init__.py +++ b/scaleway-async/scaleway_async/account/v3/__init__.py @@ -3,9 +3,22 @@ from .types import ContractType from .types import ListContractSignaturesRequestOrderBy from .types import ListProjectsRequestOrderBy +from .types import QualificationArchitectureType +from .types import QualificationHostApplicationSubUseCase +from .types import QualificationHostWebsiteSubUseCase from .types import Contract +from .types import QualificationAiMachine +from .types import QualificationArchiveData +from .types import QualificationContainer +from .types import QualificationDeploySoftware +from .types import QualificationHostApplication +from .types import QualificationHostWebsite +from .types import QualificationOtherUseCase +from .types import QualificationSetScalewayEnvironment +from .types import QualificationShareData from .types import ContractSignature from .types import Project +from .types import Qualification from .types import CheckContractSignatureResponse from .types import ContractApiCheckContractSignatureRequest from .types import ContractApiCreateContractSignatureRequest @@ -18,7 +31,9 @@ from .types import ProjectApiDeleteProjectRequest from .types import ProjectApiGetProjectRequest from .types import ProjectApiListProjectsRequest +from .types import ProjectApiSetProjectQualificationRequest from .types import ProjectApiUpdateProjectRequest +from .types import ProjectQualification from .api import AccountV3ContractAPI from .api import AccountV3ProjectAPI @@ -26,9 +41,22 @@ "ContractType", "ListContractSignaturesRequestOrderBy", "ListProjectsRequestOrderBy", + "QualificationArchitectureType", + "QualificationHostApplicationSubUseCase", + "QualificationHostWebsiteSubUseCase", "Contract", + "QualificationAiMachine", + "QualificationArchiveData", + "QualificationContainer", + "QualificationDeploySoftware", + "QualificationHostApplication", + "QualificationHostWebsite", + "QualificationOtherUseCase", + "QualificationSetScalewayEnvironment", + "QualificationShareData", "ContractSignature", "Project", + "Qualification", "CheckContractSignatureResponse", "ContractApiCheckContractSignatureRequest", "ContractApiCreateContractSignatureRequest", @@ -41,7 +69,9 @@ "ProjectApiDeleteProjectRequest", "ProjectApiGetProjectRequest", "ProjectApiListProjectsRequest", + "ProjectApiSetProjectQualificationRequest", "ProjectApiUpdateProjectRequest", + "ProjectQualification", "AccountV3ContractAPI", "AccountV3ProjectAPI", ] diff --git a/scaleway-async/scaleway_async/account/v3/api.py b/scaleway-async/scaleway_async/account/v3/api.py index 05626874f..98d728b3a 100644 --- a/scaleway-async/scaleway_async/account/v3/api.py +++ b/scaleway-async/scaleway_async/account/v3/api.py @@ -25,7 +25,10 @@ ListProjectsResponse, Project, ProjectApiCreateProjectRequest, + ProjectApiSetProjectQualificationRequest, ProjectApiUpdateProjectRequest, + ProjectQualification, + Qualification, ) from .marshalling import ( unmarshal_ContractSignature, @@ -33,9 +36,11 @@ unmarshal_CheckContractSignatureResponse, unmarshal_ListContractSignaturesResponse, unmarshal_ListProjectsResponse, + unmarshal_ProjectQualification, marshal_ContractApiCheckContractSignatureRequest, marshal_ContractApiCreateContractSignatureRequest, marshal_ProjectApiCreateProjectRequest, + marshal_ProjectApiSetProjectQualificationRequest, marshal_ProjectApiUpdateProjectRequest, ) from ...std.types import ( @@ -491,3 +496,41 @@ async def update_project( self._throw_on_error(res) return unmarshal_Project(res.json()) + + async def set_project_qualification( + self, + *, + project_id: Optional[str] = None, + qualification: Optional[Qualification] = None, + ) -> ProjectQualification: + """ + Set project use case. + Set the project use case for a new or existing Project, specified by its Project ID. You can customize the use case, sub use case, and architecture type you want to use in the Project. + :param project_id: Project ID. + :param qualification: Use case chosen for the Project. + :return: :class:`ProjectQualification ` + + Usage: + :: + + result = await api.set_project_qualification() + """ + + param_project_id = validate_path_param( + "project_id", project_id or self.client.default_project_id + ) + + res = self._request( + "POST", + f"/account/v3/projects/{param_project_id}/project-qualification", + body=marshal_ProjectApiSetProjectQualificationRequest( + ProjectApiSetProjectQualificationRequest( + project_id=project_id, + qualification=qualification, + ), + self.client, + ), + ) + + self._throw_on_error(res) + return unmarshal_ProjectQualification(res.json()) diff --git a/scaleway-async/scaleway_async/account/v3/marshalling.py b/scaleway-async/scaleway_async/account/v3/marshalling.py index f6e3445a6..755e37779 100644 --- a/scaleway-async/scaleway_async/account/v3/marshalling.py +++ b/scaleway-async/scaleway_async/account/v3/marshalling.py @@ -5,6 +5,10 @@ from dateutil import parser from scaleway_core.profile import ProfileDefaults +from scaleway_core.utils import ( + OneOfPossibility, + resolve_one_of, +) from .types import ( Contract, ContractSignature, @@ -12,9 +16,21 @@ CheckContractSignatureResponse, ListContractSignaturesResponse, ListProjectsResponse, + QualificationAiMachine, + QualificationArchiveData, + QualificationContainer, + QualificationDeploySoftware, + QualificationHostApplication, + QualificationHostWebsite, + QualificationOtherUseCase, + QualificationSetScalewayEnvironment, + QualificationShareData, + Qualification, + ProjectQualification, ContractApiCheckContractSignatureRequest, ContractApiCreateContractSignatureRequest, ProjectApiCreateProjectRequest, + ProjectApiSetProjectQualificationRequest, ProjectApiUpdateProjectRequest, ) @@ -207,6 +223,207 @@ def unmarshal_ListProjectsResponse(data: Any) -> ListProjectsResponse: return ListProjectsResponse(**args) +def unmarshal_QualificationAiMachine(data: Any) -> QualificationAiMachine: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationAiMachine' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationAiMachine(**args) + + +def unmarshal_QualificationArchiveData(data: Any) -> QualificationArchiveData: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationArchiveData' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationArchiveData(**args) + + +def unmarshal_QualificationContainer(data: Any) -> QualificationContainer: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationContainer' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationContainer(**args) + + +def unmarshal_QualificationDeploySoftware(data: Any) -> QualificationDeploySoftware: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationDeploySoftware' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationDeploySoftware(**args) + + +def unmarshal_QualificationHostApplication(data: Any) -> QualificationHostApplication: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationHostApplication' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("sub_use_case", None) + if field is not None: + args["sub_use_case"] = field + + return QualificationHostApplication(**args) + + +def unmarshal_QualificationHostWebsite(data: Any) -> QualificationHostWebsite: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationHostWebsite' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("sub_use_case", None) + if field is not None: + args["sub_use_case"] = field + + return QualificationHostWebsite(**args) + + +def unmarshal_QualificationOtherUseCase(data: Any) -> QualificationOtherUseCase: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationOtherUseCase' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationOtherUseCase(**args) + + +def unmarshal_QualificationSetScalewayEnvironment( + data: Any, +) -> QualificationSetScalewayEnvironment: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationSetScalewayEnvironment' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationSetScalewayEnvironment(**args) + + +def unmarshal_QualificationShareData(data: Any) -> QualificationShareData: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationShareData' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationShareData(**args) + + +def unmarshal_Qualification(data: Any) -> Qualification: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'Qualification' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("architecture_type", None) + if field is not None: + args["architecture_type"] = field + + field = data.get("host_website", None) + if field is not None: + args["host_website"] = unmarshal_QualificationHostWebsite(field) + else: + args["host_website"] = None + + field = data.get("host_application", None) + if field is not None: + args["host_application"] = unmarshal_QualificationHostApplication(field) + else: + args["host_application"] = None + + field = data.get("deploy_software", None) + if field is not None: + args["deploy_software"] = unmarshal_QualificationDeploySoftware(field) + else: + args["deploy_software"] = None + + field = data.get("set_scaleway_environment", None) + if field is not None: + args["set_scaleway_environment"] = ( + unmarshal_QualificationSetScalewayEnvironment(field) + ) + else: + args["set_scaleway_environment"] = None + + field = data.get("ai_machine", None) + if field is not None: + args["ai_machine"] = unmarshal_QualificationAiMachine(field) + else: + args["ai_machine"] = None + + field = data.get("container", None) + if field is not None: + args["container"] = unmarshal_QualificationContainer(field) + else: + args["container"] = None + + field = data.get("archive_data", None) + if field is not None: + args["archive_data"] = unmarshal_QualificationArchiveData(field) + else: + args["archive_data"] = None + + field = data.get("share_data", None) + if field is not None: + args["share_data"] = unmarshal_QualificationShareData(field) + else: + args["share_data"] = None + + field = data.get("other_use_case", None) + if field is not None: + args["other_use_case"] = unmarshal_QualificationOtherUseCase(field) + else: + args["other_use_case"] = None + + return Qualification(**args) + + +def unmarshal_ProjectQualification(data: Any) -> ProjectQualification: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'ProjectQualification' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("project_id", None) + if field is not None: + args["project_id"] = field + + field = data.get("qualification", None) + if field is not None: + args["qualification"] = unmarshal_Qualification(field) + else: + args["qualification"] = None + + return ProjectQualification(**args) + + def marshal_ContractApiCheckContractSignatureRequest( request: ContractApiCheckContractSignatureRequest, defaults: ProfileDefaults, @@ -270,6 +487,134 @@ def marshal_ProjectApiCreateProjectRequest( return output +def marshal_QualificationAiMachine( + request: QualificationAiMachine, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationArchiveData( + request: QualificationArchiveData, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationContainer( + request: QualificationContainer, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationDeploySoftware( + request: QualificationDeploySoftware, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationHostApplication( + request: QualificationHostApplication, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.sub_use_case is not None: + output["sub_use_case"] = str(request.sub_use_case) + + return output + + +def marshal_QualificationHostWebsite( + request: QualificationHostWebsite, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.sub_use_case is not None: + output["sub_use_case"] = str(request.sub_use_case) + + return output + + +def marshal_QualificationOtherUseCase( + request: QualificationOtherUseCase, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationSetScalewayEnvironment( + request: QualificationSetScalewayEnvironment, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationShareData( + request: QualificationShareData, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_Qualification( + request: Qualification, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + output.update( + resolve_one_of( + [ + OneOfPossibility("host_website", request.host_website), + OneOfPossibility("host_application", request.host_application), + OneOfPossibility("deploy_software", request.deploy_software), + OneOfPossibility( + "set_scaleway_environment", request.set_scaleway_environment + ), + OneOfPossibility("ai_machine", request.ai_machine), + OneOfPossibility("container", request.container), + OneOfPossibility("archive_data", request.archive_data), + OneOfPossibility("share_data", request.share_data), + OneOfPossibility("other_use_case", request.other_use_case), + ] + ), + ) + + if request.architecture_type is not None: + output["architecture_type"] = str(request.architecture_type) + + return output + + +def marshal_ProjectApiSetProjectQualificationRequest( + request: ProjectApiSetProjectQualificationRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.qualification is not None: + output["qualification"] = marshal_Qualification(request.qualification, defaults) + + return output + + def marshal_ProjectApiUpdateProjectRequest( request: ProjectApiUpdateProjectRequest, defaults: ProfileDefaults, diff --git a/scaleway-async/scaleway_async/account/v3/types.py b/scaleway-async/scaleway_async/account/v3/types.py index 9973bf316..f89f0b828 100644 --- a/scaleway-async/scaleway_async/account/v3/types.py +++ b/scaleway-async/scaleway_async/account/v3/types.py @@ -50,6 +50,41 @@ def __str__(self) -> str: return str(self.value) +class QualificationArchitectureType(str, Enum, metaclass=StrEnumMeta): + UNKNOWN_ARCHITECTURE_TYPE = "unknown_architecture_type" + OBJECT_STORAGE = "object_storage" + WEB_HOSTING = "web_hosting" + INSTANCE = "instance" + ELASTIC = "elastic" + KUBERNETES = "kubernetes" + SERVERLESS = "serverless" + DEDICATED_SERVER = "dedicated_server" + OTHER_ARCHITECTURE_TYPE = "other_architecture_type" + + def __str__(self) -> str: + return str(self.value) + + +class QualificationHostApplicationSubUseCase(str, Enum, metaclass=StrEnumMeta): + UNKNOWN_SUB_USE_CASE = "unknown_sub_use_case" + SAAS_APP = "saas_app" + GOVERNMENT_APP = "government_app" + + def __str__(self) -> str: + return str(self.value) + + +class QualificationHostWebsiteSubUseCase(str, Enum, metaclass=StrEnumMeta): + UNKNOWN_SUB_USE_CASE = "unknown_sub_use_case" + INFORMATION_WEBSITE = "information_website" + ECOMMERCE_WEBSITE = "ecommerce_website" + HIGH_WEBSITE = "high_website" + OTHER_SUB_USE_CASE = "other_sub_use_case" + + def __str__(self) -> str: + return str(self.value) + + @dataclass class Contract: id: str @@ -83,6 +118,51 @@ class Contract: """ +@dataclass +class QualificationAiMachine: + pass + + +@dataclass +class QualificationArchiveData: + pass + + +@dataclass +class QualificationContainer: + pass + + +@dataclass +class QualificationDeploySoftware: + pass + + +@dataclass +class QualificationHostApplication: + sub_use_case: QualificationHostApplicationSubUseCase + + +@dataclass +class QualificationHostWebsite: + sub_use_case: QualificationHostWebsiteSubUseCase + + +@dataclass +class QualificationOtherUseCase: + pass + + +@dataclass +class QualificationSetScalewayEnvironment: + pass + + +@dataclass +class QualificationShareData: + pass + + @dataclass class ContractSignature: id: str @@ -149,6 +229,32 @@ class Project: """ +@dataclass +class Qualification: + architecture_type: QualificationArchitectureType + """ + Architecture type of the qualification. + """ + + host_website: Optional[QualificationHostWebsite] + + host_application: Optional[QualificationHostApplication] + + deploy_software: Optional[QualificationDeploySoftware] + + set_scaleway_environment: Optional[QualificationSetScalewayEnvironment] + + ai_machine: Optional[QualificationAiMachine] + + container: Optional[QualificationContainer] + + archive_data: Optional[QualificationArchiveData] + + share_data: Optional[QualificationShareData] + + other_use_case: Optional[QualificationOtherUseCase] + + @dataclass class CheckContractSignatureResponse: created: bool @@ -340,6 +446,19 @@ class ProjectApiListProjectsRequest: """ +@dataclass +class ProjectApiSetProjectQualificationRequest: + project_id: Optional[str] + """ + Project ID. + """ + + qualification: Optional[Qualification] + """ + Use case chosen for the Project. + """ + + @dataclass class ProjectApiUpdateProjectRequest: project_id: Optional[str] @@ -356,3 +475,16 @@ class ProjectApiUpdateProjectRequest: """ Description of the Project. """ + + +@dataclass +class ProjectQualification: + project_id: str + """ + Project ID. + """ + + qualification: Optional[Qualification] + """ + Qualification of the Project. + """ diff --git a/scaleway/scaleway/account/v3/__init__.py b/scaleway/scaleway/account/v3/__init__.py index 1d357a35a..f1f5a5ccc 100644 --- a/scaleway/scaleway/account/v3/__init__.py +++ b/scaleway/scaleway/account/v3/__init__.py @@ -3,9 +3,22 @@ from .types import ContractType from .types import ListContractSignaturesRequestOrderBy from .types import ListProjectsRequestOrderBy +from .types import QualificationArchitectureType +from .types import QualificationHostApplicationSubUseCase +from .types import QualificationHostWebsiteSubUseCase from .types import Contract +from .types import QualificationAiMachine +from .types import QualificationArchiveData +from .types import QualificationContainer +from .types import QualificationDeploySoftware +from .types import QualificationHostApplication +from .types import QualificationHostWebsite +from .types import QualificationOtherUseCase +from .types import QualificationSetScalewayEnvironment +from .types import QualificationShareData from .types import ContractSignature from .types import Project +from .types import Qualification from .types import CheckContractSignatureResponse from .types import ContractApiCheckContractSignatureRequest from .types import ContractApiCreateContractSignatureRequest @@ -18,7 +31,9 @@ from .types import ProjectApiDeleteProjectRequest from .types import ProjectApiGetProjectRequest from .types import ProjectApiListProjectsRequest +from .types import ProjectApiSetProjectQualificationRequest from .types import ProjectApiUpdateProjectRequest +from .types import ProjectQualification from .api import AccountV3ContractAPI from .api import AccountV3ProjectAPI @@ -26,9 +41,22 @@ "ContractType", "ListContractSignaturesRequestOrderBy", "ListProjectsRequestOrderBy", + "QualificationArchitectureType", + "QualificationHostApplicationSubUseCase", + "QualificationHostWebsiteSubUseCase", "Contract", + "QualificationAiMachine", + "QualificationArchiveData", + "QualificationContainer", + "QualificationDeploySoftware", + "QualificationHostApplication", + "QualificationHostWebsite", + "QualificationOtherUseCase", + "QualificationSetScalewayEnvironment", + "QualificationShareData", "ContractSignature", "Project", + "Qualification", "CheckContractSignatureResponse", "ContractApiCheckContractSignatureRequest", "ContractApiCreateContractSignatureRequest", @@ -41,7 +69,9 @@ "ProjectApiDeleteProjectRequest", "ProjectApiGetProjectRequest", "ProjectApiListProjectsRequest", + "ProjectApiSetProjectQualificationRequest", "ProjectApiUpdateProjectRequest", + "ProjectQualification", "AccountV3ContractAPI", "AccountV3ProjectAPI", ] diff --git a/scaleway/scaleway/account/v3/api.py b/scaleway/scaleway/account/v3/api.py index 5619ae907..0631e5376 100644 --- a/scaleway/scaleway/account/v3/api.py +++ b/scaleway/scaleway/account/v3/api.py @@ -25,7 +25,10 @@ ListProjectsResponse, Project, ProjectApiCreateProjectRequest, + ProjectApiSetProjectQualificationRequest, ProjectApiUpdateProjectRequest, + ProjectQualification, + Qualification, ) from .marshalling import ( unmarshal_ContractSignature, @@ -33,9 +36,11 @@ unmarshal_CheckContractSignatureResponse, unmarshal_ListContractSignaturesResponse, unmarshal_ListProjectsResponse, + unmarshal_ProjectQualification, marshal_ContractApiCheckContractSignatureRequest, marshal_ContractApiCreateContractSignatureRequest, marshal_ProjectApiCreateProjectRequest, + marshal_ProjectApiSetProjectQualificationRequest, marshal_ProjectApiUpdateProjectRequest, ) from ...std.types import ( @@ -491,3 +496,41 @@ def update_project( self._throw_on_error(res) return unmarshal_Project(res.json()) + + def set_project_qualification( + self, + *, + project_id: Optional[str] = None, + qualification: Optional[Qualification] = None, + ) -> ProjectQualification: + """ + Set project use case. + Set the project use case for a new or existing Project, specified by its Project ID. You can customize the use case, sub use case, and architecture type you want to use in the Project. + :param project_id: Project ID. + :param qualification: Use case chosen for the Project. + :return: :class:`ProjectQualification ` + + Usage: + :: + + result = api.set_project_qualification() + """ + + param_project_id = validate_path_param( + "project_id", project_id or self.client.default_project_id + ) + + res = self._request( + "POST", + f"/account/v3/projects/{param_project_id}/project-qualification", + body=marshal_ProjectApiSetProjectQualificationRequest( + ProjectApiSetProjectQualificationRequest( + project_id=project_id, + qualification=qualification, + ), + self.client, + ), + ) + + self._throw_on_error(res) + return unmarshal_ProjectQualification(res.json()) diff --git a/scaleway/scaleway/account/v3/marshalling.py b/scaleway/scaleway/account/v3/marshalling.py index f6e3445a6..755e37779 100644 --- a/scaleway/scaleway/account/v3/marshalling.py +++ b/scaleway/scaleway/account/v3/marshalling.py @@ -5,6 +5,10 @@ from dateutil import parser from scaleway_core.profile import ProfileDefaults +from scaleway_core.utils import ( + OneOfPossibility, + resolve_one_of, +) from .types import ( Contract, ContractSignature, @@ -12,9 +16,21 @@ CheckContractSignatureResponse, ListContractSignaturesResponse, ListProjectsResponse, + QualificationAiMachine, + QualificationArchiveData, + QualificationContainer, + QualificationDeploySoftware, + QualificationHostApplication, + QualificationHostWebsite, + QualificationOtherUseCase, + QualificationSetScalewayEnvironment, + QualificationShareData, + Qualification, + ProjectQualification, ContractApiCheckContractSignatureRequest, ContractApiCreateContractSignatureRequest, ProjectApiCreateProjectRequest, + ProjectApiSetProjectQualificationRequest, ProjectApiUpdateProjectRequest, ) @@ -207,6 +223,207 @@ def unmarshal_ListProjectsResponse(data: Any) -> ListProjectsResponse: return ListProjectsResponse(**args) +def unmarshal_QualificationAiMachine(data: Any) -> QualificationAiMachine: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationAiMachine' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationAiMachine(**args) + + +def unmarshal_QualificationArchiveData(data: Any) -> QualificationArchiveData: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationArchiveData' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationArchiveData(**args) + + +def unmarshal_QualificationContainer(data: Any) -> QualificationContainer: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationContainer' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationContainer(**args) + + +def unmarshal_QualificationDeploySoftware(data: Any) -> QualificationDeploySoftware: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationDeploySoftware' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationDeploySoftware(**args) + + +def unmarshal_QualificationHostApplication(data: Any) -> QualificationHostApplication: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationHostApplication' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("sub_use_case", None) + if field is not None: + args["sub_use_case"] = field + + return QualificationHostApplication(**args) + + +def unmarshal_QualificationHostWebsite(data: Any) -> QualificationHostWebsite: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationHostWebsite' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("sub_use_case", None) + if field is not None: + args["sub_use_case"] = field + + return QualificationHostWebsite(**args) + + +def unmarshal_QualificationOtherUseCase(data: Any) -> QualificationOtherUseCase: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationOtherUseCase' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationOtherUseCase(**args) + + +def unmarshal_QualificationSetScalewayEnvironment( + data: Any, +) -> QualificationSetScalewayEnvironment: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationSetScalewayEnvironment' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationSetScalewayEnvironment(**args) + + +def unmarshal_QualificationShareData(data: Any) -> QualificationShareData: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'QualificationShareData' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + return QualificationShareData(**args) + + +def unmarshal_Qualification(data: Any) -> Qualification: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'Qualification' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("architecture_type", None) + if field is not None: + args["architecture_type"] = field + + field = data.get("host_website", None) + if field is not None: + args["host_website"] = unmarshal_QualificationHostWebsite(field) + else: + args["host_website"] = None + + field = data.get("host_application", None) + if field is not None: + args["host_application"] = unmarshal_QualificationHostApplication(field) + else: + args["host_application"] = None + + field = data.get("deploy_software", None) + if field is not None: + args["deploy_software"] = unmarshal_QualificationDeploySoftware(field) + else: + args["deploy_software"] = None + + field = data.get("set_scaleway_environment", None) + if field is not None: + args["set_scaleway_environment"] = ( + unmarshal_QualificationSetScalewayEnvironment(field) + ) + else: + args["set_scaleway_environment"] = None + + field = data.get("ai_machine", None) + if field is not None: + args["ai_machine"] = unmarshal_QualificationAiMachine(field) + else: + args["ai_machine"] = None + + field = data.get("container", None) + if field is not None: + args["container"] = unmarshal_QualificationContainer(field) + else: + args["container"] = None + + field = data.get("archive_data", None) + if field is not None: + args["archive_data"] = unmarshal_QualificationArchiveData(field) + else: + args["archive_data"] = None + + field = data.get("share_data", None) + if field is not None: + args["share_data"] = unmarshal_QualificationShareData(field) + else: + args["share_data"] = None + + field = data.get("other_use_case", None) + if field is not None: + args["other_use_case"] = unmarshal_QualificationOtherUseCase(field) + else: + args["other_use_case"] = None + + return Qualification(**args) + + +def unmarshal_ProjectQualification(data: Any) -> ProjectQualification: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'ProjectQualification' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("project_id", None) + if field is not None: + args["project_id"] = field + + field = data.get("qualification", None) + if field is not None: + args["qualification"] = unmarshal_Qualification(field) + else: + args["qualification"] = None + + return ProjectQualification(**args) + + def marshal_ContractApiCheckContractSignatureRequest( request: ContractApiCheckContractSignatureRequest, defaults: ProfileDefaults, @@ -270,6 +487,134 @@ def marshal_ProjectApiCreateProjectRequest( return output +def marshal_QualificationAiMachine( + request: QualificationAiMachine, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationArchiveData( + request: QualificationArchiveData, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationContainer( + request: QualificationContainer, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationDeploySoftware( + request: QualificationDeploySoftware, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationHostApplication( + request: QualificationHostApplication, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.sub_use_case is not None: + output["sub_use_case"] = str(request.sub_use_case) + + return output + + +def marshal_QualificationHostWebsite( + request: QualificationHostWebsite, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.sub_use_case is not None: + output["sub_use_case"] = str(request.sub_use_case) + + return output + + +def marshal_QualificationOtherUseCase( + request: QualificationOtherUseCase, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationSetScalewayEnvironment( + request: QualificationSetScalewayEnvironment, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_QualificationShareData( + request: QualificationShareData, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + return output + + +def marshal_Qualification( + request: Qualification, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + output.update( + resolve_one_of( + [ + OneOfPossibility("host_website", request.host_website), + OneOfPossibility("host_application", request.host_application), + OneOfPossibility("deploy_software", request.deploy_software), + OneOfPossibility( + "set_scaleway_environment", request.set_scaleway_environment + ), + OneOfPossibility("ai_machine", request.ai_machine), + OneOfPossibility("container", request.container), + OneOfPossibility("archive_data", request.archive_data), + OneOfPossibility("share_data", request.share_data), + OneOfPossibility("other_use_case", request.other_use_case), + ] + ), + ) + + if request.architecture_type is not None: + output["architecture_type"] = str(request.architecture_type) + + return output + + +def marshal_ProjectApiSetProjectQualificationRequest( + request: ProjectApiSetProjectQualificationRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.qualification is not None: + output["qualification"] = marshal_Qualification(request.qualification, defaults) + + return output + + def marshal_ProjectApiUpdateProjectRequest( request: ProjectApiUpdateProjectRequest, defaults: ProfileDefaults, diff --git a/scaleway/scaleway/account/v3/types.py b/scaleway/scaleway/account/v3/types.py index 9973bf316..f89f0b828 100644 --- a/scaleway/scaleway/account/v3/types.py +++ b/scaleway/scaleway/account/v3/types.py @@ -50,6 +50,41 @@ def __str__(self) -> str: return str(self.value) +class QualificationArchitectureType(str, Enum, metaclass=StrEnumMeta): + UNKNOWN_ARCHITECTURE_TYPE = "unknown_architecture_type" + OBJECT_STORAGE = "object_storage" + WEB_HOSTING = "web_hosting" + INSTANCE = "instance" + ELASTIC = "elastic" + KUBERNETES = "kubernetes" + SERVERLESS = "serverless" + DEDICATED_SERVER = "dedicated_server" + OTHER_ARCHITECTURE_TYPE = "other_architecture_type" + + def __str__(self) -> str: + return str(self.value) + + +class QualificationHostApplicationSubUseCase(str, Enum, metaclass=StrEnumMeta): + UNKNOWN_SUB_USE_CASE = "unknown_sub_use_case" + SAAS_APP = "saas_app" + GOVERNMENT_APP = "government_app" + + def __str__(self) -> str: + return str(self.value) + + +class QualificationHostWebsiteSubUseCase(str, Enum, metaclass=StrEnumMeta): + UNKNOWN_SUB_USE_CASE = "unknown_sub_use_case" + INFORMATION_WEBSITE = "information_website" + ECOMMERCE_WEBSITE = "ecommerce_website" + HIGH_WEBSITE = "high_website" + OTHER_SUB_USE_CASE = "other_sub_use_case" + + def __str__(self) -> str: + return str(self.value) + + @dataclass class Contract: id: str @@ -83,6 +118,51 @@ class Contract: """ +@dataclass +class QualificationAiMachine: + pass + + +@dataclass +class QualificationArchiveData: + pass + + +@dataclass +class QualificationContainer: + pass + + +@dataclass +class QualificationDeploySoftware: + pass + + +@dataclass +class QualificationHostApplication: + sub_use_case: QualificationHostApplicationSubUseCase + + +@dataclass +class QualificationHostWebsite: + sub_use_case: QualificationHostWebsiteSubUseCase + + +@dataclass +class QualificationOtherUseCase: + pass + + +@dataclass +class QualificationSetScalewayEnvironment: + pass + + +@dataclass +class QualificationShareData: + pass + + @dataclass class ContractSignature: id: str @@ -149,6 +229,32 @@ class Project: """ +@dataclass +class Qualification: + architecture_type: QualificationArchitectureType + """ + Architecture type of the qualification. + """ + + host_website: Optional[QualificationHostWebsite] + + host_application: Optional[QualificationHostApplication] + + deploy_software: Optional[QualificationDeploySoftware] + + set_scaleway_environment: Optional[QualificationSetScalewayEnvironment] + + ai_machine: Optional[QualificationAiMachine] + + container: Optional[QualificationContainer] + + archive_data: Optional[QualificationArchiveData] + + share_data: Optional[QualificationShareData] + + other_use_case: Optional[QualificationOtherUseCase] + + @dataclass class CheckContractSignatureResponse: created: bool @@ -340,6 +446,19 @@ class ProjectApiListProjectsRequest: """ +@dataclass +class ProjectApiSetProjectQualificationRequest: + project_id: Optional[str] + """ + Project ID. + """ + + qualification: Optional[Qualification] + """ + Use case chosen for the Project. + """ + + @dataclass class ProjectApiUpdateProjectRequest: project_id: Optional[str] @@ -356,3 +475,16 @@ class ProjectApiUpdateProjectRequest: """ Description of the Project. """ + + +@dataclass +class ProjectQualification: + project_id: str + """ + Project ID. + """ + + qualification: Optional[Qualification] + """ + Qualification of the Project. + """