logging:
  level: INFO
  appenders:
    - type: console
      threshold: ALL
      timeZone: UTC
      target: stdout

health:
  delayedShutdownHandlerEnabled: false

awsCredentialsProvider:
  type: static
  accessKeyId: secret://aws.accessKeyId
  secretAccessKey: secret://aws.secretAccessKey

tlsKeyStore:
  password: secret://tlsKeyStore.password

stripe:
  apiKey: secret://stripe.apiKey
  idempotencyKeyGenerator: secret://stripe.idempotencyKeyGenerator
  boostDescription: >
    Example
  supportedCurrenciesByPaymentMethod:
    CARD:
      - usd
      - eur
    SEPA_DEBIT:
      - eur

braintree:
  merchantId: unset
  publicKey: secret://braintree.publicKey
  privateKey: secret://braintree.privateKey
  environment: sandbox
  graphqlUrl: unset
  merchantAccounts:
    # ISO 4217 currency code and its corresponding sub-merchant account
    'xts': unset
  supportedCurrenciesByPaymentMethod:
    PAYPAL:
      - usd
      - xts
  pubSubPublisher:
    type: stub

googlePlayBilling:
  credentialsJson: |
    {
      "type": "external_account",
      "credential_source": {
        "file": "/tmp/my-token"
      },
      "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
      "audience": "//iam.googleapis.com/abc",
      "token_url": "https://sts.googleapis.com/v1/token"
    }
  packageName: package.name
  applicationName: test
  productIdToLevel: {}

appleAppStore:
  env: LOCAL_TESTING
  bundleId: bundle.name
  appAppleId: 12345
  issuerId: abcdefg
  keyId: abcdefg
  encodedKey: secret://appleAppStore.encodedKey
  subscriptionGroupId: example_subscriptionGroupId
  productIdToLevel: {}
  appleRootCerts:
    # An apple root cert https://www.apple.com/certificateauthority/
    - MIIEuzCCA6OgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMDYwNDI1MjE0MDM2WhcNMzUwMjA5MjE0MDM2WjBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkkakJH5HbHkdQ6wXtXnmELes2oldMVeyLGYne+Uts9QerIjAC6Bg++FAJ039BqJj50cpmnCRrEdCju+QbKsMflZ56DKRHi1vUFjczy8QPTc4UadHJGXL1XQ7Vf1+b8iUDulWPTV0N8WQ1IxVLFVkds5T39pyez1C6wVhQZ48ItCD3y6wsIG9wtj8BMIy3Q88PnT3zK0koGsj+zrW5DtleHNbLPbU6rfQPDgCSC7EhFi501TwN22IWq6NxkkdTVcGvL0Gz+PvjcM3mo0xFfh9Ma1CWQYnEdGILEINBhzOKgbEwWOxaBDKMaLOPHd5lc/9nXmW8Sdh2nzMUZaF3lMktAgMBAAGjggF6MIIBdjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUK9BpR5R2Cf70a40uQKb3R01/CF4wHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/CF4wggERBgNVHSAEggEIMIIBBDCCAQAGCSqGSIb3Y2QFATCB8jAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMIHDBggrBgEFBQcCAjCBthqBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMA0GCSqGSIb3DQEBBQUAA4IBAQBcNplMLXi37Yyb3PN3m/J20ncwT8EfhYOFG5k9RzfyqZtAjizUsZAS2L70c5vu0mQPy3lPNNiiPvl4/2vIB+x9OYOLUyDTOMSxv5pPCmv/K/xZpwUJfBdAVhEedNO3iyM7R6PVbyTi69G3cN8PReEnyvFteO3ntRcXqNx+IjXKJdXZD9Zr1KIkIxH3oayPc4FgxhtbCS+SsvhESPBgOJ4V9T0mZyCKM2r3DYLP3uujL/lTaltkwGMzd/c6ByxW69oPIQ7aunMZT7XZNn/Bh1XZp5m5MkL72NVxnn6hUrcbvZNCJBIqxw8dtk2cXmPIS4AXUKqK1drk/NAJBzewdXUh

appleDeviceCheck:
  production: false
  teamId: 0123456789
  bundleId: bundle.name

deviceCheck:
  backupRedemptionDuration: P30D
  backupRedemptionLevel: 201

dynamoDbClient:
  type: local

