The bicep template that deploys your customer-stack lives in our repo at infra/customer-stack.bicep and is also bundled in each Marketplace plan zip as mainTemplate.json. These parameters are typically set by the wizard or our orchestrator; you usually don’t set them by hand.
Customer-supplied (via wizard)
| Param | Type | Default | Notes |
|---|
stackName | string | required | 3-12 lowercase alphanumeric. Becomes the suffix on resource names. |
location | string | resourceGroup().location | Azure region. |
allowedOrigins | array | ["*"] | CORS allowlist. |
systemPrompt | string | "" | Optional AI system prompt. |
adminKey | secure string | "" (auto-generated if empty) | Dashboard admin key. |
pricePerInputUsdPerM | string | "0.25" | Token pricing override (dashboard projection only). |
pricePerOutputUsdPerM | string | "2.00" | Token pricing override (dashboard projection only). |
Resource-tier levers (via wizard, defaulted per plan)
These set the cost-bearing SKUs. The wizard’s Tiers & cost step pre-selects each to the plan’s recommendation; you can override before deploying. See Resource tiers & sizing.
| Param | Type | Start | Growth | Professional | Notes |
|---|
signalrSku | string | Free_F1 | Free_F1 | Standard_S1 | Free_F1 ($0, 20 connections) or Standard_S1 (~$49.73/mo, 1,000 connections + SLA). |
openAiCapacity | int | 10 | 30 | 60 | gpt-5-mini throughput ceiling in K-TPM. A ceiling only — no idle cost. |
functionsAlwaysReady | int | 0 | 0 | 1 | Always-ready Flex instances (lower cold-start latency). 0 = scale-to-zero. |
cosmosAutoscaleMaxThroughput | int | 0 | 0 | 0 | 0 = Serverless. >0 = provisioned autoscale RU/s (multiple of 1000). Choose at initial deploy. |
Per-plan (baked into the marketplace zip)
| Param | Notes |
|---|
planId | start | growth | professional |
seatQuantity | 3, 7, or 15 |
planDisplayName | "Start" etc. |
marketplacePlanId | pocai-start etc. |
upgradeUrl | Deep link to the Marketplace upgrade flow |
ISV-supplied (baked into the marketplace zip)
| Param | Notes |
|---|
marketplaceSubscriptionId | [concat(subscription().subscriptionId, '/', resourceGroup().name)] |
deploymentId | [deployment().name] |
isvDeployStatusUrl | Our /api/deploy-status endpoint |
isvSeatReportUrl | Our /api/seat-report endpoint |
isvAppId | Our AAD application id |