@@ -463,6 +463,9 @@ type Key struct {
463463 // Default value: unknown_origin
464464 Origin KeyOrigin `json:"origin"`
465465
466+ // DeletionRequestedAt: returns the time at which deletion was requested.
467+ DeletionRequestedAt * time.Time `json:"deletion_requested_at"`
468+
466469 // Region: region where the key is stored.
467470 Region scw.Region `json:"region"`
468471}
@@ -681,6 +684,9 @@ type ListKeysRequest struct {
681684 // Usage: select from symmetric encryption, asymmetric encryption, or asymmetric signing.
682685 // Default value: unknown_usage
683686 Usage ListKeysRequestUsage `json:"-"`
687+
688+ // ScheduledForDeletion: filter keys based on their deletion status. By default, only keys not scheduled for deletion are returned in the output.
689+ ScheduledForDeletion bool `json:"-"`
684690}
685691
686692// ListKeysResponse: list keys response.
@@ -725,6 +731,14 @@ type PublicKey struct {
725731 Pem string `json:"pem"`
726732}
727733
734+ // RestoreKeyRequest: restore key request.
735+ type RestoreKeyRequest struct {
736+ // Region: region to target. If none is passed will use default region from the config.
737+ Region scw.Region `json:"-"`
738+
739+ KeyID string `json:"-"`
740+ }
741+
728742// RotateKeyRequest: rotate key request.
729743type RotateKeyRequest struct {
730744 // Region: region to target. If none is passed will use default region from the config.
@@ -1192,6 +1206,7 @@ func (s *API) ListKeys(req *ListKeysRequest, opts ...scw.RequestOption) (*ListKe
11921206 parameter .AddToQuery (query , "tags" , req .Tags )
11931207 parameter .AddToQuery (query , "name" , req .Name )
11941208 parameter .AddToQuery (query , "usage" , req .Usage )
1209+ parameter .AddToQuery (query , "scheduled_for_deletion" , req .ScheduledForDeletion )
11951210
11961211 if fmt .Sprint (req .Region ) == "" {
11971212 return nil , errors .New ("field Region cannot be empty in request" )
@@ -1463,3 +1478,39 @@ func (s *API) DeleteKeyMaterial(req *DeleteKeyMaterialRequest, opts ...scw.Reque
14631478 }
14641479 return nil
14651480}
1481+
1482+ // RestoreKey: Restore a key and all its rotations scheduled for deletion specified by the `region` and `key_id` parameters.
1483+ func (s * API ) RestoreKey (req * RestoreKeyRequest , opts ... scw.RequestOption ) (* Key , error ) {
1484+ var err error
1485+
1486+ if req .Region == "" {
1487+ defaultRegion , _ := s .client .GetDefaultRegion ()
1488+ req .Region = defaultRegion
1489+ }
1490+
1491+ if fmt .Sprint (req .Region ) == "" {
1492+ return nil , errors .New ("field Region cannot be empty in request" )
1493+ }
1494+
1495+ if fmt .Sprint (req .KeyID ) == "" {
1496+ return nil , errors .New ("field KeyID cannot be empty in request" )
1497+ }
1498+
1499+ scwReq := & scw.ScalewayRequest {
1500+ Method : "POST" ,
1501+ Path : "/key-manager/v1alpha1/regions/" + fmt .Sprint (req .Region ) + "/keys/" + fmt .Sprint (req .KeyID ) + "/restore" ,
1502+ }
1503+
1504+ err = scwReq .SetBody (req )
1505+ if err != nil {
1506+ return nil , err
1507+ }
1508+
1509+ var resp Key
1510+
1511+ err = s .client .Do (scwReq , & resp , opts ... )
1512+ if err != nil {
1513+ return nil , err
1514+ }
1515+ return & resp , nil
1516+ }
0 commit comments