dynamoDbTables:
  accounts:
    tableName: accounts_test
    phoneNumberTableName: numbers_test
    phoneNumberIdentifierTableName: pni_assignment_test
    usernamesTableName: usernames_test
    usedLinkDeviceTokensTableName: used_link_device_tokens_test
  appleDeviceChecks:
    tableName: apple_device_checks_test
  appleDeviceCheckPublicKeys:
    tableName: apple_device_check_public_keys_test
  backups:
    tableName: backups_test
  clientReleases:
    tableName: client_releases_test
  deletedAccounts:
    tableName: deleted_accounts_test
  deletedAccountsLock:
    tableName: deleted_accounts_lock_test
  issuedReceipts:
    tableName: issued_receipts_test
    expiration: P30D # Duration of time until rows expire
    generator: abcdefg12345678= # random base64-encoded binary sequence
    maxIssuedReceiptsPerPaymentId:
      STRIPE: 1
      BRAINTREE: 1
      GOOGLE_PLAY_BILLING: 1
      APPLE_APP_STORE: 1
  ecKeys:
    tableName: keys_test
  ecSignedPreKeys:
    tableName: repeated_use_signed_ec_pre_keys_test
  pagedPqKeys:
    tableName: paged_pq_keys_test
  pqLastResortKeys:
    tableName: repeated_use_signed_kem_pre_keys_test
  messages:
    tableName: messages_test
    expiration: P30D # Duration of time until rows expire
  onetimeDonations:
    tableName: onetime_donations_test
    expiration: P90D
  phoneNumberIdentifiers:
    tableName: pni_test
  profiles:
    tableName: profiles_test
  pushChallenge:
    tableName: push_challenge_test
  pushNotificationExperimentSamples:
    tableName: Example_PushNotificationExperimentSamples
  redeemedReceipts:
    tableName: redeemed_receipts_test
    expiration: P30D # Duration of time until rows expire
  registrationRecovery:
    tableName: registration_recovery_passwords_test
    expiration: P300D # Duration of time until rows expire
  remoteConfig:
    tableName: remote_config_test
  reportMessage:
    tableName: report_messages_test
  scheduledJobs:
    tableName: scheduled_jobs_test
    expiration: P7D
  subscriptions:
    tableName: subscriptions_test
  clientPublicKeys:
    tableName: client_public_keys_test
  verificationSessions:
    tableName: verification_sessions_test

pagedSingleUseKEMPreKeyStore:
  bucket: preKeyBucket # S3 Bucket name
  region: us-west-2    # AWS region

cacheCluster: # Redis server configuration for cache cluster
  type: local

pubsub: # Redis server configuration for pubsub cluster
  type: local

pushSchedulerCluster: # Redis server configuration for push scheduler cluster
  type: local

rateLimitersCluster: # Redis server configuration for rate limiters cluster
  type: local

directoryV2:
  client: # Configuration for interfacing with Contact Discovery Service v2 cluster
    userAuthenticationTokenSharedSecret: secret://directoryV2.client.userAuthenticationTokenSharedSecret
    userIdTokenSharedSecret: secret://directoryV2.client.userIdTokenSharedSecret

