The Infisical SDK provides a convenient way to interact with the Infisical API.
We have recently rolled out our first stable version of the SDK, version 1.0.2
and above.
The 1.0.2 version comes with a few key changes that may change how you're using the SDK.
-
Removal of
rest
: The SDK no longer exposes the entire Infisical API. This was nessecary as we have moved away from using an OpenAPI generator approach. We aim to add support for more API resources in the near future. If you have any specific requests, please open an issue. -
New response types: The 1.0.2 release uses return types that differ from the older versions. The new return types such as
BaseSecret
, are all exported from the Infisical SDK. -
Property renaming: Some properties on the responses have been slightly renamed. An example of this would be that the
secret_key
property on theget_secret_by_name()
method, that has been renamed tosecretKey
.
With this in mind, you're ready to upgrade your SDK version to 1.0.2
or above.
You can refer to our legacy documentation if need be.
Python 3.7+
pip install infisicalsdk
from infisical_sdk import InfisicalSDKClient
# Initialize the client
client = InfisicalSDKClient(host="https://app.infisical.com")
# Authenticate (example using Universal Auth)
client.auth.universal_auth.login(client_id="your_client_id", client_secret="your_client_secret")
# Use the SDK to interact with Infisical
secrets = client.secrets.list_secrets(project_id="your_project_id", environment_slug="dev", secret_path="/")
The SDK methods are organized into the following high-level categories:
auth
: Handles authentication methods.secrets
: Manages CRUD operations for secrets.
The Auth
component provides methods for authentication:
response = client.auth.universal_auth.login(client_id="your_client_id", client_secret="your_client_secret")
response = client.auth.aws_auth.login(identity_id="your_identity_id")
This sub-class handles operations related to secrets:
secrets = client.secrets.list_secrets(
project_id="your_project_id",
environment_slug="dev",
secret_path="/",
expand_secret_references=True,
recursive=False,
include_imports=True,
tag_filters=[]
)
Parameters:
project_id
(str): The ID of your project.environment_slug
(str): The environment in which to list secrets (e.g., "dev").secret_path
(str): The path to the secrets.expand_secret_references
(bool): Whether to expand secret references.recursive
(bool): Whether to list secrets recursively.include_imports
(bool): Whether to include imported secrets.tag_filters
(List[str]): Tags to filter secrets.
Returns:
ListSecretsResponse
: The response containing the list of secrets.
new_secret = client.secrets.create_secret_by_name(
secret_name="NEW_SECRET",
project_id="your_project_id",
secret_path="/",
environment_slug="dev",
secret_value="secret_value",
secret_comment="Optional comment",
skip_multiline_encoding=False,
secret_reminder_repeat_days=30, # Optional
secret_reminder_note="Remember to update this secret" # Optional
)
Parameters:
secret_name
(str): The name of the secret.project_id
(str): The ID of your project.secret_path
(str): The path to the secret.environment_slug
(str): The environment in which to create the secret.secret_value
(str): The value of the secret.secret_comment
(str, optional): A comment associated with the secret.skip_multiline_encoding
(bool, optional): Whether to skip encoding for multiline secrets.secret_reminder_repeat_days
(Union[float, int], optional): Number of days after which to repeat secret reminders.secret_reminder_note
(str, optional): A note for the secret reminder.
Returns:
BaseSecret
: The response after creating the secret.
updated_secret = client.secrets.update_secret_by_name(
current_secret_name="EXISTING_SECRET",
project_id="your_project_id",
secret_path="/",
environment_slug="dev",
secret_value="new_secret_value",
secret_comment="Updated comment", # Optional
skip_multiline_encoding=False,
secret_reminder_repeat_days=30, # Optional
secret_reminder_note="Updated reminder note", # Optional
new_secret_name="NEW_NAME" # Optional
)
Parameters:
current_secret_name
(str): The current name of the secret.project_id
(str): The ID of your project.secret_path
(str): The path to the secret.environment_slug
(str): The environment in which to update the secret.secret_value
(str, optional): The new value of the secret.secret_comment
(str, optional): An updated comment associated with the secret.skip_multiline_encoding
(bool, optional): Whether to skip encoding for multiline secrets.secret_reminder_repeat_days
(Union[float, int], optional): Updated number of days after which to repeat secret reminders.secret_reminder_note
(str, optional): An updated note for the secret reminder.new_secret_name
(str, optional): A new name for the secret.
Returns:
BaseSecret
: The response after updating the secret.
secret = client.secrets.get_secret_by_name(
secret_name="EXISTING_SECRET",
project_id="your_project_id",
environment_slug="dev",
secret_path="/",
expand_secret_references=True,
include_imports=True,
version=None # Optional
)
Parameters:
secret_name
(str): The name of the secret.project_id
(str): The ID of your project.environment_slug
(str): The environment in which to retrieve the secret.secret_path
(str): The path to the secret.expand_secret_references
(bool): Whether to expand secret references.include_imports
(bool): Whether to include imported secrets.version
(str, optional): The version of the secret to retrieve. Fetches the latest by default.
Returns:
BaseSecret
: The response containing the secret.
deleted_secret = client.secrets.delete_secret_by_name(
secret_name="EXISTING_SECRET",
project_id="your_project_id",
environment_slug="dev",
secret_path="/"
)
Parameters:
secret_name
(str): The name of the secret to delete.project_id
(str): The ID of your project.environment_slug
(str): The environment in which to delete the secret.secret_path
(str): The path to the secret.
Returns:
BaseSecret
: The response after deleting the secret.