We're software that helps growing brands & retailers grow and scale. Sync, sell and ship your products and inventory on online marketplaces and storefronts faster, easier and more accurately.

Learn more now

Connection Types: FTP, SFTP, HTTP, Email & S3

This is a complete reference for all fields available in the connection configuration object. Fields are organized by connection type, starting with fields common to all types.

Connection Types

The type field determines which connection protocol is used. Valid values:

Type Protocol Description
ftp FTP Standard file transfer
sftp SFTP SSH file transfer
ftps FTPS FTP over explicit SSL
sdsftp SureDone SFTP Internal SureDone SFTP
sds3 SureDone S3 Internal SureDone S3 storage
http HTTP/HTTPS REST APIs and web services
email IMAP/SMTP Email import and export

Common Fields

These fields are shared across multiple connection types.

Field Type Required Default Description Applicable Types
type string Yes -- Connection protocol (see table above) All
address string or array Conditional -- Host address, URL, or email address(es). Email type also accepts an array for multiple recipients. ftp, sftp, http, email
username string Conditional -- Login username. For HTTP, sent in POST body to login_address. ftp, sftp, http
password string Conditional -- Login password. For SFTP with key file auth, this is the key file contents. For HTTP, sent in POST body to login_address. ftp, sftp, http
path string Conditional -- Remote directory path for file download/upload ftp, sftp, sdsftp, sds3
port number No 21 (ftp/sftp), 993 (email) Connection port ftp, sftp, email

FTP / FTPS Fields

Field Type Required Default Description
address string Yes -- FTP server hostname or IP
username string Yes -- FTP login username
password string Yes -- FTP login password
path string Yes -- Remote directory path
port number No 21 FTP port
ssl_ftp boolean No false Open an explicit SSL-FTP connection
use_pasv_address boolean No true Use the address returned by the FTP server for passive mode

"connection": {
  "type": "ftp",
  "address": "ftp.supplier.com",
  "username": "{{ftp_user}}",
  "password": "{{ftp_pass}}",
  "path": "/outbound/inventory/",
  "ssl_ftp": true,
  "use_pasv_address": false
}

SFTP Fields

Field Type Required Default Description
address string Yes -- SFTP server hostname or IP
username string Yes -- SFTP login username
password string Yes -- SFTP login password, or key file contents if is_key_file is true
path string Yes -- Remote directory path
port number No 21 SFTP port
is_key_file boolean No false Set to true when password contains the contents of an SSH key file instead of a password
check_after_send boolean No false Verify file was uploaded to the correct directory after sending. Fixes edge case where files may end up in the root directory.

"connection": {
  "type": "sftp",
  "address": "sftp.warehouse.com",
  "username": "{{sftp_user}}",
  "password": "{{sftp_key}}",
  "path": "/data/exports/",
  "is_key_file": true
}

SDSFTP Fields

SureDone's internal SFTP, used for accessing files within a SureDone user's file space.

Field Type Required Default Description
path string Yes -- Path within the user's file space
user_id number Yes -- SureDone User ID for the connection

"connection": {
  "type": "sdsftp",
  "path": "/imports/",
  "user_id": 1021
}

S3 (sds3) Fields

SureDone's internal S3 storage.

Field Type Required Default Description
path string Yes -- S3 object key path
bucket string Yes -- S3 bucket name

"connection": {
  "type": "sds3",
  "path": "/vendor-feeds/",
  "bucket": "suredone-imports"
}

HTTP Fields

Core HTTP Fields

Field Type Required Default Description
address string Yes -- URL to connect to. Supports template variables like {{trigger_value}}.
method string Conditional POST HTTP method: GET, POST, PUT, PATCH, DELETE
headers object Conditional -- HTTP request headers as key-value pairs
payload object Conditional -- Request parameters. Sent as query params for GET, body for POST.
ssl_http boolean No true Verify SSL peer certificate. Set to false for self-signed certs.

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/v2/inventory",
  "method": "GET",
  "headers": {
    "Authorization": "Bearer {{api_token}}",
    "Accept": "application/json"
  },
  "payload": {
    "page_size": 500
  }
}

Authentication Fields

Field Type Required Default Description
username string No -- Username sent to login_address in POST body
password string No -- Password sent to login_address in POST body
login_address string No -- URL for initial login request. Response authorizes subsequent calls to address.
login_credentials object No -- Custom POST body for login, replacing the default username/password fields

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/export",
  "username": "{{api_user}}",
  "password": "{{api_pass}}",
  "login_address": "https://api.vendor.com/auth/login",
  "method": "POST"
}

