Skip to content

Folders

API

Infisical Folders Resource API.

FoldersV1

Bases: InfisicalAPI

Infisical Folders v1 API Resource.

Attributes:

Name Type Description
base_uri str

/v1/folders

Source code in src/infisical/resources/folders/api.py
class FoldersV1(InfisicalAPI):
    """Infisical Folders v1 API Resource.

    Attributes:
        base_uri (str): `/v1/folders`
    """

    base_uri: Final = "/v1/folders"

    def __init__(self, client: SyncOrAsyncClient) -> None:
        """Initialize the Infisical Folders Resource.

        Args:
            client (SyncOrAsyncClient): An initialized [InfisicalClient][src.infisical.clients.clients.] or
                [InfisicalAsyncClient][src.infisical.clients.clients.].
        """
        super().__init__(client=client)

    def create(self, request: CreateFolderRequest) -> Folder:
        """Create a new folder.

        Args:
            request (CreateFolderRequest): The request object containing folder details.
        """
        self.logger.info("Creating folder %s", request.name)
        url = self._format_url("")  # Create uses the base URI
        _request = self.client.create_request(
            method="post",
            url=url,
            body=request.model_dump(by_alias=True, exclude_none=True),
        )
        return self.client.handle_request(request=_request, expected_responses={"folder": Folder})

    def delete(self, request: DeleteFolderRequest) -> Folder:
        """Delete a folder.

        Args:
            request (DeleteFolderRequest): The request object containing folder ID or name.
        """
        self.logger.info("Deleting folder %s", request.folder_id_or_name)
        url = self._format_url(f"/{request.folder_id_or_name}")
        _request = self.client.create_request(
            method="delete",
            url=url,
            body=request.model_dump(by_alias=True, exclude_none=True),
        )
        return self.client.handle_request(request=_request, expected_responses={"folder": Folder})

    def get_by_id(self, *, folder_id: str) -> Folder:
        """Get a folder by ID.

        Args:
            folder_id (str): The ID of the folder to retrieve.
        """
        self.logger.info("Getting folder by ID %s", folder_id)
        url = self._format_url(f"/{folder_id}")
        request = self.client.create_request(method="get", url=url)
        return self.client.handle_request(request=request, expected_responses={"folder": Folder})

    def list(self, **params: Unpack[ListFoldersQueryParams]) -> FoldersList:
        """List all folders.

        Args:
            **params (ListFoldersQueryParams): Optional query parameters for filtering the folder list.
        """
        self.logger.info("Listing folders with params %s", params)
        self.verify_required_params(required_params=["workspaceId", "environment"], params=params)
        if "lastSecretModified" in params:
            # Convert datetime to ISO format if present
            params["lastSecretModified"] = params["lastSecretModified"].isoformat()
        url = self._format_url("")
        request = self.client.create_request(method="get", url=url, params=params)
        return self.client.handle_request(request=request, expected_responses={"": FoldersList})

    def update(self, request: UpdateFolderRequest) -> Folder:
        """Update a folder.

        Args:
            request (UpdateFolderRequest): The request object containing folder ID and update details.
        """
        self.logger.info("Updating folder %s", request.folder_id)
        url = self._format_url(f"/{request.folder_id}")
        _request = self.client.create_request(
            method="patch",
            url=url,
            body=request.model_dump(by_alias=True, exclude_none=True),
        )
        return self.client.handle_request(request=_request, expected_responses={"folder": Folder})

__init__

__init__(client: SyncOrAsyncClient) -> None

Initialize the Infisical Folders Resource.

Parameters:

Name Type Description Default
client SyncOrAsyncClient required
Source code in src/infisical/resources/folders/api.py
def __init__(self, client: SyncOrAsyncClient) -> None:
    """Initialize the Infisical Folders Resource.

    Args:
        client (SyncOrAsyncClient): An initialized [InfisicalClient][src.infisical.clients.clients.] or
            [InfisicalAsyncClient][src.infisical.clients.clients.].
    """
    super().__init__(client=client)

create

create(request: CreateFolderRequest) -> Folder

