wallet:
  path: /path/to/wallet.json # Path to wallet.
  address: NfgHwwTi3wHAS8aFAN243C5vGbkYDpqLHP # Account address. If omitted default one will be used.
  passphrase: pwd # Passphrase to decrypt wallet. If you're using a wallet without a password, place '' here.

pprof:
  enabled: false # Enable pprof.
  address: localhost:8083
prometheus:
  enabled: false # Enable metrics.
  address: localhost:8084
tracing:
  enabled: true
  exporter: "otlp_grpc"
  endpoint: "localhost:4317"
  trusted_ca: ""

logger:
  level: debug # Log level.
  destination: stdout
  sampling:
    enabled: false
    initial: 100
    thereafter: 100
    interval: 1s

server:
  - address: 0.0.0.0:8080
    tls:
      enabled: false
      cert_file: /path/to/cert
      key_file: /path/to/key
  - address: 0.0.0.0:8081
    tls:
      enabled: false
      cert_file: /path/to/cert
      key_file: /path/to/key

# Nodes configuration.
# This configuration make the gateway use the first node (grpc://s01.frostfs.devenv:8080)
# while it's healthy. Otherwise, the gateway use the second node (grpc://s01.frostfs.devenv:8080)
# for 10% of requests and the third node for 90% of requests.
peers:
  0:
    # Endpoint.
    address: grpc://s01.frostfs.devenv:8080

    # Until nodes with the same priority level are healthy
    # nodes with other priority are not used.
    # The lower the value, the higher the priority.
    priority: 1

    # Load distribution proportion for nodes with the same priority.
    weight: 1
  1:
    address: grpc://s02.frostfs.devenv:8080
    priority: 2
    weight: 1
  2:
    address: grpc://s03.frostfs.devenv:8080
    priority: 2
    weight: 9

reconnect_interval: 1m

web:
  # Per-connection buffer size for requests' reading.
  # This also limits the maximum header size.
  read_buffer_size: 4096

  # Per-connection buffer size for responses' writing.
  write_buffer_size: 4096

  # ReadTimeout is the amount of time allowed to read
  # the full request including body. The connection's read
  # deadline is reset when the connection opens, or for
  # keep-alive connections after the first byte has been read.
  read_timeout: 10m

  # WriteTimeout is the maximum duration before timing out
  # writes of the response. It is reset after the request handler
  # has returned.
  write_timeout: 5m

  # StreamRequestBody enables request body streaming,
  # and calls the handler sooner when given body is
  # larger then the current limit.
  stream_request_body: true

  # Maximum request body size.
  # The server rejects requests with bodies exceeding this limit.
  max_request_body_size: 4194304

# RPC endpoint to be able to use nns container resolving.
rpc_endpoint: http://morph-chain.frostfs.devenv:30333
# The order in which resolvers are used to find an container id by name.
resolve_order:
  - nns
  - dns

upload_header:
  use_default_timestamp: false # Create timestamp for object if it isn't provided by header.

connect_timeout: 5s # Timeout to dial node.
stream_timeout: 10s # Timeout for individual operations in streaming RPC.
request_timeout: 5s # Timeout to check node health during rebalance.
rebalance_timer: 30s # Interval to check nodes health.
pool_error_threshold: 100 # The number of errors on connection after which node is considered as unhealthy.

# Enable index page to see objects list for specified container and prefix
index_page:
  enabled: false
  template_path: internal/handler/templates/index.gotmpl

zip:
  compression: false # Enable zip compression to download files by common prefix.

runtime:
  soft_memory_limit: 1gb

# Parameters of requests to FrostFS
frostfs:
  # This flag enables client side object preparing.
  client_cut: false
  # Sets max buffer size for read payload in put operations.
  buffer_max_size_for_put: 1048576
  # Max attempt to make successful tree request.
  # default value is 0 that means the number of attempts equals to number of nodes in pool.
  tree_pool_max_attempts: 0

# Caching
cache:
  # Cache which contains mapping of bucket name to bucket info
  buckets:
    lifetime: 1m
    size: 1000

resolve_bucket:
  namespace_header: X-Frostfs-Namespace
  default_namespaces: [ "", "root" ]

cors:
  allow_origin: ""
  allow_methods: []
  allow_headers: []
  expose_headers: []
  allow_credentials: false
  max_age: 600