Última modificación: 11 de septiembre de 2025
Abajo encontrarás información de referencia sobre las funciones de las aplicaciones de la plataforma para desarrolladores, incluidas las definiciones de los archivos de configuración, los detalles de los permisos y mucho más.

Estructura del proyecto

  • Todos los componentes del proyecto deben estar dentro del directorio src especificado en el archivo de configuración de nivel superior hsproject.json.
  • Todas las funciones y componentes de la aplicación deben estar en el directorio src/app/. Dentro de este directorio app/, definirás subdirectorios para cada función que quieras que admita tu aplicación:
    • Los eventos de la aplicación se configuran en app-events/.
    • Los objetos de la aplicación se definen en app-objects/.
    • Todas las características de la tarjeta se definen en cards/.
    • Las funciones de la página de configuración se definen en settings/.
    • La telemetría se configura en telemetry/.
    • Las suscripciones de webhooks se definen en webhooks/.
    • Las acciones de workflow personalizadas se definen en workflow-actions/.
  • Dentro de cada subdirectorio de características, configurarás la característica mediante un archivo *-hsmeta.json. Puedes anteponer al nombre del archivo algo significativo para tu aplicación (por ejemplo, my-app-hsmeta.json), siempre que el archivo termine en -hsmeta.json. Estos archivos deben estar en el nivel base de sus respectivas carpetas (por ejemplo, app/my-app-hsmeta.json, cards/my-card-hsmeta.json).
El ejemplo de estructura de directorios que aparece abajo describe todas las funciones disponibles. Los detalles para configurar el archivo app-hsmeta.json del esquema de la aplicación de nivel superior se proporcionan en la sección sobre el esquema de la aplicación que aparece abajo. Cuando estés listo para agregar funciones a la aplicación, consulta la sección agregar funciones a la aplicación.
my-project-folder/
└── hsproject.json
└── src
    └── app/
        └── app-hsmeta.json/
        └── app-events/
            └── my-event-type-hsmeta.json
        └── cards/
            └── MyCard.jsx
            └── my-app-card-hsmeta.json
            └── package.json
        └── settings/
            └── Settings.tsx
            └── settings-hsmeta.json
            └── package.json
        └── telemetry/
            └── telemetry-hsmeta.json
        └── webhooks/
            └── webhooks-hsmeta.json
        └── workflow-actions/
            └── custom-action-hsmeta.json

Ver ejemplo en GitHub

La extensión de HubSpot Visual Studio Code proporciona comprobación de tipos para cada una de las propiedades de tus archivos de configuración *-hsmeta.json.

Especificar UID

El campo uid es un identificador único interno para tu aplicación específica, y también debe ser único globalmente dentro del proyecto. Cada una de las funciones de la aplicación tendrá su propio uid definido en sus respectivos archivos *-hsmeta.json, que deben ser distintos del uid de nivel superior que elijas en el archivo app-hsmeta.json de tu aplicación.

Esquema de la aplicación

La configuración de nivel superior de tu aplicación se especifica en un archivo de configuración app-hsmeta.json en el directorio app.
my-project-folder/
└── src
    └── app/
        └── app-hsmeta.json/
Abajo se indican las opciones de configuración disponibles para app-hsmeta.json.
{
  "uid": "new_developer_platform_app",
  "type": "app",
  "config": {
    "description": "An example to demonstrate how to build an app with developer projects.",
    "name": "my first app",
    "distribution": "marketplace",
    "auth": {
      "type": "oauth",
      "redirectUrls": ["http://localhost:3000/oauth-callback"],
      "requiredScopes": [
        "crm.objects.contacts.read",
        "crm.objects.contacts.write"
      ],
      "optionalScopes": [],
      "conditionallyRequiredScopes": []
    },
    "permittedUrls": {
      "fetch": ["https://api.hubapi.com"],
      "iframe": [],
      "img": []
    },
    "support": {
      "supportEmail": "support@example.com",
      "documentationUrl": "https://example.com/docs",
      "supportUrl": "https://example.com/support",
      "supportPhone": "+18005555555"
    }
  }
}

Ver ejemplo en GitHub

Cada una de las opciones de configuración se detalla en la tabla de abajo. En las secciones que hay debajo de la tabla se proporciona más contexto sobre la distribución de tu aplicación, la configuración de la autenticación y la especificación de los permisos.

Los campos marcados con * son obligatorios.

CampoTipoDescripción
uid*CadenaUn identificador único interno para la aplicación. Debe ser globalmente único dentro del proyecto. Puede ser cualquier cadena de hasta 64 caracteres. Los caracteres pueden ser mayúsculas o minúsculas, y pueden incluir números, guiones bajos (_), guiones (-) y puntos (.).
type*CadenaEl tipo de componente. Debe coincidir con el nombre de la carpeta primaria (app).
description*CadenaDescripción de lo que hace la aplicación para el usuario que la instala. Puede ser cualquier cadena de hasta 8192 caracteres.
name*CadenaEl nombre de la aplicación, que se mostrará en HubSpot. Puede ser cualquier cadena de hasta 200 caracteres. No debe empezar ni terminar con un carácter de espacio en blanco.
distribution*CadenaEl método de distribución de la aplicación, que puede establecerse como uno de los siguientes:
  • marketplace: se utiliza si quieres que la aplicación sea apta para aparecer en el mercado de aplicaciones de HubSpot.
  • private: se utiliza si solo quieres instalar tu aplicación en un conjunto específico de cuentas permitidas, o en una sola cuenta a la vez.

