NUXT_UI_PRO_LICENSE=F84291FE-3C37-43EB-A588-8158C127494F
URLV1='http://127.0.0.1:80/api/v1'
STRAPIV1='http://127.0.0.1:80/media-api'
STRAPIUPLOAD='http://127.0.0.1:1337'
POSTGREST='http://127.0.0.1:80/custom-api'
LARAVEL=''
STRAPIPUBLIC='https://app.blut24.com'
STRAPITOKEN='6d039b4e71a5d0f53a14ad20b6c15cd6cfdd6496ab8ce0c2b6980173dda49fdb19ab9e80368b018b6d1ebca4f7a9db5027123738b212092480a3413a7957f07bb17c314484631462612d45fe0f1ea02b71da23e92dc440b911d6e4bc194b53818f820c6820e4996b77decc57447be858f03b58b0fb977dbc850cc6b42d368d58'
IDEMPIERETOKEN='eyJraWQiOiJpZGVtcGllcmUiLCJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJTdXBlclVzZXIiLCJBRF9DbGllbnRfSUQiOjEwMDAwMDAsIkFEX1VzZXJfSUQiOjEwMCwiQURfUm9sZV9JRCI6MTAwMDAwMCwiQURfT3JnX0lEIjowLCJBRF9MYW5ndWFnZSI6ImVuX1VTIiwiQURfU2Vzc2lvbl9JRCI6MTAwMDA4MSwiaXNzIjoiaWRlbXBpZXJlLm9yZyJ9.zVVNF1QMv-8uzVlXNENaNYM2yvEngQUBPFSLnnqeH8cn0dqrHlShov9ugPe42Gxr4jY7_cfwnUb1xWcVSHIFJg'
SENDCLOUD='https://panel.sendcloud.sc/api/v2'
SENDCLOUDPUBLICKEY=''
SENDCLOUDPRIVATEKEY=''
DHLURL='https://api-eu.dhl.com/parcel/de'
DHLKEY=''
DHLSECRET=''
DHLUSER=''
DHLPASS=''
DPDURL='https://public-ws.dpd.com/services'
DPDDELISID=''
DPDPASSWORD=''
DPDCUSTOMERNUMBER=''
DPDDEPOT=''
ELASTIC='http://127.0.0.1:9200'
ELASTIC2='http://127.0.0.1:9200'
ELASTIC3='http://127.0.0.1:9200'
ELASTIC_USER='elastic'
ELASTIC_PASS='oh30u8CVGozzp3wcElj'
ELASTICKEY='QWFuN3dKRUJ1dkpqR0hFLW56SDM6WHFTXzB0dEdUSkt0c1RBNVNrWUo0dw=='
ELASTICKEY2='LWFuUHU1RUJ1dkpqR0hFLW96QXA6TFdpcEFDMW9UUi1IUlVONUFvSFZpUQ=='
GITHASH=<GIT_HASH>
BUILDTIME=<CURRENT_DATETIME>
SOLUTIONNAME='Blut24'
COMPANYNAME='Blut24 GmbH'
AGGRID='Using_this_{AG_Grid}_Enterprise_key_{AG-086756}_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_legal@ag-grid.com___For_help_with_changing_this_key_please_contact_info@ag-grid.com___{LogYou_GmbH}_is_granted_a_{Single_Application}_Developer_License_for_the_application_{logyou}_only_for_{1}_Front-End_JavaScript_developer___All_Front-End_JavaScript_developers_working_on_{logyou}_need_to_be_licensed___{logyou}_has_not_been_granted_a_Deployment_License_Add-on___This_key_works_with_{AG_Grid}_Enterprise_versions_released_before_{22_April_2026}____[v3]_[01]_MTc3NjgxMjQwMDAwMA==8e4702249545b99c7fe255c8ad2aff09'

TARGET_DOCUMENT_TYPE_ID=1000032
TARGET_DOCUMENT_TYPE_VALUE='Standard Order'
BUSINESS_PARTNER_GROUP_ID=1000000
BUSINESS_PARTNER_GROUP_VALUE='Standard'
IS_CUSTOMER=true
PRICE_LIST_ID=1000003
PRICE_LIST_VALUE='Standard'
PURCHASE_PRICE_LIST_VERSION_ID=1000004
COUNTRY_ID=101
COUNTRY_VALUE='Germany'

# ── Marketplace Bestellabgleich (order reconciliation) ──────────────────────
# When syncing an order total to the marketplace total (Amazon/eBay) a new
# "difference adjustment" line is added (server/utils/marketplaceOrderSync.ts):
# positive price = increase order total, negative = decrease. The line uses a
# CHARGE (C_Charge_ID); its VAT rate is taken from the order's own line so the
# order GrandTotal matches the marketplace gross total.
# NOTE: ids differ per iDempiere instance — verify in dev vs prod.
AMAZON_ADJUSTMENT_CHARGE_ID=1000006
# (legacy/unused) previous product-based adjustment line M_Product_ID:
AMAZON_ADJUSTMENT_PRODUCT_ID=1002439

