@@ -183,6 +183,38 @@ func (enum *ListServersRequestOrderBy) UnmarshalJSON(data []byte) error {
183183 return nil
184184}
185185
186+ type ListSettingsRequestOrderBy string
187+
188+ const (
189+ // ListSettingsRequestOrderByCreatedAtAsc is [insert doc].
190+ ListSettingsRequestOrderByCreatedAtAsc = ListSettingsRequestOrderBy ("created_at_asc" )
191+ // ListSettingsRequestOrderByCreatedAtDesc is [insert doc].
192+ ListSettingsRequestOrderByCreatedAtDesc = ListSettingsRequestOrderBy ("created_at_desc" )
193+ )
194+
195+ func (enum ListSettingsRequestOrderBy ) String () string {
196+ if enum == "" {
197+ // return default value if empty
198+ return "created_at_asc"
199+ }
200+ return string (enum )
201+ }
202+
203+ func (enum ListSettingsRequestOrderBy ) MarshalJSON () ([]byte , error ) {
204+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
205+ }
206+
207+ func (enum * ListSettingsRequestOrderBy ) UnmarshalJSON (data []byte ) error {
208+ tmp := ""
209+
210+ if err := json .Unmarshal (data , & tmp ); err != nil {
211+ return err
212+ }
213+
214+ * enum = ListSettingsRequestOrderBy (ListSettingsRequestOrderBy (tmp ).String ())
215+ return nil
216+ }
217+
186218type OfferStock string
187219
188220const (
@@ -445,6 +477,38 @@ func (enum *ServerStatus) UnmarshalJSON(data []byte) error {
445477 return nil
446478}
447479
480+ type SettingType string
481+
482+ const (
483+ // SettingTypeUnknown is [insert doc].
484+ SettingTypeUnknown = SettingType ("unknown" )
485+ // SettingTypeSMTP is [insert doc].
486+ SettingTypeSMTP = SettingType ("smtp" )
487+ )
488+
489+ func (enum SettingType ) String () string {
490+ if enum == "" {
491+ // return default value if empty
492+ return "unknown"
493+ }
494+ return string (enum )
495+ }
496+
497+ func (enum SettingType ) MarshalJSON () ([]byte , error ) {
498+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
499+ }
500+
501+ func (enum * SettingType ) UnmarshalJSON (data []byte ) error {
502+ tmp := ""
503+
504+ if err := json .Unmarshal (data , & tmp ); err != nil {
505+ return err
506+ }
507+
508+ * enum = SettingType (SettingType (tmp ).String ())
509+ return nil
510+ }
511+
448512// BMCAccess: bmc access
449513type BMCAccess struct {
450514 // URL: URL to access to the server console
@@ -559,6 +623,14 @@ type ListServersResponse struct {
559623 Servers []* Server `json:"servers"`
560624}
561625
626+ // ListSettingsResponse: list settings response
627+ type ListSettingsResponse struct {
628+ // TotalCount: total count of matching sttings
629+ TotalCount uint32 `json:"total_count"`
630+ // Settings: settings that match filters
631+ Settings []* Setting `json:"settings"`
632+ }
633+
562634// Memory: memory
563635type Memory struct {
564636 Capacity scw.Size `json:"capacity"`
@@ -770,6 +842,20 @@ type ServerOption struct {
770842 Manageable bool `json:"manageable"`
771843}
772844
845+ // Setting: setting
846+ type Setting struct {
847+ // ID: ID of the setting
848+ ID string `json:"id"`
849+ // Type: type of the setting
850+ //
851+ // Default value: unknown
852+ Type SettingType `json:"type"`
853+ // ProjectID: ID of the project ID
854+ ProjectID string `json:"project_id"`
855+ // Enabled: the setting is enable or disable
856+ Enabled bool `json:"enabled"`
857+ }
858+
773859// Service API
774860
775861type ListServersRequest struct {
@@ -1806,6 +1892,109 @@ func (s *API) ListOptions(req *ListOptionsRequest, opts ...scw.RequestOption) (*
18061892 return & resp , nil
18071893}
18081894
1895+ type ListSettingsRequest struct {
1896+ Zone scw.Zone `json:"-"`
1897+ // Page: page number
1898+ Page * int32 `json:"-"`
1899+ // PageSize: set the maximum list size
1900+ PageSize * uint32 `json:"-"`
1901+ // OrderBy: order the response
1902+ //
1903+ // Default value: created_at_asc
1904+ OrderBy ListSettingsRequestOrderBy `json:"-"`
1905+ // ProjectID: ID of the project
1906+ ProjectID * string `json:"-"`
1907+ }
1908+
1909+ // ListSettings: list all settings
1910+ //
1911+ // Return all settings for a project ID.
1912+ func (s * API ) ListSettings (req * ListSettingsRequest , opts ... scw.RequestOption ) (* ListSettingsResponse , error ) {
1913+ var err error
1914+
1915+ if req .Zone == "" {
1916+ defaultZone , _ := s .client .GetDefaultZone ()
1917+ req .Zone = defaultZone
1918+ }
1919+
1920+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
1921+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
1922+ req .PageSize = & defaultPageSize
1923+ }
1924+
1925+ query := url.Values {}
1926+ parameter .AddToQuery (query , "page" , req .Page )
1927+ parameter .AddToQuery (query , "page_size" , req .PageSize )
1928+ parameter .AddToQuery (query , "order_by" , req .OrderBy )
1929+ parameter .AddToQuery (query , "project_id" , req .ProjectID )
1930+
1931+ if fmt .Sprint (req .Zone ) == "" {
1932+ return nil , errors .New ("field Zone cannot be empty in request" )
1933+ }
1934+
1935+ scwReq := & scw.ScalewayRequest {
1936+ Method : "GET" ,
1937+ Path : "/baremetal/v1/zones/" + fmt .Sprint (req .Zone ) + "/settings" ,
1938+ Query : query ,
1939+ Headers : http.Header {},
1940+ }
1941+
1942+ var resp ListSettingsResponse
1943+
1944+ err = s .client .Do (scwReq , & resp , opts ... )
1945+ if err != nil {
1946+ return nil , err
1947+ }
1948+ return & resp , nil
1949+ }
1950+
1951+ type UpdateSettingRequest struct {
1952+ Zone scw.Zone `json:"-"`
1953+ // SettingID: ID of the setting
1954+ SettingID string `json:"-"`
1955+ // Enabled: enable/Disable the setting
1956+ Enabled * bool `json:"enabled"`
1957+ }
1958+
1959+ // UpdateSetting: update setting
1960+ //
1961+ // Update a setting for a project ID (enable or disable).
1962+ func (s * API ) UpdateSetting (req * UpdateSettingRequest , opts ... scw.RequestOption ) (* Setting , error ) {
1963+ var err error
1964+
1965+ if req .Zone == "" {
1966+ defaultZone , _ := s .client .GetDefaultZone ()
1967+ req .Zone = defaultZone
1968+ }
1969+
1970+ if fmt .Sprint (req .Zone ) == "" {
1971+ return nil , errors .New ("field Zone cannot be empty in request" )
1972+ }
1973+
1974+ if fmt .Sprint (req .SettingID ) == "" {
1975+ return nil , errors .New ("field SettingID cannot be empty in request" )
1976+ }
1977+
1978+ scwReq := & scw.ScalewayRequest {
1979+ Method : "PATCH" ,
1980+ Path : "/baremetal/v1/zones/" + fmt .Sprint (req .Zone ) + "/settings/" + fmt .Sprint (req .SettingID ) + "" ,
1981+ Headers : http.Header {},
1982+ }
1983+
1984+ err = scwReq .SetBody (req )
1985+ if err != nil {
1986+ return nil , err
1987+ }
1988+
1989+ var resp Setting
1990+
1991+ err = s .client .Do (scwReq , & resp , opts ... )
1992+ if err != nil {
1993+ return nil , err
1994+ }
1995+ return & resp , nil
1996+ }
1997+
18091998type ListOSRequest struct {
18101999 Zone scw.Zone `json:"-"`
18112000 // Page: page number
@@ -1973,6 +2162,25 @@ func (r *ListOptionsResponse) UnsafeAppend(res interface{}) (uint32, error) {
19732162 return uint32 (len (results .Options )), nil
19742163}
19752164
2165+ // UnsafeGetTotalCount should not be used
2166+ // Internal usage only
2167+ func (r * ListSettingsResponse ) UnsafeGetTotalCount () uint32 {
2168+ return r .TotalCount
2169+ }
2170+
2171+ // UnsafeAppend should not be used
2172+ // Internal usage only
2173+ func (r * ListSettingsResponse ) UnsafeAppend (res interface {}) (uint32 , error ) {
2174+ results , ok := res .(* ListSettingsResponse )
2175+ if ! ok {
2176+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
2177+ }
2178+
2179+ r .Settings = append (r .Settings , results .Settings ... )
2180+ r .TotalCount += uint32 (len (results .Settings ))
2181+ return uint32 (len (results .Settings )), nil
2182+ }
2183+
19762184// UnsafeGetTotalCount should not be used
19772185// Internal usage only
19782186func (r * ListOSResponse ) UnsafeGetTotalCount () uint32 {
0 commit comments