Más información en la sección de distribución.

auth*ObjetoUn objeto que contiene los detalles del método de autenticación de la aplicación. Para más detalles, consulta la sección de autenticación.
permittedUrlsObjetoUna matriz que contiene las URL a las que la aplicación puede llamar. Las URL deben utilizar el esquema HTTPS y deben contener una autoridad, seguida de un prefijo de ruta opcional si es necesario.
supportEmailCadenaUna dirección de correo electrónico válida con la que los usuarios puedan ponerse en contacto para recibir asistencia.
documentationUrlCadenaLa URL externa a la que los usuarios pueden navegar para obtener documentación de apoyo. Debe utilizar HTTPS.
supportUrlCadenaLa URL externa a la que los usuarios pueden navegar para obtener asistencia adicional. Debe utilizar HTTPS.
supportPhoneCadenaEl número de teléfono al que pueden dirigirse los usuarios para solicitar asistencia. Debe empezar por el signo más (+).

Distribución

El campo distribution del esquema de tu aplicación te permite configurar cómo quieres distribuir tu aplicación:
  • Si piensas publicar tu aplicación en el mercado de aplicaciones de HubSpot, establece el campo distribution en "marketplace". Puedes encontrar un esquema de aplicación de ejemplo para esta opción aquí. Si eliges esta opción, asegúrate de establecer el type dentro de la propiedad auth en oauth, tal y como se detalla en la sección de autenticación más adelante.
  • Si quieres permitir que tu aplicación se instale en un conjunto específico de cuentas permitidas, o si quieres restringir la instalación a una sola cuenta cada vez, configura distribution en "private". Asegúrate de configurar el type dentro de la propiedad auth en consecuencia:
    • Si quieres instalar tu aplicación en varias cuentas basándote en una lista de permisos que configures en los ajustes de tu proyecto, establece la autenticación type en oauth. Consulta el esquema de aplicación de ejemplo para esta opción.
    • Para restringir la instalación a una sola cuenta, ya sea la misma que utilizas para el desarrollo u otra cuenta a la que tenga acceso el usuario instalador, establece la autenticación type en static. Puedes encontrar un esquema de aplicación de ejemplo para la autenticación estática.

Autenticación

La autenticación de tu aplicación se configura mediante la propiedad auth del esquema de tu aplicación. Puedes especificar los permisos de tu aplicación, las URL de redireccionamiento y el tipo de autenticación.

Los campos marcados con * son obligatorios.

CampoTipoDescripción
type*CadenaEl tipo de autenticación, que puede establecerse en una de las siguientes opciones:
  • oauth: permitir la instalación mediante OAuth, ya sea a un conjunto específico de cuentas permitidas o incluyéndola en el mercado de aplicaciones de HubSpot.
  • static: restringir la instalación de tu aplicación a una única cuenta a la que tenga acceso el usuario que la instale.
redirectUrls*MatrizUna lista de URL a las que el proceso OAuth puede redirigir. Cada aplicación debe tener al menos una URL de redireccionamiento de autenticación, y debe utilizar HTTPS. La única excepción es que se permite http://localhost para las pruebas.
requiredScopes*MatrizUna lista de los permisos necesarios para tu aplicación. Cada aplicación debe incluir al menos un permiso, y el usuario que la instala debe conceder estos permisos para que la aplicación se instale correctamente. Más información sobre los permisos a continuación.
optionalScopesMatrizUna lista de los permisos opcionales de tu aplicación. Estos permisos pueden excluirse de la autorización durante la instalación si la cuenta o el usuario que instala la aplicación no tiene los permisos adecuados. En ese caso, el permiso no se incluirá en el token de actualización ni en el token de acceso resultantes. Más información sobre los permisos abajo.
conditionallyRequiredScopesMatrizLista de permisos que solo son necesarios cuando se incluyen en el parámetro de consulta scope de la URL de instalación. Más información sobre los permisos a continuación.

Permisos

En el campo auth del archivo de configuración de una aplicación, puedes especificar tres tipos de permisos: permisos requeridos, permisos requeridos condicionalmente y permisos opcionales. Como mínimo, tu aplicación debe incluir el permiso read para que los clientes puedan acceder al tipo de objeto del CRM asociado.
"auth": {
      "type" : "oauth",
      "redirectUrls": ["http://localhost:3000/oauth-callback"],
      "requiredScopes": [
        "crm.objects.contacts.read",
        "crm.objects.contacts.write"
      ],
      "optionalScopes": [],
      "conditionallyRequiredScopes": []
    },

Para obtener una lista completa de los permisos disponibles, consulta la referencia de permisos.

Agregando funciones a la aplicación

Para configurar las funciones de la aplicación, como las suscripciones de webhooks, las acciones de workflow personalizadas y las tarjetas de la aplicación, consulta las guías de abajo para saber cómo agregar los archivos *-hsmeta.json asociados a tu proyecto: