@@ -381,6 +381,51 @@ func (enum *ListPlansRequestOrderBy) UnmarshalJSON(data []byte) error {
381381 return nil
382382}
383383
384+ type ListProductsRequestOrderBy string
385+
386+ const (
387+ ListProductsRequestOrderByCreatedAtAsc = ListProductsRequestOrderBy ("created_at_asc" )
388+ ListProductsRequestOrderByCreatedAtDesc = ListProductsRequestOrderBy ("created_at_desc" )
389+ ListProductsRequestOrderByDisplayNameAsc = ListProductsRequestOrderBy ("display_name_asc" )
390+ ListProductsRequestOrderByDisplayNameDesc = ListProductsRequestOrderBy ("display_name_desc" )
391+ ListProductsRequestOrderByFamilyNameAsc = ListProductsRequestOrderBy ("family_name_asc" )
392+ ListProductsRequestOrderByFamilyNameDesc = ListProductsRequestOrderBy ("family_name_desc" )
393+ )
394+
395+ func (enum ListProductsRequestOrderBy ) String () string {
396+ if enum == "" {
397+ // return default value if empty
398+ return string (ListProductsRequestOrderByCreatedAtAsc )
399+ }
400+ return string (enum )
401+ }
402+
403+ func (enum ListProductsRequestOrderBy ) Values () []ListProductsRequestOrderBy {
404+ return []ListProductsRequestOrderBy {
405+ "created_at_asc" ,
406+ "created_at_desc" ,
407+ "display_name_asc" ,
408+ "display_name_desc" ,
409+ "family_name_asc" ,
410+ "family_name_desc" ,
411+ }
412+ }
413+
414+ func (enum ListProductsRequestOrderBy ) MarshalJSON () ([]byte , error ) {
415+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
416+ }
417+
418+ func (enum * ListProductsRequestOrderBy ) UnmarshalJSON (data []byte ) error {
419+ tmp := ""
420+
421+ if err := json .Unmarshal (data , & tmp ); err != nil {
422+ return err
423+ }
424+
425+ * enum = ListProductsRequestOrderBy (ListProductsRequestOrderBy (tmp ).String ())
426+ return nil
427+ }
428+
384429type ListTokensRequestOrderBy string
385430
386431const (
@@ -757,6 +802,17 @@ type Plan struct {
757802 MonthlyPrice uint32 `json:"monthly_price"`
758803}
759804
805+ // Product: product.
806+ type Product struct {
807+ Name string `json:"name"`
808+
809+ DisplayName string `json:"display_name"`
810+
811+ FamilyName string `json:"family_name"`
812+
813+ ResourceTypes []string `json:"resource_types"`
814+ }
815+
760816// Token: Token.
761817type Token struct {
762818 // ID: ID of the token.
@@ -1162,6 +1218,32 @@ func (r *ListPlansResponse) UnsafeAppend(res any) (uint64, error) {
11621218 return uint64 (len (results .Plans )), nil
11631219}
11641220
1221+ // ListProductsResponse: list products response.
1222+ type ListProductsResponse struct {
1223+ ProductsList []* Product `json:"products_list"`
1224+
1225+ TotalCount uint64 `json:"total_count"`
1226+ }
1227+
1228+ // UnsafeGetTotalCount should not be used
1229+ // Internal usage only
1230+ func (r * ListProductsResponse ) UnsafeGetTotalCount () uint64 {
1231+ return r .TotalCount
1232+ }
1233+
1234+ // UnsafeAppend should not be used
1235+ // Internal usage only
1236+ func (r * ListProductsResponse ) UnsafeAppend (res any ) (uint64 , error ) {
1237+ results , ok := res .(* ListProductsResponse )
1238+ if ! ok {
1239+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
1240+ }
1241+
1242+ r .ProductsList = append (r .ProductsList , results .ProductsList ... )
1243+ r .TotalCount += uint64 (len (results .ProductsList ))
1244+ return uint64 (len (results .ProductsList )), nil
1245+ }
1246+
11651247// ListTokensResponse: Response returned when listing tokens.
11661248type ListTokensResponse struct {
11671249 // TotalCount: total count of tokens matching the request.
@@ -1429,6 +1511,22 @@ type RegionalAPIListDataSourcesRequest struct {
14291511 Types []DataSourceType `json:"-"`
14301512}
14311513
1514+ // RegionalAPIListProductsRequest: List all Scaleway products that send metrics and/or logs to Cockpit.
1515+ type RegionalAPIListProductsRequest struct {
1516+ // Region: region to target. If none is passed will use default region from the config.
1517+ Region scw.Region `json:"-"`
1518+
1519+ // Page: page number to return from the paginated results.
1520+ Page * int32 `json:"-"`
1521+
1522+ // PageSize: number of products to return per page.
1523+ PageSize * uint32 `json:"-"`
1524+
1525+ // OrderBy: sort order for products in the response.
1526+ // Default value: created_at_asc
1527+ OrderBy ListProductsRequestOrderBy `json:"-"`
1528+ }
1529+
14321530// RegionalAPIListTokensRequest: List tokens.
14331531type RegionalAPIListTokensRequest struct {
14341532 // Region: region to target. If none is passed will use default region from the config.
@@ -2257,6 +2355,44 @@ func (s *RegionalAPI) DeleteToken(req *RegionalAPIDeleteTokenRequest, opts ...sc
22572355 return nil
22582356}
22592357
2358+ // ListProducts: List all Scaleway products that send metrics and/or logs to Cockpit.
2359+ func (s * RegionalAPI ) ListProducts (req * RegionalAPIListProductsRequest , opts ... scw.RequestOption ) (* ListProductsResponse , error ) {
2360+ var err error
2361+
2362+ if req .Region == "" {
2363+ defaultRegion , _ := s .client .GetDefaultRegion ()
2364+ req .Region = defaultRegion
2365+ }
2366+
2367+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
2368+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
2369+ req .PageSize = & defaultPageSize
2370+ }
2371+
2372+ query := url.Values {}
2373+ parameter .AddToQuery (query , "page" , req .Page )
2374+ parameter .AddToQuery (query , "page_size" , req .PageSize )
2375+ parameter .AddToQuery (query , "order_by" , req .OrderBy )
2376+
2377+ if fmt .Sprint (req .Region ) == "" {
2378+ return nil , errors .New ("field Region cannot be empty in request" )
2379+ }
2380+
2381+ scwReq := & scw.ScalewayRequest {
2382+ Method : "GET" ,
2383+ Path : "/cockpit/v1/regions/" + fmt .Sprint (req .Region ) + "/products" ,
2384+ Query : query ,
2385+ }
2386+
2387+ var resp ListProductsResponse
2388+
2389+ err = s .client .Do (scwReq , & resp , opts ... )
2390+ if err != nil {
2391+ return nil , err
2392+ }
2393+ return & resp , nil
2394+ }
2395+
22602396// GetAlertManager: Retrieve information about the Alert manager which is unique per Project and region. By default the Alert manager is disabled.
22612397// The output returned displays a URL to access the Alert manager, and whether the Alert manager and managed alerts are enabled.
22622398func (s * RegionalAPI ) GetAlertManager (req * RegionalAPIGetAlertManagerRequest , opts ... scw.RequestOption ) (* AlertManager , error ) {
0 commit comments