NaasSecret
What it is
NaasSecretis a secondary adapter implementingISecretAdapterto manage secrets stored in the Naas API.- It uses HTTP requests (
requests) with Bearer token authentication.
Public API
- Class
NaasSecret(ISecretAdapter)__init__(naas_api_key: str, naas_api_url: str | None = None)- Stores the API key and sets the base URL (defaults to
https://api.naas.ai).
- Stores the API key and sets the base URL (defaults to
get(key: str, default: Any = None) -> str | Any | None- Fetches a secret value by name.
- Returns the secret value as a
stron success; returnsdefaulton most HTTP errors. - Raises
SecretAuthenticationErroron HTTP 401.
set(key: str, value: str) -> None- Creates/updates a secret with the given name and value.
- Logs an error on HTTP failure; does not raise.
remove(key: str) -> None- Deletes a secret by name.
- Logs an error on HTTP failure; does not raise.
list() -> Dict[str, str | None]- Lists secrets and returns a dict mapping secret names to values (both coerced to
str). - Returns
{}on HTTP failure.
- Lists secrets and returns a dict mapping secret names to values (both coerced to
Configuration/Dependencies
- Dependencies
requestsfor HTTP calls.naas_abi_core.loggerfor logging.naas_abi_core.services.secret.SecretPorts:ISecretAdapterSecretAuthenticationError
- Configuration
naas_api_key(required): used asAuthorization: Bearer <token>.naas_api_url(optional): overrides defaulthttps://api.naas.ai.
Usage
from naas_abi_core.services.secret.adaptors.secondary.NaasSecret import NaasSecret
secrets = NaasSecret(naas_api_key="YOUR_NAAS_API_KEY")
# Set a secret
secrets.set("MY_KEY", "my-value")
# Get a secret (returns default if not found or on most errors)
value = secrets.get("MY_KEY", default=None)
print(value)
# List secrets
print(secrets.list())
# Remove a secret
secrets.remove("MY_KEY")
Caveats
get():- Returns
defaulton non-401 HTTP errors (including 404). - Raises
SecretAuthenticationErroron HTTP 401.
- Returns
- All returned secret values are coerced to
str(str(...)), including when listing. list()usesrequests.get(..., json={...})to send pagination parameters in a JSON body (not query params).