Skip to main content

FTPS

FTPS (FTP over TLS/SSL) datasources allow CloudQuant Data Liberator to read CSV, TSV, and other delimited files from FTP servers secured with TLS encryption. This is commonly used with legacy financial data feeds and vendor systems that require explicit FTPS connections.

Connection Configuration

Required Fields

FieldTypeDescription
connection_typestringMust be "ftps"
hoststringFTP server hostname or IP address
userstringUsername for authentication

Optional Fields

FieldTypeDefaultDescription
portint21FTP control port number
passwordstringPassword for authentication
keystringClient certificate private key (PEM format) for certificate-based authentication
no_verifyboolfalseSkip TLS certificate verification
prefixstring""Remote directory path to use as root
mount_pointstringLocal mount path for FUSE-based access
config_namestringInternal configuration identifier
Setting no_verify to true disables TLS certificate validation. This should only be used for testing or when connecting to servers with self-signed certificates on trusted internal networks. Never use this in production with external servers.
You must provide either password or key for authentication. Password authentication is most common for FTPS. Client certificate authentication (key) is used when the server requires mutual TLS.

Example Connection

{
  "name": "ftps-vendor-feed",
  "connection_type": "ftps",
  "host": "ftp.securefeed.example.com",
  "port": 21,
  "user": "datafeed",
  "password": "v3nd0rP@ss",
  "prefix": "/outgoing/daily/"
}

Example Connection (Self-Signed Certificate)

{
  "name": "ftps-internal-data",
  "connection_type": "ftps",
  "host": "ftp.internal.corp.net",
  "port": 990,
  "user": "etl-service",
  "password": "internalPass123",
  "no_verify": true,
  "prefix": "/data/exports/"
}

Dataset Configuration (data_args)

The data_args fields are identical to all file-based sources. See Local File for the full reference. The file_pattern is evaluated relative to the prefix configured on the connection.

Required data_args

FieldTypeDescription
file_patternstringGlob pattern relative to the prefix, e.g., "*.csv"
data_dt_columnstring or listColumn(s) containing the datetime value
data_dt_formatstring or liststrptime format or special values ("muts", "uts", "datetime")
data_key_columnstring or listSymbol/key column(s)

Optional data_args

FieldTypeDefaultDescription
sep_overridestring","Delimiter character
encodingstring"utf-8"File encoding
data_dt_timezonestring"UTC"Source data timezone
fname_dt_regexstringRegex to extract date from filename
fname_dt_formatstringstrptime format for filename date
fname_dt_timezonestringTimezone of filename date
fname_dt_nudgeint0Microsecond offset for filename date
fname_dt_approx_secondsintApproximate seconds per file
arrow_sortlist["symbol", "muts"]Sort order
arrow_timestampbooltrueGenerate human-readable timestamp column

Complete Example

Connection

{
  "name": "ftps-reference-data",
  "connection_type": "ftps",
  "host": "ftps.refdata.example.com",
  "port": 21,
  "user": "cq-download",
  "password": "refDataP@ss",
  "prefix": "/reference/securities/"
}

Dataset

{
  "name": "security-master",
  "connection": "ftps-reference-data",
  "data_args": {
    "file_pattern": "secmaster_*.csv",
    "sep_override": "|",
    "encoding": "utf-8",
    "data_dt_column": "effective_date",
    "data_dt_format": "%Y-%m-%d",
    "data_dt_timezone": "America/New_York",
    "data_key_column": "cusip",
    "fname_dt_regex": "secmaster_(\\d{8})\\.csv",
    "fname_dt_format": "%Y%m%d",
    "fname_dt_timezone": "America/New_York",
    "fname_dt_approx_seconds": 86400,
    "arrow_sort": ["symbol", "muts"],
    "arrow_timestamp": true
  },
  "schema": [
    { "name": "cusip", "type": "string", "group": "key", "description": "CUSIP identifier" },
    { "name": "effective_date", "type": "string", "group": "time", "description": "Effective date" },
    { "name": "ticker", "type": "string", "group": "value", "description": "Ticker symbol" },
    { "name": "company_name", "type": "string", "group": "value", "description": "Company name" },
    { "name": "exchange", "type": "string", "group": "value", "description": "Primary exchange" },
    { "name": "sector", "type": "string", "group": "value", "description": "GICS sector" },
    { "name": "shares_outstanding", "type": "int64", "group": "value", "description": "Shares outstanding" }
  ]
}

FTPS vs SFTP

FeatureFTPSSFTP
ProtocolFTP + TLSSSH subsystem
Default port21 (explicit) or 990 (implicit)22
Firewall friendlinessRequires data port rangeSingle port
Common useLegacy financial feedsModern systems
CertificateTLS/SSL certificatesSSH host keys
If your data vendor supports both FTPS and SFTP, prefer SFTP. It uses a single port, simplifies firewall configuration, and is generally easier to manage.

Network Requirements

RequirementDetail
Outbound portTCP port 21 (control) + passive data port range to the FTP server
Passive modeFTP passive mode is required; ensure the passive port range is open
DNS resolutionThe hostname must resolve from the CloudQuant Data Liberator host
TLS supportServer must support explicit TLS (AUTH TLS) on port 21, or implicit TLS on port 990