svr2:
  uri: svr2.example.com
  userAuthenticationTokenSharedSecret: secret://svr2.userAuthenticationTokenSharedSecret
  userIdTokenSharedSecret: secret://svr2.userIdTokenSharedSecret
  svrCaCertificates:
    # this is a randomly generated test certificate
    - |
      -----BEGIN CERTIFICATE-----
      MIIDazCCAlOgAwIBAgIUW5lcNWkuynRVc8Rq5pO6mHQBuZAwDQYJKoZIhvcNAQEL
      BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
      GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMjUwMzE4MTNaFw0yOTAz
      MjQwMzE4MTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
      HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
      AQUAA4IBDwAwggEKAoIBAQCfH4Um+fv2r4KudhD37/UXp8duRLTmp4XvpBTpDHpD
      2HF8p2yThVKlJnMkP/9Ey1Rb0vhxO7DCltLdW8IYcxJuHoyMvyhGUEtxxkOZbrk8
      ciUR9jTZ37x7vXRGj/RxcdlS6iD0MeF0D/LAkImt4T/kiKwDbENrVEnYWJmipCKP
      ribxWky7HqxDCoYMQr0zatxB3A9mx5stH+H3kbw3CZcm+ugF9ZIKDEVHb0lf28gq
      llmD120q/vs9YV3rzVL7sBGDqf6olkulvHQJKElZg2rdcHWFcngSlU2BjR04oyuH
      c/SSiLSB3YB0tdFGta5uorXyV1y7RElPeBfOfvEjsG3TAgMBAAGjUzBRMB0GA1Ud
      DgQWBBQX+xlgSWWbDjv0SrJ+h67xauJ80zAfBgNVHSMEGDAWgBQX+xlgSWWbDjv0
      SrJ+h67xauJ80zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw
      ZG2MCCjscn6h/QOoJU+IDfa68OqLq0I37gMnLMde4yEhAmm//miePIq4Uz9GRJ+h
      rAmdEnspKgyQ93PjF7Xpk/JdJA4B1bIrsOl/cSwqx2sFhRt8Kt1DHGlGWXqOaHRP
      UkZ86MyRL3sXly6WkxEYxZJeQaOzMy2XmQh7grzrlTBuSI+0xf7vsRRDipxr6LVQ
      6qGWyGODLLc2JD1IXj/1HpRVT2LoGGlKMuyxACQAm4oak1vvJ9mGxgfd9AU+eo58
      O/esB2Eaf+QqMPELdFSZQfG2jvp+3WQTZK8fDKHyLr076G3UetEMy867F6fzTSZd
      9Kxq0DY7RCEpdHMCKcOL
      -----END CERTIFICATE-----

svrb:
  uri: svrb.example.com
  userAuthenticationTokenSharedSecret: secret://svrb.userAuthenticationTokenSharedSecret
  userIdTokenSharedSecret: secret://svrb.userIdTokenSharedSecret
  svrCaCertificates:
    # this is a randomly generated test certificate
    - |
      -----BEGIN CERTIFICATE-----
      MIIDazCCAlOgAwIBAgIUW5lcNWkuynRVc8Rq5pO6mHQBuZAwDQYJKoZIhvcNAQEL
      BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
      GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMjUwMzE4MTNaFw0yOTAz
      MjQwMzE4MTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
      HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
      AQUAA4IBDwAwggEKAoIBAQCfH4Um+fv2r4KudhD37/UXp8duRLTmp4XvpBTpDHpD
      2HF8p2yThVKlJnMkP/9Ey1Rb0vhxO7DCltLdW8IYcxJuHoyMvyhGUEtxxkOZbrk8
      ciUR9jTZ37x7vXRGj/RxcdlS6iD0MeF0D/LAkImt4T/kiKwDbENrVEnYWJmipCKP
      ribxWky7HqxDCoYMQr0zatxB3A9mx5stH+H3kbw3CZcm+ugF9ZIKDEVHb0lf28gq
      llmD120q/vs9YV3rzVL7sBGDqf6olkulvHQJKElZg2rdcHWFcngSlU2BjR04oyuH
      c/SSiLSB3YB0tdFGta5uorXyV1y7RElPeBfOfvEjsG3TAgMBAAGjUzBRMB0GA1Ud
      DgQWBBQX+xlgSWWbDjv0SrJ+h67xauJ80zAfBgNVHSMEGDAWgBQX+xlgSWWbDjv0
      SrJ+h67xauJ80zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw
      ZG2MCCjscn6h/QOoJU+IDfa68OqLq0I37gMnLMde4yEhAmm//miePIq4Uz9GRJ+h
      rAmdEnspKgyQ93PjF7Xpk/JdJA4B1bIrsOl/cSwqx2sFhRt8Kt1DHGlGWXqOaHRP
      UkZ86MyRL3sXly6WkxEYxZJeQaOzMy2XmQh7grzrlTBuSI+0xf7vsRRDipxr6LVQ
      6qGWyGODLLc2JD1IXj/1HpRVT2LoGGlKMuyxACQAm4oak1vvJ9mGxgfd9AU+eo58
      O/esB2Eaf+QqMPELdFSZQfG2jvp+3WQTZK8fDKHyLr076G3UetEMy867F6fzTSZd
      9Kxq0DY7RCEpdHMCKcOL
      -----END CERTIFICATE-----

messageCache: # Redis server configuration for message store cache
  persistDelayMinutes: 1
  cluster:
    type: local

attachments:
  maxUploadSizeInBytes: 1024

