<?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'),
    ],

    'ses' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    ],

    'slack' => [
        'notifications' => [
            'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'),
            'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'),
        ],
    ],

    'stripe' => [
        'webhook_secret' => env('STRIPE_WEBHOOK_SECRET'),
        // Stripe issues a SEPARATE signing secret per operating mode. Which of
        // the two applies is decided by App\Support\StripeWebhookSecret, not
        // here — see its header comment for why that lookup still touches the
        // database despite both values living in the .env.
        'webhook_secret_test' => env('STRIPE_WEBHOOK_SECRET_TEST'),
        // Der veröffentlichbare Schlüssel, je Modus einer. Nur der Rückfall für
        // App\Support\StripePublishableKey — der Wert selbst steht in der
        // Konsole, im Klartext, weil er öffentlich ist.
        'key' => env('STRIPE_KEY'),
        'key_test' => env('STRIPE_KEY_TEST'),
        // Secret key for the REST API. Blank means "not connected": the
        // catalogue sync says so and does nothing, rather than half-creating
        // products against an account that is not there.
        'secret' => env('STRIPE_SECRET'),
        'api_base' => env('STRIPE_API_BASE', 'https://api.stripe.com/v1'),
    ],

    /*
     * The mailbox customer replies land in.
     *
     * IMAP, not an API token: mailcow's API administers domains and mailboxes —
     * it does not read mail. Reading a mailbox is IMAP whoever runs the server,
     * and that is what this is.
     *
     * The password belongs in the vault (SecretVault 'inbound_mail.password'),
     * like every other credential that opens something.
     */
    'inbound_mail' => [
        'enabled' => env('INBOUND_MAIL_ENABLED', false),
        'host' => env('INBOUND_MAIL_HOST'),
        // 993 is IMAPS. Plain 143 is deliberately not the default: this
        // connection carries a password and the customers' own words.
        'port' => (int) env('INBOUND_MAIL_PORT', 993),
        'username' => env('INBOUND_MAIL_USERNAME'),
        'password' => env('INBOUND_MAIL_PASSWORD'),
        'folder' => env('INBOUND_MAIL_FOLDER', 'INBOX'),
        // How much of one message we are willing to read. A mail with a 40 MB
        // attachment must not become 40 MB of memory in a queue worker; the
        // body we want is in the first few hundred kilobytes.
        'max_bytes' => (int) env('INBOUND_MAIL_MAX_BYTES', 262144),
    ],

    'monitoring' => [
        'url' => env('MONITORING_API_URL'),
        'token' => env('MONITORING_API_TOKEN'),
    ],

];
