Banco de Dados
Devolve o catálogo Dispack de motores disponíveis (versões, portas, volumes), sugestões aleatórias de nome/senha e, por motor, vars com as chaves de ambiente obrigatórias/opcionais e o mapa fromSuggestions (suggested* → env) para montar o body do POST /database sem hardcodar nomes.
Presets carregados com sucesso
Erro de autenticação
GET /v2/database/presets HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"data": {
"databases": [
{
"type": "postgres",
"versions": [
"16",
"17"
],
"extensions": [
"pgvector"
],
"defaultPort": 5432,
"suggestedDisplayName": "Nova base Brisa",
"suggestedDbName": "brisa-aurora",
"suggestedUser": "brisa",
"suggestedPassword": "a1b2c3d4e5f6",
"vars": {
"required": [
"POSTGRES_DB",
"POSTGRES_USER",
"POSTGRES_PASSWORD"
],
"optional": [],
"fromSuggestions": {
"POSTGRES_DB": "suggestedDbName",
"POSTGRES_USER": "suggestedUser",
"POSTGRES_PASSWORD": "suggestedPassword"
}
}
}
]
}
}Regenera suggestedDisplayName / suggestedDbName / suggestedUser sem recarregar o catálogo completo. Não devolve password.
Motor (postgres, mysql, mariadb, mongodb, redis, valkey, clickhouse)
Sugestões geradas
Tipo inválido
Erro de autenticação
GET /v2/database/presets/random-names HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"data": {
"suggestedDisplayName": "Nova base Orion",
"suggestedDbName": "orion-nova",
"suggestedUser": "orion"
}
}Lista bancos do utilizador e bancos ligados a projects de equipas onde é membro. Segredos (vars / varsEncrypted) são omitidos.
Bancos listados com sucesso
Erro de autenticação
GET /v2/database HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"data": [
{
"_id": "1714500000365db",
"userID": "123456789012345678",
"displayName": "My Postgres staging",
"projectID": null,
"db": {
"type": "postgres",
"version": "17",
"port": 5432
},
"clusterName": "BOLT",
"totalRam": 512,
"hostname": "pedro042",
"addedAtTimestamp": 1714500000000
}
]
}Inicia o provisionamento assíncrono de um banco gerenciado. Devolve HTTP 200 de imediato com o novo id. Consulte GET /database/{dbID} até o recurso existir e estar online. Plano mínimo Diamond (4). projectID opcional cobra a quota do dono do project e exige acesso de admin.
Nome amigável (obrigatório)
RAM em MB (mínimo 100)
Projecto opcional a vincular
Criação iniciada
Corpo inválido (campos em falta, varsEncrypted na criação, vars inválidas)
Erro de autenticação
Plano ou quota de RAM insuficiente
Já existe outro processo em execução para este recurso
Sem cluster disponível ou hostnames esgotados
POST /v2/database HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 178
{
"displayName": "My Postgres staging",
"db": {
"type": "postgres",
"version": "17"
},
"vars": {
"POSTGRES_DB": "app_db",
"POSTGRES_USER": "app_rw",
"POSTGRES_PASSWORD": "secret"
},
"totalRam": 512
}{
"status": "ok",
"id": "1714500000365db",
"message": "A base de dados está a ser criada. Acompanhe o progresso consultando o recurso."
}Devolve o estado ao vivo do container e vars em texto plano (desencriptadas). Mesmo modelo de acesso do dashboard: dono ou membro de equipa com acesso ao project.
ID do banco
Estado da base de dados carregado
Erro de autenticação
Sem acesso a este banco
Banco não encontrado
GET /v2/database/{dbID} HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"message": "Estado da base de dados carregado.",
"database": {
"_id": "1714500000365db",
"projectID": null,
"clusterName": "BOLT",
"hostname": "pedro042",
"displayName": "My Postgres staging",
"dbType": "postgresql",
"dbEngine": "postgres",
"dbVersion": "17",
"extensions": [],
"totalRam": 512,
"owner": {
"id": "123456789012345678",
"username": "dev_user",
"avatar": null
},
"perms": null,
"vars": {
"POSTGRES_DB": "app_db",
"POSTGRES_USER": "app_rw",
"POSTGRES_PASSWORD": "***"
},
"online": true,
"exists": true,
"totalUsedRam": 187.3,
"last_restart": "2 minutes",
"dataVolumeSizeHuman": "1.2G"
}
}Remove permanentemente o registo e a infraestrutura. Exige delete_app.
ID do banco
Banco eliminado
Erro de autenticação
Sem permissão para eliminar
Banco não encontrado
Já existe outro processo em execução
DELETE /v2/database/{dbID} HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"message": "Sua aplicação foi removida."
}Atualiza displayName, hostname e/ou totalRam. Exige commit_app; alterar totalRam também exige edit_ram. Hostname exige plano do dono > 3. Alterar hostname ou RAM dispara rebuild assíncrono da infra (rebuilding=true + opId); consulte GET /database/{dbID}.
ID do banco
Hostname privado (1–2 segmentos a-z0-9_ ligados por -, máx. 25)
Banco atualizado (opcionalmente em rebuild)
Corpo inválido ou nenhum campo para atualizar
Erro de autenticação
Sem permissão ou plano insuficiente para hostname
Banco não encontrado
Hostname já em uso
Já existe outro processo em execução
PATCH /v2/database/{dbID} HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 44
{
"displayName": "Staging DB",
"totalRam": 1024
}{
"status": "ok",
"message": "Base de dados atualizada com sucesso.",
"rebuilding": false,
"data": {
"_id": "1714500000365db",
"displayName": "Staging DB",
"totalRam": 1024,
"hostname": "pedro042"
}
}Inicia o container do banco. Exige start_app. Sujeito a verificações de RAM/slot.
ID do banco
Iniciado (ou já em execução com status error)
Erro de autenticação ou falha ao iniciar
Sem permissão ou limite de recursos
Banco não encontrado
Já existe outro processo em execução
PUT /v2/database/{dbID}/start HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"message": "Seu aplicativo foi conectado."
}Para o container do banco. Exige stop_app.
ID do banco
Parado (ou já parado com status error)
Erro de autenticação
Sem permissão para parar
Banco não encontrado
Já existe outro processo em execução
PUT /v2/database/{dbID}/stop HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"message": "Seu aplicativo foi desligado."
}Reinicia o container do banco. Exige restart_app.
ID do banco
Reiniciado com sucesso
Erro de autenticação ou falha ao reiniciar
Sem permissão ou limite de recursos
Banco não encontrado
Já existe outro processo em execução
PUT /v2/database/{dbID}/restart HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"message": "Sua aplicação foi reiniciada."
}Cria um backup do banco gerenciado (síncrono). Exige backup_app. Devolve metadados de download; chaves S3 são removidas da resposta.
ID do banco
trueBackup criado
Backup não suportado ou falhou
Erro de autenticação
Sem permissão para backup
Banco não encontrado
Já existe outro processo em execução
Banco offline
POST /v2/database/{dbID}/backup HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 13
{
"gzip": true
}{
"status": "ok",
"data": {
"backupId": 20240101120000,
"downloadUrl": "https://example.s3.amazonaws.com/..."
}
}Lista backups no S3 deste banco. Exige status_app.
ID do banco
Tamanho da página (1–1000, default 50). Alias maxKeys também aceite.
Token de continuação de uma resposta anterior
minimal (default) ou full
Backups listados
Erro de autenticação
Sem permissão
Banco não encontrado
GET /v2/database/{dbID}/backups HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"data": {
"backups": [
{
"backupId": 20240101120000,
"createdAt": "2024-01-01T12:00:00.000Z",
"size": 1048576
}
],
"nextCursor": null
}
}Devolve uma URL pré-assinada do dump. Exige backup_app.
ID do banco
ID do backup
Validade da URL em dias (1–14)
URL de download gerada
Pedido inválido
Erro de autenticação
Sem permissão
Banco ou backup não encontrado
GET /v2/database/{dbID}/backups/{backupId}/download HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"data": {
"downloadUrl": "https://example.s3.amazonaws.com/...",
"expiresAt": "2024-01-08T12:00:00.000Z"
}
}Cria um novo banco gerenciado a partir de um backup (assíncrono). Exige backup_app no banco de origem. Plano mínimo Diamond (4). Devolve o novo id de imediato; consulte GET /database/{id}.
ID do banco de origem (dono do backup)
Mutuamente exclusivo com vars
Restauro iniciado
Corpo inválido
Erro de autenticação
Sem permissão ou plano/quota insuficiente
Banco de origem ou projeto não encontrado
Já existe outro processo em execução
POST /v2/database/{dbID}/restore HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 76
{
"backupId": 20240101120000,
"totalRam": 512,
"displayName": "Restored Postgres"
}{
"status": "ok",
"id": "1714500000999db",
"message": "O restauro a partir do backup foi iniciado. Acompanhe o progresso consultando o recurso."
}Devolve logs recentes do container (mesmo formato dos logs de app). Exige logs_app.
ID do banco
Logs carregados
Erro de autenticação
Sem permissão para ler logs
Banco não encontrado
GET /v2/database/{dbID}/logs HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok",
"message": "Os registros de seus aplicativos foram carregados",
"app": {
"_id": "1714500000365db",
"terminal": {
"big": "...",
"small": "...",
"url": null
}
}
}Apaga os logs guardados do banco. Exige logs_app.
ID do banco
Logs eliminados
Erro de autenticação
Sem permissão para eliminar logs
Banco não encontrado
DELETE /v2/database/{dbID}/logs HTTP/1.1
Host: api.discloud.app
api-token: YOUR_API_KEY
Accept: */*
{
"status": "ok"
}Última atualização