Skip to content

Commit 35cad0c

Browse files
authored
feat(key_manager): add key scheduled deletion and restoration (scaleway#2607)
1 parent 3e03e25 commit 35cad0c

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

api/key_manager/v1alpha1/key_manager_sdk.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
729743
type 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

Comments
 (0)