min_plan que você declarou. Qualquer plano pode usar um template, desde que atenda aos dois. Você não escreve a parte calculada; a plataforma a deriva do manifesto.
O que é calculado
A API calcula sobre o catálogo de planos, nunca a partir de uma lista fixa, então continua correta quando os planos mudam. Para saber mais sobre os planos, veja Planos e limites.
Serviços desativados por uma resposta não entram na conta, então um template cujo Postgres é opcional pede menos memória quando o usuário escolhe SQLite. Um template com uma ligação que não está disponível pelos endereços públicos fica fora da galeria pública.
Vagas de imagem
Um template de imagem usa uma vaga por imagem distinta que o usuário executa. Serviços que compartilham o mesmosource.image e o mesmo source.context (o mesmo build) compartilham uma vaga; o mesmo source.image com outra pasta context é outra imagem e outra vaga. Três apps do mesmo template usam uma, e uma nova versão do template mantém a mesma vaga. A vaga é liberada quando o último app que usa a imagem deixa de existir. Um template code não usa nenhuma. No seu próprio template privado, as imagens são suas e já ocupam as suas vagas.
Por que um template não se encaixa
Quando um template não se encaixa em uma conta, o card e a página dizem o motivo. Os motivos são:
A mesma lista é retornada pela API para cada template quando você está autenticado, em
account.reasons.
min_plan
min_plan é uma decisão comercial do autor, por exemplo “só a partir do Enterprise-28”. É o id do plano, não o nome exibido no dashboard:
economy, pro, scale, intermediary e enterprise-<size>. Um valor que não seja o id de um plano existente é recusado com invalid_plan pela CLI, pelo editor, pela API e pelo CI do repositório público, para que um template nunca aponte silenciosamente para um plano que foi renomeado. Use com moderação: se os serviços já forçam um plano, o min_plan é redundante.
Veja o resultado antes de publicar
vertra template validate e POST /v1/templates/validate retornam o plano calculado para o seu manifesto (aqui, para o bot inicial):
required_plan é o menor plano que atende aos requisitos e ao min_plan, e ram_min_total é a soma da memória mínima de todos os serviços em MB. Os dois são null quando o manifesto é inválido demais para calcular. Veja Valide e teste.
As configurações de deploy nunca concedem mais
O blocodeploy de um serviço só pode restringir comportamento, nunca liberar algo que o plano não inclui. Um manifesto que pede blue-green em um plano sem ele continua rodando sem ele. Veja Configurações de deploy.