@@ -217,6 +217,8 @@ type Secret struct {
217217 VersionCount uint32 `json:"version_count"`
218218 // Description: updated description of the secret.
219219 Description * string `json:"description"`
220+ // IsManaged: true for secrets that are managed by another product.
221+ IsManaged bool `json:"is_managed"`
220222}
221223
222224// SecretVersion: secret version.
@@ -432,6 +434,50 @@ func (s *API) UpdateSecret(req *UpdateSecretRequest, opts ...scw.RequestOption)
432434 return & resp , nil
433435}
434436
437+ type AddSecretOwnerRequest struct {
438+ // Region: region to target. If none is passed will use default region from the config.
439+ Region scw.Region `json:"-"`
440+ // SecretID: ID of the secret.
441+ SecretID string `json:"-"`
442+ // ProductName: name of the product to add.
443+ ProductName string `json:"product_name"`
444+ }
445+
446+ // AddSecretOwner: allow another product to use the secret.
447+ func (s * API ) AddSecretOwner (req * AddSecretOwnerRequest , opts ... scw.RequestOption ) error {
448+ var err error
449+
450+ if req .Region == "" {
451+ defaultRegion , _ := s .client .GetDefaultRegion ()
452+ req .Region = defaultRegion
453+ }
454+
455+ if fmt .Sprint (req .Region ) == "" {
456+ return errors .New ("field Region cannot be empty in request" )
457+ }
458+
459+ if fmt .Sprint (req .SecretID ) == "" {
460+ return errors .New ("field SecretID cannot be empty in request" )
461+ }
462+
463+ scwReq := & scw.ScalewayRequest {
464+ Method : "POST" ,
465+ Path : "/secret-manager/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/secrets/" + fmt .Sprint (req .SecretID ) + "/add-owner" ,
466+ Headers : http.Header {},
467+ }
468+
469+ err = scwReq .SetBody (req )
470+ if err != nil {
471+ return err
472+ }
473+
474+ err = s .client .Do (scwReq , nil , opts ... )
475+ if err != nil {
476+ return err
477+ }
478+ return nil
479+ }
480+
435481type ListSecretsRequest struct {
436482 // Region: region to target. If none is passed will use default region from the config.
437483 Region scw.Region `json:"-"`
@@ -443,6 +489,8 @@ type ListSecretsRequest struct {
443489 Name * string `json:"-"`
444490 // Tags: list of tags to filter on (optional).
445491 Tags []string `json:"-"`
492+ // IsManaged: filter by managed / not managed (optional).
493+ IsManaged * bool `json:"-"`
446494 // OrderBy: default value: name_asc
447495 OrderBy ListSecretsRequestOrderBy `json:"-"`
448496
@@ -471,6 +519,7 @@ func (s *API) ListSecrets(req *ListSecretsRequest, opts ...scw.RequestOption) (*
471519 parameter .AddToQuery (query , "project_id" , req .ProjectID )
472520 parameter .AddToQuery (query , "name" , req .Name )
473521 parameter .AddToQuery (query , "tags" , req .Tags )
522+ parameter .AddToQuery (query , "is_managed" , req .IsManaged )
474523 parameter .AddToQuery (query , "order_by" , req .OrderBy )
475524 parameter .AddToQuery (query , "page" , req .Page )
476525 parameter .AddToQuery (query , "page_size" , req .PageSize )
0 commit comments