gcpAttachments: # GCP Storage configuration
  domain: example.com
  email: user@example.cocm
  pathPrefix:
  rsaSigningKey: secret://gcpAttachments.rsaSigningKey

tus:
  uploadUri: https://example.org/upload
  userAuthenticationTokenSharedSecret: secret://tus.userAuthenticationTokenSharedSecret

apn: # Apple Push Notifications configuration
  sandbox: true
  bundleId: com.example.textsecuregcm
  keyId: secret://apn.keyId
  teamId: secret://apn.teamId
  signingKey: secret://apn.signingKey

fcm: # FCM configuration
  credentials: secret://fcm.credentials

cdn:
  bucket: cdn        # S3 Bucket name
  credentials:
    accessKeyId: secret://cdn.accessKey
    secretAccessKey: secret://cdn.accessSecret
  region: us-west-2  # AWS region

cdn3StorageManager:
  baseUri: https://storage-manager.example.com
  clientId: example
  clientSecret: secret://cdn3StorageManager.clientSecret
  sourceSchemes:
    2: gcs
    3: r2

openTelemetry:
  enabled: false
  environment: dev
  shutdownWaitDuration: PT0S
  url: http://127.0.0.1:4318/

unidentifiedDelivery:
  certificate: CikI14bfmgcSIQWEfA0sN1I082XmYJVRh6NzWg92E9FgnTpqTYxTrqpaIhJA4LnrrN/Dqign95JLaXeE0cJeRMoF3UM+GjjcY4LrJzDUGcqaJQsb6dWpRj5h79Z4F3epG4PJe4RNAUIG4oKXhQ==
  privateKey: secret://unidentifiedDelivery.privateKey
  expiresDays: 7
  embedSigner: true

shortCode:
  baseUrl: https://example.com/shortcodes/

storageService:
  uri: storage.example.com
  userAuthenticationTokenSharedSecret: secret://storageService.userAuthenticationTokenSharedSecret
  storageCaCertificates:
    - |
      -----BEGIN CERTIFICATE-----
      MIIDazCCAlOgAwIBAgIUW5lcNWkuynRVc8Rq5pO6mHQBuZAwDQYJKoZIhvcNAQEL
      BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
      GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMjUwMzE4MTNaFw0yOTAz
      MjQwMzE4MTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
      HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
      AQUAA4IBDwAwggEKAoIBAQCfH4Um+fv2r4KudhD37/UXp8duRLTmp4XvpBTpDHpD
      2HF8p2yThVKlJnMkP/9Ey1Rb0vhxO7DCltLdW8IYcxJuHoyMvyhGUEtxxkOZbrk8
      ciUR9jTZ37x7vXRGj/RxcdlS6iD0MeF0D/LAkImt4T/kiKwDbENrVEnYWJmipCKP
      ribxWky7HqxDCoYMQr0zatxB3A9mx5stH+H3kbw3CZcm+ugF9ZIKDEVHb0lf28gq
      llmD120q/vs9YV3rzVL7sBGDqf6olkulvHQJKElZg2rdcHWFcngSlU2BjR04oyuH
      c/SSiLSB3YB0tdFGta5uorXyV1y7RElPeBfOfvEjsG3TAgMBAAGjUzBRMB0GA1Ud
      DgQWBBQX+xlgSWWbDjv0SrJ+h67xauJ80zAfBgNVHSMEGDAWgBQX+xlgSWWbDjv0
      SrJ+h67xauJ80zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw
      ZG2MCCjscn6h/QOoJU+IDfa68OqLq0I37gMnLMde4yEhAmm//miePIq4Uz9GRJ+h
      rAmdEnspKgyQ93PjF7Xpk/JdJA4B1bIrsOl/cSwqx2sFhRt8Kt1DHGlGWXqOaHRP
      UkZ86MyRL3sXly6WkxEYxZJeQaOzMy2XmQh7grzrlTBuSI+0xf7vsRRDipxr6LVQ
      6qGWyGODLLc2JD1IXj/1HpRVT2LoGGlKMuyxACQAm4oak1vvJ9mGxgfd9AU+eo58
      O/esB2Eaf+QqMPELdFSZQfG2jvp+3WQTZK8fDKHyLr076G3UetEMy867F6fzTSZd
      9Kxq0DY7RCEpdHMCKcOL
      -----END CERTIFICATE-----

