draft e published. Isso permite que você atualize os dados na tabela, seja para teste ou para permitir um processo de aprovação manual, sem afetar nenhuma página ativa. Saiba mais sobre tabelas de rascunho versus tabelas dinâmicas.
Se uma tabela estiver definida para ter acesso pelo público, você pode acessar a versão publicada da tabela e das linhas sem qualquer autenticação especificando seu ID de conta da HubSpot através do parâmetro de consulta portalId.
Se você estiver migrando da v2 da API de HubDB, saiba mais sobre alterações na API atual (v3).
Limites de taxa
As solicitações de API do HubDB têm limites de taxa diferentes, dependendo do tipo de solicitação:- Quaisquer solicitações
GETque não exijam autenticação (incluindo solicitações JavaScript do lado do cliente) estão limitadas a 10 solicitações por segundo. Essas solicitações não contarão para o limite diário. - Todas as outras solicitações usando autenticação siga as limites padrão.
Tabelas de rascunho e ativas
As tabelas HubDB têm versões de rascunho e ativas, e as versões ativas podem ser publicadas ou ter sua publicação cancelada. Assim, você poderá atualizar os dados na tabela, seja para visualizações de página ou testes ou para permitir um processo de aprovação manual, sem afetar nenhuma página ativa. Nessa API, pontos de extremidade separados são designados para as versões rascunho e publicada de uma tabela. Por exemplo, você pode recuperar a versão publicada de uma tabela fazendo uma solicitaçãoGET para o seguinte ponto de extremidade:
/cms/v3/hubdb/tables/{tableIdOrName}
E para recuperar qualquer conteúdo em rascunho, mas que ainda não foi publicado, você adicionaria /draft ao final do URL:
/cms/v3/hubdb/tables/{tableIdOrName}/draft
Os dados de rascunho podem ser revisados e depois enviados por push ao HubSpot ou usando o ponto de extremidade /push-live. Os dados de rascunho também podem ser descartados por meio do ponto de extremidade /reset, permitindo reverter para a versão atual ativa dos dados sem interrupção.
Criar uma tabela HubDB
Para criar uma tabela HubDB, faça uma solicitaçãoPOST para /cms/v3/hubdb/tables.
No corpo da solicitação, especifique nos seguintes campos obrigatórios:
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
name | String | O nome interno da tabela. Este nome não pode ser alterado após a criação da tabela. Os nomes somente podem incluir letras minúsculas, dígitos e sublinhados e não podem começar com um número. | "name": "my_table" |
label | String | O rótulo da tabela que os usuários veem ao editar a tabela no HubSpot. | "label":"My table" |
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
useForPages | Booleano | Se a tabela pode ser usada para criação de páginas dinâmicas. | "useForPages": false |
allowPublicAPIAccess | Booleano | Se a tabela pode ser lida sem autorização. | "allowPublicApiAccess": false |
allowChildTables | Booleano | Se tabelas secundárias podem ser criadas para a tabela. | "allowChildTables": false |
enableChildTablePages | Booleano | Se páginas dinâmicas de vários níveis devem ser criadas usando tabelas secundárias. | "enableChildTablePages": false |
columns | Objeto | As colunas da tabela. Saiba mais sobre as propriedades de coluna nas seções Adicionar colunas da tabela. | See "Add table columns" section below |
Adicionar colunas da tabela
Cada coluna de uma Tabela HubDB pode ser definida com as seguintes propriedades:| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
name | String | Obrigatório. O nome interno da coluna. Não pode ser alterado depois que a coluna for criada. | "name": "row_name" |
label | String | Opcional. O rótulo da coluna que os usuários verão ao editar a tabela no HubSpot. | "label": "Row label" |
type | String | O tipo de dados da coluna. Deve ser um dos seguintes:
| "type": "type" |
options | Objeto | Uma lista de opções para colunas de seleção e seleção múltipla. Cada opção é definida com um name, juntamente com um type igual a option. | "option": [{"name":"Option 1", "type":"option"}, {"name": "Option 2", "type": "option"}] |
id da coluna no objeto de entrada.
Adicionar linhas da tabela
Você pode adicionar linhas manualmente por meio da API ou pode importar linhas de um arquivo CSV. Para adicionar linhas a uma tabela HubDB, faça uma solicitaçãoPOST para /cms/v3/hubdb/tables/{tableIdOrName}/rows.
Para cada linha da tabela, você pode incluir os seguintes campos:
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
values | Objeto | Uma lista de pares chave-valor com o nome da coluna e o valor que você deseja adicionar a ela. Se não quiser definir um valor específico para uma coluna, você pode omitir o nome da coluna na lista de pares chave-valor. | "values": { "text_column": "sample text", "number_column": 76} |
path | String | Para tabelas habilitadas para páginas dinâmicas, path é o sufixo do caminho usado para a página criada para esta linha. | "path": "example_url_path" |
name | String | Para tabelas habilitadas para páginas dinâmicas, name é o título HTML usado para a página criada para esta linha. | "name": "Example Title" |
childTableId | Número | Ao criar páginas dinâmicas de vários níveis, childTableId especifica o ID da tabela secundária. | "childTableId": 123456 |
Importar linhas do CSV
Para importar dados de um arquivo CSV para uma tabela HubDB, faça uma solicitaçãoPOST para /cms/v3/hubdb/tables/{tableIdOrName}/draft/import.
O ponto de extremidade de importação assume uma faça uma solicitação POST multipart/form-data:
config: um conjunto de opções formatadas em JSON para a importação.file: o arquivo CSV que você deseja importar.
config, inclua os seguintes campos como uma string JSON:
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
skipRows | Número | O número de linhas de cabeçalho que devem ser ignoradas. Este campo assume 1 por padrão, ignorando a primeira linha e tratando-a como um cabeçalho. Defina como 0 se todas as linhas forem dados válidos. | "skipRows": 0 |
separator | String | O delimitador de coluna no arquivo CSV. Defina "," como padrão. | "separator": "," |
idSourceColumn | Número | O índice da coluna no arquivo de origem que contém a ID da linha (hs_id).Se esta coluna for especificada, a importação atualizará as linhas existentes na tabela para as IDs de linha correspondentes do arquivo CSV. Isso é opcional e você pode ignorá-lo durante a primeira importação de dados para uma tabela.Consulte a seção Opções de redefinição abaixo para obter informações mais detalhadas. | "idSourceColumn": 1 |
resetTable | Booleano | O padrão é false, significando que as linhas da tabela serão atualizadas sem remover nenhuma linha existente. Se definido como true, as linhas da planilha substituirão os dados da tabela, o que significa que as linhas da tabela que não estiverem na planilha serão excluídas.Consulte a Opções de redefinição abaixo para obter informações mais detalhadas. | "resetTable": true |
nameSourceColumn | Número | Para tabelas habilitadas para páginas dinâmicas, nameSourceColumn especifica a coluna no arquivo CSV que contém o name da linha. Os números das colunas estão em ordem crescente, com a primeira coluna sendo 1. | "nameSourcecolumn": 5 |
pathSourceColumn | Number | Para tabelas habilitadas para páginas dinâmicas, pathSourceColumn especifica a coluna no arquivo CSV que contém o path da linha. Os números das colunas estão em ordem crescente, com a primeira coluna sendo 1. | "pathSourcecolumn": 6 |
childTableSourceColumn | Número | Especifica a coluna no arquivo CSV que contém as childTableId. Os números das colunas estão em ordem crescente, com a primeira coluna sendo 1. | "childTableSourcecolumn": 3 |
columnMappings | Matriz | Uma lista de mapeamentos das colunas no arquivo de origem para as colunas na Tabela HubDB de destino. Cada mapeamento deve ter o seguinte formato: {"source":1,"target”:"columnIdOrName"}
hs_id, ela não deve ser incluída em columnMappings. Em vez disso, inclua-o como idSourceColumn para atualizar as linhas existentes. | "columnMappings": [{"source":1, "target": 2}, {"source": 2, "target": "column_name"}] |
primaryKeyColumn | String | O nome de uma coluna na tabela HubDB de destino que será usado para desduplicação. O ID da coluna não pode ser usado para este campo. | "primaryKeyColumn": "column_name" |
encoding | String | O tipo de codificação do arquivo. Por exemplo, utf-8, ascii, iso-8859-2, iso-8859-5, iso-2022-jp, windows-1252. | "encoding": "utf-8" |
format | String | Somente CSV é suportado. | "format": "csv" |
config pode ter a seguinte aparência:
Formatação de data
Há vários formatos que você pode usar ao importar dados para uma coluna de tipo de data. Inteirosyyyy/mm/ddyyyy/mm/ddmm/dd/yyyymm/dd/yy
dd/mm/yy não é aceito). Inteiros podem ser separados por hifens (-) ou barras (/).
Datas flexíveis
Também é possível importar formatos de data que sejam menos padronizados do que as datas baseadas em inteiros. Por exemplo:**
The 1st of March in the year 2022Fri Mar 4 2022March 4th '22
next ThursdayTodaytomorrow3 days from now
Redefinir opções
Ao importar dados de um arquivo CSV para uma tabela HubDB, você pode definir o camporesetTable para true ou false (padrão) para controlar se os dados da linha do HubDB serão substituídos.
-
Se
resetTableestiver definido comotrue:- Se as linhas no arquivo CSV não tiverem uma coluna de ID de linha (
hs_idou o ID da linha for especificado como0, essas linhas serão inseridas com os novos IDs de linha gerados. - Se os IDs de linha no arquivo CSV já existirem na tabela de destino, as linhas existentes na tabela serão atualizadas com os novos valores do arquivo de entrada.
- Se a tabela tiver linhas, mas o arquivo CSV de entrada não tiver os IDs dessas linha, as linhas serão excluídas da tabela de destino.
- Se os IDs de linha no arquivo CSV de entrada não existirem na tabela de destino, essas linhas serão inseridas com os novos IDs de linha gerados e os IDs de linha fornecidos no arquivo de entrada serão ignorados.
- Se o arquivo CSV de entrada não contiver a coluna de ID de linha, todas as linhas serão excluídas da tabela de destino e as linhas do arquivo de entrada serão inseridas com os novos IDs de linha gerados.
- Se as linhas no arquivo CSV não tiverem uma coluna de ID de linha (
-
Se
resetTableestiver definido comofalse(padrão):- Se os IDs de linha no arquivo CSV já existirem na tabela de destino, as linhas existentes na tabela serão atualizadas com os novos valores do arquivo de entrada.
- Se a tabela tiver linhas, mas o arquivo CSV de entrada não tiver os IDs dessas linhas, as linhas não serão excluídas da tabela de destino e permanecerão inalteradas.
- Se os IDs de linha no arquivo CSV de entrada não existirem na tabela de destino, essas linhas serão inseridas com os novos IDs de linha gerados e os IDs de linha fornecidos no arquivo de entrada serão ignorados.
- Se as linhas no arquivo CSV não tiverem uma coluna de ID de linha ou se o ID de linha for especificado como
0, essas linhas serão inseridas com os novos IDs de linha gerados.
Recuperar dados do HubDB
Há várias maneiras de recuperar dados do HubDB, dependendo se você está procurando detalhes da tabela ou as linhas de uma tabela:- Para recuperar detalhes de todas as tabelas publicadas, faça uma solicitação
GETpara/cms/v3/hubdb/tables. - Para recuperar os detalhes de uma tabela publicada específica, faça uma solicitação
GETpara/cms/v3/hubdb/tables{tableIdOrName}. - Para recuperar todas as linhas de uma tabela específica, faça uma solicitação
GETpara/cms/v3/hubdb/tables{tableIdOrName}/rows. - Para recuperar uma linha específica de uma tabela, faça uma solicitação
GETpara/cms/v3/hubdb/tables{tableIdOrName}/rows/{rowId}.
portalId.
Filtrar linhas retornadas
Ao recuperar dados da tabela HubDB, você pode aplicar filtros como parâmetros de consulta para receber dados específicos. Os parâmetros de consulta de filtro são construídos da seguinte forma:columnName__operator.
Por exemplo, se você tiver uma coluna numérica chamada barra, poderá filtrar os resultados para incluir somente linhas onde barra for superior a 10: &bar__gt=10.
Todos os filtros são unidos por E (filtros OU não são suportados no momento).
Ao filtrar, lembre-se do seguinte:
-
Ao transmitir valores para colunas
multiselect, eles devem ser separados por vírgulas (por exemplo,multiselect_column__contains=1,2). -
Para filtros
datetime, você pode usar datas relativas no lugar de data/hora para especificar um valor relativo à hora atual. Por exemplo,-3hcorresponderia à data e hora de 3 horas antes, ao passo que10scorresponderia a 10 segundos no futuro. As unidades de tempo suportadas são ms (milissegundos), s (segundos), m (minutos), h (horas), d (dias). A hora atual pode ser usada especificando um valor zero: 0s -
Para efeitos destes filtros, a coluna incorporada
hs_idé uma colunanumber, a colunahs_created_atédatetimee as colunashs_pathehs_namesão colunastext.
| Operador | Nome | Descrição |
|---|---|---|
eq (or none) | Igual a | Todos os tipos de coluna.Este filtro será aplicado se nenhum operador for usado. Quando usado com colunas de seleção múltipla, retorna linhas que correspondem exatamente aos valores fornecidos. |
ne | Não é igual a | Todos os tipos de coluna. |
contains | Contém | Texto, rich text e seleção múltipla.Quando usado com colunas de seleção múltipla, retorna as linhas que contêm todos os valores fornecidos. Este filtro diferencia maiúsculas e minúsculas. |
lt | Menor que | Número, data e data/hora. |
lte | Menor que ou igual a | Número, data e data/hora. |
gt | Maior que | Número, data e data/hora. |
gte | Maior que ou igual a | Número, data e data/hora. |
is_null | Nulo | Todos os tipos de coluna, exceto booleano. Esse filtro não requer um valor (por exemplo, &exampleColumn__is_null=). |
not_null | Não nulo | Todos os tipos de coluna, exceto booleano. Esse filtro não requer um valor (por exemplo, &exampleColumn__not_null=). |
like | É como | Texto e richtext. |
not_like | Não é como | Texto e richtext. |
icontains | Contém | Texto e rich text.Este filtro não diferencia maiúsculas de minúsculas. |
startswith | Começa com | Texto e richtext. |
in | Em | Número, seleção e multiseleção.Retorna linhas em que a coluna inclui pelo menos uma das opções transmitidas. Quando não houver outro sort no parâmetro de consulta, os resultados serão classificados na ordem em que os valores são especificados no operador in. |
Classificar as linhas retornadas
Ao recuperar dados do HubDB, você pode aplicar a classificação como um parâmetro de consulta para determinar a ordem dos dados retornados. Para classificar dados, adicione um parâmetro de consultasort e especifique o nome da coluna:
&sort=columnName
Por padrão, os dados serão retornados na ordem natural da coluna especificada. Você pode inverter a classificação adicionando um - ao nome da coluna:
&sort=-columnName
Você pode incluir este parâmetro várias vezes para classificar por várias colunas.
Além de classificar por coluna, há três funções que podem ser usadas:
- geo_distance(location_column_name, latitude, longitude): pega o nome de uma coluna de localização e as coordenadas, retorna as linhas ordenadas por quão longe os valores da coluna de localização especificada estão das coordenadas fornecidas.
- length(column_name): pega o nome de uma coluna, retorna as linhas ordenadas pelo comprimento do valor da coluna (calculado como uma string)
- random(): retorna as linhas em ordem aleatória.
geo_distance retorna os itens mais distantes primeiro:
sort=-geo_distance(location_column,42.37,-71.07)
Configurar tabelas HubDB para páginas dinâmicas
Usando o CMS do HubSpot, você pode usar uma tabela HubDB como fonte de dados para gerar páginas dinâmicas. Por exemplo, você pode criar uma tabela que contenha uma linha para cada membro da equipe executiva, com colunas contendo informações que você deseja exibir em uma página. Depois de selecionar essa tabela como a fonte de dados dinâmicos de uma página, esta gerará uma página de listagem que exibirá todas as linhas como itens de resumo, juntamente com páginas separadas para cada linha, semelhante a uma página de listagem de blog e posts de blog. Para permitir que uma tabela seja selecionada como fonte de dados no editor de conteúdo, será necessário definiruseForPage como true. Opcionalmente, você pode incluir dynamicMetaTags para especificar quais colunas usar para os metadados de cada página.
Por exemplo, o código abaixo criaria uma tabela que pode ser usada para páginas dinâmicas e especifica as três colunas a serem usadas para metadados de página.
| Parâmetro | Tipo | Descrição |
|---|---|---|
useForPages | Booleano | Defina como true para permitir que a tabela seja usada como uma fonte de dados para páginas dinâmicas. |
dynamicMetaTags | Objeto | Especifica as colunas por ID a serem usadas para metadados em cada página dinâmica. Pode conter:
|
DESCRIPTION | Número | O ID numérico da coluna a ser usado para as metadescrições de cada página. |
FEATURED_IMAGE_URL | Número | O ID numérico da coluna a ser usado para o URL da imagem em destaque em cada página. |
LINK_REL_CANONICAL_URL | Número | O ID numérico da coluna a ser usado para o URL canônico de cada página. |
Alterações na V3
- As tabelas devem ter
nameelabel. Este nome não pode ser alterado após a criação da tabela. Os nomes somente podem incluir letras minúsculas, dígitos e sublinhados e não podem começar com um número. Ambosnameelabeldevem ser exclusivos na conta. - A API oferece suporte a ambas as tabelas
idenamenos caminhos de URL. GETpontos de extremidade da linha retornam onameda coluna em vez deidno campovalues. Além disso, os pontos de extremidade de linhaPOST/PUT/PATCHexigem a colunanameem vez deidno campovalues.- Os pontos de extremidade de atualização
PATCHagora aceitam atualizações esparsas, o que significa que você pode especificar apenas os valores de coluna que precisa atualizar (nas versões anteriores, era necessário especificar todos os valores de coluna). Quando você atualiza uma coluna com uma lista de valores, como seleção múltipla, é necessário especificar a lista de todos os valores. Para excluir o valor de uma coluna, você precisa especificar a coluna com o valor comonullna solicitação. - Removidos os pontos de extremidade para
get/update/deleteuma célula de linha em favor de pontos de extremidade de atualizaçãoPATCHpara linhas. - O recurso para importar ponto de extremidade agora dá suporte a um campo opcional
idSourceColumn, juntamente com os campos existentes nas opções formatadas em JSON. Você pode usar esse campo para especificar a coluna no arquivo csv que contém ids de linha. Para importar novas linhas, juntamente com os novos valores para as linhas existentes, você pode simplesmente especificar0como o id para as novas linhas e os ids de linha válidos para as colunas existentes. Veja mais detalhes na seção Importar abaixo. Também é possível usar nomes ou ids de coluna no campo de destino dos mapeamentos de coluna nas opções formatadas em JSON. - O clone de ponto de extremidade requer um novo nome e um novo rótulo.