sources:
  - name: okuna
    handler:
      graphql:
        endpoint: '{env.OKUNA_URL}'
        operationHeaders:
          Accept-Language: "{context.headers['accept-language']}"
          sentry-trace: "{context.headers['sentry-trace']}"
          X-Holi-User-ID: "{context.headers['x-holi-user-id']}"
          X-Holi-User-Email: "{context.headers['x-holi-user-email']}"
  - name: app-donations
    handler:
      graphql:
        endpoint: '{env.DONATIONS_API_URL}'
        operationHeaders:
          Accept-Language: "{context.headers['accept-language']}"
          sentry-trace: "{context.headers['sentry-trace']}"
    transforms:
      # Prefix for types
      - prefix:
          mode: wrap
          value: AppDonations_
          includeRootOperations: false
          includeTypes: true
      # Prefix for operations
      - prefix:
          mode: wrap
          value: appDonations_
          includeRootOperations: true
          includeTypes: false
  - name: app-goodnews
    handler:
      graphql:
        endpoint: '{env.GOODNEWS_API_URL}'
        operationHeaders:
          Accept-Language: "{context.headers['accept-language']}"
          sentry-trace: "{context.headers['sentry-trace']}"
    transforms:
      # Prefix for types
      - prefix:
          mode: wrap
          value: AppGoodNews_
          includeRootOperations: false
          includeTypes: true
      # Prefix for operations
      - prefix:
          mode: wrap
          value: appGoodNews_
          includeRootOperations: true
          includeTypes: false
  - name: app-volunteering
    handler:
      graphql:
        endpoint: '{env.VOLUNTEERING_API_URL}'
        operationHeaders:
          Accept-Language: "{context.headers['accept-language']}"
          sentry-trace: "{context.headers['sentry-trace']}"
    transforms:
      # Prefix for types
      - prefix:
          mode: wrap
          value: AppVolunteering_
          includeRootOperations: false
          includeTypes: true
      # Prefix for operations
      - prefix:
          mode: wrap
          value: appVolunteering_
          includeRootOperations: true
          includeTypes: false
  - name: geo
    handler:
      graphql:
        endpoint: '{env.GEO_API_URL}'
        operationHeaders:
          Accept-Language: "{context.headers['accept-language']}"
          sentry-trace: "{context.headers['sentry-trace']}"
    transforms:
      # Prefix for types
      - prefix:
          mode: wrap
          value: Geo_
          includeRootOperations: false
          includeTypes: true
      # Prefix for operations
      - prefix:
          mode: wrap
          value: geo_
          includeRootOperations: true
          includeTypes: false
logger: './logger'

cache:
  redis:
    host: '{env.REDIS_HOST}'
    port: '{env.REDIS_PORT}'
    password: '{env.REDIS_PASSWORD}'
    url: 'redis://:{env.REDIS_PASSWORD}@{env.REDIS_HOST}:{env.REDIS_PORT}/{env.REDIS_DB}'
    
plugins:
  - responseCache:
      cacheKey: "{operationName}-{variableValues|hash}"
      ttl: 0
      ttlPerCoordinate:
        # cache operation containing Query.discoverSpaces selection for 10 minutes
        - coordinate: Query.discoverSpaces
          ttl: 600000

serve:
  browser: false
