{
    "AppPort": 5000,
    "Gb5SystemDTO": {
        "DataBaseType": 0,
         "Gb5System": "Data Source=217.216.78.142;Initial Catalog=Gb5System;Pooling=true;User Id=Developer;Password=MMtnHE5Btr39ZKjs045SQiVqDxqKLyDr96LPTEPeBCDKo/BTxRQY;Encrypt=False;TrustServerCertificate=True",

        "JasperServer": "http://192.168.0.2:8090/jasperserver/rest_v2/reports",
        "JasperNewVersion": "YES",
        "ServiceBaseUrl": "http://localhost:5000"
    },
  "Twilio": {
    "FromNumber": "+919489311535"
  },
  "Redis": {
    "ConnectionString": "localhost:6379",
    "DefaultCacheDurationSeconds": 300
  },
  "Dapr": {
    "AppId": "gb5",
    "HttpPort": "54447",
    "GrpcPort": "54448"
  },
  "Keycloak": {
    "KeycloakHost": "https://ssodev.goodbookserp.in"
  },
  // This checked-in appsettings.json is the DEV default (matches Gb5SystemDTO.Gb5System pointing
  // at 217.216.78.142 and GB5.Environment="Dev" below) — so Keycloak/Oidc point at the DEV
  // instance (ssodev.goodbookserp.in, realm Unisoftgb5, provisioned 2026-09-08 directly on
  // 217.216.78.142), not Live's (sso.goodbookserp.in, realm unisoftgb5, on the separate
  // 147.93.155.154 Keycloak+Vault box — deliberately kept environment-separate per "so that our
  // environments will be clear"). Live's own deployed appsettings.json overrides these three
  // values at deploy time; this file is never the source of truth for what Live actually runs.
  // Keycloak admin-API credential (admin-cli password grant) resolves from Vault at
  // "keycloak/admin-username" / "keycloak/admin-password" — see KeyCloakDAL.GetMasterAccessToken.
  // For Dev specifically: 217.216.78.142's own local Vault is sealed as of this writing, so these
  // two secrets (and "keycloak/Unisoftgb5/GB5WEB-client-secret") are NOT yet set there — set them
  // once that Vault unseals. Live's equivalents are already set on the separate Vault at
  // 147.93.155.154:8200.
    "GB5": {
        "Environment": "Dev"
    },
    "GOP": {
        "Services": {
            "PayRollService": "http://localhost:5110"
        }
    },
    "Promotion": {
        "OriginEnvironmentCode": "",
        "HomeDatabaseName": "CHANGE_ME_PER_ENVIRONMENT",
        "HomeDatabaseType": 0,
        "RemoteModules": {
            "TMS": {
                "BaseUrl": "http://localhost:5100"
            },
            "EngagementHost": {
                "BaseUrl": "http://localhost:5108"
            }
        }
    },
    "PromotionExchange": {
        "BaseUrl": "http://localhost:5330",
        "ApiKey": "CHANGE_ME_PER_ENVIRONMENT"
    },
    "Integration": {
        "SqlWorkbenchBaseUrl": ""
    },
    "PDFEXPORT": {
        "OutputPath": "/root/GB5BuildFile/Reports/Output/",
        "RowsPerChunk": 500,
        "RenderConcurrency": 2
    },
    "EXCELEXPORT": {
        "MaxRowsPerSheet": 1000000
    },
    "DrillDown": {
        "FrontendCryptoKey": "12345678901234567890123456789012",
        "FrontendBaseUrl": "http://CHANGE_ME_PER_ENVIRONMENT"
    },
  "MessageHubSettings": {
    "Conversation": {
      "BaseUri": "http://localhost:5000"
    },
    "Telegram": {
      "BotToken": "8309831889:AAFyUCpsdXPonhj9lyw1f8g9_ERzsU22KhQ",
      "BaseUrl": "https://api.telegram.org",
      "DefaultRecipient": ""
    },
    "Celitix": {
      "Enable": "Y",
      "BaseUrl": "https://api.celitix.com",
      "MessageEndpoint": "/wrapper/waba/message",
      "WabaNumber": "919843943433",
      "Key": "75ee29b767XX",
      "KeyHeaderName": "Key",
      "WabaNumberHeaderName": "wabaNumber",
      "ContentType": "application/json",
      "WebhookSecret": "GB5_CELITIX_WHATSAPP"
    },
    "WhatsApp": {
      "Enable": "N",
      "AuthToken": "EAAY6GFMlsAkBO43GT1TSgbt9ZAbqe8iVl7meUxwzQEBVJmSnkL8nsYw5COMO95AbqpKVWakTWLCL6RZBczPY8srxIkQTdMXgIWCKkWsq1SaSKQ5TMzkzl72Y80wJcjaZB4pzWkVdHJfrjrnWZA22RN5SQZCHG1kzDZATgdXuC8bZCyiyMR6cvlPDos19pCKzmwRiAZDZD",
      "PhoneNumberId": "804909676033148",
      "DefaultTemplateName": "visitor_details",
      "DefaultLanguageCode": "en_US"
    },
    "WhatsAppTemplates": {
      "1": {
        "TemplateName": "visitor_details",
        "LanguageCode": "en",
        "ParameterKeys": [
          "Name",
          "Company",
          "Designation",
          "Mobile",
          "Location",
          "Email",
          "Department",
          "Office",
          "Purpose",
          "VisitDate",
          "VisitTime"
        ]
      },
      "2": {
        "TemplateName": "helpdesk_ticket_status",
        "LanguageCode": "en",
        "ParameterKeys": [
          "Name",
          "TicketName",
          "TicketNo",
          "DateTime",
          "CreatedBy",
          "Unit",
          "Department",
          "Status"
        ]
      }
    },
    "Teams": {
      "WebhookUrl": "https://myunisoft1.webhook.office.com/webhookb2/3f7bf534-3581-4eaf-810c-28f5a9716b9c@06c2f14d-41aa-4f64-85a4-990ea9e43474/IncomingWebhook/199db35596b047c4884d6fc72d18d3ca/e3f3312e-0bf3-4211-8921-87ed42994dd6/V2vuZPlCnGgByHFNxWR6BpYBmIiohL126gQzmVLSDtPTc1"
    }
  },
  "Slack": {
    "WebhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
    "DefaultChannel": "#general",
    "DefaultUserName": "MessageHubBot",
    "DefaultIconEmoji": ":robot_face:"
  },
  "Oidc": {
    "Authority": "https://ssodev.goodbookserp.in/realms/Unisoftgb5",
    "MetadataUrl": "https://ssodev.goodbookserp.in/realms/Unisoftgb5/.well-known/openid-configuration",
    "DefaultRealm": "Unisoftgb5",
    "GB5BaseUri": "http://217.216.78.142:55",
    "EncryptionKeyBase64": "w4Fv9zQh2Jk8R1Xs7YtV6Nq3PfKjLm1OzQ2rH9TgVeU=",
    // NOTE: this "Clients" section is only read by SSOService.cs, which is confirmed dead code —
    // the FE's real login path (login.service.ts) calls KeyCloakService.cs instead, which resolves
    // GB5WEB's client secret server-side from Vault per-realm (keycloak/{realm}/{clientId}-client-secret),
    // never from this file. ClientSecret is intentionally a placeholder, not the real value — do
    // not commit a live secret here even if SSOService.cs is ever revived.
    "Clients": [
      {
        "ClientId": "GB5WEB",
        "ClientSecret": "CHANGE_ME_PER_ENVIRONMENT",
        "RedirectUriPattern": "http://217.216.78.142:55/fws/SSO/Authorize/UserLoginRedirectCallback"
      }
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  },
  "Smtp": {
    "Host": "smtp.office365.com",
    "Port": 587,
    "User": "noreply@myunisoft.com",
    "Password": "Unisoft@2012",
    "EnableSsl": true
  },
  "FileStorage": {
    "PhysicalFilePath": {
      "Windows": "C:\\GoodBooks\\FileStorage",
      "Linux": "/var/gb5/attachments"
    }
  },
  "RabbitMQ": {
    "Host": "localhost",
    "UserName": "guest",
    "Password": "guest",
    "VirtualHost": "/"
  },
  "WorkflowAutoApprove": {
    "Enabled": true,
    "IntervalSeconds": 60
  },
  "OrphanCleanup": {
    "OrphanAgeHours": 24,
    "BatchSize": 100,
    "IntervalMinutes": 60
  },
  "DraftSettings": {
    "OrphanRetentionHours": 48,
    "OrphanCleanupBatchSize": 50,
    "OrphanIntervalMinutes": 60,
    "MaxRowsPerDraft": 2000,
    "EnableDraftSharing": true
  },
  "ArchiveSettings": {
    "RetentionMonths": 24
  },
  "EmailApproval": {
    "TokenSecret": "GB5-Email-Approval-Secret-2024-Unisoft"
  },
  "DirectAction": {
    "TokenSecret": "GB5-Email-Approval-Secret-2024-Unisoft"
  },
  "SysJobSettings": {
    "ServiceBaseUrl": "http://localhost:5000",
    "Gb4ServiceBaseUrl": "localhost:55"
  },
  "OpenTelemetry": {
    "Enabled": true,
    "Exporter": "ZIPKIN",
    "ZipkinEndpoint": "http://localhost:9411/api/v2/spans",
    "OtlpEndpoint": "http://localhost:4317",
    "SamplingRatio": 1.0,
    "EnableMetrics": true,
    "EnableConsoleExporter": false,
    "ServiceVersion": "1.0.0",
    "Environment": "Development",
    "RecordExceptions": true
  },
  
    "Vault": {
      "Address": "http://127.0.0.1:8200",
      "Token": "hvs.8wPXHaCW78jnmxwSg07mgV1T",
      "MountPoint": "secret"
    }
   
}