@@ -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.
418439type 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.
14201483func (s * API ) EnableSecretVersion (req * EnableSecretVersionRequest , opts ... scw.RequestOption ) (* SecretVersion , error ) {
14211484 var err error
0 commit comments