Parar Projeto
Pausa a execução do projeto.
Permissões necessárias
Parar o projeto exige project.stop em project:<project-id>. Retomar exige project.resume no mesmo projeto. owner tem acesso completo; assistant, member e API Keys da organização precisam do scope da ação.
PATCH /v1/project/:id/stopParâ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 |
Resposta
{
"status": "success",
"message": "stopped project with success"
}Só um projeto em execução (running) pode ser parado. Ao parar:
- a aplicação fica com 0 instâncias e deixa de ser acessível;
- no pagamento por hora, a cobrança de processamento é fechada no momento da parada e não há cobrança de processamento enquanto o projeto estiver parado; o armazenamento persistente continua sendo cobrado;
- em contratos mensais e anuais, parar não altera o valor do contrato;
- a Zenifra guarda a quantidade de instâncias que o projeto tinha, usada na retomada.
Erros
| Status | Código | Quando ocorre |
|---|---|---|
404 | — | Projeto não encontrado |
409 | PROJECT_OPERATION_IN_PROGRESS | Outra operação está em andamento no projeto, como outra parada, uma retomada, uma troca de plano, uma alteração de armazenamento ou a renovação de credenciais |
409 | PROJECT_STATE_CONFLICT | O projeto não está em execução (por exemplo, já está parado) |
Limite de requisições: 30 por minuto (contado por IP de origem).
Retomar Projeto
Retoma a execução de um projeto que está parado.
PATCH /v1/project/:id/resumeA retomada é assíncrona: a API aceita o pedido e o projeto passa para o status resuming até voltar a running. Consulte GET /v1/project/:id para acompanhar.
Só um projeto parado (stopped) pode ser retomado. Ele volta com a quantidade de instâncias que tinha no momento da parada. Aplicações HTTP com auto-scaling voltam com o mínimo configurado, e bancos Analytics e serviços Valkey voltam com as instâncias definidas pelo plano. No pagamento por hora, a cobrança de processamento recomeça na retomada.
Parâmetros de Path
| Parâmetro | Tipo | Descrição |
|---|---|---|
id | string | ID do projeto |
Resposta
{
"status": "success",
"message": "project resume accepted"
}Erros
| Status | Código | Quando ocorre |
|---|---|---|
402 | ORGANIZATION_BILLING_BLOCKED | A organização está bloqueada por pagamentos pendentes |
404 | — | Projeto não encontrado |
409 | PROJECT_STATE_CONFLICT | O projeto não está parado (por exemplo, já está em execução) |
409 | PROJECT_OPERATION_IN_PROGRESS | A retomada ou outra operação já está em andamento no projeto |
409 | INSUFFICIENT_PLAN_CAPACITY | A capacidade solicitada está indisponível no plano |
409 | FREE_PLAN_INSTANCE_LIMIT_REACHED | O limite de instâncias do plano Free foi atingido |
503 | PLAN_CAPACITY_TEMPORARILY_UNAVAILABLE | A capacidade do projeto está temporariamente indisponível; tente novamente em instantes |
Limite de requisições: 30 por minuto (contado por IP de origem).
Conflitos e bloqueio de cobrança
As operações que mudam o estado ou a cobrança do projeto (parar, retomar, excluir, trocar de plano, alterar instâncias e alterar armazenamento) são executadas uma de cada vez por projeto. Quando a operação não pode ser feita, a API recusa o pedido antes de qualquer alteração ou cobrança, com um corpo padronizado:
{
"status": "failed",
"code": "PROJECT_OPERATION_IN_PROGRESS",
"message": "Another operation is in progress for this project"
}| Status | code | message | O que fazer |
|---|---|---|---|
409 | PROJECT_OPERATION_IN_PROGRESS | Another operation is in progress for this project | Espere a operação atual terminar e tente de novo |
409 | PROJECT_STATE_CONFLICT | This operation is not available while the project is in its current state | Confira o status em GET /v1/project/:id; por exemplo, retome o projeto antes de alterar instâncias |
402 | ORGANIZATION_BILLING_BLOCKED | This organization has pending payments | Quite os valores em aberto em Gestão de pagamentos |
422 | PROJECT_OPERATION_NOT_SUPPORTED | This operation is not available for this project type | A operação não existe para esse tipo de projeto |
Uma organização bloqueada por pagamentos pendentes não pode aumentar o gasto: criar projetos, retomar, trocar para um plano maior, aumentar instâncias e aumentar armazenamento respondem 402. Parar, excluir, reduzir instâncias e trocar para um plano menor continuam disponíveis.
Repetir uma parada ou uma exclusão depois de uma falha de rede não gera cobrança em dobro: o período cobrado é fechado uma única vez.
Exemplos
Parar Projeto
curl -X PATCH "https://api.zenifra.com/v1/project/507f1f77bcf86cd799439011/stop" \
-H "x-api-key: sua-api-key" \
-H "x-organization-id: sua-organization-id"Retomar Projeto
curl -X PATCH "https://api.zenifra.com/v1/project/507f1f77bcf86cd799439011/resume" \
-H "x-api-key: sua-api-key" \
-H "x-organization-id: sua-organization-id"Python
import requests
API_KEY = "sua-api-key"
ORGANIZATION_ID = "sua-organization-id"
PROJECT_ID = "507f1f77bcf86cd799439011"
headers = {"x-api-key": API_KEY, "x-organization-id": ORGANIZATION_ID}
# Parar projeto
stop_response = requests.patch(
f"https://api.zenifra.com/v1/project/{PROJECT_ID}/stop",
headers=headers
).json()
print(stop_response)
# Retomar projeto
resume_response = requests.patch(
f"https://api.zenifra.com/v1/project/{PROJECT_ID}/resume",
headers=headers
).json()
print(resume_response)Casos de Uso
- Manutenção: Pause o projeto durante manutenção programada
- Economia: Pause projetos que não precisam estar rodando continuamente
- Testes: Pause ambientes de teste quando não estiverem em uso
Última atualização em