# Synapse Backupper configuration file
# Generated by: synapse-backupper generate-config --lang en
# Dotted key example: pg.host

# PostgreSQL connection settings
pg:
  # host: string — PostgreSQL server hostname or IP address.
  host: "localhost"

  # port: integer — PostgreSQL server port.
  port: 5432

  # user: string — PostgreSQL username for the backup connection.
  user: ""

  # password: string — PostgreSQL password for the backup connection.
  # Do not commit real passwords to version control.
  password: ""

  # database: string — Name of the Synapse database to back up.
  database: ""

  # sslmode: string — PostgreSQL SSL mode (disable, allow, prefer, require, verify-ca, verify-full).
  sslmode: "prefer"

  # exclude_tables: list of strings — Tables to skip during pg_dump.
  # The default excludes the large one-time-keys table to reduce dump size.
  exclude_tables:
    - "e2e_one_time_keys_json"

# Backup scheduling and retention settings
backup:
  # dir: string — Directory where encrypted backup files are stored.
  dir: ""

  # retention_days: integer — How many days to keep backups before pruning.
  retention_days: 180

  # cron: string — Cron expression for automatic backup schedule.
  cron: "0 0 3 * * *"

# Encryption scheme identifiers
# pq_scheme: uint16 — Post-quantum KEM scheme ID.
#   0x0006 = ML-KEM-768 (NIST FIPS 203)
pq_scheme: 0x0006

# classical_scheme: uint16 — Classical KEM scheme ID.
#   0x0007 = X25519 ECDH
classical_scheme: 0x0007

# Public key file paths for hybrid encryption
# pq_public_key_path: string — Path to the post-quantum public key PEM file.
pq_public_key_path: ""

# classical_public_key_path: string — Path to the classical public key PEM file.
classical_public_key_path: ""

# Health check HTTP server settings
healthz:
  # port: integer — TCP port for the /healthz endpoint.
  port: 8080

# Logging settings
log:
  # level: string — Log verbosity (debug, info, warn, error).
  level: "info"
