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

# Data Transfer

export const maia = "Maia";

export const ComponentMetadata = ({warehouses, unsupportedWarehouses = [], componentType, connectionInputs, connectionOutputs}) => {
  const allWarehouses = [...warehouses.map(w => ({
    name: w,
    supported: true
  })), ...unsupportedWarehouses.map(w => ({
    name: w,
    supported: false
  }))];
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Project Availability</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {allWarehouses.map((w, i) => <span key={i} style={{
    background: w.supported ? '#dcfce7' : '#fee2e2',
    color: w.supported ? '#15803d' : '#b91c1c',
    border: `1px solid ${w.supported ? '#bbf7d0' : '#fca5a5'}`,
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {w.name} {w.supported ? '✅' : '❌'}
                  </span>)}
              </div>
            </td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Component Type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{componentType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Inputs</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{connectionInputs}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Outputs</td>
            <td style={{
    verticalAlign: 'middle'
  }}>{connectionOutputs}</td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<ComponentMetadata warehouses={["Snowflake", "Databricks", "Amazon Redshift", "Google BigQuery"]} componentType="Connector, Orchestration" connectionInputs="One" connectionOutputs="Unlimited" />

Data Transfer is an orchestration component that enables users to transfer files from a chosen source to a chosen target.

This component can use a number of common network protocols to transfer data to a variety of sources and supports transferring files of any type. This component copies, not moves, the target file. Setting up this component requires selecting a source type and a target type. The component's other properties will change to reflect those choices.

Currently supported data sources include:

* Azure Blob Storage
* FTP
* SFTP
* HTTP
* HTTPS
* Amazon S3
* Windows Fileshare
* Microsoft SharePoint
* Google Cloud Storage
* Microsoft Exchange

Currently supported targets include:

* Azure Blob Storage
* Amazon S3
* Windows Fileshare
* SFTP
* Google Cloud Storage

Currently, only the following encryption algorithms are supported by the component:

* ssh-ed25519
* ecdsa-sha2-nistp256
* ecdsa-sha2-nistp384
* ecdsa-sha2-nistp521
* rsa-sha2-512
* rsa-sha2-256

<Note>
  - To ensure that instance credentials access is managed correctly at all times, we always advise that customers limit scopes (permissions) where applicable.
  - When reading from or writing to Windows Fileshare, the component uses the SMB2 protocol exclusively. SMB1 is not supported.
  - When using Windows Fileshare (SMB), the Data Transfer component uses TCP port `445` by default if no port is explicitly specified.
  - Source credentials (domain, username, and password) are optional for Windows Fileshare connections. For target connections, a username is required when authenticating; the domain and password remain optional. Provide domain, username, and password as separate fields—do not use the `domain\username` format in the username field.
</Note>

If the component requires access to a cloud provider (AWS, Azure, or Google Cloud), it will use credentials as follows:

* If using [Matillion Full SaaS](/docs/guides/runner-overview#matillion-full-saas): The component will use the [cloud credentials](/docs/guides/cloud-credentials) associated with your environment to access resources.
* If using [Hybrid SaaS](/docs/guides/runner-overview#hybrid-saas): By default the component will inherit the agent's execution role (service account role). However, if there are [cloud credentials](/docs/guides/cloud-credentials) associated to your environment, these will overwrite the role.

***

## Properties

<ResponseField name="Name" type="string" required>
  A human-readable name for the component.
</ResponseField>

{/* <!-- param-start:[sourceType] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Source Type" type="drop-down" required>
  Select the type of data source. The source type will determine which [source properties](#source-properties) are required.

  Currently supported data sources include:

  * Azure Blob Storage
  * FTP
  * Google Cloud Storage
  * HTTP
  * HTTPS
  * S3
  * Windows Fileshare
  * Microsoft SharePoint
  * SFTP
  * Microsoft Exchange
</ResponseField>

{/* <!-- param-start:[unpackZipFile] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Unpack ZIP File" type="boolean" required>
  Select **Yes** if the source data is a ZIP file that you wish to unpack before being transferred.
</ResponseField>

{/* <!-- param-start:[targetType] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Target Type" type="drop-down" required>
  Select the target type for the new file. The target type will determine which [target properties](#target-properties) are required.

  Currently supported targets:

  * Azure Blob Storage
  * Google Cloud Storage
  * S3
  * Windows Fileshare
  * SFTP
</ResponseField>

{/* <!-- param-start:[gzipData] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Gzip Data" type="boolean" required>
  Select **Yes** if you wish to gzip the transferred data when it arrives at the target.
</ResponseField>

{/* <!-- param-start:[targetObjectName] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

<ResponseField name="Target Object Name" type="string" required>
  The filename of the new file.
</ResponseField>

## Source properties

<Tabs>
  <Tab title="Azure Blob Storage">
    <Note>
      The following permissions are required to connect to Azure Blob Storage:

      * `Storage Account Contributor` at storage account level
      * `Storage Blob Data Contributor` at storage account or container level
    </Note>

    <ResponseField name="Blob Location" type="string" required>
      The URL that points to the source file that exists on Azure Blob Storage.

      Clicking this property will open the **Blob Location** dialog. This displays a list of all existing storage accounts. Select a storage account, then a container, and then a subfolder if required. This constructs a URL with the following format:

      ```
      AZURE://<account>/<container>/<path>
      ```

      You can also type the URL directly into the **Storage Accounts path** field, instead of selecting listed elements. This is particularly useful when using variables in the URL, for example:

      ```
      AZURE://${jv_blobStorageAccount}/${jv_containerName}
      ```

      Special characters used in this field must be URL-safe.
    </ResponseField>
  </Tab>

  <Tab title="FTP">
    <ResponseField name="Set Home Directory as Root" type="boolean" required>
      * **Yes:** URLs are relative to the user's home directory.
      * **No:** (default) URLs are relative to the server root.
    </ResponseField>

    {/* <!-- param-start:[sourceUrl] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source URL" type="string" required>
      The URL, including full path and file name, that points to the source file. This source URL should follow the below logic where appropriate:

      ```
      ftp://[username[:password]@]hostname[:port][path]
      ```

      Example:

      ```
      ftp://johndoe@example.com/home/johndoe/documents/report.txt
      ```

      Wherever possible, use the Source Username and Source Password component properties for credentials instead of the URL. If you require SFTP instead of FTP, use the SFTP option in the Source Type property.
    </ResponseField>

    {/* <!-- param-start:[sourceUsername] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Username" type="string" required>
      This is your URL connection username. It is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[sourcePassword] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Password" type="string" required>
      Choose the secret definition that represents your credentials for this connector.

      If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.

      This is optional and will only be used if the data source requests it.
    </ResponseField>
  </Tab>

  <Tab title="Google Cloud Storage">
    <ResponseField name="Source URL" type="string" required>
      The URL that points to the source file that exists on Google Cloud Storage.

      Clicking this property will open the **Source URL** dialog. This displays a list of all existing buckets. Select a bucket, then a folder, and then a subfolder if required. This constructs a URL with the following format:

      ```
      GS://<bucket>/<folder-path>
      ```

      You can also type the URL directly into the **GCS Buckets path** field, instead of selecting listed elements. This is particularly useful when using variables in the URL, for example:

      ```
      GS://${jv_gcsAccount}/${jv_folderName}
      ```

      Special characters used in this field must be URL-safe.
    </ResponseField>
  </Tab>

  <Tab title="HTTP">
    <ResponseField name="Source URL" type="string" required>
      The URL, including full path and file name, that points to the source file. The source URL should follow the below logic where appropriate:

      ```
      http://[username[:password]@]hostname[:port][absolute-path]
      ```

      For example:

      ```
      http://user:password@www.example.com/products/list
      ```

      Wherever possible, use the Source Username and Source Password component properties for credentials instead of the URL.
    </ResponseField>

    {/* <!-- param-start:[sourceUsername2] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Username" type="string" required>
      This is your URL connection username. It is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[sourcePassword2] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Password" type="string" required>
      Choose the secret definition that represents your credentials for this connector.

      If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.

      This is optional and will only be used if the data source requests it.
    </ResponseField>
  </Tab>

  <Tab title="HTTPS">
    <ResponseField name="Perform Certificate Validation" type="drop-down" required>
      Check that the SSL certificate for the host is valid before taking data.
    </ResponseField>

    {/* <!-- param-start:[sourceUrl3] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source URL" type="string" required>
      The URL, including full path and file name, that points to the source file. The source URL should follow the below logic where appropriate:

      ```
      https://[username[:password]@]hostname[:port][absolute-path]
      ```

      For example:

      ```
      https://user:password@www.example.com/products/list
      ```

      Wherever possible, use the Source Username and Source Password component properties for credentials instead of the URL.
    </ResponseField>

    {/* <!-- param-start:[sourceUsername1] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Username" type="string" required>
      Your URL connection username. It is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[sourcePassword1] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Password" type="string" required>
      Choose the secret definition that represents your credentials for this connector.

      If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.

      This is optional and will only be used if the data source requests it.
    </ResponseField>
  </Tab>

  <Tab title="S3">
    <ResponseField name="Source URL" type="string" required>
      The URL, including full path and file name, that points to the source file.

      Clicking this property will open the **Source URL** dialog. This displays a list of all existing buckets. Select a bucket, then a folder, and then a subfolder if required. This constructs a URL with the following format:

      ```
      S3://<bucket>/<folder-path>
      ```

      When a user enters a forward slash character `/` after a folder name, a validation of the file path is triggered.
    </ResponseField>
  </Tab>

  <Tab title="Windows Fileshare">
    <ResponseField name="Source URL" type="string" required>
      The URL, including full path and file name, that points to the source file. This preferably follows the format:

      ```
      smb://[[authdomain;]user@]host[:port][/share[/dirpath][/name]][?context]
      ```

      Not all fields are required, depending on your exact setup. This component also accepts other methods such as HTTP and HTTPS.

      Examples:

      ```
      smb://mydomain;jdoe@fileserver01/documents/projects
      ```

      ```
      http://11.22.3.4/share5/mydata.txt
      ```
    </ResponseField>

    {/* <!-- param-start:[sourceDomain] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Domain" type="string" required>
      The domain that the source file is located on.
    </ResponseField>

    {/* <!-- param-start:[sourceUsername4] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Username" type="string" required>
      Your URL connection username. It is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[sourcePassword4] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Password" type="string" required>
      Choose the secret definition that represents your credentials for this connector.

      If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.

      This is optional and will only be used if the data source requests it.
    </ResponseField>
  </Tab>

  <Tab title="Microsoft SharePoint">
    <Warning>
      SOAP is not supported for Microsoft SharePoint in this component. Only REST authentication using Azure AD OAuth is supported. If you were previously using SOAP, you must switch to REST immediately, as Microsoft removed Basic authentication support on **May 1, 2026** and NTLM authentication support on **January 31, 2026** for SharePoint Online. For more information, see the [CData driver changelog](https://cdn.cdata.com/help/RSM/jdbc/pg_changelog.htm).
    </Warning>

    <Note>
      To transfer files from subsites, in the `Connection Options` property, enter `URL` as a parameter, with your site URL as the value. This must be the full URL, e.g. `https://companyname.sharepoint.com/sitename` (for classic/root sites) or `https://companyname.sharepoint.com/sites/sitename` (for modern site collections).
    </Note>

    <ResponseField name="Service Type" type="drop-down" required>
      The type of API that the component connects to. Only **REST** is supported for Microsoft SharePoint. SOAP is not supported.
    </ResponseField>

    {/* <!-- param-start:[authentication] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Authentication" type="drop-down" required>
      (REST only)

      Choose your OAuth connection from the drop-down menu.

      Click **Manage** to navigate to the **OAuth connections** list to review OAuth connections and to add new connections. Read [OAuth](/docs/guides/oauth) to learn how to create an OAuth connection.

      To set up a new OAuth:

      1. Click **Manage** under the drop-down menu.
      2. Click **Add OAuth connection** above the **OAuth connections** list.
      3. Provide a unique, descriptive OAuth name.
      4. Select your provider. In this case, **SharePoint**.
      5. Set the authentication type to **OAuth 2.0 Authorization Code Grant**. This uses Azure AD to authenticate.
      6. Provide your SharePoint URL. Refer to **URL** below for more information about the URL format you need to use.
      7. Click **Authorize**. A new browser tab will open to log in to `https://login.microsoftonline.com/`.
      8. Enter your username and click **Accept**.
      9. The browser tab will close and you will be returned to {maia}.
      10. Return to the **Authentication** parameter in your Data Transfer component and locate your new OAuth profile in the drop-down menu. If the profile has not propagated, click out of the dialog and then try again.
    </ResponseField>

    {/* <!-- param-start:[url] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="URL" type="string" required>
      (SOAP only—not supported for Microsoft SharePoint)

      Enter the web address you use to log in to your SharePoint account. For example, `https://companyname.sharepoint.com`.
    </ResponseField>

    {/* <!-- param-start:[user] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="User" type="string" required>
      (SOAP only—not supported for Microsoft SharePoint)

      Enter a valid SharePoint username to use for authentication.
    </ResponseField>

    {/* <!-- param-start:[password] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Password" type="drop-down" required>
      (SOAP only—not supported for Microsoft SharePoint)

      Choose the secret definition that represents your credentials for this connector.

      If you have not already saved your credentials for this connector as a secret definition, click **Add secret** to create a secret definition representing these credentials. Read [Secrets and secret definitions](/docs/guides/secrets-and-secret-definitions) for details about creating a secret definition.
    </ResponseField>

    {/* <!-- param-start:[sharepointEdition] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="SharePoint Edition" type="drop-down" required>
      Select your edition of Microsoft SharePoint. Options are **SharePoint Online** and **SharePoint On-Premise**.
    </ResponseField>

    {/* <!-- param-start:[connectionOptions] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Connection Options" type="column editor" required>
      * **Parameter:** A JDBC parameter supported by the database driver. The available parameters are explained in the data model. Manual setup isn't usually required, since sensible defaults are assumed.
      * **Value:** A value for the given parameter.

      <Note>
        To transfer files from subsites, in the `Connection Options` property, enter `URL` as a parameter, with your site URL as the value. This must be the full URL, e.g. `https://companyname.sharepoint.com/sitename` (for classic/root sites) or `https://companyname.sharepoint.com/sites/sitename` (for modern site collections).
      </Note>
    </ResponseField>

    {/* <!-- param-start:[fileType] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="File Type" type="drop-down" required>
      Select whether the file type is a **Document** or **Attachment**.
    </ResponseField>

    {/* <!-- param-start:[library] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Library" type="drop-down" required>
      The SharePoint library where the file is stored. The drop-down will be populated with libraries contained within your SharePoint instance.

      For more information, read [Introduction to libraries](https://support.microsoft.com/en-us/office/introduction-to-libraries-7d4221d9-8fb9-40d5-8441-2374c84b5e26?ui=en-us\&rs=en-us\&ad=us).
    </ResponseField>

    {/* <!-- param-start:[fileUrl] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="File URL" type="string" required>
      The URL that points to the file. The **full DNS** name and path for the file is required for a successful transfer, e.g. `https://companyname.sharepoint.com/sitename/path/to/file/file.ext` or `https://companyname.sharepoint.com/sites/sitename/path/to/file/file.ext`.
    </ResponseField>
  </Tab>

  <Tab title="SFTP">
    <ResponseField name="Set Home Directory as Root" type="boolean" required>
      * **Yes:** URLs are relative to the user's home directory.
      * **No:** URLs are relative to the server root.
    </ResponseField>

    {/* <!-- param-start:[sourceUrl6] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source URL" type="string" required>
      The URL, including full path and file name, that points to the source file. This source URL should follow the below logic where appropriate:

      ```
      sftp://[username[:password]@]hostname[:port][path]
      ```

      Example:

      ```
      sftp://johndoe@example.com/home/johndoe/documents/report.txt
      ```

      Wherever possible, use the Source Username and Source Password component properties for credentials instead of the URL. If you require FTP instead of SFTP, use the FTP option in the Source Type property.
    </ResponseField>

    {/* <!-- param-start:[sourceUsername3] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Username" type="string" required>
      Your URL connection username. It is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[sourcePassword3] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source Password" type="string" required>
      The corresponding password. It is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[sourceSftpKey] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source SFTP Key" type="string" required>
      Your SFTP private key. It is optional and will only be used if the data source requests it.

      This must be the complete private key, beginning with "-----BEGIN RSA PRIVATE KEY-----" and conforming to the same structure as an RSA private key.

      The following private key formats are currently supported:

      * DSA
      * RSA
      * ECDSA
      * Ed25519

      In a [Hybrid SaaS](/docs/guides/runner-overview#matillion-fully-managed-vs-hybrid-cloud) configuration, you need to manually convert the private key into a format that allows it to be stored in your AWS Secrets Manager. You can do this with the following command:

      ```bash theme={null}
      ssh-keygen -p -f YOUR_PRIVATE_KEY -m pem
      ```
    </ResponseField>

    {/* <!-- param-start:[sourceSftpConfig] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source SFTP Config" type="text editor" required>
      Specify custom SFTP configurations using key/value pairs. Enter each key/value pair on a new line in the text editor. These configurations override standard SFTP behavior, enabling greater compatibility with different server security policies. These configurations only apply to this instance of the Data Transfer component only. If you have multiple instances of the component in your pipeline, you must configure each one accordingly.

      For example, use the `kex` key to define values that represent the key exchange algorithms to use. For a list of all available keys, read the list of properties [here](https://github.com/mwiede/jsch).

      To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.
    </ResponseField>
  </Tab>

  <Tab title="Microsoft Exchange">
    <ResponseField name="Authentication" type="drop-down" required>
      Choose your OAuth connection from the drop-down menu.

      Click **Manage** to navigate to the **OAuth connections** list to review OAuth connections and to add new connections. Read [OAuth](/docs/guides/oauth) to learn how to create an OAuth connection.
    </ResponseField>

    {/* <!-- param-start:[attachmentSource] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Attachment source" type="drop-down" required>
      Select the type of Exchange item to retrieve attachments from.

      * **Message**: Retrieves attachments from an email message.
      * **Event**: Retrieves attachments from a calendar event.
    </ResponseField>

    {/* <!-- param-start:[sourceId] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Source ID" type="string" required>
      Enter the ID of the selected Exchange item. This must be a valid message ID or event ID, depending on the selected `Attachment source`.
    </ResponseField>

    {/* <!-- param-start:[attachmentId] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Attachment ID" type="string" required>
      Enter the ID of the attachment to retrieve from the specified message or event.
    </ResponseField>
  </Tab>
</Tabs>

## Target properties

<Tabs>
  <Tab title="Azure Blob Storage">
    <Note>
      The following permissions are required to connect to Azure Blob Storage:

      * `Storage Account Contributor` at storage account level
      * `Storage Blob Data Contributor` at storage account or container level
    </Note>

    <ResponseField name="Target Object Name" type="string" required>
      The filename of the new file.
    </ResponseField>

    {/* <!-- param-start:[blobLocation] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Blob Location" type="string" required>
      The URL that points to the target file location on Azure Blob Storage.

      Clicking this property will open the **Blob Location** dialog. This displays a list of all existing storage accounts. Select a storage account, then a container, and then a subfolder if required. This constructs a URL with the following format:

      ```
      AZURE://<account>/<container>/<path>
      ```

      You can also type the URL directly into the **Storage Accounts path** field, instead of selecting listed elements. This is particularly useful when using variables in the URL, for example:

      ```
      AZURE://${jv_blobStorageAccount}/${jv_containerName}
      ```

      Special characters used in this field must be URL-safe.
    </ResponseField>
  </Tab>

  <Tab title="Google Cloud Storage">
    <ResponseField name="Target Object Name" type="string" required>
      The filename of the new file.
    </ResponseField>

    {/* <!-- param-start:[targetUrl2] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target URL" type="string" required>
      The URL that points to the target file location on Google Cloud Storage.

      Clicking this property will open the **Target URL** dialog. This displays a list of all existing buckets. Select a bucket, then a folder, and then a subfolder if required. This constructs a URL with the following format:

      ```
      GS://<bucket>/<folder-path>
      ```

      You can also type the URL directly into the **GCS Buckets path** field, instead of selecting listed elements. This is particularly useful when using variables in the URL, for example:

      ```
      GS://${jv_gcsAccount}/${jv_folderName}
      ```

      Special characters used in this field must be URL-safe.
    </ResponseField>
  </Tab>

  <Tab title="S3">
    <ResponseField name="Target Object Name" type="string" required>
      The filename of the new file.
    </ResponseField>

    {/* <!-- param-start:[targetUrl] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target URL" type="string" required>
      The URL (without file name) that points to where the new file will be created.

      Clicking this property will open the **Target URL** dialog. This displays a list of all existing buckets. Select a bucket, then a folder, and then a subfolder if required. This constructs a URL with the following format:

      ```
      S3://<bucket>/<folder-path>
      ```
    </ResponseField>

    {/* <!-- param-start:[accessControlListOptions] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Access Control List Options" type="drop-down" required>
      Choose from ACL settings that Amazon provide. Leaving it empty doesn't change the current settings. A full list can be found [here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl).
    </ResponseField>

    {/* <!-- param-start:[encryption] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Encryption" type="drop-down" required>
      Decide how the files are encrypted inside the S3 bucket. This property is available when using an existing Amazon S3 location for staging.

      * **None:** No encryption.
      * **SSE KMS:** Encrypt the data according to a key stored on KMS. Read [AWS Key Management Service \[AWS KMS\]](https://aws.amazon.com/kms/) to learn more.
      * **SSE S3:** Encrypt the data according to a key stored on an S3 bucket. Read [Using server-side encryption with Amazon S3-managed encryption keys \[SSE-S3\]](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) to learn more.
    </ResponseField>

    {/* <!-- param-start:[kmsKeyId] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="KMS Key ID" type="drop-down" required>
      The ID of the KMS encryption key you have chosen to use in the **Encryption** property.
    </ResponseField>
  </Tab>

  <Tab title="Windows Fileshare">
    <ResponseField name="Target Object Name" type="string" required>
      The filename of the new file.
    </ResponseField>

    {/* <!-- param-start:[targetUrl1] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target URL" type="string" required>
      The URL (without file name) that points to where the new file will be created. This should follow the below logic where appropriate:

      ```
      smb://[[authdomain;]user@]host[:port][/share[/dirpath]][?context]
      ```

      Other expected methods are also available. Examples:

      ```
      smb://mydomain;jdoe@fileserver01/documents/projectfiles/
      ```

      ```
      http://11.22.3.4/share5/
      ```

      If the folders in your target path don't exist, the Data Transfer component creates them automatically.
    </ResponseField>

    {/* <!-- param-start:[targetDomain] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target Domain" type="string" required>
      The domain that the newly created file is to be located on.
    </ResponseField>

    {/* <!-- param-start:[targetUsername1] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target Username" type="string" required>
      Your connection username. Required when authenticating using the separate credential fields, rather than embedding credentials in the Target URL.
    </ResponseField>

    {/* <!-- param-start:[targetPassword1] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target Password" type="string" required>
      The corresponding password. It is optional and will only be used if the target system requests it.
    </ResponseField>
  </Tab>

  <Tab title="SFTP">
    <ResponseField name="Set Home Directory as Root" type="boolean" required>
      * **Yes:** URLs are relative to the user's home directory.
      * **No:** URLs are relative to the server root.
    </ResponseField>

    {/* <!-- param-start:[targetUrl3] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target URL" type="string" required>
      The URL (without file name) that points to where the new file will be created. This should follow the below logic where appropriate:

      ```
      sftp://[username[:password]@]hostname[:port][path]
      ```

      Example:

      ```
      sftp://johndoe@example.com/home/johndoe/documents/
      ```

      Wherever possible, use the Target Username and Target Password component properties for credentials instead of the URL.
    </ResponseField>

    {/* <!-- param-start:[targetUsername] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target Username" type="string" required>
      Your SFTP connection username. This is optional and will only be used if the data source requests it.
    </ResponseField>

    {/* <!-- param-start:[targetPassword] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target Password" type="string" required>
      Your SFTP password. This is optional and will only be used if the target system requests it.

      Select the [secret definition](/docs/guides/secrets-and-secret-definitions) storing the password for your SFTP username. The password should be saved as a secret definition before using this component.
    </ResponseField>

    {/* <!-- param-start:[targetSftpKey] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target SFTP Key" type="string" required>
      Your SFTP private key. This is optional and will only be used if the target system requests it.

      Select the [secret definition](/docs/guides/secrets-and-secret-definitions) storing the private key for your SFTP account. The password should be saved as a secret definition before using this component.

      This must be the complete private key, beginning with "-----BEGIN RSA PRIVATE KEY-----" and conforming to the same structure as an RSA private key.

      The following private key formats are currently supported:

      * DSA
      * RSA
      * ECDSA
      * Ed25519

      In a [Hybrid SaaS](/docs/guides/runner-overview#matillion-fully-managed-vs-hybrid-cloud) configuration, you need to manually convert the private key into a format that allows it to be stored in your AWS Secrets Manager. You can do this with the following command:

      ```bash theme={null}
      ssh-keygen -p -f YOUR_PRIVATE_KEY -m pem
      ```
    </ResponseField>

    {/* <!-- param-start:[targetSftpConfig] | warehouses: [snowflake, databricks, redshift, bigquery] --> */}

    <ResponseField name="Target SFTP Config" type="text editor" required>
      Specify custom SFTP configurations using key/value pairs. Enter each key/value pair on a new line in the text editor. These configurations override standard SFTP behavior, enabling greater compatibility with different server security policies. These configurations only apply to this instance of the Data Transfer component only. If you have multiple instances of the component in your pipeline, you must configure each one accordingly.

      For example, use the `kex` key to define values that represent the key exchange algorithms to use. For a list of all available keys, read the list of properties [here](https://github.com/mwiede/jsch).

      To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.
    </ResponseField>
  </Tab>
</Tabs>
