> ## 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.

# Virtual Accounts

> SDK methods to list, create, and manage virtual accounts for service-to-service authentication.

## Methods

<Accordion title="list">
  List virtual accounts for the tenant.

  #### Parameters

  <ParamField body="limit" type="typing.Optional[int]">
    Number of items per page
  </ParamField>

  <ParamField body="offset" type="typing.Optional[int]">
    Number of items to skip
  </ParamField>

  <ParamField body="name_search_query" type="typing.Optional[str]">
    Return virtual accounts with names that contain this string
  </ParamField>

  <ParamField body="owned_by_teams" type="typing.Optional[typing.Union[str, typing.Sequence[str]]]">
    Return virtual accounts owned by these teams
  </ParamField>

  <ParamField body="is_expired" type="typing.Optional[bool]">
    Filter virtual accounts by expiration status. true = expired, false = not expired
  </ParamField>

  <ParamField body="filter" type="typing.Optional[str]">
    JSON string: structured filter tree (AND/OR groups, column leaves on `name`, json\_map leaves on manifest.tags).
  </ParamField>

  #### Returns

  <ResponseField name="SyncPager[VirtualAccount, ListVirtualAccountResponse]" type="SyncPager[VirtualAccount, ListVirtualAccountResponse]">
    [🔗 ListVirtualAccountResponse](/docs/truefoundry_sdk/types#listvirtualaccountresponse)

    Return all virtual accounts for the tenant
  </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.virtual_accounts.list(
      limit=10,
      offset=10,
      name_search_query="value",
      owned_by_teams="value",
      is_expired="value",
      filter="value",
  )

  # 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">
  Creates a new virtual account or updates an existing one based on the provided manifest.

  #### Parameters

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

    Virtual account manifest
  </ParamField>

  <ParamField body="dry_run" type="typing.Optional[bool]">
    Dry run
  </ParamField>

  #### Returns

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

    Virtual account created/updated successfully
  </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.virtual_accounts.create_or_update(
      manifest={"key": "value"},
      dry_run=False,
  )
  ```
</Accordion>

<Accordion title="get">
  Get virtual account by id

  #### Parameters

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

  #### Returns

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

    Returns the virtual account associated with the provided virtual account id
  </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.virtual_accounts.get(
      id="id_value",
  )
  ```
</Accordion>

<Accordion title="delete">
  Delete a virtual account associated with the provided virtual account id.

  #### Parameters

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

  #### Returns

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

    Virtual account deleted successfully
  </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.virtual_accounts.delete(
      id="id_value",
  )
  ```
</Accordion>

<Accordion title="get_token">
  Get token for a virtual account by id

  #### Parameters

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

  #### Returns

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

    Token for the virtual account
  </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.virtual_accounts.get_token(
      id="id_value",
  )
  ```
</Accordion>

<Accordion title="sync_to_secret_store">
  Syncs the virtual account token to the configured secret store. Returns the updated JWT with sync metadata including timestamp and error (if any).

  #### Parameters

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

  #### Returns

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

    Token synced successfully to secret store
  </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.virtual_accounts.sync_to_secret_store(
      id="id_value",
  )
  ```
</Accordion>

<Accordion title="regenerate_token">
  Regenerate token for a virtual account by id. The old token will remain valid for the specified grace period.

  #### Parameters

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

  <ParamField body="grace_period_in_days" type="float" required>
    Grace period in days for which the old token will remain valid after regeneration
  </ParamField>

  #### Returns

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

    Token for the virtual account
  </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.virtual_accounts.regenerate_token(
      id="id_value",
      grace_period_in_days="value",
  )
  ```
</Accordion>

<Accordion title="delete_jwt">
  Delete a JWT for a virtual account by id

  #### Parameters

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

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

  #### Returns

  <ResponseField name="None" type="None" />

  #### 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.virtual_accounts.delete_jwt(
      id="id_value",
      jwt_id="value",
  )
  ```
</Accordion>
