Requisitos de ámbito
Requisitos de ámbito
draft y published. Esto te permite actualizar los datos de la tabla, ya sea para realizar pruebas o para permitir un proceso de aprobación manual, sin que ello afecte a las páginas publicadas. Más información sobre tablas en borrador vs. tablas en vivo.
Si una tabla está configurada para permitir el acceso público, puedes acceder a la versión publicada de la tabla y las filas sin ninguna autenticación especificando el ID de tu cuenta de HubSpot a través del parámetro de consulta portalId.
Si estás migrando desde la versión 2 de la API de HubDB, obtén más información sobre los cambios en la API actual (v3).
Límites de tasa
Las solicitudes de API de HubDB tienen diferentes límites de tasa, según el tipo de solicitud:- Las solicitudes
GETrealizadas que no requieren autentificación (incluidas las solicitudes de JavaScript del lado del cliente) están limitadas a 10 solicitudes por segundo. Estas solicitudes no contarán para el límite diario. - Todas las demás solicitudes que utilizan la autenticación siguen los límites estándar.
Tablas en borrador vs tablas en vivo
Las tablas de HubDB tienen versiones en borrador y en vivo, y las versiones en vivo se pueden publicar o no publicar. Esto te permitirá actualizar los datos de la tabla, ya sea para vistas preliminares o pruebas de páginas, o para permitir un proceso de aprobación manual, sin afectar ninguna página activa. En esta API, se designan puntos de terminación separados para las versiones en borrador y publicadas de una tabla. Por ejemplo, puedes recuperar la versión publicada de una tabla haciendo una solicitudGET al siguiente punto de terminación:
/cms/v3/hubdb/tables/{tableIdOrName}
Y para recuperar cualquier contenido que haya sido redactado pero que aún no haya sido publicado, agregarías /draft al final de la URL:
/cms/v3/hubdb/tables/{tableIdOrName}/draft
Los datos en borrador se pueden revisar y luego enviar en HubSpot, o con el punto de terminación /push-live. Los datos en borrador también se pueden descartar a través del punto de terminación /reset, lo que te permite volver a la versión actual en vivo de los datos sin interrupciones.
Crear una tabla de HubDB
Para crear una tabla de HubDB, haz una solicitudPOST a /cms/v3/hubdb/tables.
En el cuerpo de la solicitud, especifica los siguientes campos obligatorios:
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
name | Cadena | El nombre interno de la tabla. Este nombre no se puede cambiar una vez creada la tabla. Los nombres solo pueden incluir letras minúsculas, dígitos y guiones bajos y no pueden comenzar con un número. | "name": "my_table" |
label | Cadena | : La etiqueta de la tabla que ven los usuarios al editar la tabla en HubSpot. | "label":"My table" |
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
useForPages | Booleano | Si la tabla se puede utilizar para la creación de páginas dinámicas. | "useForPages": false |
allowPublicAPIAccess | Booleano | Si la tabla se puede leer sin autorización. | "allowPublicApiAccess": false |
allowChildTables | Booleano | Si se pueden crear tablas secundarias para la tabla. | "allowChildTables": false |
enableChildTablePages | Booleano | Si las páginas dinámicas multinivel deben crearse utilizando tablas secundarias. | "enableChildTablePages": false |
columns | Objeto | Las columnas de la tabla. Obtén más información sobre las propiedades de las columnas en las secciones Agregar columnas de tabla . | See "Add table columns" section below |
Agregar columnas a la tabla
Cada columna en una tabla de HubDB se puede definir con las siguientes propiedades:| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
name | Cadena | Obligatorio. El nombre interno de la columna. No se puede cambiar después de creada la columna. | "name": "row_name" |
label | Cadena | Opcional. La etiqueta para la columna que verán los usuarios al editar la tabla en HubSpot. | "label": "Row label" |
type | Cadena | El tipo de datos de la columna. Debe ser uno de los siguientes:
| "type": "type" |
options | Objeto | : Una lista de opciones para las columnas de selección y selección múltiple. Cada opción se define con un name junto con un type igual a option. | "option": [{"name":"Option 1", "type":"option"}, {"name": "Option 2", "type": "option"}] |
id de la columna en el objeto de entrada.
Agregar filas a la tabla
Puedes agregar filas manualmente a través de la API, o puedes importar filas desde un archivo CSV. Para agregar filas a una tabla de HubDB, haz una solicitudPOSTa /cms/v3/hubdb/tables/{tableIdOrName}/rows.
Para cada fila de la tabla, puedes incluir los siguientes campos:
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
values | Objeto | : Una lista de pares clave-valor con el nombre de la columna y el valor que deseas agregarle. Si no deseas establecer un valor específico para una columna, puedes omitir el nombre de la columna de la lista de pares clave-valor. | "values": { "text_column": "sample text", "number_column": 76} |
path | Cadena | : En el caso de las tablas habilitadas para páginas dinámicas, path es el sufijo de la ruta utilizado para la página creada para esta fila. | "path": "example_url_path" |
name | Cadena | : Para las tablas habilitadas para páginas dinámicas, name es el título HTML utilizado para la página creada para esta fila. | "name": "Example Title" |
childTableId | Número | Al crear páginas dinámicas de varios niveles, childTableId especifica el ID de la tabla secundaria. | "childTableId": 123456 |
Importar filas desde CSV
Para importar datos a una tabla de HubDB desde un archivo CSV, realiza una solicitudPOST a /cms/v3/hubdb/tables/{tableIdOrName}/draft/import.
El punto de terminación de importación acepta una solicitud multipart/form-data POST:
config: un conjunto de opciones con formato JSON para la importación.file: el archivo CSV que deseas importar.
config, incluye los siguientes campos como cadena JSON:
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
skipRows | Número | El número de filas de encabezados que se deben omitir. El valor predeterminado de este campo es 1, omitiendo la primera fila y tratándola como un título. Establécelo en 0 si todas las filas son datos válidos. | "skipRows": 0 |
separator | Cadena | El delimitador de columna en el archivo CSV. Establecer en "," de forma predeterminada. | "separator": "," |
idSourceColumn | Número | El índice de la columna del archivo de origen que contiene el ID de la fila (hs_id). Si se especifica esta columna, la importación actualizará las filas existentes en la tabla para los ID de fila coincidentes del archivo CSV. Esto es opcional y puedes ignorarlo la primera vez que importes datos a una tabla. Consulte la sección Opciones de restablecimiento a continuación para obtener información más detallada. | "idSourceColumn": 1 |
resetTable | Booleano | El valor predeterminado es false, lo que significa que las filas de la tabla se actualizarán sin eliminar ninguna fila existente. Si se establece en true, las filas de la hoja de cálculo sobrescribirán los datos de la tabla, lo que significa que se eliminará cualquier fila de la tabla que no esté en la hoja de cálculo. Consulte la sección Opciones de restablecimiento a continuación para obtener información más detallada. | "resetTable": true |
nameSourceColumn | Número | Para las tablas habilitadas para páginas dinámicas, nameSourceColumn especifica la columna del archivo CSV que contiene los name de la fila. Los números de las columnas están en orden ascendente, siendo la primera columna 1. | "nameSourcecolumn": 5 |
pathSourceColumn | Número | Para las tablas habilitadas para páginas dinámicas, pathSourceColumn especifica la columna del archivo CSV que contiene los path de la fila. Los números de las columnas están en orden ascendente, siendo la primera columna 1. | "pathSourcecolumn": 6 |
childTableSourceColumn | Número | Especifica la columna del archivo CSV que contiene los childTableId de la fila. Los números de las columnas están en orden ascendente, siendo la primera columna 1. | "childTableSourcecolumn": 3 |
columnMappings | Matriz | Una lista de asignaciones de las columnas del archivo de origen a las columnas de la tabla de HubDB de destino. Cada asignación debe tener el siguiente formato: {"source":1,"target”:"columnIdOrName"}
hs_id, no deberías incluirla en columnMappings. En cambio, inclúyelo como idSourceColumn para actualizar las filas existentes. | "columnMappings": [{"source":1, "target": 2}, {"source": 2, "target": "column_name"}] |
primaryKeyColumn | Cadena | El nombre de una columna de la tabla de HubDB objetivo que se utilizará para la desduplicación. El ID de la columna no se puede utilizar para este campo. | "primaryKeyColumn": "column_name" |
encoding | Cadena | El tipo de codificación del archivo. Por ejemplo, utf-8, ascii, iso-8859-2, iso-8859-5, iso-2022-jp, windows-1252. | "encoding": "utf-8" |
format | Cadena | Solo se admiten archivos CSV. | "format": "csv" |
config JSON podría verse de la siguiente manera:
Formato de fecha
Hay varios formatos que puedes utilizar al importar datos a una columna de tipo fecha. Enterosyyyy/mm/ddyyyy/mm/ddmm/dd/yyyymm/dd/yy
dd/mm/yy no se acepta). Los enteros pueden separarse con guiones (-) o barras diagonales (/).
Fechas relajadas
También puede importar formatos de fecha que estén menos estandarizados que las fechas basadas en números enteros. Por ejemplo:**
The 1st of March in the year 2022Fri Mar 4 2022March 4th '22
next ThursdayTodaytomorrow3 days from now
Opciones de restablecimiento
Al importar datos de un archivo CSV a una tabla de HubDB, puedes establecer el camporesetTable en true o false (por opción predeterminada) para administrar si los datos de la fila de HubDB se sobrescriben.
-
Si
resetTablese establece entrue:- Si las filas del archivo CSV no tienen una columna de ID de fila (
hs_ido el ID de fila se especifica como0, esas filas se insertarán con los nuevos ID de fila generados. - Si los ID de fila del archivo CSV ya existen en la tabla objetivo, las filas existentes en la tabla se actualizarán con los nuevos valores de los archivos de entrada.
- Si la tabla tiene filas pero el archivo CSV de entrada no tiene esos ID de fila, esas filas se eliminarán de la tabla objetivo.
- Si los ID de fila del archivo CSV de entrada no existen en la tabla objetivo, esas filas se insertarán con los nuevos ID de fila generados y se ignorarán los ID de fila indicados en el archivo de entrada.
- Si el archivo CSV de entrada no contiene la columna ID de fila, todas las filas se eliminarán de la tabla objetivo y las filas del archivo de entrada se insertarán con los nuevos ID de fila generados.
- Si las filas del archivo CSV no tienen una columna de ID de fila (
-
Si
resetTablese establece enfalse(por opción predeterminada):- Si los ID de fila del archivo CSV ya existen en la tabla objetivo, las filas existentes en la tabla se actualizarán con los nuevos valores de los archivos de entrada.
- Si la tabla tiene filas pero el archivo CSV de entrada no tiene esos ID de fila, esas filas no se eliminarán de la tabla objetivo y esas filas permanecerán sin cambios.
- Si los ID de fila del archivo CSV de entrada no existen en la tabla objetivo, esas filas se insertarán con los nuevos ID de fila generados y se ignorarán los ID de fila indicados en el archivo de entrada.
- Si las filas del archivo CSV no tienen una columna de ID de fila o el ID de fila se especifica como
0, esas filas se insertarán con los nuevos ID de fila generados.
Recuperar datos de HubDB
Hay varias maneras de recuperar los datos de HubDB, dependiendo de si estás buscando detalles de la tabla o las filas de una tabla:- Para recuperar los detalles de la tabla de todas las tablas publicadas, haz una solicitud
GETa/cms/v3/hubdb/tables. - Para recuperar los detalles de la tabla de una tabla publicada específica, realiza una solicitud
GETa/cms/v3/hubdb/tables{tableIdOrName}. - Para recuperar todas las filas de una tabla específica, haz una solicitud
GETa/cms/v3/hubdb/tables{tableIdOrName}/rows. - Para recuperar una fila específica de una tabla, haz una solicitud
GETa/cms/v3/hubdb/tables{tableIdOrName}/rows/{rowId}.
portalId.
Filtrar filas obtenidas
Al recuperar datos de la tabla de HubDB, puedes aplicar filtros como parámetros de consulta para recibir datos específicos. Los parámetros de consulta de filtro se construyen de la siguiente manera:columnName__operator.
Por ejemplo, si tienes una columna numérica denominada bar, puedes filtrar los resultados para incluir solo las filas en las que bar sea mayor que 10: &bar__gt=10.
Todos los filtros se suman con Y (actualmente no se admiten filtros O).
Al filtrar, ten en cuenta lo siguiente:
- Al pasar valores para las columnas
multiselect, los valores deben estar separados por comas (por ejemplo,multiselect_column__contains=1,2). - Para los filtros
datetime, puedes utilizar fechas relativas en lugar de marcas de tiempo para especificar un valor relativo a la hora actual. Por ejemplo,-3hcorrespondería a la marca de tiempo 3 horas antes de ahora, mientras que10scorrespondería a 10 segundos en el futuro. Las unidades de tiempo admitidas son ms (milisegundos), s (segundos), m (minutos), h (horas), d (días). La hora actual se puede utilizar especificando un valor cero: 0s
hs_id es una columna number, la columna hs_created_at es un datetime, y las columnas hs_path y hs_name son columnas text.
A continuación, descubre qué operadores se pueden aplicar a qué tipos de columna:
| Operador | Nombre | Descripción |
|---|---|---|
eq (or none) | Es igual a | Todos los tipos de columna Este filtro se aplica si no se utiliza ningún operador. Cuando se utiliza con columnas de selección múltiple, devuelve filas que coinciden exactamente con los valores suministrados. |
ne | No es igual a | Todos los tipos de columna. |
contains | Contiene | Texto, texto enriquecido y selección múltiple. Cuando se utiliza con columnas de selección múltiple, devuelve filas que contienen todos los valores proporcionados. Este filtro distingue entre mayúsculas y minúsculas. |
lt | Menor que | Número, fecha y hora. |
lte | Menor que o igual a | Número, fecha y hora. |
gt | Mayor que | Número, fecha y hora. |
gte | Mayor que o igual a | Número, fecha y hora. |
is_null | Nulo | Todos los tipos de columna, excepto booleanos. Este filtro no requiere un valor (por ejemplo, &exampleColumn__is_null=). |
not_null | No nulo | Todos los tipos de columnas, excepto booleano. Este filtro no requiere un valor (por ejemplo, &exampleColumn__not_null=). |
like | Como | Texto y texto enriquecido. |
not_like | No como | Texto y texto enriquecido. |
icontains | Contiene | Texto y texto enriquecido. Este filtro no distingue entre mayúsculas y minúsculas. |
startswith | Comienza con | Texto y texto enriquecido. |
in | En | Número, seleccione y multiselección. Devuelve filas en las que la columna incluye al menos una de las opciones pasadas. Cuando no hay otro sort en el parámetro de consulta, los resultados se ordenarán en el orden en que se especifiquen los valores en el operadorin. |
Ordenar filas obtenidas
Al recuperar datos de HubDB, puedes aplicar la ordenación como parámetro de consulta para determinar el orden de los datos obtenidos. Para ordenar los datos, agrega un parámetro de consultasort y especifica el nombre de la columna:
&sort=columnName
De forma predeterminada, los datos se devolverán en el orden natural de la columna especificada. Puedes invertir la ordenación agregando un - al nombre de la columna:
&sort=-columnName
Puedes incluir este parámetro varias veces para ordenar por varias columnas.
Además de ordenar por una columna, hay tres funciones que se pueden utilizar:
- geo_distance(location_column_name, latitud, longitud): toma el nombre de una columna de localización y las coordenadas, devuelve las filas ordenadas según la distancia entre el valor de la columna de localización especificada y las coordenadas proporcionadas.
- longitud(column_name): toma el nombre de una columna, devuelve las filas ordenadas por la longitud del valor de la columna (calculada como una cadena)
- random(): devuelve las filas en orden aleatorio.
geo_distance devuelve primero los elementos que están más lejos:
sort=-geo_distance(location_column,42.37,-71.07)
Configurando tablas HubDB para páginas dinámicas
Con CMS de HubSpot, puedes usar una tabla de HubDB como fuente de datos para generar páginas dinámicas. Por ejemplo, puedes crear una tabla que contenga una fila para cada miembro de tu equipo ejecutivo, con columnas que contengan la información que desees mostrar en una página. Después de seleccionar esa tabla como fuente de datos dinámicos para una página, esa página generará un página de índice que muestra todas las filas como elementos de resumen, junto con páginas separadas para cada fila, similar a un página de índice de blog y páginas de publicación de blog. Para permitir que una tabla se seleccione como fuente de datos en el editor de contenido, deberás estableceruseForPage en true. Opcionalmente, puedes incluir dynamicMetaTags para especificar qué columnas usar para los metadatos de cada página.
Por ejemplo, el código siguiente crearía una tabla que se puede usar para páginas dinámicas y especifica las tres columnas que se usarán para los metadatos de página.
| Parámetro | Tipo | Descripción |
|---|---|---|
useForPages | Booleano | Establecer en true para permitir que la tabla se utilice como fuente de datos para páginas dinámicas. |
dynamicMetaTags | Objeto | Especifica las columnas por ID que se utilizarán para los metadatos de cada página dinámica. Puede contener:
|
DESCRIPTION | Número | El ID numérico de la columna que se utilizará para la metadescripción de cada página. |
FEATURED_IMAGE_URL | Número | El ID numérico de la columna que se utilizará para la URL de la imagen destacada de cada página. |
LINK_REL_CANONICAL_URL | Número | El ID numérico de la columna que se utilizará para la URL canónica de cada página. |
Cambios en la v3
- Las tablas deben tener tanto
namecomolabel. Este nombre no se puede cambiar una vez creada la tabla. Los nombres solo pueden incluir letras minúsculas, dígitos y guiones bajos y no pueden comenzar con un número. Ambosnameylabeldeben ser únicos en la cuenta. - La API admite tanto la tabla
idcomonamelas rutas URL. GETLos puntos de terminación de fila devuelven la columnanameen lugar deiden el campovalues. Además, los puntos de terminación de filaPOST/PUT/PATCHrequieren una columnanameen lugar deiden el campovalues.- Los puntos de terminación de actualización de fila
PATCHahora aceptan actualizaciones dispersas, lo que significa que solo puedes especificar los valores de columna que necesita actualizar (mientras que tenías que especificar todos los valores de columna en las versiones anteriores). Al actualizar una columna con una lista de valores como multiselect, debes especificar la lista de todos los valores. Para eliminar el valor de una columna, debes especificar la columna con el valor comonullen la solicitud. - Se han eliminado los puntos de terminación
get/update/deletea una celda de fila en favor de los puntos de terminación de actualización de filaPATCH. - El punto de terminación de importación ahora admite un campo opcional
idSourceColumnjunto con los campos existentes en las opciones con formato JSON. Puedes utilizar este campo para especificar la columna del archivo csv que contiene los ID de fila. Para importar nuevas filas junto con los nuevos valores de las filas existentes, simplemente puedes especificar0como el id de fila para las nuevas filas y los id de fila válidos para las columnas existentes. Ver más detalles a continuación en la sección Importar. También puedes utilizar nombres o identificadores de columnas en el campo de destino de las asignaciones de columnas en las opciones con formato JSON. - Clonar el punto de terminación requiere un nuevo nombre y una nueva etiqueta.