OAuth Sub-Object

Optional OAuth configuration for token-based authorization.

Field Type Required Default Description
oauth.method string No POST HTTP method for token requests
oauth.address string No -- Token endpoint URL
oauth.grant_type string No -- OAuth grant type
oauth.client_id string No -- OAuth client ID
oauth.client_secret string No -- OAuth client secret
oauth.redirect boolean No -- Indicates automation is OAuth-authorizable (redirect flow)
oauth.redirect_uri string No -- Redirect URL after authorization
oauth.initiate_oauth_uri string No -- Vendor's OAuth sign-in URL
oauth.exchange_code object No -- Configuration for exchanging auth code for access token
oauth.access_token string No -- Access token (auto-populated in redirect flows)
oauth.expires_in number No -- Token expiration in seconds (auto-populated in redirect flows)

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/data",
  "method": "GET",
  "oauth": {
    "address": "https://api.vendor.com/oauth/token",
    "grant_type": "client_credentials",
    "client_id": "{{client_id}}",
    "client_secret": "{{client_secret}}"
  }
}

Auth Sub-Object

Optional custom authentication flow (non-OAuth).

Field Type Required Default Description
auth.method string No POST HTTP method for auth request
auth.address string Yes -- Auth endpoint URL
auth.token_key string Yes -- Key name (or JSONPath) in the auth response to extract the token from. The extracted value is available as {{auth_value}} in subsequent requests.
auth.headers object No -- Headers for the auth request
auth.payload object No -- Payload for the auth request

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/data",
  "auth": {
    "address": "https://api.vendor.com/authenticate",
    "method": "POST",
    "payload": {
      "apiKey": "{{api_key}}"
    }
  }
}

HMAC Sub-Object

Generate an HMAC signature for use in requests via the {{HMAC}} template variable.

Field Type Required Default Description
hmac.algo string Yes -- Hashing algorithm name (e.g., sha256)
hmac.data string Yes -- Message to be hashed
hmac.key string Yes -- Shared secret key
hmac.binary boolean No false true = raw binary output, false = lowercase hex

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/data",
  "headers": {
    "X-Signature": "{{HMAC}}"
  },
  "hmac": {
    "algo": "sha256",
    "data": "{{request_body}}",
    "key": "{{secret_key}}",
    "binary": false
  }
}

Pagination Fields

Field Type Required Default Description
paginate boolean No false Enable downloading all response pages
pagination.next_token string No "next" Response key containing next page URL. Supports JSONPath for nested keys.
pagination.next_parameter string No -- Use when next_token returns a GET parameter value instead of a full URL
pagination.page_parameter string No "page" GET parameter name for page number (when no next token is available)
pagination.page_start number No 1 Starting page number
pagination.page_iterator number No 1 Amount to increment page number per request
pagination.ignore_errors boolean No false Gracefully end pagination on 400/500 errors instead of failing
pagination.page_per_second number No -- Rate limit: max paginated requests per second

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/products",
  "method": "GET",
  "paginate": true,
  "pagination": {
    "next_token": "$.metadata.nextCursor",
    "page_per_second": 2
  }
}

Pointer Fields

Track a value across automation runs for incremental data fetching.

Field Type Required Default Description
pointer.field string Yes -- Field to extract the pointer value from in responses
pointer.current number No 1 Starting value for the pointer
pointer.increment number No 50 Value to increment the pointer by each run
pointer.start_parameter string No -- GET parameter name for start value (alternative to {{POINTER_START}})
pointer.end_parameter string No -- GET parameter name for end value (alternative to {{POINTER_END}})
pointer.reset_current boolean No false Reset pointer to current value. Does not persist -- must be sent each time.

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/products",
  "method": "GET",
  "pointer": {
    "field": "lastId",
    "current": 0,
    "increment": 100,
    "start_parameter": "offset",
    "end_parameter": "limit"
  }
}

Trigger Fields

Make prerequisite requests to obtain values needed for the main request. Triggers execute in array order, and each trigger's result is available as {{trigger_value}} in subsequent triggers and the main connection.

Field Type Required Default Description
triggers array No -- Array of trigger configuration objects
triggers[].key string Yes -- Response key to extract the trigger value from. Use key1, key2 for multiple keys.
triggers[].key_regex string No -- Same as key, but supports regex syntax
triggers[].address string Yes -- URL for the trigger request
triggers[].method string No POST HTTP method for the trigger request
triggers[].headers object No -- Headers for the trigger request
triggers[].payload object No -- Payload for the trigger request
triggers[].max_retries number No 3 Number of retry attempts
triggers[].retry_time number No 3600 Seconds between retries (increases exponentially)
triggers[].retry_time_fixed boolean No false Disable exponential backoff for retries
triggers[].allow_empty_values boolean No true Allow empty/null as a valid trigger value
triggers[].template string No -- Twig template for the trigger request payload. Allows dynamic payload construction.

