Skip to content

Commit ba26a9f

Browse files
authored
feat(account): add project customization endpoint (scaleway#2472)
1 parent 4945162 commit ba26a9f

File tree

1 file changed

+266
-0
lines changed

1 file changed

+266
-0
lines changed

api/account/v3/account_sdk.go

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
191333
type 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.
213395
type 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.
255471
type 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.
427652
type 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.
439673
type 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

Comments
 (0)