# ResolveSpec Configuration Example
# This file demonstrates all available configuration options
# Copy this file to config.yaml and customize as needed

servers:
  default_server: "main"
  shutdown_timeout: 30s
  drain_timeout: 25s
  read_timeout: 10s
  write_timeout: 10s
  idle_timeout: 120s
  instances:
    main:
      name: "main"
      host: "0.0.0.0"
      port: 8080
      description: "Main API server"
      gzip: true
      tags:
        env: "development"
        version: "1.0"
      external_urls: []

tracing:
  enabled: false
  service_name: "resolvespec"
  service_version: "1.0.0"
  endpoint: "http://localhost:4318/v1/traces"

cache:
  provider: "memory"
  redis:
    host: "localhost"
    port: 6379
    password: ""
    db: 0
  memcache:
    servers:
      - "localhost:11211"
    max_idle_conns: 10
    timeout: 100ms

logger:
  dev: false
  path: ""

middleware:
  rate_limit_rps: 100.0
  rate_limit_burst: 200
  max_request_size: 10485760

cors:
  allowed_origins:
    - "*"
  allowed_methods:
    - "GET"
    - "POST"
    - "PUT"
    - "DELETE"
    - "OPTIONS"
  allowed_headers:
    - "*"
  max_age: 3600

error_tracking:
  enabled: false
  provider: "noop"
  environment: "development"
  sample_rate: 1.0
  traces_sample_rate: 0.1

event_broker:
  enabled: false
  provider: "memory"
  mode: "sync"
  worker_count: 1
  buffer_size: 100
  instance_id: ""
  redis:
    stream_name: "events"
    consumer_group: "app"
    max_len: 1000
    host: "localhost"
    port: 6379
    password: ""
    db: 0
  nats:
    url: "nats://localhost:4222"
    stream_name: "events"
    storage: "file"
    max_age: 24h
  database:
    table_name: "events"
    channel: "events"
    poll_interval: 5s
  retry_policy:
    max_retries: 3
    initial_delay: 1s
    max_delay: 1m
    backoff_factor: 2.0

dbmanager:
  default_connection: "primary"
  max_open_conns: 25
  max_idle_conns: 5
  conn_max_lifetime: 30m
  conn_max_idle_time: 5m
  retry_attempts: 3
  retry_delay: 1s
  health_check_interval: 30s
  enable_auto_reconnect: true
  connections:
    primary:
      name: "primary"
      type: "pgsql"
      url: "host=localhost user=postgres password=postgres dbname=resolvespec port=5432 sslmode=disable"
      default_orm: "gorm"
      enable_logging: false
      enable_metrics: false
      connect_timeout: 10s
      query_timeout: 30s

paths:
  data_dir: "./data"
  log_dir: "./logs"
  cache_dir: "./cache"

extensions: {}
