[Yandex Cloud documentation](../../../../index.md) > [Yandex Serverless Integrations](../../../index.md) > [Step-by-step guides](../../index.md) > Workflows > [Workflow step constructor](index.md) > Integration steps > Yandex Disk

# Interaction with Yandex Disk files

{% list tabs %}

- Management console {#console}

  1. When [creating](../workflow/create-constructor.md) a new workflow or [editing](../workflow/update.md) an existing one, in the management console, under **Create workflow** / **Edit workflow**, select `Constructor`. 
  1. From the **Integration steps** section on the left side of the screen, drag the ![yadisk-icon](../../../../_assets/yadisk-icon.svg) **Yandex Disk** element to the relevant workflow location in the constructor window.

      You can drag and drop steps into areas marked by the dotted line in the workflow schema, such as **Add a step**, etc.
  1. In the workflow schema window, click the new **Yandex Disk** section to select it.
  1. At the right of the window, on the **Settings** tab.

      1. In the **Step name** field, enter a name for the workflow step.
      1. In the **Action** field, select:

          * `Upload to disk` to write the file to Yandex Disk.
          * `Download from disk` to get the file from Yandex Disk.

      1. In the **Content type** field, select the file content type:

          {% cut "If you are uploading files to disk" %}

          * `BINARY`: File content will be decoded from [Base64](https://en.wikipedia.org/wiki/Base64) format.
          * `TEXT`: File content will be saved in plain text format.
          * `JSON`: File text containing [JSON](https://en.wikipedia.org/wiki/JSON) will be saved as a JSON structure.

          {% endcut %}
              
          {% cut "If you are downloading files from disk" %}

          * `BINARY`: File content will be encoded in [Base64](https://en.wikipedia.org/wiki/Base64) format.
          * `JSON`: File content will be received as a [JSON](https://en.wikipedia.org/wiki/JSON) structure.
          * `TEXT`: File content will be received in plain text format.
          * `EXCEL`: File content will be converted into an array of pages, where each page is an array of string arrays. Supported formats: `XLAM`, `XLSM`, `XLSX`, `XLTM`, and `XLTX`.
          * `CSV`: File content will be converted into an array of string arrays by dividing strings based on the following separators: comma (`,`) and line break.

          {% endcut %}

      1. If you are uploading files to disk, specify the content that will be saved to the file in the **File content** field.
      1. In the **Disk type** field, select Yandex Disk type:

          * `Personal`: Disk owned by one user.
          * `Shared`: Disk owned by a Yandex 360 organization.

          If you are using a disk owned by an organization, specify disk ID in the **Shared disk ID** field. The ID is displayed in the address bar after `vd/` in the Yandex Disk interface.

      1. In the **Path** field, specify the path to the target file on Yandex Disk.
      1. Under **OAuth token**, specify the [app OAUth token](https://yandex.ru/dev/disk-api/doc/en/concepts/quickstart#oauth) or Yandex Lockbox [secret](../../../../lockbox/concepts/secret.md) that stores the token. Select:

          * `Lockbox` to store the OAuth token in a secret; in the **Secret** section, select the secret, its [version](../../../../lockbox/concepts/secret.md#version), and the key used to store the OAuth token.

              If you do not have a Yandex Lockbox secret, click **Create** to create it.
            
          * `Text` to store the OAuth token in the specification as text; enter the OAuth token in the **Value** field.

              {% note warning %}

              It is not safe to store your OAuth token in the specification in plain text.

              {% endnote %}

      1. Optionally, in the **Timeout, ms** field, set the maximum execution time for the current step.
      1. Optionally, to set a custom retry policy for a step, expand the **Retry policy** section and click ![plus](../../../../_assets/console-icons/plus.svg) **Retry policy**. In the form that appears:
         
         1. Optionally, in the **Initial delay, ms** field, set the initial value for a delay between step retries.
         1. Optionally, in the **Backoff rate** field, set the multiplication factor for delay before each step retry.
         1. Optionally, in the **Maximum delay, ms** field, set the value for a maximum delay between step retries.
         1. In the **Errors** field, select the errors for which the step will or will not be retried.
         
             For detailed information about possible errors, see [this section](../../../concepts/workflows/execution.md#errors).
         1. Optionally, in the **Maximum number of retries** field, set the maximum number of step retry attempts.
         1. In the **Error selection mode** field, select:
         
             * `INCLUDE`: Retry executing a step when errors specified in the **Errors** field occur.
             * `EXCLUDE`: To retry executing the step on any errors other than those specified in the **Errors** field.
         
         If you want to delete a retry policy you created for the step earlier, click ![ellipsis](../../../../_assets/console-icons/ellipsis.svg) and select **Delete** in the **Retry policy** row.
         
         If no custom retry policy is configured for a step, the retry policy [set for the whole workflow](setup-restart-policy.md) will apply.
  1. Optionally, navigate to the **Input** tab and set a [jq template](../../../concepts/workflows/templating.md) to filter the [workflow state](../../../concepts/workflows/workflow.md#state) fed into the step.
  1. Optionally, navigate to the **Output** tab and set a [jq template](../../../concepts/workflows/templating.md) to filter the step outputs added into the [workflow state](../../../concepts/workflows/workflow.md#state).
  1. Optionally, [add](setup-catch-rule.md) an [error transition rule](../../../concepts/workflows/yawl/index.md#catchrule) for the step you are creating to handle errors you may get during this step.

{% endlist %}

## Useful links {#see-also}

* [YaWL specification](../../../concepts/workflows/yawl/integration/disk.md)
* [Creating a workflow using the constructor](../workflow/create-constructor.md)
* [Updating a workflow](../workflow/update.md)