Skip to content

Commit 886dca2

Browse files
authored
feat(secret_manager): add AccessSecretVersionByPath endpoint (#2051)
1 parent 30423f2 commit 886dca2

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

api/secret/v1beta1/secret_sdk.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,27 @@ type Secret struct {
414414
Region scw.Region `json:"region"`
415415
}
416416

417+
// AccessSecretVersionByPathRequest: access secret version by path request.
418+
type AccessSecretVersionByPathRequest struct {
419+
// Region: region to target. If none is passed will use default region from the config.
420+
Region scw.Region `json:"-"`
421+
422+
// Revision: the first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
423+
// - an integer (the revision number)
424+
// - "latest" (the latest revision)
425+
// - "latest_enabled" (the latest enabled revision).
426+
Revision string `json:"-"`
427+
428+
// SecretPath: secret's path.
429+
SecretPath string `json:"-"`
430+
431+
// SecretName: secret's name.
432+
SecretName string `json:"-"`
433+
434+
// ProjectID: ID of the Project to target.
435+
ProjectID string `json:"-"`
436+
}
437+
417438
// AccessSecretVersionRequest: access secret version request.
418439
type AccessSecretVersionRequest struct {
419440
// Region: region to target. If none is passed will use default region from the config.
@@ -1416,6 +1437,48 @@ func (s *API) AccessSecretVersion(req *AccessSecretVersionRequest, opts ...scw.R
14161437
return &resp, nil
14171438
}
14181439

1440+
// AccessSecretVersionByPath: Access sensitive data in a secret's version specified by the `region`, `secret_name`, `secret_path` and `revision` parameters.
1441+
func (s *API) AccessSecretVersionByPath(req *AccessSecretVersionByPathRequest, opts ...scw.RequestOption) (*AccessSecretVersionResponse, error) {
1442+
var err error
1443+
1444+
if req.Region == "" {
1445+
defaultRegion, _ := s.client.GetDefaultRegion()
1446+
req.Region = defaultRegion
1447+
}
1448+
1449+
if req.ProjectID == "" {
1450+
defaultProjectID, _ := s.client.GetDefaultProjectID()
1451+
req.ProjectID = defaultProjectID
1452+
}
1453+
1454+
query := url.Values{}
1455+
parameter.AddToQuery(query, "secret_path", req.SecretPath)
1456+
parameter.AddToQuery(query, "secret_name", req.SecretName)
1457+
parameter.AddToQuery(query, "project_id", req.ProjectID)
1458+
1459+
if fmt.Sprint(req.Region) == "" {
1460+
return nil, errors.New("field Region cannot be empty in request")
1461+
}
1462+
1463+
if fmt.Sprint(req.Revision) == "" {
1464+
return nil, errors.New("field Revision cannot be empty in request")
1465+
}
1466+
1467+
scwReq := &scw.ScalewayRequest{
1468+
Method: "GET",
1469+
Path: "/secret-manager/v1beta1/regions/" + fmt.Sprint(req.Region) + "/secrets-by-path/versions/" + fmt.Sprint(req.Revision) + "/access",
1470+
Query: query,
1471+
}
1472+
1473+
var resp AccessSecretVersionResponse
1474+
1475+
err = s.client.Do(scwReq, &resp, opts...)
1476+
if err != nil {
1477+
return nil, err
1478+
}
1479+
return &resp, nil
1480+
}
1481+
14191482
// EnableSecretVersion: Make a specific version accessible. You must specify the `region`, `secret_id` and `revision` parameters.
14201483
func (s *API) EnableSecretVersion(req *EnableSecretVersionRequest, opts ...scw.RequestOption) (*SecretVersion, error) {
14211484
var err error

0 commit comments

Comments
 (0)