zkConfig:
  serverPublic: AAp8oB0D4EV2q7hSue3Kxzh1Vc88/nmLuRR9G3EefC0+CMcxJFQwDMgjFvFBKx3o6m9gJLevYiKcm/NxXX9WtnFMDHgDgfqHxbCi2rm20SgoHnuoph6XArmEOX6a1xLJVxgDtgfm1IbcyyqROXYxe9v2RvMUAnjbLI/fm0rXXhldjszlVR/wRpybX90RUjFyL/2Achttf3IC/ShWKkB6mWXwuFCcNfzeCCQ+w7cNnDbWscBcrhuou7HZvbt16/YdCXLyp+WdwS8ZkelpITvyK2hsPvf4oxaRLQfVRYXUMX55xpapbKH6PthuOzMVRkf+I3Xz3/bNjiQSlQkmAXlgB1YujgABYnJ6yJXQKP2mR4UJ3UYoGroYoafWycDa+vUYYozaUmzFjsBYWpYE+HyPJlJ2QaFTrpVqxX7NXsSbg8t35IvfWfZME9YBZ2eErDunwkaE4iDQhHl5IXAhbHDrr2QaJ68YIkn7lJSgFDKGFB2kb6BvDUGzcpI/CTHQi6WlCqQidQLJWDFFdlYjrUCQM2vvJtgyGrSc89jdXTFjM31aqmtcPWgWL0qv+RmK/BC392Nsu8WoSJcAE4yhccQuRSemtolgwewnjasoOFBNOPh4+pX55SwhyTVgtwl+NTNVNFydxGp9Me8ogRWElzwA9BFtNAgQtlfgIyZRTetFqLkYmIBDxwMcpizDKES5lPhV2uJJuzcMq/06mVQz2OrXgglWk01uN8U59pfNFpTZhcGQv+MHjwEAudq5eLpt3aFrdxJ7D26Fwl5j215SJ0yZo7vmSEML1vf7FaGh0IL57bRpCvdebB5WapSChUX+PPvCXohVjGrERFvQpeET6pydGGlEKYLWuWa3zFGmPvJJYZ/QfcmIP9zyhqzQT/7a7RIqFA==
  serverSecret: secret://zkConfig-libsignal-0.42.serverSecret

callingZkConfig:
  serverSecret: secret://callingZkConfig.serverSecret

backupsZkConfig:
  serverSecret: secret://backupsZkConfig.serverSecret

dynamicConfig:
  type: static
  object: |
    captcha:
      scoreFloor: 1.0

remoteConfig:
  globalConfig: # keys and values that are given to clients on GET /v1/config
    EXAMPLE_KEY: VALUE

paymentsService:
  userAuthenticationTokenSharedSecret: secret://paymentsService.userAuthenticationTokenSharedSecret
  paymentCurrencies:
    # list of symbols for supported currencies
    - MOB
  externalClients:
    type: stub

badges:
  badges:
    - id: TEST
      category: other
      sprites: # exactly 6
        - sprite-1.png
        - sprite-2.png
        - sprite-3.png
        - sprite-4.png
        - sprite-5.png
        - sprite-6.png
      svg: example.svg
      svgs:
        - light: example-light.svg
          dark: example-dark.svg
  badgeIdsEnabledForAll:
    - TEST
  receiptLevels:
    '1': TEST

subscription: # configuration for Stripe subscriptions
  badgeExpiration: P30D
  badgeGracePeriod: P15D
  backupExpiration: P30D
  backupGracePeriod: P15D
  backupFreeTierMediaDuration: P30D
  backupLevels:
    201:
      playProductId: EXAMPLE
      mediaTtl: P30D
      prices: {}
  levels:
    500:
      badge: TEST
      prices:
        # list of ISO 4217 currency codes and amounts for the given badge level
        xts:
          amount: '10'
          processorIds:
            STRIPE: price_example   # stripe Price ID
            BRAINTREE: plan_example # braintree Plan ID

oneTimeDonations:
  sepaMaximumEuros: '10000'
  boost:
    level: 1
    expiration: P90D
    badge: TEST
  gift:
    level: 10
    expiration: P90D
    badge: TEST
  currencies:
    # ISO 4217 currency codes and amounts in those currencies
    xts:
      minimum: '0.5'
      gift: '2'
      boosts:
        - '1'
        - '2'
        - '4'
        - '8'
        - '20'
        - '40'

