> ## Documentation Index
> Fetch the complete documentation index at: https://www.truefoundry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Directories

> SDK methods to create, list, and manage data directories for storing files and datasets.

## Methods

<Accordion title="get">
  Get a data directory by its ID.

  #### Parameters

  <ParamField body="id" type="str" required />

  #### Returns

  <ResponseField name="GetDataDirectoryResponse" type="GetDataDirectoryResponse">
    [🔗 GetDataDirectoryResponse](/docs/truefoundry_sdk/types#getdatadirectoryresponse)

    The data directory data
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.get(
      id="id_value",
  )
  ```
</Accordion>

<Accordion title="delete">
  Delete a data directory, optionally including its contents.

  #### Parameters

  <ParamField body="id" type="str" required />

  <ParamField body="delete_contents" type="typing.Optional[bool]" />

  #### Returns

  <ResponseField name="EmptyResponse" type="EmptyResponse">
    [🔗 EmptyResponse](/docs/truefoundry_sdk/types#emptyresponse)

    Empty response indicating successful deletion
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.delete(
      id="id_value",
      delete_contents="value",
  )
  ```
</Accordion>

<Accordion title="list">
  List data directories with optional filtering by FQN, ML Repo, or name.

  #### Parameters

  <ParamField body="fqn" type="typing.Optional[str]">
    Fully qualified name to filter data directories by
  </ParamField>

  <ParamField body="ml_repo_id" type="typing.Optional[str]">
    ID of the ML Repo to filter data directories by
  </ParamField>

  <ParamField body="name" type="typing.Optional[str]">
    Name of the data directory to filter by
  </ParamField>

  <ParamField body="limit" type="typing.Optional[int]">
    Maximum number of data directories to return
  </ParamField>

  <ParamField body="offset" type="typing.Optional[int]">
    Number of data directories to skip for pagination
  </ParamField>

  #### Returns

  <ResponseField name="SyncPager[DataDirectory, ListDataDirectoriesResponse]" type="SyncPager[DataDirectory, ListDataDirectoriesResponse]">
    [🔗 ListDataDirectoriesResponse](/docs/truefoundry_sdk/types#listdatadirectoriesresponse)

    List of data directories matching the query with pagination information
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.list(
      fqn="value",
      ml_repo_id="value",
      name="value",
      limit=10,
      offset=10,
  )

  # Iterate through results
  for item in response:
      print(item.name)

  # Or paginate page by page
  for page in response.iter_pages():
      for item in page:
          print(item.name)
  ```
</Accordion>

<Accordion title="create_or_update">
  Create or update a data directory.

  #### Parameters

  <ParamField body="manifest" type="DataDirectoryManifest" required>
    [🔗 DataDirectoryManifest](/docs/truefoundry_sdk/types#datadirectorymanifest)

    Manifest containing metadata for the data directory to apply
  </ParamField>

  #### Returns

  <ResponseField name="GetDataDirectoryResponse" type="GetDataDirectoryResponse">
    [🔗 GetDataDirectoryResponse](/docs/truefoundry_sdk/types#getdatadirectoryresponse)

    The created or updated data directory
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.create_or_update(
      manifest={"key": "value"},
  )
  ```
</Accordion>

<Accordion title="list_files">
  List files and directories in a data directory.

  #### Parameters

  <ParamField body="id" type="str" required>
    ID of the artifact version to list files from
  </ParamField>

  <ParamField body="path" type="typing.Optional[str]">
    Relative path within the artifact version to list files from (defaults to root)
  </ParamField>

  <ParamField body="limit" type="typing.Optional[int]">
    Maximum number of files/directories to return
  </ParamField>

  <ParamField body="page_token" type="typing.Optional[str]">
    Token to retrieve the next page of results
  </ParamField>

  #### Returns

  <ResponseField name="SyncPager[FileInfo, ListFilesResponse]" type="SyncPager[FileInfo, ListFilesResponse]">
    [🔗 ListFilesResponse](/docs/truefoundry_sdk/types#listfilesresponse)

    List of files and directories with pagination information
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.list_files(
      id="id_value",
      path="value",
      limit=10,
      page_token="value",
  )
  ```
</Accordion>

<Accordion title="delete_files">
  Delete files from a data directory.

  #### Parameters

  <ParamField body="id" type="str" required>
    ID of the artifact version to delete files from
  </ParamField>

  <ParamField body="paths" type="typing.Sequence[str]" required>
    List of relative file paths within the artifact version to delete
  </ParamField>

  #### Returns

  <ResponseField name="EmptyResponse" type="EmptyResponse">
    [🔗 EmptyResponse](/docs/truefoundry_sdk/types#emptyresponse)

    Empty response indicating successful deletion
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.delete_files(
      id="id_value",
      paths="value",
  )
  ```
</Accordion>

<Accordion title="get_signed_urls">
  Get pre-signed URLs for reading or writing files in a data directory.

  #### Parameters

  <ParamField body="id" type="str" required>
    ID of the artifact version to get signed URLs for
  </ParamField>

  <ParamField body="paths" type="typing.Sequence[str]" required>
    List of relative file paths within the artifact version to get signed URLs for
  </ParamField>

  <ParamField body="operation" type="Operation" required>
    [🔗 Operation](/docs/truefoundry_sdk/enums#operation)

    Operation type for the signed URL (e.g., 'READ' or 'WRITE')
  </ParamField>

  #### Returns

  <ResponseField name="GetSignedUrLsResponse" type="GetSignedUrLsResponse">
    [🔗 GetSignedUrLsResponse](/docs/truefoundry_sdk/types#getsignedurlsresponse)

    List of signed URLs for the requested file paths
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.get_signed_urls(
      id="id_value",
      paths="value",
      operation="value",
  )
  ```
</Accordion>

<Accordion title="create_multipart_upload">
  Create a multipart upload for large files in a data directory.

  #### Parameters

  <ParamField body="id" type="str" required>
    ID of the artifact version to upload files to
  </ParamField>

  <ParamField body="path" type="str" required>
    Relative path within the artifact version where the file should be uploaded
  </ParamField>

  <ParamField body="num_parts" type="int" required>
    Number of parts to split the upload into for multipart upload
  </ParamField>

  #### Returns

  <ResponseField name="MultiPartUploadResponse" type="MultiPartUploadResponse">
    [🔗 MultiPartUploadResponse](/docs/truefoundry_sdk/types#multipartuploadresponse)

    Multipart upload information including signed URLs for each part
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.create_multipart_upload(
      id="id_value",
      path="value",
      num_parts="value",
  )
  ```
</Accordion>

<Accordion title="get_by_fqn">
  Get Data Directory by FQN.

  #### Parameters

  <ParamField body="fqn" type="str" required>
    FQN of the data directory
  </ParamField>

  #### Returns

  <ResponseField name="GetDataDirectoryResponse" type="GetDataDirectoryResponse">
    [🔗 GetDataDirectoryResponse](/docs/truefoundry_sdk/types#getdatadirectoryresponse)

    Data directory details
  </ResponseField>

  #### Usage

  ```python lines theme={"dark"}
  from truefoundry import TrueFoundry

  client = TrueFoundry(
      api_key="YOUR_API_KEY",
      base_url="https://yourhost.com/path/to/api",
  )

  client.data_directories.get_by_fqn(
      fqn="value",
  )
  ```
</Accordion>
