> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cubehosting.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Desligar o acesso externo

> O certificado de cliente do banco para de funcionar na hora.

O certificado para na hora e as conexões de fora abertas com ele caem. Os projetos da sua conta seguem conectando pelo endereço interno. Para ligar de novo, gere outro certificado no painel, na página do banco (veja [Acesso externo](/hosting/databases#acesso-externo)).

## Erros comuns

| Código                                                             | HTTP | O que fazer                                                                    |
| ------------------------------------------------------------------ | ---- | ------------------------------------------------------------------------------ |
| [`not_found`](/errors#param-not-found)                             | 404  | O banco não existe ou não é da sua conta.                                      |
| [`insufficient_permission`](/errors#param-insufficient-permission) | 403  | Use uma chave de leitura e escrita.                                            |
| [`server_unavailable`](/errors#param-server-unavailable)           | 503  | Tente de novo em instantes: o certificado para assim que o servidor responder. |

Todos os códigos, com o formato do erro, em [Códigos de erro](/errors).


## OpenAPI

````yaml DELETE /databases/{id}/external-access
openapi: 3.1.0
info:
  title: API da Cube Hosting
  version: 1.0.0
  description: >-
    Hospede bots de Discord, sites e APIs em Node.js e Python: envie o .zip,
    inicie, pare, reinicie, leia logs e métricas, cuide das variáveis de
    ambiente, faça e baixe backups, volte para uma versão anterior, crie bancos
    de dados (PostgreSQL, MySQL, MongoDB e Redis), guarde arquivos privados no
    Blob, use um domínio seu nos sites e veja o uso do plano. Para agentes de
    IA, o servidor MCP da conta (`POST https://app.cubehosting.com.br/api/mcp`,
    JSON-RPC, com a mesma chave) está em
    https://docs.cubehosting.com.br/account-mcp.
  contact:
    name: Cube Hosting
    url: https://discord.gg/pv6D9tUsDV
servers:
  - url: https://app.cubehosting.com.br/api
security:
  - bearerAuth: []
tags:
  - name: Projetos
  - name: Controle
  - name: Logs e métricas
  - name: Variáveis de ambiente
  - name: Backups
  - name: Versões dos envios
  - name: Bancos de dados
  - name: Blob
  - name: Domínios
  - name: Templates
  - name: Avisos
  - name: Conta
paths:
  /databases/{id}/external-access:
    delete:
      tags:
        - Bancos de dados
      summary: Desligar o acesso externo
      description: >-
        Desliga o [acesso externo](/hosting/databases#acesso-externo) do banco:
        o certificado de cliente para de funcionar na hora, e as conexões de
        fora abertas com ele caem. Os projetos da conta seguem conectando pelo
        endereço interno. Já desligado, responde igual. Ligar e gerar um
        certificado é só pelo painel (a chave e a senha do `.p12` aparecem uma
        vez).
      operationId: disableDatabaseExternalAccess
      parameters:
        - $ref: '#/components/parameters/DatabaseId'
      responses:
        '200':
          description: O banco, com o acesso externo desligado.
          content:
            application/json:
              schema:
                type: object
                required:
                  - database
                properties:
                  database:
                    $ref: '#/components/schemas/Database'
              example:
                database:
                  id: 01J9A2C4E6G8J0K2M4P6R8T0V2
                  name: loja-db
                  engine: postgres
                  engineName: PostgreSQL
                  host: loja-db
                  port: 5432
                  status: running
                  memoryMb: 512
                  usage:
                    memoryMb: 61
                  disk:
                    usedMb: 47
                    limitMb: 2048
                  externalAccess:
                    isAvailable: true
                    isEnabled: false
                    host: db.cubehost.dev
                    certificate: null
                  startedAt: '2026-09-28T12:26:03.000Z'
                  createdAt: '2026-09-28T12:26:00.000Z'
                  updatedAt: '2026-09-28T12:26:01.000Z'
        '401':
          description: Chave ausente, inválida ou revogada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalid_api_key:
                  summary: invalid_api_key
                  value:
                    status: error
                    code: invalid_api_key
                    message: >-
                      Chave de API inválida ou revogada. Confira o cabeçalho
                      "Authorization: Bearer <chave>" ou crie outra em Chaves de
                      API no painel.
        '403':
          description: A chave é só de leitura.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                insufficient_permission:
                  summary: insufficient_permission
                  value:
                    status: error
                    code: insufficient_permission
                    message: >-
                      Esta chave é só de leitura. Para enviar, iniciar, parar,
                      reiniciar, mexer nas variáveis, fazer e baixar backups,
                      baixar e voltar versões dos envios, criar, ligar, desligar
                      e ver a senha dos bancos de dados ou enviar e apagar
                      arquivos do Blob, crie uma chave de leitura e escrita no
                      painel.
        '404':
          description: >-
            O banco não existe ou não é da sua conta (a mesma resposta para os
            dois).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_found:
                  summary: not_found
                  value:
                    status: error
                    code: not_found
                    message: Banco de dados não encontrado.
        '429':
          description: Limite de pedidos. Traz o cabeçalho `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                rate_limit_exceeded:
                  summary: rate_limit_exceeded
                  value:
                    status: error
                    code: rate_limit_exceeded
                    message: >-
                      A sua conta passou do limite da API do plano Free: 10
                      pedidos por minuto. Espere 42 s e tente de novo.
                too_many_attempts:
                  summary: too_many_attempts
                  value:
                    status: error
                    code: too_many_attempts
                    message: Muitas tentativas. Tente de novo em 15 minutos.
        '503':
          description: >-
            O servidor dos bancos não respondeu a tempo. Tente de novo: o
            certificado para assim que ele responder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                server_unavailable:
                  summary: server_unavailable
                  value:
                    status: error
                    code: server_unavailable
                    message: >-
                      O servidor dos projetos não respondeu. Tente de novo em
                      instantes.
      x-codeSamples:
        - lang: bash
          label: curl
          source: >-
            curl -X DELETE
            https://app.cubehosting.com.br/api/databases/$DATABASE_ID/external-access
            \
              -H "Authorization: Bearer $CUBE_API_KEY"
        - lang: javascript
          label: Node.js
          source: >-
            const API = 'https://app.cubehosting.com.br/api';

            const headers = { Authorization: `Bearer
            ${process.env.CUBE_API_KEY}` };


            const res = await
            fetch(`${API}/databases/${process.env.DATABASE_ID}/external-access`,
            {
              method: 'DELETE',
              headers,
            });

            const { database } = await res.json();

            console.log(database.externalAccess.isEnabled); // false
        - lang: python
          label: Python
          source: >-
            import os

            import requests


            API = "https://app.cubehosting.com.br/api"

            headers = {"Authorization": f"Bearer {os.environ['CUBE_API_KEY']}"}


            r =
            requests.delete(f"{API}/databases/{os.environ['DATABASE_ID']}/external-access",
            headers=headers, timeout=30)

            r.raise_for_status()

            print(r.json()["database"]["externalAccess"]["isEnabled"])
components:
  parameters:
    DatabaseId:
      name: id
      in: path
      required: true
      description: >-
        O ID do banco de dados (26 caracteres), de [Listar bancos de
        dados](/api-reference/databases/list).
      schema:
        type: string
        pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
        example: 01J9A2C4E6G8J0K2M4P6R8T0V2
  schemas:
    Database:
      type: object
      description: 'Um banco de dados da conta: PostgreSQL, MySQL, MongoDB ou Redis.'
      required:
        - id
        - name
        - engine
        - engineName
        - host
        - port
        - status
        - memoryMb
        - usage
        - disk
        - externalAccess
        - startedAt
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
          description: ID do banco, 26 caracteres.
        name:
          type: string
          pattern: ^[a-z][a-z0-9-]{1,30}[a-z0-9]$
          description: Nome do banco, que é também o endereço interno.
        engine:
          type: string
          enum:
            - postgres
            - mysql
            - mongodb
            - redis
        engineName:
          type: string
          description: '`PostgreSQL`, `MySQL`, `MongoDB` ou `Redis`.'
        host:
          type: string
          description: >-
            O endereço que os projetos da conta usam (igual ao `name`). Só vale
            de dentro da conta.
        port:
          type: integer
          description: 5432 (PostgreSQL), 3306 (MySQL), 27017 (MongoDB) ou 6379 (Redis).
        status:
          type: string
          enum:
            - creating
            - starting
            - running
            - restarting
            - restoring
            - stopped
            - error
          description: >-
            `starting`: subiu e ainda não aceita conexões. `restoring`: um
            backup está sendo restaurado. `error`: deveria estar no ar e não
            está (a Cube tenta subir de novo a cada 30 s).
        memoryMb:
          type: integer
          description: Memória reservada no plano.
        usage:
          oneOf:
            - type: object
              required:
                - memoryMb
              properties:
                memoryMb:
                  type: integer
            - type: 'null'
          description: A memória em uso agora. `null` parado ou quando não dá para saber.
        disk:
          type: object
          required:
            - usedMb
            - limitMb
          properties:
            usedMb:
              type:
                - integer
                - 'null'
              description: Espaço usado. `null` quando não dá para saber agora.
            limitMb:
              type: integer
              description: Espaço do banco (2048).
        externalAccess:
          type: object
          description: >-
            O [acesso externo](/hosting/databases#acesso-externo): conectar de
            fora da Cube com o certificado de cliente do banco.
          required:
            - isAvailable
            - isEnabled
            - host
            - certificate
          properties:
            isAvailable:
              type: boolean
              description: '`false` = o acesso externo ainda não está liberado.'
            isEnabled:
              type: boolean
              description: >-
                Tem um certificado valendo: quem tiver ele e a senha conecta de
                fora. Vencido, fica `false` e o `certificate` continua com as
                datas: gere outro no painel.
            host:
              type: string
              description: '`db.cubehost.dev`, ou `mysql.cubehost.dev` no MySQL.'
            certificate:
              oneOf:
                - type: object
                  required:
                    - createdAt
                    - expiresAt
                  properties:
                    createdAt:
                      type: string
                      format: date-time
                    expiresAt:
                      type: string
                      format: date-time
                      description: Depois disso o certificado para; gere outro no painel.
                - type: 'null'
              description: >-
                `null` com o acesso desligado. Vencido, continua aqui (com
                `isEnabled: false`) até você gerar outro ou desligar.
        startedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: Desde quando está no ar.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - status
        - code
        - message
      properties:
        status:
          type: string
          const: error
        code:
          type: string
          description: Código fixo em inglês. Veja [Códigos de erro](/errors).
        message:
          type: string
          description: Texto em português para mostrar a uma pessoa.
      additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Chave de API da Cube (`cube_…`), criada no painel em **Chaves de API**.
        Mande como `Authorization: Bearer cube_…`.

````