registrationService:
  type: stub
  collationKeySalt: secret://registrationService.collationKeySalt
  registrationCaCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDazCCAlOgAwIBAgIUW5lcNWkuynRVc8Rq5pO6mHQBuZAwDQYJKoZIhvcNAQEL
    BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
    GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMjUwMzE4MTNaFw0yOTAz
    MjQwMzE4MTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
    HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
    AQUAA4IBDwAwggEKAoIBAQCfH4Um+fv2r4KudhD37/UXp8duRLTmp4XvpBTpDHpD
    2HF8p2yThVKlJnMkP/9Ey1Rb0vhxO7DCltLdW8IYcxJuHoyMvyhGUEtxxkOZbrk8
    ciUR9jTZ37x7vXRGj/RxcdlS6iD0MeF0D/LAkImt4T/kiKwDbENrVEnYWJmipCKP
    ribxWky7HqxDCoYMQr0zatxB3A9mx5stH+H3kbw3CZcm+ugF9ZIKDEVHb0lf28gq
    llmD120q/vs9YV3rzVL7sBGDqf6olkulvHQJKElZg2rdcHWFcngSlU2BjR04oyuH
    c/SSiLSB3YB0tdFGta5uorXyV1y7RElPeBfOfvEjsG3TAgMBAAGjUzBRMB0GA1Ud
    DgQWBBQX+xlgSWWbDjv0SrJ+h67xauJ80zAfBgNVHSMEGDAWgBQX+xlgSWWbDjv0
    SrJ+h67xauJ80zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw
    ZG2MCCjscn6h/QOoJU+IDfa68OqLq0I37gMnLMde4yEhAmm//miePIq4Uz9GRJ+h
    rAmdEnspKgyQ93PjF7Xpk/JdJA4B1bIrsOl/cSwqx2sFhRt8Kt1DHGlGWXqOaHRP
    UkZ86MyRL3sXly6WkxEYxZJeQaOzMy2XmQh7grzrlTBuSI+0xf7vsRRDipxr6LVQ
    6qGWyGODLLc2JD1IXj/1HpRVT2LoGGlKMuyxACQAm4oak1vvJ9mGxgfd9AU+eo58
    O/esB2Eaf+QqMPELdFSZQfG2jvp+3WQTZK8fDKHyLr076G3UetEMy867F6fzTSZd
    9Kxq0DY7RCEpdHMCKcOL
    -----END CERTIFICATE-----