Create a new folder.

Parameters:

Name Type Description Default
request CreateFolderRequest

The request object containing folder details.

required
Source code in src/infisical/resources/folders/api.py
def create(self, request: CreateFolderRequest) -> Folder:
    """Create a new folder.

    Args:
        request (CreateFolderRequest): The request object containing folder details.
    """
    self.logger.info("Creating folder %s", request.name)
    url = self._format_url("")  # Create uses the base URI
    _request = self.client.create_request(
        method="post",
        url=url,
        body=request.model_dump(by_alias=True, exclude_none=True),
    )
    return self.client.handle_request(request=_request, expected_responses={"folder": Folder})

delete

delete(request: DeleteFolderRequest) -> Folder

Delete a folder.

Parameters:

Name Type Description Default
request DeleteFolderRequest

The request object containing folder ID or name.

required
Source code in src/infisical/resources/folders/api.py
def delete(self, request: DeleteFolderRequest) -> Folder:
    """Delete a folder.

    Args:
        request (DeleteFolderRequest): The request object containing folder ID or name.
    """
    self.logger.info("Deleting folder %s", request.folder_id_or_name)
    url = self._format_url(f"/{request.folder_id_or_name}")
    _request = self.client.create_request(
        method="delete",
        url=url,
        body=request.model_dump(by_alias=True, exclude_none=True),
    )
    return self.client.handle_request(request=_request, expected_responses={"folder": Folder})

get_by_id

get_by_id(*, folder_id: str) -> Folder

Get a folder by ID.

Parameters:

Name Type Description Default
folder_id str

The ID of the folder to retrieve.

required
Source code in src/infisical/resources/folders/api.py
def get_by_id(self, *, folder_id: str) -> Folder:
    """Get a folder by ID.

    Args:
        folder_id (str): The ID of the folder to retrieve.
    """
    self.logger.info("Getting folder by ID %s", folder_id)
    url = self._format_url(f"/{folder_id}")
    request = self.client.create_request(method="get", url=url)
    return self.client.handle_request(request=request, expected_responses={"folder": Folder})

list

List all folders.

Parameters:

Name Type Description Default
**params ListFoldersQueryParams

Optional query parameters for filtering the folder list.

{}
Source code in src/infisical/resources/folders/api.py
def list(self, **params: Unpack[ListFoldersQueryParams]) -> FoldersList:
    """List all folders.

    Args:
        **params (ListFoldersQueryParams): Optional query parameters for filtering the folder list.
    """
    self.logger.info("Listing folders with params %s", params)
    self.verify_required_params(required_params=["workspaceId", "environment"], params=params)
    if "lastSecretModified" in params:
        # Convert datetime to ISO format if present
        params["lastSecretModified"] = params["lastSecretModified"].isoformat()
    url = self._format_url("")
    request = self.client.create_request(method="get", url=url, params=params)
    return self.client.handle_request(request=request, expected_responses={"": FoldersList})

update

update(request: UpdateFolderRequest) -> Folder

Update a folder.

Parameters:

Name Type Description Default
request UpdateFolderRequest

The request object containing folder ID and update details.

required
Source code in src/infisical/resources/folders/api.py
def update(self, request: UpdateFolderRequest) -> Folder:
    """Update a folder.

    Args:
        request (UpdateFolderRequest): The request object containing folder ID and update details.
    """
    self.logger.info("Updating folder %s", request.folder_id)
    url = self._format_url(f"/{request.folder_id}")
    _request = self.client.create_request(
        method="patch",
        url=url,
        body=request.model_dump(by_alias=True, exclude_none=True),
    )
    return self.client.handle_request(request=_request, expected_responses={"folder": Folder})

Folders

Infisical Folders Resource.

Attributes:

Name Type Description
v1 FoldersV1

The v1 API resource for folders.

