Pular para conteúdo

NOTION_CREATE_DATABASE - Criar Database no Notion

O que é este Node?

O NOTION_CREATE_DATABASE é o node responsável por criar novos databases no Notion programaticamente, definindo estrutura de colunas (properties) e configurações iniciais.

Por que este Node existe?

Criar databases dinamicamente permite arquiteturas flexíveis. O NOTION_CREATE_DATABASE existe para:

  1. Automação completa: Criar estruturas de dados sob demanda
  2. Multi-tenancy: Criar databases separados por cliente/projeto
  3. Templates dinâmicos: Replicar estruturas de dados programaticamente
  4. Workspace setup: Configurar workspaces automaticamente

Como funciona internamente?

Quando o NOTION_CREATE_DATABASE é executado, o sistema:

  1. Autentica na Notion API: Usa o apiKey fornecido
  2. Define parent: Página onde o database será criado
  3. Monta properties: Define estrutura de colunas (tipos e nomes)
  4. Envia POST: Faz requisição para https://api.notion.com/v1/databases
  5. Se erro: Retorna exceção
  6. Se sucesso: Retorna databaseId e url

Código interno (baseado na Notion API v1):

case 'createDatabase':
  const createDatabaseResponse = await firstValueFrom(
    this.httpService.post(`${notionApiUrl}/databases`,
      {
        parent: { type: 'page_id', page_id: data.pageId },
        title: [
          {
            type: 'text',
            text: {
              content: data.title,
            },
          },
        ],
        properties: data.properties,
      },
      { headers }
    )
  );
  return {
    success: true,
    databaseId: createDatabaseResponse.data.id,
    url: createDatabaseResponse.data.url,
  };

Quando você DEVE usar este Node?

Use NOTION_CREATE_DATABASE sempre que precisar de criar databases programaticamente:

Casos de uso

  1. Setup de projetos: "Criar database de tarefas para novo projeto"
  2. CRM por cliente: "Criar database de contatos para cliente X"
  3. Templates automáticos: "Replicar estrutura de database"
  4. Multi-workspace: "Criar databases separados por departamento"

Quando NÃO usar NOTION_CREATE_DATABASE

  • Database já existe: Use NOTION_QUERY ou NOTION_SEARCH ao invés
  • Adicionar dados: Use NOTION_CREATE_PAGE ao invés
  • Modificar estrutura existente: Use API de update database ao invés

Parâmetros

Campo Tipo Obrigatório Descrição
operation string Sim Deve ser "createDatabase"
apiKey string Sim Token de integração do Notion
pageId string Sim ID da página onde criar database
title string Sim Nome do database
properties object Sim Definição de colunas (properties)

Estrutura de Properties

Title (obrigatório, apenas 1):

{
  "Nome": {
    "title": {}
  }
}

Rich Text:

{
  "Descrição": {
    "rich_text": {}
  }
}

Number:

{
  "Valor": {
    "number": {
      "format": "number"
    }
  }
}

Select:

{
  "Status": {
    "select": {
      "options": [
        { "name": "A Fazer", "color": "red" },
        { "name": "Em Progresso", "color": "yellow" },
        { "name": "Concluído", "color": "green" }
      ]
    }
  }
}

Multi-select:

{
  "Tags": {
    "multi_select": {
      "options": [
        { "name": "Urgente", "color": "red" },
        { "name": "Bug", "color": "orange" }
      ]
    }
  }
}

Date:

{
  "Prazo": {
    "date": {}
  }
}

Checkbox:

{
  "Concluída": {
    "checkbox": {}
  }
}

URL:

{
  "Link": {
    "url": {}
  }
}

Email:

{
  "Email": {
    "email": {}
  }
}

Phone:

{
  "Telefone": {
    "phone_number": {}
  }
}

Exemplo: Criar Database de Tarefas

{
  "name": "Criar Database de Tarefas",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Nome do Projeto",
        "parameters": {
          "message": "Nome do projeto:",
          "variable": "projeto"
        }
      }
    },
    {
      "id": "notion_1",
      "type": "notion",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Criar Database",
        "parameters": {
          "operation": "createDatabase",
          "apiKey": "secret_SEU_TOKEN",
          "pageId": "PAGE_ID_PARENT",
          "title": "Tarefas - {{projeto}}",
          "properties": {
            "Tarefa": {
              "title": {}
            },
            "Status": {
              "select": {
                "options": [
                  { "name": "A Fazer", "color": "red" },
                  { "name": "Em Progresso", "color": "yellow" },
                  { "name": "Concluído", "color": "green" }
                ]
              }
            },
            "Prioridade": {
              "select": {
                "options": [
                  { "name": "Alta", "color": "red" },
                  { "name": "Média", "color": "yellow" },
                  { "name": "Baixa", "color": "gray" }
                ]
              }
            },
            "Prazo": {
              "date": {}
            },
            "Responsável": {
              "rich_text": {}
            },
            "Concluída": {
              "checkbox": {}
            }
          }
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "✅ Database 'Tarefas - {{projeto}}' criado!\n\nURL: {{notion_1.url}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "notion_1" },
    { "source": "notion_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Resposta do Node

{
  "success": true,
  "databaseId": "a8aec43c-6f00-4f57-89c9-e2e4aa3e8d9f",
  "url": "https://www.notion.so/workspace/Database-Name-a8aec43c6f004f5789c9e2e4aa3e8d9f"
}

Boas Práticas

SIM: - Defina sempre uma property do tipo "title" - Configure options para select/multi-select no momento da criação - Salve o databaseId retornado para usar depois - Use cores nas options para melhor visualização

NÃO: - Não crie databases sem parent (pageId) - Não esqueça a property title (obrigatória) - Não crie databases duplicados (verifique antes com SEARCH)

Dicas

Parent obrigatório: Todo database precisa estar dentro de uma página Title property: Apenas uma property pode ser do tipo "title" Database ID: Salve o ID retornado para criar páginas depois Options: Configure select/multi-select options na criação Colors: Use cores para categorias visuais (red, yellow, green, etc.)

Próximo Node

NOTION_CREATE_PAGE - Criar páginas no database → NOTION_QUERY_DATABASE - Buscar no database criado → NOTION_UPDATE_BLOCK - Modificar blocks