@@ -187,6 +187,148 @@ func (enum *ListProjectsRequestOrderBy) UnmarshalJSON(data []byte) error {
187187 return nil
188188}
189189
190+ type QualificationArchitectureType string
191+
192+ const (
193+ // Unknown architecture type.
194+ QualificationArchitectureTypeUnknownArchitectureType = QualificationArchitectureType ("unknown_architecture_type" )
195+ // Object Storage architecture.
196+ QualificationArchitectureTypeObjectStorage = QualificationArchitectureType ("object_storage" )
197+ // Web Hosting architecture.
198+ QualificationArchitectureTypeWebHosting = QualificationArchitectureType ("web_hosting" )
199+ // Instance architecture.
200+ QualificationArchitectureTypeInstance = QualificationArchitectureType ("instance" )
201+ // Elastic Metal architecture.
202+ QualificationArchitectureTypeElastic = QualificationArchitectureType ("elastic" )
203+ // Kubernetes architecture.
204+ QualificationArchitectureTypeKubernetes = QualificationArchitectureType ("kubernetes" )
205+ // Serverless architecture.
206+ QualificationArchitectureTypeServerless = QualificationArchitectureType ("serverless" )
207+ // Dedibox architecture.
208+ QualificationArchitectureTypeDedicatedServer = QualificationArchitectureType ("dedicated_server" )
209+ // Other architecture type.
210+ QualificationArchitectureTypeOtherArchitectureType = QualificationArchitectureType ("other_architecture_type" )
211+ )
212+
213+ func (enum QualificationArchitectureType ) String () string {
214+ if enum == "" {
215+ // return default value if empty
216+ return "unknown_architecture_type"
217+ }
218+ return string (enum )
219+ }
220+
221+ func (enum QualificationArchitectureType ) Values () []QualificationArchitectureType {
222+ return []QualificationArchitectureType {
223+ "unknown_architecture_type" ,
224+ "object_storage" ,
225+ "web_hosting" ,
226+ "instance" ,
227+ "elastic" ,
228+ "kubernetes" ,
229+ "serverless" ,
230+ "dedicated_server" ,
231+ "other_architecture_type" ,
232+ }
233+ }
234+
235+ func (enum QualificationArchitectureType ) MarshalJSON () ([]byte , error ) {
236+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
237+ }
238+
239+ func (enum * QualificationArchitectureType ) UnmarshalJSON (data []byte ) error {
240+ tmp := ""
241+
242+ if err := json .Unmarshal (data , & tmp ); err != nil {
243+ return err
244+ }
245+
246+ * enum = QualificationArchitectureType (QualificationArchitectureType (tmp ).String ())
247+ return nil
248+ }
249+
250+ type QualificationHostApplicationSubUseCase string
251+
252+ const (
253+ QualificationHostApplicationSubUseCaseUnknownSubUseCase = QualificationHostApplicationSubUseCase ("unknown_sub_use_case" )
254+ QualificationHostApplicationSubUseCaseSaasApp = QualificationHostApplicationSubUseCase ("saas_app" )
255+ QualificationHostApplicationSubUseCaseGovernmentApp = QualificationHostApplicationSubUseCase ("government_app" )
256+ )
257+
258+ func (enum QualificationHostApplicationSubUseCase ) String () string {
259+ if enum == "" {
260+ // return default value if empty
261+ return "unknown_sub_use_case"
262+ }
263+ return string (enum )
264+ }
265+
266+ func (enum QualificationHostApplicationSubUseCase ) Values () []QualificationHostApplicationSubUseCase {
267+ return []QualificationHostApplicationSubUseCase {
268+ "unknown_sub_use_case" ,
269+ "saas_app" ,
270+ "government_app" ,
271+ }
272+ }
273+
274+ func (enum QualificationHostApplicationSubUseCase ) MarshalJSON () ([]byte , error ) {
275+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
276+ }
277+
278+ func (enum * QualificationHostApplicationSubUseCase ) UnmarshalJSON (data []byte ) error {
279+ tmp := ""
280+
281+ if err := json .Unmarshal (data , & tmp ); err != nil {
282+ return err
283+ }
284+
285+ * enum = QualificationHostApplicationSubUseCase (QualificationHostApplicationSubUseCase (tmp ).String ())
286+ return nil
287+ }
288+
289+ type QualificationHostWebsiteSubUseCase string
290+
291+ const (
292+ QualificationHostWebsiteSubUseCaseUnknownSubUseCase = QualificationHostWebsiteSubUseCase ("unknown_sub_use_case" )
293+ QualificationHostWebsiteSubUseCaseInformationWebsite = QualificationHostWebsiteSubUseCase ("information_website" )
294+ QualificationHostWebsiteSubUseCaseEcommerceWebsite = QualificationHostWebsiteSubUseCase ("ecommerce_website" )
295+ QualificationHostWebsiteSubUseCaseHighWebsite = QualificationHostWebsiteSubUseCase ("high_website" )
296+ QualificationHostWebsiteSubUseCaseOtherSubUseCase = QualificationHostWebsiteSubUseCase ("other_sub_use_case" )
297+ )
298+
299+ func (enum QualificationHostWebsiteSubUseCase ) String () string {
300+ if enum == "" {
301+ // return default value if empty
302+ return "unknown_sub_use_case"
303+ }
304+ return string (enum )
305+ }
306+
307+ func (enum QualificationHostWebsiteSubUseCase ) Values () []QualificationHostWebsiteSubUseCase {
308+ return []QualificationHostWebsiteSubUseCase {
309+ "unknown_sub_use_case" ,
310+ "information_website" ,
311+ "ecommerce_website" ,
312+ "high_website" ,
313+ "other_sub_use_case" ,
314+ }
315+ }
316+
317+ func (enum QualificationHostWebsiteSubUseCase ) MarshalJSON () ([]byte , error ) {
318+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
319+ }
320+
321+ func (enum * QualificationHostWebsiteSubUseCase ) UnmarshalJSON (data []byte ) error {
322+ tmp := ""
323+
324+ if err := json .Unmarshal (data , & tmp ); err != nil {
325+ return err
326+ }
327+
328+ * enum = QualificationHostWebsiteSubUseCase (QualificationHostWebsiteSubUseCase (tmp ).String ())
329+ return nil
330+ }
331+
190332// Contract: contract.
191333type Contract struct {
192334 // ID: ID of the contract.
@@ -209,6 +351,46 @@ type Contract struct {
209351 UpdatedAt * time.Time `json:"updated_at"`
210352}
211353
354+ // QualificationAiMachine: qualification ai machine.
355+ type QualificationAiMachine struct {
356+ }
357+
358+ // QualificationArchiveData: qualification archive data.
359+ type QualificationArchiveData struct {
360+ }
361+
362+ // QualificationContainer: qualification container.
363+ type QualificationContainer struct {
364+ }
365+
366+ // QualificationDeploySoftware: qualification deploy software.
367+ type QualificationDeploySoftware struct {
368+ }
369+
370+ // QualificationHostApplication: qualification host application.
371+ type QualificationHostApplication struct {
372+ // SubUseCase: default value: unknown_sub_use_case
373+ SubUseCase QualificationHostApplicationSubUseCase `json:"sub_use_case"`
374+ }
375+
376+ // QualificationHostWebsite: qualification host website.
377+ type QualificationHostWebsite struct {
378+ // SubUseCase: default value: unknown_sub_use_case
379+ SubUseCase QualificationHostWebsiteSubUseCase `json:"sub_use_case"`
380+ }
381+
382+ // QualificationOtherUseCase: qualification other use case.
383+ type QualificationOtherUseCase struct {
384+ }
385+
386+ // QualificationSetScalewayEnvironment: qualification set scaleway environment.
387+ type QualificationSetScalewayEnvironment struct {
388+ }
389+
390+ // QualificationShareData: qualification share data.
391+ type QualificationShareData struct {
392+ }
393+
212394// ContractSignature: contract signature.
213395type ContractSignature struct {
214396 // ID: ID of the contract signature.
@@ -251,6 +433,40 @@ type Project struct {
251433 Description string `json:"description"`
252434}
253435
436+ // Qualification: qualification.
437+ type Qualification struct {
438+ // ArchitectureType: architecture type of the qualification.
439+ // Default value: unknown_architecture_type
440+ ArchitectureType QualificationArchitectureType `json:"architecture_type"`
441+
442+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
443+ HostWebsite * QualificationHostWebsite `json:"host_website,omitempty"`
444+
445+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
446+ HostApplication * QualificationHostApplication `json:"host_application,omitempty"`
447+
448+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
449+ DeploySoftware * QualificationDeploySoftware `json:"deploy_software,omitempty"`
450+
451+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
452+ SetScalewayEnvironment * QualificationSetScalewayEnvironment `json:"set_scaleway_environment,omitempty"`
453+
454+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
455+ AiMachine * QualificationAiMachine `json:"ai_machine,omitempty"`
456+
457+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
458+ Container * QualificationContainer `json:"container,omitempty"`
459+
460+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
461+ ArchiveData * QualificationArchiveData `json:"archive_data,omitempty"`
462+
463+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
464+ ShareData * QualificationShareData `json:"share_data,omitempty"`
465+
466+ // Precisely one of HostWebsite, HostApplication, DeploySoftware, SetScalewayEnvironment, AiMachine, Container, ArchiveData, ShareData, OtherUseCase must be set.
467+ OtherUseCase * QualificationOtherUseCase `json:"other_use_case,omitempty"`
468+ }
469+
254470// CheckContractSignatureResponse: check contract signature response.
255471type CheckContractSignatureResponse struct {
256472 // Created: whether a signature has been requested for this contract.
@@ -423,6 +639,15 @@ type ProjectAPIListProjectsRequest struct {
423639 ProjectIDs []string `json:"-"`
424640}
425641
642+ // ProjectAPISetProjectQualificationRequest: project api set project qualification request.
643+ type ProjectAPISetProjectQualificationRequest struct {
644+ // ProjectID: project ID.
645+ ProjectID string `json:"-"`
646+
647+ // Qualification: use case chosen for the Project.
648+ Qualification * Qualification `json:"qualification,omitempty"`
649+ }
650+
426651// ProjectAPIUpdateProjectRequest: project api update project request.
427652type ProjectAPIUpdateProjectRequest struct {
428653 // ProjectID: project ID of the Project.
@@ -435,6 +660,15 @@ type ProjectAPIUpdateProjectRequest struct {
435660 Description * string `json:"description,omitempty"`
436661}
437662
663+ // ProjectQualification: project qualification.
664+ type ProjectQualification struct {
665+ // ProjectID: project ID.
666+ ProjectID string `json:"project_id"`
667+
668+ // Qualification: qualification of the Project.
669+ Qualification * Qualification `json:"qualification"`
670+ }
671+
438672// The Contract API allows you to manage contracts.
439673type ContractAPI struct {
440674 client * scw.Client
@@ -755,3 +989,35 @@ func (s *ProjectAPI) UpdateProject(req *ProjectAPIUpdateProjectRequest, opts ...
755989 }
756990 return & resp , nil
757991}
992+
993+ // SetProjectQualification: 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.
994+ func (s * ProjectAPI ) SetProjectQualification (req * ProjectAPISetProjectQualificationRequest , opts ... scw.RequestOption ) (* ProjectQualification , error ) {
995+ var err error
996+
997+ if req .ProjectID == "" {
998+ defaultProjectID , _ := s .client .GetDefaultProjectID ()
999+ req .ProjectID = defaultProjectID
1000+ }
1001+
1002+ if fmt .Sprint (req .ProjectID ) == "" {
1003+ return nil , errors .New ("field ProjectID cannot be empty in request" )
1004+ }
1005+
1006+ scwReq := & scw.ScalewayRequest {
1007+ Method : "POST" ,
1008+ Path : "/account/v3/projects/" + fmt .Sprint (req .ProjectID ) + "/project-qualification" ,
1009+ }
1010+
1011+ err = scwReq .SetBody (req )
1012+ if err != nil {
1013+ return nil , err
1014+ }
1015+
1016+ var resp ProjectQualification
1017+
1018+ err = s .client .Do (scwReq , & resp , opts ... )
1019+ if err != nil {
1020+ return nil , err
1021+ }
1022+ return & resp , nil
1023+ }
0 commit comments