"connection": {
  "type": "http",
  "address": "{{trigger_value}}",
  "method": "GET",
  "triggers": [
    {
      "key": "export_file",
      "address": "https://api.example.com/v1/bulk/exports",
      "method": "POST",
      "payload": {"type": "items"}
    },
    {
      "key": "url",
      "address": "https://api.example.com/v1/bulk/exports/{{trigger_value}}",
      "method": "GET"
    }
  ]
}

Throttle Sub-Object

Rate-limit outbound requests.

Field Type Required Default Description
throttle.request_limit number Yes -- Maximum number of requests allowed
throttle.time_period number No 1 Time window in seconds
throttle.endpoint string No -- Endpoint path appended to host for the throttle key

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/products",
  "throttle": {
    "request_limit": 10,
    "time_period": 60
  }
}

Caching Fields

Field Type Required Default Description
cached boolean No false Enable caching of HTTP responses for a given endpoint
cache_ttl number No 86400 (1 day) Seconds before cached results expire
cache_force boolean No false Force caching on, overriding debug mode and CLI flags

"connection": {
  "type": "http",
  "address": "https://api.vendor.com/categories",
  "cached": true,
  "cache_ttl": 3600,
  "cache_force": true
}

Email Fields

Core Email Fields

Field Type Required Default Description
address string or array Yes -- Recipient email address(es). String for single, array for multiple.
subject string No -- Email subject line. Supports {{field}} template variables.
body string No -- Email body text. Supports {{field}} template variables.
port number No 993 IMAP/SMTP port
sender_address string No -- Custom sender email address
sender_name string No -- Custom sender display name
send_as_attachment boolean No false Send exported data as a file attachment
cc string or array No -- CC recipient(s)
bcc string or array No -- BCC recipient(s)
reply-to string No -- Reply-To header address

"connection": {
  "type": "email",
  "address": ["orders@supplier.com", "backup@supplier.com"],
  "subject": "New Order: {{oid}}",
  "body": "Order {{oid}} has been placed. Status: {{status}}.",
  "send_as_attachment": true,
  "cc": "manager@example.com"
}

Email Import Fields

Field Type Required Default Description
mailbox string No "INBOX" Mail folder to check for importing files
mark_as_seen boolean No false Mark email as read after successful file import
email_search object No -- Search criteria for filtering emails to import from (see below)

email_search Criteria

All fields within email_search are optional. Combine multiple criteria to narrow results.

Field Type Description
all boolean Return all messages matching the other criteria
answered boolean Match messages with the ANSWERED flag
bcc string Match messages with string in Bcc field
before string Match messages dated before this date
body string Match messages containing string in body
cc string Match messages with string in Cc field
deleted boolean Match deleted messages
flagged boolean Match flagged/important messages
from string Match messages with string in From field
keyword string Match messages with this keyword
new boolean Match new messages
old boolean Match old messages
on string Match messages dated on this exact date
recent boolean Match messages with the RECENT flag
seen boolean Match messages that have been read
since string Match messages dated after this date
subject string Match messages with string in Subject
text string Match messages containing text string
to string Match messages with string in To field
unanswered boolean Match unanswered messages
undeleted boolean Match non-deleted messages
unflagged boolean Match unflagged messages
unkeyword string Match messages without this keyword
unseen boolean Match unread messages

"connection": {
  "type": "email",
  "address": "imports@example.com",
  "mailbox": "INBOX",
  "mark_as_seen": true,
  "email_search": {
    "unseen": true,
    "since": "-10 days",
    "subject": "Inventory Update",
    "from": "supplier@vendor.com"
  }
}

Field Applicability Matrix

Field FTP SFTP FTPS SDSFTP S3 HTTP Email
type x x x x x x x
address x x x x x
username x x x x
password x x x x
path x x x x x
port x x x x
ssl_ftp x x
use_pasv_address x
is_key_file x
check_after_send x
user_id x
bucket x
method x
headers x
payload x
ssl_http x
login_address x
login_credentials x
oauth x
auth x
hmac x
paginate x
pagination x
pointer x
triggers x
throttle x
cached x
cache_ttl x
cache_force x
subject x
body x
sender_address x
sender_name x
send_as_attachment x
mailbox x
email_search x
cc x
bcc x
reply-to x
mark_as_seen x