Source code in src/infisical/resources/folders/api.py
class Folders:
    """Infisical Folders Resource.

    Attributes:
        v1 (FoldersV1): The v1 API resource for folders.
    """

    def __init__(self, client: SyncOrAsyncClient) -> None:
        """Initialize the Infisical Folders Resource.

        Args:
            client (SyncOrAsyncClient): An initialized [InfisicalClient][src.infisical.clients.clients.] or
                [InfisicalAsyncClient][src.infisical.clients.clients.].
        """
        self.v1 = FoldersV1(client=client)

__init__

__init__(client: SyncOrAsyncClient) -> None

Initialize the Infisical Folders Resource.

Parameters:

Name Type Description Default
client SyncOrAsyncClient required
Source code in src/infisical/resources/folders/api.py
def __init__(self, client: SyncOrAsyncClient) -> None:
    """Initialize the Infisical Folders Resource.

    Args:
        client (SyncOrAsyncClient): An initialized [InfisicalClient][src.infisical.clients.clients.] or
            [InfisicalAsyncClient][src.infisical.clients.clients.].
    """
    self.v1 = FoldersV1(client=client)

Models

Infisical Folders Resource Models.

ListFoldersQueryParams

Bases: TypedDict

Query parameters for listing secrets.

Thesre are the optional query parameters for the list secrets API.

Other Parameters:

Name Type Description
path str

The path to the folder.

recursive bool

Whether to list secrets recursively.

workspaceId str

The ID of the workspace.

environment str

The environment name.

lastSecretModified datetime

The last modified date of the secret.

Source code in src/infisical/resources/folders/models.py
class ListFoldersQueryParams(TypedDict, total=False):
    """Query parameters for listing secrets.

    Thesre are the optional query parameters for the list secrets API.

    Other parameters:
        path (str): The path to the folder.
        recursive (bool): Whether to list secrets recursively.
        workspaceId (str): The ID of the workspace.
        environment (str): The environment name.
        lastSecretModified (datetime.datetime): The last modified date of the secret.
    """

    environment: str
    lastSecretModified: datetime.datetime
    path: str
    recursive: bool
    workspaceId: str

Environment

Bases: BaseModel

Environment model.

Attributes:

Name Type Description
env_id str

The ID of the environment.

env_name str

The name of the environment.

env_slug str

The slug of the environment.

Source code in src/infisical/resources/folders/models.py
class Environment(BaseModel):
    """Environment model.

    Attributes:
        env_id (str): The ID of the environment.
        env_name (str): The name of the environment.
        env_slug (str): The slug of the environment.
    """

    env_id: Annotated[str, Field(alias="envId")]
    env_name: Annotated[str, Field(alias="envName")]
    env_slug: Annotated[str, Field(alias="envSlug")]

Folder

Bases: BaseModel

Folder model.

Attributes:

Name Type Description
created_at datetime

The creation date of the folder.

description str | None

The description of the folder.

env_id str

The ID of the environment.

environment Environment | None

The environment of the folder.

folder_id str

The ID of the folder.

is_reserved bool | None

Whether the folder is reserved.

last_secret_modified datetime | None

The last modified date of the secret.

name str

The name of the folder.

parent_id str | None

The ID of the parent folder.

path str | None

The path to the folder.

project_id str | None

The ID of the project.

updated_at datetime

The last updated date of the folder.

version int | None

The version of the folder.

Source code in src/infisical/resources/folders/models.py
class Folder(BaseModel):
    """Folder model.

    Attributes:
        created_at (datetime.datetime): The creation date of the folder.
        description (str | None): The description of the folder.
        env_id (str): The ID of the environment.
        environment (Environment | None): The environment of the folder.
        folder_id (str): The ID of the folder.
        is_reserved (bool | None): Whether the folder is reserved.
        last_secret_modified (datetime.datetime | None): The last modified date of the secret.
        name (str): The name of the folder.
        parent_id (str | None): The ID of the parent folder.
        path (str | None): The path to the folder.
        project_id (str | None): The ID of the project.
        updated_at (datetime.datetime): The last updated date of the folder.
        version (int | None): The version of the folder.
    """

    created_at: Annotated[datetime.datetime, Field(alias="createdAt")]
    description: Annotated[str | None, Field(default=None)]
    env_id: Annotated[str, Field(alias="envId")]
    environment: Annotated[Environment | None, Field(default=None)]
    folder_id: Annotated[str, Field(alias="id")]
    is_reserved: Annotated[bool | None, Field(alias="isReserved", default=None)]
    last_secret_modified: Annotated[datetime.datetime | None, Field(alias="lastSecretModified", default=None)]
    name: Annotated[str, Field()]
    parent_id: Annotated[str | None, Field(alias="parentId", default=None)]
    path: Annotated[str | None, Field(default=None)]
    project_id: Annotated[str | None, Field(alias="projectId", default=None)]
    updated_at: Annotated[datetime.datetime, Field(alias="updatedAt")]
    version: Annotated[int | None, Field(default=None)]

