@@ -984,6 +984,24 @@ type ProtectSecretRequest struct {
984984 SecretID string `json:"-"`
985985}
986986
987+ // RestoreSecretRequest: restore secret request.
988+ type RestoreSecretRequest struct {
989+ // Region: region to target. If none is passed will use default region from the config.
990+ Region scw.Region `json:"-"`
991+
992+ SecretID string `json:"-"`
993+ }
994+
995+ // RestoreSecretVersionRequest: restore secret version request.
996+ type RestoreSecretVersionRequest struct {
997+ // Region: region to target. If none is passed will use default region from the config.
998+ Region scw.Region `json:"-"`
999+
1000+ SecretID string `json:"-"`
1001+
1002+ Revision string `json:"-"`
1003+ }
1004+
9871005// SSHKey: ssh key.
9881006type SSHKey struct {
9891007 // SSHPrivateKey: the private SSH key.
@@ -1814,3 +1832,79 @@ func (s *API) ListSecretTypes(req *ListSecretTypesRequest, opts ...scw.RequestOp
18141832 }
18151833 return & resp , nil
18161834}
1835+
1836+ // RestoreSecretVersion: Restore a secret's version specified by the `region`, `secret_id` and `revision` parameters.
1837+ func (s * API ) RestoreSecretVersion (req * RestoreSecretVersionRequest , opts ... scw.RequestOption ) (* SecretVersion , error ) {
1838+ var err error
1839+
1840+ if req .Region == "" {
1841+ defaultRegion , _ := s .client .GetDefaultRegion ()
1842+ req .Region = defaultRegion
1843+ }
1844+
1845+ if fmt .Sprint (req .Region ) == "" {
1846+ return nil , errors .New ("field Region cannot be empty in request" )
1847+ }
1848+
1849+ if fmt .Sprint (req .SecretID ) == "" {
1850+ return nil , errors .New ("field SecretID cannot be empty in request" )
1851+ }
1852+
1853+ if fmt .Sprint (req .Revision ) == "" {
1854+ return nil , errors .New ("field Revision cannot be empty in request" )
1855+ }
1856+
1857+ scwReq := & scw.ScalewayRequest {
1858+ Method : "POST" ,
1859+ Path : "/secret-manager/v1beta1/regions/" + fmt .Sprint (req .Region ) + "/secrets/" + fmt .Sprint (req .SecretID ) + "/versions/" + fmt .Sprint (req .Revision ) + "/restore" ,
1860+ }
1861+
1862+ err = scwReq .SetBody (req )
1863+ if err != nil {
1864+ return nil , err
1865+ }
1866+
1867+ var resp SecretVersion
1868+
1869+ err = s .client .Do (scwReq , & resp , opts ... )
1870+ if err != nil {
1871+ return nil , err
1872+ }
1873+ return & resp , nil
1874+ }
1875+
1876+ // RestoreSecret: Restore a secret and all its versions scheduled for deletion specified by the `region` and `secret_id` parameters.
1877+ func (s * API ) RestoreSecret (req * RestoreSecretRequest , opts ... scw.RequestOption ) (* Secret , error ) {
1878+ var err error
1879+
1880+ if req .Region == "" {
1881+ defaultRegion , _ := s .client .GetDefaultRegion ()
1882+ req .Region = defaultRegion
1883+ }
1884+
1885+ if fmt .Sprint (req .Region ) == "" {
1886+ return nil , errors .New ("field Region cannot be empty in request" )
1887+ }
1888+
1889+ if fmt .Sprint (req .SecretID ) == "" {
1890+ return nil , errors .New ("field SecretID cannot be empty in request" )
1891+ }
1892+
1893+ scwReq := & scw.ScalewayRequest {
1894+ Method : "POST" ,
1895+ Path : "/secret-manager/v1beta1/regions/" + fmt .Sprint (req .Region ) + "/secrets/" + fmt .Sprint (req .SecretID ) + "/restore" ,
1896+ }
1897+
1898+ err = scwReq .SetBody (req )
1899+ if err != nil {
1900+ return nil , err
1901+ }
1902+
1903+ var resp Secret
1904+
1905+ err = s .client .Do (scwReq , & resp , opts ... )
1906+ if err != nil {
1907+ return nil , err
1908+ }
1909+ return & resp , nil
1910+ }
0 commit comments