# ── Amazon SP-API OAuth (public developer app) ───────────────────────────────
# Merchant "Connect Amazon Account" flow on /settings/order-sources/[id]/edit.
# App = the production "logship" solution in the Amazon Developer Console.
# After every LWA secret rotation update AMAZON_LWA_CLIENT_SECRET here too,
# else NEW connects fail (existing refresh tokens keep working via Laravel).
AMAZON_APP_ID=
AMAZON_LWA_CLIENT_ID=
AMAZON_LWA_CLIENT_SECRET=
AMAZON_OAUTH_REDIRECT_URI=
# true while the app is in Draft status (appends version=beta to the consent URL —
# without it Amazon shows error MD1000). Set false once the app is published.
AMAZON_APP_IS_DRAFT=true

DEFAULT_CLIENT_ID=1000000
DEFAULT_ORG_ID=1000000

# VAPID keys for Web Push Notifications
VAPID_PUBLIC_KEY=
VAPID_PRIVATE_KEY=
VAPID_SUBJECT=mailto:support@blut24.com

# PostgreSQL Database Credentials
PG_HOST=localhost
PG_PORT=5432
PG_DATABASE=idempiere
PG_USER=adempiere
PG_PASSWORD=MyWeak_Pa55w0rd

# ── WebAuthn / YubiKey passkey login ────────────────────────────────────────
# RP_ID must match the domain serving the signin page (no scheme, no port).
# ORIGIN must include the scheme. Both are required for WebAuthn to work.
WEBAUTHN_RP_ID=app.blut24.com
WEBAUTHN_RP_NAME=Blut24
WEBAUTHN_ORIGIN=https://app.blut24.com
# 32-byte (64 hex char) AES-256-GCM key. NEVER rotate after users have
# enrolled — doing so makes their stored iDempiere passwords unreadable and
# forces every user to delete + re-register their security key.
CREDENTIAL_ENCRYPTION_KEY=9f44e56f4880ff766a1b9ef5ab52150d84e029f3daa3a4a6ff6bc33b75aa539f

# ── Synology Surveillance Station ───────────────────────────────────────────
# Used to fetch the commissioning video for a shipment (server-only).
SYNOLOGY_URL=
SYNOLOGY_USER=
SYNOLOGY_PASSWORD=
SYNOLOGY_CAMERA_IDS=2
# Time window relative to the shipment commissioning timestamp (seconds).
SYNOLOGY_PRE_SECONDS=5
SYNOLOGY_POST_SECONDS=10

# ── Staff live-chat module (WebSocket) ──────────────────────────────────────
# Kill-switch for the isolated staff-to-staff chat. false/unset = fully off
# (no socket, no UI, routes 404). Requires the nginx /chat/ws upgrade block in prod.
CHAT_ENABLED=true

# ── Sentry error + performance monitoring ───────────────────────────────────
# DSN is public by design (ships in the client bundle). EU/.de ingest = data stays in EU.
# Empty DSN disables Sentry entirely. To switch to self-hosted later: change this DSN and
# set SENTRY_URL + uncomment `sentryUrl` in nuxt.config.ts (SDK code stays the same).
SENTRY_DSN=
SENTRY_ENVIRONMENT=production
# Source-map upload (BUILD TIME only — not needed at runtime). Use the readable slugs from
# the Sentry UI (Settings), NOT the numeric ids in the DSN. SENTRY_AUTH_TOKEN is a secret —
# prefer exporting it in the CI/Jenkins job env over committing it here.
SENTRY_ORG=
SENTRY_PROJECT=
# SENTRY_AUTH_TOKEN=
# SENTRY_URL=   # self-hosted source-map upload endpoint (e.g. https://sentry.your-domain.de/)
FCM_SERVICE_ACCOUNT_JSON=''
JTL_FULFILLER_URL='https://ffn2.api.jtl-software.com/api/v1/fulfiller'
JTL_FULFILLER_TOKEN=''

# Merchant Onboarding wizard (optional; defaults 1000006 / 1000003 in nuxt.config.ts)
MERCHANT_TEMPLATE_ROLE_ID=1000006
MERCHANT_PALETT_LOCATOR_TYPE_ID=1000003

# Phone IVR (FreePBX) -> return-instructions email endpoint (server/api/ivr/*)
IVR_SHARED_SECRET=
IVR_RETURN_ADDRESS="Blut24 GmbH||"

# Promotion distribution/group-line models — disabled by default while the
# iDempiere dictionary bug ("SELECT FROM null") is unfixed. Set to true to re-enable.
#PROMOTION_MODELS_ENABLED=true
