| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/client-portal-laravel/releases/20260626120707/config/ |
Upload File : |
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Mailgun, Postmark, AWS and more. This file provides the de facto
| location for this type of information, allowing packages to have
| a conventional file to locate the various service credentials.
|
*/
'postmark' => [
'key' => env('POSTMARK_API_KEY'),
],
'resend' => [
'key' => env('RESEND_API_KEY'),
'webhook_secret' => env('RESEND_WEBHOOK_SECRET'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
// Plan 273 §A — Cloudflare API access. The token is the only thing the
// app reads directly; zone discovery happens in the runbook.
'cloudflare' => [
'api_token' => env('CLOUDFLARE_API_TOKEN'),
'api_base_url' => env('CLOUDFLARE_API_BASE_URL', 'https://api.cloudflare.com/client/v4'),
],
'slack' => [
'notifications' => [
'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'),
],
],
'stripe' => [
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
'webhook_secret' => env('STRIPE_WEBHOOK_SECRET'),
'api_version' => env('STRIPE_API_VERSION', '2024-10-28.acacia'),
],
// Plan 270 §Phase 3 — separate Stripe webhook secret for the websites
// product so it can rotate independently of the portal-side secret.
'websites' => [
'stripe' => [
'webhook_secret' => env('WEBSITES_STRIPE_WEBHOOK_SECRET', env('STRIPE_WEBHOOK_SECRET')),
],
],
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'calendar_redirect' => env('GOOGLE_CALENDAR_REDIRECT_URI'),
],
/*
| ScopeForged → Switchyard contact form mirror. Every accepted contact
| submission is also forwarded to Switchyard (multi-tenant ClickUp
| lead intake at api.switchyard.philiprehberger.com) via a queue job.
| An empty SWITCHYARD_API_KEY disables forwarding (useful for local + CI).
| external_ref is `scopeforged-{submission_id}` so retries dedup cleanly.
*/
'switchyard' => [
'api_url' => env('SWITCHYARD_API_URL', 'https://api.switchyard.philiprehberger.com'),
'api_key' => env('SWITCHYARD_API_KEY'),
'source_slug' => env('SWITCHYARD_SOURCE_SLUG', 'scopeforged-form'),
],
'linkedin' => [
'client_id' => env('LINKEDIN_CLIENT_ID'),
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
'redirect_uri' => env('LINKEDIN_REDIRECT_URI'),
],
'firebase' => [
'server_key' => env('FIREBASE_SERVER_KEY'),
'sender_id' => env('FIREBASE_SENDER_ID'),
],
'nextjs' => [
'url' => env('NEXTJS_URL', 'https://philiprehberger.com'),
'revalidate_token' => env('NEXTJS_REVALIDATE_TOKEN'),
],
'github' => [
'token' => env('GITHUB_TOKEN'),
],
];