FoldersList

Bases: BaseModel

Folders list model.

Attributes:

Name Type Description
folders list[Folder]

The list of folders.

Source code in src/infisical/resources/folders/models.py
class FoldersList(BaseModel):
    """Folders list model.

    Attributes:
        folders (list[Folder]): The list of folders.
    """

    folders: Annotated[list[Folder], Field()]

CreateFolderRequest

Bases: InfisicalResourceRequest

Create Folder Request Model.

Attributes:

Name Type Description
description str | None

The description of the folder.

name str

The name of the folder.

path str

The path to the folder.

Source code in src/infisical/resources/folders/models.py
class CreateFolderRequest(InfisicalResourceRequest):
    """Create Folder Request Model.

    Attributes:
        description (str | None): The description of the folder.
        name (str): The name of the folder.
        path (str): The path to the folder.
    """

    description: Annotated[str | None, Field(default=None)]
    name: Annotated[str, Field()]
    path: Annotated[str, Field(default="/")]

DeleteFolderRequest

Bases: InfisicalResourceRequest

Delete Folder request model.

The following are required when creating a new request:

- `folder_id_or_name`: The ID or name of the folder to delete.
- `workspace_id`: The ID of the workspace.
- `environment`: The environment name.

Attributes:

Name Type Description
folder_id_or_name str

The ID or name of the folder to delete.

path str

The path to the folder.

workspace_id str

The ID of the workspace.

environment str

The environment name.

Source code in src/infisical/resources/folders/models.py
class DeleteFolderRequest(InfisicalResourceRequest):
    """Delete Folder request model.

    The following are required when creating a new request:

        - `folder_id_or_name`: The ID or name of the folder to delete.
        - `workspace_id`: The ID of the workspace.
        - `environment`: The environment name.

    Attributes:
        folder_id_or_name (str): The ID or name of the folder to delete.
        path (str): The path to the folder.
        workspace_id (str): The ID of the workspace.
        environment (str): The environment name.
    """

    folder_id_or_name: Annotated[str, Field(exclude=True)]
    path: Annotated[str, Field(default="/")]

UpdateFolderRequest

Bases: InfisicalResourceRequest

Update Folder request model.

The following are required when creating a new request:

- `folder_id`: The ID or name of the folder to delete.
- `workspace_id`: The ID of the workspace.
- `environment`: The environment name.

Attributes:

Name Type Description
description str | None

The description of the folder.

folder_id str

The ID of the folder to update.

name str | None

The name of the folder.

path str

The path to the folder.

workspace_id str

The ID of the workspace.

environment str

The environment name.

Source code in src/infisical/resources/folders/models.py
class UpdateFolderRequest(InfisicalResourceRequest):
    """Update Folder request model.

    The following are required when creating a new request:

        - `folder_id`: The ID or name of the folder to delete.
        - `workspace_id`: The ID of the workspace.
        - `environment`: The environment name.

    Attributes:
        description (str | None): The description of the folder.
        folder_id (str): The ID of the folder to update.
        name (str | None): The name of the folder.
        path (str): The path to the folder.
        workspace_id (str): The ID of the workspace.
        environment (str): The environment name.
    """

    description: Annotated[str | None, Field(default=None)]
    folder_id: Annotated[str, Field(exclude=True)]
    name: Annotated[str | None, Field(default=None)]
    path: Annotated[str, Field(default="/")]