@@ -761,6 +761,47 @@ type GetSecretVersionRequest struct {
761761Revision string `json:"-"`
762762}
763763
764+ // ListSecretTypesRequest: list secret types request.
765+ type ListSecretTypesRequest struct {
766+ // Region: region to target. If none is passed will use default region from the config.
767+ Region scw.Region `json:"-"`
768+
769+ // ProjectID: ID of the Project to target.
770+ ProjectID string `json:"-"`
771+
772+ Page * int32 `json:"-"`
773+
774+ PageSize * uint32 `json:"-"`
775+ }
776+
777+ // ListSecretTypesResponse: list secret types response.
778+ type ListSecretTypesResponse struct {
779+ // Types: list of secret types.
780+ Types []SecretType `json:"types"`
781+
782+ // TotalCount: count of all secret types matching the requested criteria.
783+ TotalCount uint64 `json:"total_count"`
784+ }
785+
786+ // UnsafeGetTotalCount should not be used
787+ // Internal usage only
788+ func (r * ListSecretTypesResponse ) UnsafeGetTotalCount () uint64 {
789+ return r .TotalCount
790+ }
791+
792+ // UnsafeAppend should not be used
793+ // Internal usage only
794+ func (r * ListSecretTypesResponse ) UnsafeAppend (res interface {}) (uint64 , error ) {
795+ results , ok := res .(* ListSecretTypesResponse )
796+ if ! ok {
797+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
798+ }
799+
800+ r .Types = append (r .Types , results .Types ... )
801+ r .TotalCount += uint64 (len (results .Types ))
802+ return uint64 (len (results .Types )), nil
803+ }
804+
764805// ListSecretVersionsRequest: list secret versions request.
765806type ListSecretVersionsRequest struct {
766807// Region: region to target. If none is passed will use default region from the config.
@@ -1703,3 +1744,46 @@ func (s *API) ListTags(req *ListTagsRequest, opts ...scw.RequestOption) (*ListTa
17031744}
17041745return & resp , nil
17051746}
1747+
1748+ // ListSecretTypes: List all secret types created within a given Project.
1749+ func (s * API ) ListSecretTypes (req * ListSecretTypesRequest , opts ... scw.RequestOption ) (* ListSecretTypesResponse , error ) {
1750+ var err error
1751+
1752+ if req .Region == "" {
1753+ defaultRegion , _ := s .client .GetDefaultRegion ()
1754+ req .Region = defaultRegion
1755+ }
1756+
1757+ if req .ProjectID == "" {
1758+ defaultProjectID , _ := s .client .GetDefaultProjectID ()
1759+ req .ProjectID = defaultProjectID
1760+ }
1761+
1762+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
1763+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
1764+ req .PageSize = & defaultPageSize
1765+ }
1766+
1767+ query := url.Values {}
1768+ parameter .AddToQuery (query , "project_id" , req .ProjectID )
1769+ parameter .AddToQuery (query , "page" , req .Page )
1770+ parameter .AddToQuery (query , "page_size" , req .PageSize )
1771+
1772+ if fmt .Sprint (req .Region ) == "" {
1773+ return nil , errors .New ("field Region cannot be empty in request" )
1774+ }
1775+
1776+ scwReq := & scw.ScalewayRequest {
1777+ Method : "GET" ,
1778+ Path : "/secret-manager/v1beta1/regions/" + fmt .Sprint (req .Region ) + "/secret-types" ,
1779+ Query : query ,
1780+ }
1781+
1782+ var resp ListSecretTypesResponse
1783+
1784+ err = s .client .Do (scwReq , & resp , opts ... )
1785+ if err != nil {
1786+ return nil , err
1787+ }
1788+ return & resp , nil
1789+ }
0 commit comments