Atualizar Plano do Projeto
Altera o plano do projeto para um novo plano.
Permissões necessárias
A alteração exige project.plan.update em project:<project-id>. owner tem acesso completo; assistant, member e API Keys da organização precisam desse grant. Se a alteração de plano envolver dados de cobrança, consulte também project.billing.read quando a automação precisar ler custos.
PATCH /v1/project/:id/planLimite de requisições: 5 por minuto (contado por IP de origem).
Parâmetros de Path
| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID do projeto |
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
x-api-key ou Authorization | Sim | API Key da organização ou token de usuário |
x-organization-id | Com token de usuário | Organização ativa do projeto. Dispensável com API Key da organização |
Content-Type: application/json | Sim | Necessário por haver body JSON |
Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
plan | string | Sim | Identificador do plano |
Planos Disponíveis
| Plano | Descrição |
|---|---|
static | Plano estático |
basic | Plano básico |
premium | Plano premium |
premium_plus | Plano premium plus |
business | Plano business |
deep_learning_basic | Deep Learning básico (com GPU) |
deep_learning_premium | Deep Learning premium (com GPU) |
db-starter, db-basic, db-premium, db-enterprise | Planos de bancos de dados e Key-Value |
Os planos free e db-free e os planos de Analytics, Cache e Queue não são aceitos nesta rota. Em projetos Key-Value, a troca só é aceita entre planos com a mesma quantidade de instâncias e o mesmo armazenamento cobrado; nos demais casos a API responde 409.
Exemplo
{
"plan": "premium"
}Resposta
{
"status": "success",
"message": "updated with success"
}Erros
| Status | Quando ocorre |
|---|---|
400 | Corpo inválido (por exemplo, plan ausente, free, db-free ou fora da lista aceita) |
404 | Projeto não encontrado, plano inexistente ou projeto já está com o plano informado (the project already setted with this plan) |
409 | O projeto está no plano free ou db-free; o projeto tem contrato mensal ou anual (cant change plan with contract); o projeto é um Job agendado, que não aceita troca de plano; ou não há capacidade disponível no novo plano (INSUFFICIENT_PLAN_CAPACITY) |
503 | A capacidade do plano está temporariamente indisponível (PLAN_CAPACITY_TEMPORARILY_UNAVAILABLE); tente novamente em instantes |
Renovação automática do contrato
Liga ou desliga a renovação automática de um projeto com contrato mensal ou anual.
PATCH /v1/project/:id/renew-automatic-contractAceita sessão de usuário ou API Key da organização e exige project.plan.update em project:<project-id>. Limite de requisições: 5 por minuto (contado por IP de origem).
Body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
renew_automatic_contract | boolean | Sim | true para renovar automaticamente ao fim do contrato; false para não renovar |
{
"renew_automatic_contract": false
}Resposta
{
"status": "success",
"message": "renew automatic contract updated with success"
}Erros
| Status | Quando ocorre |
|---|---|
400 | Corpo inválido, ou o projeto usa cobrança por hora, que não tem renovação de contrato |
404 | Projeto não encontrado |
Exemplos
curl -X PATCH "https://api.zenifra.com/v1/project/507f1f77bcf86cd799439011/plan" \
-H "x-api-key: sua-api-key" \
-H "x-organization-id: sua-organization-id" \
-H "Content-Type: application/json" \
-d '{"plan": "premium"}'Python
import requests
API_KEY = "sua-api-key"
ORGANIZATION_ID = "sua-organization-id"
PROJECT_ID = "507f1f77bcf86cd799439011"
response = requests.patch(
f"https://api.zenifra.com/v1/project/{PROJECT_ID}/plan",
headers={"x-api-key": API_KEY, "x-organization-id": ORGANIZATION_ID},
json={"plan": "premium"}
)
print(response.json())Observações
- A mudança de plano pode levar alguns minutos para ser aplicada
- A troca de plano só é aceita em projetos com cobrança por hora; a cobrança passa a usar o preço do novo plano a partir da troca
- Ao mudar para um plano sem auto-scaling ou sem health check, esses recursos são desligados automaticamente
- Planos com GPU (
deep_learning_basic,deep_learning_premium) têm preços próprios; consulteGET /v1/project/plans
Última atualização em