{"catalogue":[{"id":"gcp-gemini-api","provider":"gcp","name":"Gemini API","aliases":["gemini api","generative language","generativelanguage","gemini"],"apiName":"generativelanguage.googleapis.com","capStoppable":"yes","mechanism":"Spend cap budget (one project + one service)","caveats":"In-flight requests complete; for certain (fast-estimated) services gross estimated costs excluding savings (credits not counted), otherwise actual costs inclusive of savings","sourceId":"gcpEligible"},{"id":"gcp-vertex-ai","provider":"gcp","name":"Gemini Enterprise Agent Platform / Vertex AI","aliases":["vertex ai","aiplatform","gemini enterprise agent platform","agent platform"],"apiName":"aiplatform.googleapis.com","capStoppable":"yes","mechanism":"Spend cap budget (one project + one service)","caveats":"Provisioned Throughput never halted; subscription costs out of scope","sourceId":"gcpEligible"},{"id":"gcp-cloud-run","provider":"gcp","name":"Cloud Run","aliases":["cloud run","run.googleapis"],"apiName":"run.googleapis.com","capStoppable":"yes","mechanism":"Spend cap budget (one project + one service)","caveats":"Persistent resources keep charging; in-flight completes","sourceId":"gcpEligible"},{"id":"gcp-cloud-run-functions","provider":"gcp","name":"Cloud Run functions","aliases":["cloud run functions","cloud functions","cloudfunctions"],"apiName":"cloudfunctions.googleapis.com","capStoppable":"yes","mechanism":"Spend cap budget (one project + one service)","caveats":"In-flight completes","sourceId":"gcpEligible"},{"id":"gcp-compute-engine","provider":"gcp","name":"Compute Engine","aliases":["compute engine","gce","gpu vm"],"capStoppable":"no","mechanism":"No native spend cap — budget alerts / disable-billing kill switch","caveats":"Kill switch may irretrievably delete resources","sourceId":"gcpDisable"},{"id":"gcp-cloud-storage","provider":"gcp","name":"Cloud Storage","aliases":["cloud storage","gcs","storage"],"capStoppable":"no","mechanism":"No native spend cap — budget alerts / kill switch","caveats":"Persistent storage keeps charging","sourceId":"gcpPersistent"},{"id":"gcp-bigquery","provider":"gcp","name":"BigQuery","aliases":["bigquery"],"capStoppable":"no","mechanism":"No native spend cap — budget alerts","caveats":"Not in eligible list","sourceId":"gcpEligible"},{"id":"gcp-networking","provider":"gcp","name":"Networking","aliases":["networking","network","vpc","cloud nat"],"capStoppable":"no","mechanism":"No native spend cap — budget alerts","caveats":"Not in eligible list","sourceId":"gcpEligible"},{"id":"aws-ec2","provider":"aws","name":"Amazon EC2","aliases":["ec2","elastic compute","amazon elastic compute cloud"],"capStoppable":"partial","mechanism":"Budget action STOP_EC2_INSTANCES for specific instances, or IAM/SCP deny","caveats":"Only targeted instances; budget alone does not stop spend","sourceId":"awsControls"},{"id":"aws-rds","provider":"aws","name":"Amazon RDS","aliases":["rds","relational database"],"capStoppable":"partial","mechanism":"Budget action STOP_RDS_INSTANCES","caveats":"Only targeted instances","sourceId":"awsControls"},{"id":"aws-s3","provider":"aws","name":"Amazon S3","aliases":["s3","simple storage"],"capStoppable":"partial","mechanism":"Budget action IAM/SCP deny can block new provisioning","caveats":"Existing storage still charges; no hard stop for stored data","sourceId":"awsControls"},{"id":"aws-bedrock","provider":"aws","name":"Amazon Bedrock","aliases":["bedrock"],"capStoppable":"partial","mechanism":"Budget action IAM/SCP deny","caveats":"Budget alone alerts only; data refresh up to three times a day","sourceId":"awsRefresh"},{"id":"aws-nat-gateway","provider":"aws","name":"NAT Gateway","aliases":["nat gateway","nat"],"capStoppable":"no","mechanism":"No direct budget stop — delete or IAM deny for new gateways","caveats":"Charges continue until the gateway is deleted","sourceId":"awsControls"},{"id":"aws-lambda","provider":"aws","name":"AWS Lambda","aliases":["lambda"],"capStoppable":"partial","mechanism":"Budget action IAM/SCP deny","caveats":"Budget alone does not stop spend","sourceId":"awsControls"},{"id":"azure-app-service","provider":"azure","name":"App Service","aliases":["app service","azure app service"],"capStoppable":"partial","mechanism":"Budget alert -> action group -> your automation (e.g. runbook) to stop/scale; not instant, you build it","caveats":"Budget alone does not stop resources; you build the stop/scale automation and it is not instant; PAYG has no spending limit","sourceId":"azureAutomation"},{"id":"azure-openai","provider":"azure","name":"Azure OpenAI","aliases":["azure openai","openai","azure openai service"],"capStoppable":"partial","mechanism":"Budget alert -> action group -> your automation (e.g. runbook) to stop/scale; not instant, you build it","caveats":"Budget alone does not stop resources; you build the stop/scale automation and it is not instant; cost data typically 8-24 hours","sourceId":"azureAutomation"},{"id":"azure-ai-services","provider":"azure","name":"Azure AI Services","aliases":["azure ai services","ai services","cognitive services"],"capStoppable":"partial","mechanism":"Budget alert -> action group -> your automation (e.g. runbook) to stop/scale; not instant, you build it","caveats":"Budget alone does not stop resources; you build the stop/scale automation (e.g. scale/delete deployments) and it is not instant","sourceId":"azureAutomation"},{"id":"azure-storage","provider":"azure","name":"Azure Storage","aliases":["storage","azure storage","blob storage"],"capStoppable":"no","mechanism":"Budget alerts only on PAYG","caveats":"Deployed services disabled only if spending-limit subscription hits limit","sourceId":"azureDisabled"},{"id":"azure-vm","provider":"azure","name":"Virtual Machines","aliases":["virtual machines","virtual machine","vm"],"capStoppable":"partial","mechanism":"Budget alert -> action group -> your automation (e.g. runbook) to stop/scale; not instant, you build it","caveats":"Documented scenario stops VMs via an Automation runbook at budget thresholds; not instant, you build it; spending-limit subscriptions separately disable at limit","sourceId":"azureAutomation"},{"id":"azure-container-apps","provider":"azure","name":"Container Apps","aliases":["container apps","azure container apps","container app"],"capStoppable":"partial","mechanism":"Budget alert -> action group -> your automation (e.g. runbook) to stop/scale; not instant, you build it","caveats":"Budget alone does not stop resources; you build the stop/scale automation and it is not instant","sourceId":"azureAutomation"},{"id":"azure-aks","provider":"azure","name":"Azure Kubernetes Service (AKS)","aliases":["azure kubernetes service","aks","kubernetes service"],"capStoppable":"partial","mechanism":"Budget alert -> action group -> your automation (e.g. runbook) to stop/scale; not instant, you build it","caveats":"Budget alone does not stop resources; you build the stop/scale automation and it is not instant","sourceId":"azureAutomation"}],"sources":[{"id":"gcpSpendCaps","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"The spend cap is enforced when your gross, estimated usage costs exceed 100%","label":"Google Cloud spend caps doc"},{"id":"gcpEligible","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"generativelanguage.googleapis.com aiplatform.googleapis.com run.googleapis.com cloudfunctions.googleapis.com","label":"Google Cloud spend caps eligible services"},{"id":"gcpAlerts","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"alert emails are sent when your spend exceeds 50%, 80%, and 100%","label":"Google Cloud spend caps alerts"},{"id":"gcpSpendCapConfigure","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"You can't edit an existing alerts-only budget to convert it to a","label":"Google Cloud configure a spend cap budget"},{"id":"gcpSpendCapNotifications","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"the alerts and recipients can't be customized","label":"Google Cloud spend cap notifications"},{"id":"gcpBudgetApi","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"you can view, create, and manage spend cap budgets programmatically at scale","label":"Google Cloud Billing Budget API for spend cap budgets"},{"id":"gcpGross","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"don't include savings and credits","label":"Google Cloud spend caps gross costs"},{"id":"gcpInFlight","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"Any in-flight requests of the specified service are processed to completion","label":"Google Cloud in-flight requests"},{"id":"gcpPersistent","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"Spend caps don't pause any on-going, fixed usage associated with persistent","label":"Google Cloud persistent usage"},{"id":"gcpMonthly","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"The time range budget period for a spend cap budget is limited to Monthly","label":"Google Cloud monthly period"},{"id":"gcpReseller","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"Reseller accounts are out of scope.","label":"Google Cloud reseller scope"},{"id":"gcpSubscription","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"Subscription-based costs (such as for Gemini Enterprise subscriptions)","label":"Google Cloud subscription costs"},{"id":"gcpSlightlyBelow","url":"https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps","quote":"isn't instantaneous. Consider setting your budget slightly below","label":"Google Cloud slightly below advice"},{"id":"gcpBlogPT","url":"https://cloud.google.com/blog/topics/cost-management/google-cloud-spend-caps-now-generally-available","quote":"Provisioned Throughput is never halted","label":"Google Cloud spend caps GA blog"},{"id":"gcpBlogReset","url":"https://cloud.google.com/blog/topics/cost-management/google-cloud-spend-caps-now-generally-available","quote":"Enforced spend caps will automatically reset, and blocked services will seamlessly resume at the beginning of the next month","label":"Google Cloud auto reset blog"},{"id":"gcpDisable","url":"https://cloud.google.com/billing/docs/how-to/disable-billing-with-notifications","quote":"Resources might be irretrievably deleted","label":"Google Cloud disable billing warning"},{"id":"gcloudCreate","url":"https://cloud.google.com/sdk/gcloud/reference/billing/budgets/create","quote":"--budget-amount","label":"gcloud billing budgets create"},{"id":"awsControls","url":"https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-controls.html","quote":"Your available actions include applying an IAM policy or a service control policy (SCP). They also include targeting specific Amazon EC2 or Amazon RDS instances","label":"AWS Budgets actions"},{"id":"awsActionCli","url":"https://docs.aws.amazon.com/cli/latest/reference/budgets/create-budget-action.html","quote":"STOP_EC2_INSTANCES STOP_RDS_INSTANCES APPLY_IAM_POLICY APPLY_SCP_POLICY","label":"AWS create-budget-action CLI"},{"id":"awsRefresh","url":"https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html","quote":"AWS Budgets information is updated up to three times a day","label":"AWS Budgets refresh cadence"},{"id":"azureBudgets","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets","quote":"budget","label":"Azure Cost Management budgets tutorial"},{"id":"azureSpendingLimit","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/spending-limit","quote":"The spending limit in Azure prevents spending over your credit amount","label":"Azure spending limit"},{"id":"azureSpendingPayg","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/spending-limit","quote":"The spending limit isn't available for subscriptions with commitment plans or with pay-as-you-go pricing","label":"Azure spending limit PAYG exclusion"},{"id":"azureDisabled","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/spending-limit","quote":"the services that you deployed are disabled for the rest of that billing period","label":"Azure spending limit hit"},{"id":"azureLatency","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/understand-cost-mgt-data","quote":"cost and usage data is typically available in Cost Management within 8-24 hours","label":"Azure cost data latency"},{"id":"azureAutomation","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/cost-management-budget-scenario","quote":"You can create a budget in Azure Cost Management and link it to an Azure Automation runbook to automatically stop resources when a specified threshold is reached.","label":"Azure budget scenario — action group to runbook stops VMs"},{"id":"azureActionGroup","url":"https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets","quote":"Action Groups can also be used to trigger automation such as Azure Functions or Webhooks.","label":"Azure budgets — action groups trigger automation"}]}