FTP Connection

General Information

Connection Type

ftp

UI Documentation

📖 For detailed information: [UI Documentation Link - Link will be added here]

Description

FTP connection for file transfer operations. Supports FTP, SFTP, and FTPS protocols. Used by policies and other components that need to download files from FTP servers.

Endpoints

List Connections

GET /apiops/projects/{projectName}/connections/?type=ftp

Get Connection

GET /apiops/projects/{projectName}/connections/{connectionName}/

Create Connection

POST /apiops/projects/{projectName}/connections/{connectionName}/

Update Connection

PUT /apiops/projects/{projectName}/connections/{connectionName}/

Delete Connection

DELETE /apiops/projects/{projectName}/connections/{connectionName}/

List Connections

Endpoint

GET /apiops/projects/{projectName}/connections/?type=ftp

Request

Headers

Header Value
Authorization Bearer {token}

Path Parameters

Parameter Type Required Description
projectName string Yes Project name

Note: The type query parameter is required to filter connections by type.

cURL Example

curl -X GET \
  "https://demo.apinizer.com/apiops/projects/MyProject/connections/" \
  -H "Authorization: Bearer YOUR_TOKEN"

Get Connection

Endpoint

GET /apiops/projects/{projectName}/connections/{connectionName}/

Request

Headers

Header Value
Authorization Bearer {token}

Path Parameters

Parameter Type Required Description
projectName string Yes Project name
connectionName string Yes Connection name

Response

Success Response (200 OK)

{
  "success": true,
  "resultList": [
    {
      "type": "ftp",
      "name": "my-ftp-connection",
      "description": "FTP connection for file transfer",
      "deployToWorker": true,
      "enabled": true,
      "host": "ftp.example.com",
      "port": 21,
      "username": "ftpuser",
      "password": null,
      "workingDir": "/uploads",
      "protocol": "FTP",
      "timeout": 30000,
      "retryCount": 3,
      "useImplicit": false,
      "useExplicit": false,
      "sslProtocol": null
    }
  ],
  "resultCount": 1
}

Note: Password is masked in get operations.

cURL Example

curl -X GET \
  "https://demo.apinizer.com/apiops/projects/MyProject/connections/my-ftp-connection/" \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Connection

Endpoint

POST /apiops/projects/{projectName}/connections/{connectionName}/

Request

Headers

Header Value
Authorization Bearer {token}
Content-Type application/json

Path Parameters

Parameter Type Required Description
projectName string Yes Project name
connectionName string Yes Connection name

Request Body

Full JSON Body Example - FTP
{
  "type": "ftp",
  "name": "my-ftp-connection",
  "description": "FTP connection for file transfer",
  "deployToWorker": true,
  "enabled": true,
  "host": "ftp.example.com",
  "port": 21,
  "username": "ftpuser",
  "password": "ftppassword",
  "workingDir": "/uploads",
  "protocol": "FTP",
  "timeout": 30000,
  "retryCount": 3,
  "useImplicit": false,
  "useExplicit": false,
  "sslProtocol": null
}
Full JSON Body Example - SFTP
{
  "type": "ftp",
  "name": "my-sftp-connection",
  "description": "SFTP connection for secure file transfer",
  "deployToWorker": true,
  "enabled": true,
  "host": "sftp.example.com",
  "port": 22,
  "username": "sftpuser",
  "password": "sftppassword",
  "workingDir": "/uploads",
  "protocol": "SFTP",
  "timeout": 30000,
  "retryCount": 3,
  "useImplicit": false,
  "useExplicit": false,
  "sslProtocol": null
}
Full JSON Body Example - FTPS (Implicit)
{
  "type": "ftp",
  "name": "my-ftps-implicit-connection",
  "description": "FTPS connection with implicit SSL",
  "deployToWorker": true,
  "enabled": true,
  "host": "ftps.example.com",
  "port": 990,
  "username": "ftpsuser",
  "password": "ftpspassword",
  "workingDir": "/uploads",
  "protocol": "FTPS",
  "timeout": 30000,
  "retryCount": 3,
  "useImplicit": true,
  "useExplicit": false,
  "sslProtocol": "TLS"
}
Full JSON Body Example - FTPS (Explicit)
{
  "type": "ftp",
  "name": "my-ftps-explicit-connection",
  "description": "FTPS connection with explicit SSL",
  "deployToWorker": true,
  "enabled": true,
  "host": "ftps.example.com",
  "port": 21,
  "username": "ftpsuser",
  "password": "ftpspassword",
  "workingDir": "/uploads",
  "protocol": "FTPS",
  "timeout": 30000,
  "retryCount": 3,
  "useImplicit": false,
  "useExplicit": true,
  "sslProtocol": "TLS"
}
Request Body Fields
Common Fields
Field Type Required Default Description
type string Yes - Connection type discriminator field. Identifies the connection type in API requests/responses.
name string Yes - Connection name (must match path parameter)
description string No - Connection description
deployToWorker boolean No true Whether to deploy to worker
enabled boolean No true Whether connection is enabled
FTP-Specific Fields
Field Type Required Default Description
host string Yes - FTP server hostname or IP address
port integer No 21 FTP server port (21 for FTP/FTPS, 22 for SFTP, 990 for FTPS implicit)
username string Yes - FTP username
password string Yes - FTP password (secret field)
workingDir string No / Working directory path
protocol string Yes - FTP protocol type. See EnumFtpProtocol
timeout integer No 30000 Connection timeout in milliseconds
retryCount integer No 3 Number of retry attempts on failure
useImplicit boolean No false Use implicit SSL/TLS (for FTPS only)
useExplicit boolean No false Use explicit SSL/TLS (for FTPS only)
sslProtocol string No null SSL protocol version (e.g., “TLS”, “SSL”, “TLSv1.2”)

