API de serviços gerenciados
Estas rotas permitem consultar o catálogo Valkey e operar um projeto gerenciado existente. A criação continua sendo feita pela rota pública de projetos com config.type_project: "valkey", config.profile e o plano correspondente.
Autenticação e permissões
Envie um token de sessão com o contexto da organização:
Authorization: Bearer <token>
x-organization-id: <organization-id>Para automações, use uma API Key da organização (x-api-key: znf_... ou Authorization: Bearer znf_...); nesse caso, x-organization-id é dispensável, porque a organização vem da própria chave. O catálogo público não exige esses cabeçalhos.
Com token de sessão, o cabeçalho de organização seleciona o contexto de cobrança e autorização quando o usuário participa de mais de uma organização. A API Key deve permanecer em um secret manager, nunca em um arquivo versionado. Para leituras, trate 404 como projeto inacessível ou inexistente sem tentar adivinhar IDs. Para rotação, mostre a resposta somente ao operador autorizado, atualize o secret da aplicação e descarte a senha da memória assim que os clientes forem reiniciados.
As operações do projeto exigem as permissões correspondentes ao recurso managed_service. Para criar Key-Value, Cache ou Queue pela rota de projetos, conceda managed_service.create em organization:*; para operar um serviço específico, use o ID do projeto:
| Operação | Permissão |
|---|---|
| Criar Key-Value, Cache ou Queue | managed_service.create em organization:* |
| Consultar estado | managed_service.status.read em managed_service:<project-id> |
| Consultar conexão mascarada | managed_service.connection.read em managed_service:<project-id> |
| Rotacionar credencial | managed_service.credentials.rotate em managed_service:<project-id> |
owner tem acesso completo na sessão de usuário. assistant, member e API Keys da organização precisam do grant específico. Os scopes managed_service.read, managed_service.version.update, managed_service.metrics.read, managed_service.lifecycle.update e managed_service.delete estão no catálogo, mas não possuem rota de API Key exposta atualmente.
Catálogo
GET /v1/managed-services/catalogNão exige autenticação. O catálogo informa a versão do Valkey, moeda, perfis, planos, preços por hora/mês/ano, benefícios, armazenamento incluído e disponibilidade pública de alta disponibilidade.
{
"status": "success",
"data": {
"engine": "valkey",
"version": "9.1.1",
"currency": "brl",
"profiles": [
{ "id": "key_value", "persistence": true },
{ "id": "cache", "persistence": false },
{ "id": "queue", "persistence": true }
],
"plans": [
{
"id": "queue-basic",
"profile": "queue",
"prices": { "hourly": 13, "monthly": 7490, "yearly": 74990 },
"features": ["1 vCPU", "1 GiB de RAM", "Alta disponibilidade com uma primária e duas réplicas"],
"included_storage_gb": 5,
"high_availability": { "key_value": true, "cache": false, "queue": true }
}
]
}
}Exemplo reduzido. high_availability indica, por perfil, se o plano tem alta disponibilidade. Os valores são centavos de BRL. Consulte o catálogo no momento da execução; não fixe preços em automações.
Consultar o estado
GET /v1/managed-services/:id/statusResposta reduzida:
{
"status": "success",
"data": {
"id": "<project-id>",
"status": "running",
"engine": "valkey",
"profile": "queue",
"version": "9.1.1",
"persistence": true,
"instances": 3
}
}Consultar a conexão
GET /v1/managed-services/:id/connectionA senha nunca é recuperada por esta rota:
{
"status": "success",
"data": {
"host": "valkey-<project-id>.managed.zenifra.com",
"port": "<porta>",
"username": "default",
"tls": true,
"connection_string": "valkeys://default:********@valkey-<project-id>.managed.zenifra.com:<porta>/0"
}
}Rotacionar a credencial
A rotação é assíncrona e idempotente. Primeiro solicite a rotação; depois acompanhe a operação até a conclusão, quando a nova conexão é devolvida.
1. Solicitar a rotação
PATCH /v1/managed-services/:id/credentials
Idempotency-Key: <chave-unica-de-16-a-200-caracteres>O cabeçalho Idempotency-Key é obrigatório e aceita de 16 a 200 caracteres (A-Z, a-z, 0-9, ., _ e -). A API responde 202:
{
"status": "accepted",
"data": {
"operation_id": "<operation-id>",
"state": "accepted"
}
}2. Acompanhar a operação
GET /v1/managed-services/:id/credential-rotations/:operationIdConsulte em intervalos limitados até state chegar a um estado final. Enquanto a rotação não termina, a resposta traz apenas operation_id, state e credential_version. Quando a rotação é concluída (state: completed), a resposta inclui a nova conexão, com a senha, e você deve atualizar o secret da aplicação antes de descartar o valor anterior:
{
"status": "success",
"data": {
"operation_id": "<operation-id>",
"state": "completed",
"credential_version": 2,
"username": "default",
"host": "valkey-<project-id>.managed.zenifra.com",
"port": "<porta>",
"tls": true,
"connection_string": "valkeys://default:<nova-senha>@valkey-<project-id>.managed.zenifra.com:<porta>/0"
}
}Mostre a resposta somente ao operador autorizado. Se a consulta ainda não trouxer a conexão, repita a chamada.
Erros comuns
| Código | Situação |
|---|---|
400 | ID, parâmetros ou Idempotency-Key inválidos ou ausentes |
401 | Sessão ou API Key ausente/inválida |
403 | Permissão da organização insuficiente (managed service access denied) |
404 | Projeto gerenciado ou operação de rotação não encontrados |
409 | Já existe uma rotação em andamento, ou o serviço está sendo excluído |
503 | Catálogo comercial ou operações de serviços gerenciados temporariamente indisponíveis |
Limites de requisições (contados por IP de origem): catálogo 60 por minuto; estado 60 por minuto; conexão 30 por minuto; solicitação de rotação 5 a cada 5 minutos; consulta da rotação 60 por minuto.
Próximos passos
Última atualização em
Bancos de dados pela API
Consulte estado e conexão de bancos PostgreSQL, MariaDB e ClickHouse, renove a senha, atualize a versão e liste aplicações vinculadas pela API.
Métricas e Logs
Consulte métricas nativas e de recursos, estados de disponibilidade e logs do seu projeto pelos endpoints estáveis da API da Zenifra.