Skip to content

Commit ff57694

Browse files
authored
feat(secret_manager): add AccessSecretVersionByPath endpoint (#491)
1 parent a813285 commit ff57694

File tree

6 files changed

+166
-0
lines changed

6 files changed

+166
-0
lines changed

scaleway-async/scaleway_async/secret/v1beta1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .types import BrowseSecretsResponseItem
1515
from .types import SecretVersion
1616
from .types import Secret
17+
from .types import AccessSecretVersionByPathRequest
1718
from .types import AccessSecretVersionRequest
1819
from .types import AccessSecretVersionResponse
1920
from .types import AddSecretOwnerRequest
@@ -57,6 +58,7 @@
5758
"BrowseSecretsResponseItem",
5859
"SecretVersion",
5960
"Secret",
61+
"AccessSecretVersionByPathRequest",
6062
"AccessSecretVersionRequest",
6163
"AccessSecretVersionResponse",
6264
"AddSecretOwnerRequest",

scaleway-async/scaleway_async/secret/v1beta1/api.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,56 @@ async def access_secret_version(
832832
self._throw_on_error(res)
833833
return unmarshal_AccessSecretVersionResponse(res.json())
834834

835+
async def access_secret_version_by_path(
836+
self,
837+
*,
838+
secret_path: str,
839+
secret_name: str,
840+
revision: str,
841+
region: Optional[Region] = None,
842+
project_id: Optional[str] = None,
843+
) -> AccessSecretVersionResponse:
844+
"""
845+
Access a secret's version using the secret's name and path.
846+
Access sensitive data in a secret's version specified by the `region`, `secret_name`, `secret_path` and `revision` parameters.
847+
:param secret_path: Secret's path.
848+
:param secret_name: Secret's name.
849+
:param revision: The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
850+
- an integer (the revision number)
851+
- "latest" (the latest revision)
852+
- "latest_enabled" (the latest enabled revision).
853+
:param region: Region to target. If none is passed will use default region from the config.
854+
:param project_id: ID of the Project to target.
855+
:return: :class:`AccessSecretVersionResponse <AccessSecretVersionResponse>`
856+
857+
Usage:
858+
::
859+
860+
result = await api.access_secret_version_by_path(
861+
secret_path="example",
862+
secret_name="example",
863+
revision="example",
864+
)
865+
"""
866+
867+
param_region = validate_path_param(
868+
"region", region or self.client.default_region
869+
)
870+
param_revision = validate_path_param("revision", revision)
871+
872+
res = self._request(
873+
"GET",
874+
f"/secret-manager/v1beta1/regions/{param_region}/secrets-by-path/versions/{param_revision}/access",
875+
params={
876+
"project_id": project_id or self.client.default_project_id,
877+
"secret_name": secret_name,
878+
"secret_path": secret_path,
879+
},
880+
)
881+
882+
self._throw_on_error(res)
883+
return unmarshal_AccessSecretVersionResponse(res.json())
884+
835885
async def enable_secret_version(
836886
self,
837887
*,

scaleway-async/scaleway_async/secret/v1beta1/types.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,37 @@ class Secret:
280280
"""
281281

282282

283+
@dataclass
284+
class AccessSecretVersionByPathRequest:
285+
secret_path: str
286+
"""
287+
Secret's path.
288+
"""
289+
290+
secret_name: str
291+
"""
292+
Secret's name.
293+
"""
294+
295+
revision: str
296+
"""
297+
The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
298+
- an integer (the revision number)
299+
- "latest" (the latest revision)
300+
- "latest_enabled" (the latest enabled revision).
301+
"""
302+
303+
region: Optional[Region]
304+
"""
305+
Region to target. If none is passed will use default region from the config.
306+
"""
307+
308+
project_id: Optional[str]
309+
"""
310+
ID of the Project to target.
311+
"""
312+
313+
283314
@dataclass
284315
class AccessSecretVersionRequest:
285316
secret_id: str

scaleway/scaleway/secret/v1beta1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from .types import BrowseSecretsResponseItem
1515
from .types import SecretVersion
1616
from .types import Secret
17+
from .types import AccessSecretVersionByPathRequest
1718
from .types import AccessSecretVersionRequest
1819
from .types import AccessSecretVersionResponse
1920
from .types import AddSecretOwnerRequest
@@ -57,6 +58,7 @@
5758
"BrowseSecretsResponseItem",
5859
"SecretVersion",
5960
"Secret",
61+
"AccessSecretVersionByPathRequest",
6062
"AccessSecretVersionRequest",
6163
"AccessSecretVersionResponse",
6264
"AddSecretOwnerRequest",

scaleway/scaleway/secret/v1beta1/api.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,56 @@ def access_secret_version(
832832
self._throw_on_error(res)
833833
return unmarshal_AccessSecretVersionResponse(res.json())
834834

835+
def access_secret_version_by_path(
836+
self,
837+
*,
838+
secret_path: str,
839+
secret_name: str,
840+
revision: str,
841+
region: Optional[Region] = None,
842+
project_id: Optional[str] = None,
843+
) -> AccessSecretVersionResponse:
844+
"""
845+
Access a secret's version using the secret's name and path.
846+
Access sensitive data in a secret's version specified by the `region`, `secret_name`, `secret_path` and `revision` parameters.
847+
:param secret_path: Secret's path.
848+
:param secret_name: Secret's name.
849+
:param revision: The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
850+
- an integer (the revision number)
851+
- "latest" (the latest revision)
852+
- "latest_enabled" (the latest enabled revision).
853+
:param region: Region to target. If none is passed will use default region from the config.
854+
:param project_id: ID of the Project to target.
855+
:return: :class:`AccessSecretVersionResponse <AccessSecretVersionResponse>`
856+
857+
Usage:
858+
::
859+
860+
result = api.access_secret_version_by_path(
861+
secret_path="example",
862+
secret_name="example",
863+
revision="example",
864+
)
865+
"""
866+
867+
param_region = validate_path_param(
868+
"region", region or self.client.default_region
869+
)
870+
param_revision = validate_path_param("revision", revision)
871+
872+
res = self._request(
873+
"GET",
874+
f"/secret-manager/v1beta1/regions/{param_region}/secrets-by-path/versions/{param_revision}/access",
875+
params={
876+
"project_id": project_id or self.client.default_project_id,
877+
"secret_name": secret_name,
878+
"secret_path": secret_path,
879+
},
880+
)
881+
882+
self._throw_on_error(res)
883+
return unmarshal_AccessSecretVersionResponse(res.json())
884+
835885
def enable_secret_version(
836886
self,
837887
*,

scaleway/scaleway/secret/v1beta1/types.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,37 @@ class Secret:
280280
"""
281281

282282

283+
@dataclass
284+
class AccessSecretVersionByPathRequest:
285+
secret_path: str
286+
"""
287+
Secret's path.
288+
"""
289+
290+
secret_name: str
291+
"""
292+
Secret's name.
293+
"""
294+
295+
revision: str
296+
"""
297+
The first version of the secret is numbered 1, and all subsequent revisions augment by 1. Value can be either:
298+
- an integer (the revision number)
299+
- "latest" (the latest revision)
300+
- "latest_enabled" (the latest enabled revision).
301+
"""
302+
303+
region: Optional[Region]
304+
"""
305+
Region to target. If none is passed will use default region from the config.
306+
"""
307+
308+
project_id: Optional[str]
309+
"""
310+
ID of the Project to target.
311+
"""
312+
313+
283314
@dataclass
284315
class AccessSecretVersionRequest:
285316
secret_id: str

0 commit comments

Comments
 (0)