keyTransparencyService:
  host: kt.example.com
  port: 443
  tlsCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDazCCAlOgAwIBAgIUW5lcNWkuynRVc8Rq5pO6mHQBuZAwDQYJKoZIhvcNAQEL
    BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
    GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMjUwMzE4MTNaFw0yOTAz
    MjQwMzE4MTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
    HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
    AQUAA4IBDwAwggEKAoIBAQCfH4Um+fv2r4KudhD37/UXp8duRLTmp4XvpBTpDHpD
    2HF8p2yThVKlJnMkP/9Ey1Rb0vhxO7DCltLdW8IYcxJuHoyMvyhGUEtxxkOZbrk8
    ciUR9jTZ37x7vXRGj/RxcdlS6iD0MeF0D/LAkImt4T/kiKwDbENrVEnYWJmipCKP
    ribxWky7HqxDCoYMQr0zatxB3A9mx5stH+H3kbw3CZcm+ugF9ZIKDEVHb0lf28gq
    llmD120q/vs9YV3rzVL7sBGDqf6olkulvHQJKElZg2rdcHWFcngSlU2BjR04oyuH
    c/SSiLSB3YB0tdFGta5uorXyV1y7RElPeBfOfvEjsG3TAgMBAAGjUzBRMB0GA1Ud
    DgQWBBQX+xlgSWWbDjv0SrJ+h67xauJ80zAfBgNVHSMEGDAWgBQX+xlgSWWbDjv0
    SrJ+h67xauJ80zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw
    ZG2MCCjscn6h/QOoJU+IDfa68OqLq0I37gMnLMde4yEhAmm//miePIq4Uz9GRJ+h
    rAmdEnspKgyQ93PjF7Xpk/JdJA4B1bIrsOl/cSwqx2sFhRt8Kt1DHGlGWXqOaHRP
    UkZ86MyRL3sXly6WkxEYxZJeQaOzMy2XmQh7grzrlTBuSI+0xf7vsRRDipxr6LVQ
    6qGWyGODLLc2JD1IXj/1HpRVT2LoGGlKMuyxACQAm4oak1vvJ9mGxgfd9AU+eo58
    O/esB2Eaf+QqMPELdFSZQfG2jvp+3WQTZK8fDKHyLr076G3UetEMy867F6fzTSZd
    9Kxq0DY7RCEpdHMCKcOL
    -----END CERTIFICATE-----
  clientCertificate: |
    -----BEGIN CERTIFICATE-----
    MIIDazCCAlOgAwIBAgIUW5lcNWkuynRVc8Rq5pO6mHQBuZAwDQYJKoZIhvcNAQEL
    BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
    GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMjUwMzE4MTNaFw0yOTAz
    MjQwMzE4MTNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
    HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
    AQUAA4IBDwAwggEKAoIBAQCfH4Um+fv2r4KudhD37/UXp8duRLTmp4XvpBTpDHpD
    2HF8p2yThVKlJnMkP/9Ey1Rb0vhxO7DCltLdW8IYcxJuHoyMvyhGUEtxxkOZbrk8
    ciUR9jTZ37x7vXRGj/RxcdlS6iD0MeF0D/LAkImt4T/kiKwDbENrVEnYWJmipCKP
    ribxWky7HqxDCoYMQr0zatxB3A9mx5stH+H3kbw3CZcm+ugF9ZIKDEVHb0lf28gq
    llmD120q/vs9YV3rzVL7sBGDqf6olkulvHQJKElZg2rdcHWFcngSlU2BjR04oyuH
    c/SSiLSB3YB0tdFGta5uorXyV1y7RElPeBfOfvEjsG3TAgMBAAGjUzBRMB0GA1Ud
    DgQWBBQX+xlgSWWbDjv0SrJ+h67xauJ80zAfBgNVHSMEGDAWgBQX+xlgSWWbDjv0
    SrJ+h67xauJ80zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAw
    ZG2MCCjscn6h/QOoJU+IDfa68OqLq0I37gMnLMde4yEhAmm//miePIq4Uz9GRJ+h
    rAmdEnspKgyQ93PjF7Xpk/JdJA4B1bIrsOl/cSwqx2sFhRt8Kt1DHGlGWXqOaHRP
    UkZ86MyRL3sXly6WkxEYxZJeQaOzMy2XmQh7grzrlTBuSI+0xf7vsRRDipxr6LVQ
    6qGWyGODLLc2JD1IXj/1HpRVT2LoGGlKMuyxACQAm4oak1vvJ9mGxgfd9AU+eo58
    O/esB2Eaf+QqMPELdFSZQfG2jvp+3WQTZK8fDKHyLr076G3UetEMy867F6fzTSZd
    9Kxq0DY7RCEpdHMCKcOL
    -----END CERTIFICATE-----
  clientPrivateKey: secret://keyTransparencyService.clientPrivateKey

turn:
  cloudflare:
    apiToken: secret://turn.cloudflare.apiToken
    endpoint: https://rtc.live.cloudflare.com/v1/turn/keys/LMNOP/credentials/generate
    requestedCredentialTtl: PT24H
    clientCredentialTtl: PT12H
    urls:
      - turn:turn.example.com:80
    urlsWithIps:
      - turn:%s
      - turn:%s:80?transport=tcp
      - turns:%s:443?transport=tcp
    hostname: turn.cloudflare.example.com
    numHttpClients: 1

linkDevice:
  secret: secret://linkDevice.secret

externalRequestFilter:
  grpcMethods:
    - com.example.grpc.ExampleService/exampleMethod
  paths:
    - /example
  permittedInternalRanges:
    - 127.0.0.0/8

idlePrimaryDeviceReminder:
  minIdleDuration: P30D

grpc:
  port: 50051

grpcAllowList:
  enableAll: true

asnTable:
  s3Region: a-region
  s3Bucket: a-bucket
  objectKey: asn.tsv
  maxSize: 100000
  refreshInterval: PT10S

callQualitySurvey:
  pubSubPublisher:
    type: stub

hlrLookup:
  apiKey: secret://hlrLookup.apiKey
  apiSecret: secret://hlrLookup.apiSecret