EnumFtpProtocol

  • FTP - Standard FTP protocol (port 21)
  • SFTP - SSH File Transfer Protocol (port 22)
  • FTPS - FTP over SSL/TLS (port 21 for explicit, 990 for implicit)

Note

  • host, username, and password are required.
  • protocol is required.
  • For FTPS, either useImplicit: true or useExplicit: true must be set.
  • useImplicit and useExplicit are mutually exclusive.
  • Default ports: 21 (FTP/FTPS explicit), 22 (SFTP), 990 (FTPS implicit).

Response

Success Response (200 OK)

{
  "success": true,
  "deploymentResult": {
    "success": true,
    "deploymentResults": [
      {
        "environmentName": "production",
        "success": true,
        "message": "Deployment successful"
      }
    ]
  }
}

cURL Example

curl -X POST \
  "https://demo.apinizer.com/apiops/projects/MyProject/connections/my-ftp-connection/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "ftp",
    "name": "my-ftp-connection",
    "description": "FTP connection for file transfer",
    "deployToWorker": true,
    "enabled": true,
    "host": "ftp.example.com",
    "port": 21,
    "username": "ftpuser",
    "password": "ftppassword",
    "workingDir": "/uploads",
    "protocol": "FTP",
    "timeout": 30000,
    "retryCount": 3
  }'

Update Connection

Endpoint

PUT /apiops/projects/{projectName}/connections/{connectionName}/

Request

Headers

Header Value
Authorization Bearer {token}
Content-Type application/json

Path Parameters

Parameter Type Required Description
projectName string Yes Project name
connectionName string Yes Connection name (must match name in body)

Request Body

Full JSON Body Example
{
  "type": "ftp",
  "name": "my-ftp-connection",
  "description": "Updated FTP connection for file transfer",
  "deployToWorker": true,
  "enabled": true,
  "host": "ftp.newserver.com",
  "port": 21,
  "username": "newftp",
  "password": "newpassword123",
  "workingDir": "/new-uploads",
  "protocol": "FTPS",
  "timeout": 60000,
  "retryCount": 5,
  "useImplicit": false,
  "useExplicit": true,
  "sslProtocol": "TLSv1.2"
}

Note: Request body structure is the same as Create Connection. All fields should be provided for update.

Response

Success Response (200 OK)

{
  "success": true,
  "deploymentResult": {
    "success": true,
    "deploymentResults": [...]
  }
}

Delete Connection

Endpoint

DELETE /apiops/projects/{projectName}/connections/{connectionName}/

Request

Headers

Header Value
Authorization Bearer {token}

Path Parameters

Parameter Type Required Description
projectName string Yes Project name
connectionName string Yes Connection name

Response

Success Response (200 OK)

{
  "success": true,
  "deploymentResult": {
    "success": true,
    "deploymentResults": [...]
  }
}

Notes and Warnings

  • FTP Protocols:
    • FTP - Standard FTP (not encrypted, not recommended for production)
    • SFTP - SSH File Transfer Protocol (encrypted, recommended)
    • FTPS - FTP over SSL/TLS (encrypted, recommended)
  • Ports:
    • FTP: 21 (default)
    • SFTP: 22 (default)
    • FTPS explicit: 21 (default)
    • FTPS implicit: 990 (default)
  • SSL/TLS:
    • useImplicit: true - SSL/TLS connection from start (port 990)
    • useExplicit: true - SSL/TLS connection after AUTH command (port 21)
    • useImplicit and useExplicit are mutually exclusive
    • sslProtocol specifies protocol version (TLS, SSL, TLSv1.2, etc.)
  • Working Directory:
    • workingDir specifies the default directory for file operations
    • Defaults to “/” (root directory)
    • Can be absolute or relative path
  • Timeout and Retry:
    • timeout - Connection timeout in milliseconds
    • retryCount - Number of retry attempts on failure
    • Recommended timeout: 30000ms (30 seconds)
  • Security:
    • Use SFTP or FTPS in production (not plain FTP)
    • Use strong passwords
    • Consider using key-based authentication for SFTP
  • Performance:
    • Timeout settings affect connection behavior
    • Retry count helps with transient failures
  • Deployment: Connection changes require deployment to take effect. Set deployToWorker: true or deploy manually.