A partner definition is a reusable YAML file that describes a remote endpoint: its protocol, connection details, authentication, and trust material.
Partners are referenced by flows. Separating partner definitions from flow definitions means you can update connection or trust settings in one place without editing every flow that uses them.
This page is a field-by-field reference. For conceptual context, see Configuration and Protocols .
implementers creating partner definitions
operators reviewing and validating partner configuration
security reviewers auditing trust and credential handling
Each partner is a separate YAML file in the directory configured by partners_dir. The filename must match the partner id field exactly (without the .yaml extension).
display_name : Supplier SFTP
host : sftp.supplier.example
The loader validates this constraint and rejects files where the filename and id do not match.
Field Type Required Description idstring yes Unique partner identifier. Must match the filename. display_namestring no Human-readable label used in the UI. protocolstring yes One of: sftp, ftps, as2, s3, webdav, azure_blob, local. policyobject no Per-partner policy overrides (see below).
Exactly one protocol-specific section must be present and must match protocol.
The policy block lets you set per-partner constraints that apply to flows using this partner.
Field Type Description max_file_sizeint64 Maximum file size in bytes for this partner. allowed_extensionslist Allowed file extensions. Overrides global allowlist for this partner. timeoutduration Connection timeout for this partner (Go duration string, e.g. 30s). retriesint Maximum retry attempts for flows using this partner.
host : sftp.supplier.example
remote_dir : /outgoing/invoices
password : env:SUPPLIER_SFTP_PASSWORD
key_path : file:/etc/xferity/keys/supplier_id_rsa
key_passphrase : env:SUPPLIER_KEY_PASS
known_hosts : file:/etc/xferity/known_hosts
host_key_fingerprint : " SHA256:abc123... "
allow_insecure_host_key : false
Field Type Required Default Description hoststring yes — SFTP server hostname or IP address. portint no 22SFTP server port. userstring yes — SSH login username. remote_dirstring no — Default remote directory. Flows can override with source.path or target.path. passwordstring no — Password or secret reference. Use env:, file:, or vault: references. key_pathstring no — Path or secret reference to the SSH private key for key-based authentication. key_passphrasestring no — Passphrase or secret reference for the private key. known_hostsstring no — file: reference to an SSH known_hosts file. Must use file: prefix when set.host_key_fingerprintstring no — SHA-256 fingerprint for host key pinning. Must start with SHA256:. allow_insecure_host_keybool no falseDisable SSH host key verification. Rejected by hardened mode.
sftp.host and sftp.user are required.
sftp.known_hosts must use the file: prefix when set. Bare paths are rejected.
sftp.host_key_fingerprint must start with SHA256: when set.
In hardened mode, sftp.password and sftp.key_passphrase must use env:, file:, or vault: secret references. Plaintext values are rejected.
allow_insecure_host_key=true is rejected in hardened mode.
host : ftps.partner-a.example
password : env:PARTNER_A_FTPS_PASSWORD
ca_cert : file:/etc/xferity/certs/partner-a-ca.pem
client_cert : file:/etc/xferity/certs/our-client.pem
client_private_key : file:/etc/xferity/certs/our-client-key.pem
client_key_passphrase : env:FTPS_CLIENT_KEY_PASS
server_cert_fingerprint : ""
insecure_skip_verify : false
Field Type Required Default Description connection.hoststring yes — FTPS server hostname or IP. connection.portint no 21FTPS server port. connection.passivebool yes — Must be true. Only passive mode is supported.
Field Type Required Description auth.usernamestring yes FTP login username. auth.passwordstring no Password or secret reference.
Field Type Default Description tls.modestring explicitTLS mode. Must be explicit. Implicit mode is not supported. tls.ca_certstring — env:, file:, or vault: reference to the CA certificate PEM for server validation.tls.client_certstring — Reference to the client certificate PEM for mutual TLS. tls.client_private_keystring — Reference to the client private key PEM. tls.client_key_passphrasestring — Reference to the client key passphrase. tls.server_cert_fingerprintstring — SHA-256 server certificate fingerprint for pinning. tls.insecure_skip_verifybool falseSkip TLS certificate verification. Rejected by hardened mode.
connection.host and auth.username are required.
connection.passive must be true.
tls.mode must be explicit.
tls.ca_cert must use a secret reference when set.
In hardened mode, tls.client_cert, tls.client_private_key, tls.client_key_passphrase, and auth.password must use secret references.
tls.insecure_skip_verify=true is rejected in hardened mode.
url : " https://edi.acmecorp.example/as2/receive "
signing_algorithm : sha256
encryption_algorithm : aes256
compression_enabled : false
ca_cert : file:/etc/xferity/certs/acme-ca.pem
client_key_passphrase : ""
insecure_skip_verify : false
Field Type Required Default Description as2_idstring yes — The partner’s AS2 ID for message routing and MDN correlation. urlstring yes — The HTTP/HTTPS endpoint where AS2 messages are sent. mdn_urlstring no — Async MDN return URL. Required for async MDN. Leave empty for sync MDN. receipt_modestring no syncsync or async. Sync MDN is the default.signing_algorithmstring no sha256Signing algorithm: sha256, sha384, sha512. encryption_algorithmstring no aes256Encryption algorithm: aes128, aes192, aes256, 3des. compression_enabledbool no falseCompress the message payload before encryption. expect_signed_mdnbool no falseRequire the MDN receipt to be signed by the partner.
Field Type Description https_tls.ca_certstring Reference to a CA certificate PEM for HTTPS trust validation. https_tls.client_certstring Reference to a client certificate for mutual TLS. https_tls.client_private_keystring Reference to the client private key. https_tls.client_key_passphrasestring Reference to the client key passphrase. https_tls.insecure_skip_verifybool Skip HTTPS TLS verification. Rejected by hardened mode.
as2_id and url are required.
receipt_mode must be sync or async.
In hardened mode, all https_tls credential fields must use secret references.
https_tls.insecure_skip_verify=true is rejected in hardened mode.
AS2 partners use certificate bindings for signing, encryption, and verification. These are managed through the Certificate inventory (not in the partner YAML). See Security and the Certificate management UI.
bucket : payroll-transfers-prod
Field Type Required Description bucketstring yes S3 bucket name. regionstring no AWS region, e.g. eu-west-1. Required for AWS S3. Optional for S3-compatible APIs. prefixstring no Object key prefix within the bucket. Trailing slash is stripped. endpoint_urlstring no Custom endpoint URL for S3-compatible APIs (e.g. MinIO, LocalStack). use_default_chainbool no Use the AWS SDK default credential chain (IAM roles, env vars, instance metadata). access_key_idstring no AWS access key ID or secret reference. Required when use_default_chain=false. secret_access_keystring no AWS secret access key or secret reference. Required when use_default_chain=false. session_tokenstring no AWS session token or secret reference for temporary credentials.
bucket is required.
When use_default_chain=false, both access_key_id and secret_access_key are required.
In hardened mode, access_key_id, secret_access_key, and session_token must use secret references.
url : https://cloud.partner.example/remote.php/dav/files/mftuser
password : env:NEXTCLOUD_PASSWORD
insecure_skip_verify : false
Field Type Required Default Description urlstring yes — Base URL of the WebDAV collection. No trailing slash. usernamestring no — Basic-auth username. If omitted, no auth header is sent. passwordstring no — Password or secret reference. insecure_skip_verifybool no falseSkip TLS certificate verification. Rejected in hardened mode. timeout_secondsint no 30Per-request HTTP timeout in seconds.
webdav.url is required.
In hardened mode, webdav.password must use a secret reference when set.
webdav.insecure_skip_verify=true is rejected in hardened mode.
account_name : companystorageacct
Field Type Required Description account_namestring see auth notes Storage account name. Required for shared-key and default-chain auth. account_keystring see auth notes Storage account key or secret reference. Required when use_default_chain=false and no connection_string. connection_stringstring see auth notes Full connection string or secret reference. Alternative to account_name + account_key. containerstring yes Blob container name. Must already exist. prefixstring no Blob key prefix within the container. endpoint_urlstring no Custom blob service endpoint such as Azurite or Azure Stack. use_default_chainbool no Use DefaultAzureCredential for managed identity or workload identity scenarios.
azure_blob.container is required.
Authentication precedence is connection_string → account_name + account_key → use_default_chain.
In hardened mode, azure_blob.account_key and azure_blob.connection_string must use secret references when set.
base_path : /mnt/shared/landing
Field Type Required Description local.base_pathstring yes Absolute base path for local file operations.
All credential fields in partner definitions support secret references. Use these instead of plaintext values wherever possible.
Prefix Example Description env:env:PARTNER_SFTP_PASSWORDRead from an environment variable. Always bootstrap-safe. file:file:/run/secrets/partner_passwordRead from a file path. Always bootstrap-safe. vault:vault:secret/data/mft/partner#passwordRead from HashiCorp Vault KV v2. aws-sm:aws-sm:prod/mft/partner#passwordRead from AWS Secrets Manager. azure-kv:azure-kv:partner-sftp-passwordRead from Azure Key Vault. local-vault:local-vault:partner-sftp-passwordRead from local encrypted vault (Postgres backend only).
In hardened mode, credential fields must use secret references. Plaintext values in sensitive fields are rejected at startup.
In Postgres-backed deployments, each partner has a Partner Crypto Policy view in the UI and API. This shows:
configured and bound certificate roles (for AS2 and FTPS partners)
PGP key bindings (for partners using OpenPGP flows)
health and validation status per role
This view is read-only. Crypto bindings are managed through the Certificate and PGP Key inventory.
display_name : Bank SFTP (Statement Pickup)
remote_dir : /outgoing/statements
known_hosts : file:/etc/xferity/known_hosts
host_key_fingerprint : " SHA256:abcdefABCDEF0123456789... "
key_path : file:/etc/xferity/keys/bank_id_rsa
key_passphrase : env:BANK_KEY_PASS
display_name : Retail Trading Partner EDI (AS2)
as2_id : " RETAIL-PARTNER-EDI "
url : " https://edi.retailpartner.example/as2/receive "
signing_algorithm : sha256
encryption_algorithm : aes256
ca_cert : file:/etc/xferity/certs/retail-partner-ca.pem