Saltar al contenido

Creación de recetas de Integrador Ciudadano para Jitterbit Design Studio

Introducción

Una receta de Integrador Ciudadano es una plantilla de integración reutilizable que proporciona una guía paso a paso a través de Integrador Ciudadano, disponible a través del portal Harmony. Las recetas de Integrador Ciudadano pueden ser utilizadas por miembros de una organización Harmony para que puedan configurar fácilmente una integración de Design Studio para un caso de uso específico.

Este documento cubre la creación manual de recetas de Integrador Ciudadano. Las recetas también se pueden crear utilizando la interfaz de Integrador Ciudadano. Consulte Integrador Ciudadano - Generar o editar receta para más detalles.

Una receta de Integrador Ciudadano consta de dos partes:

  • Un Jitterpak de Design Studio (sufijo de archivo .jpk o .JPK).
  • Un archivo JSON de metadatos de receta de Integrador Ciudadano (sufijo de archivo .json o .JSON) que proporciona los pasos que un usuario sigue para configurar la integración.

Aquí hay un resumen de los pasos necesarios para crear una receta que luego se puede hacer disponible a través de la interfaz web de Integrador Ciudadano:

Paso 1: Crear un Jitterpak

Cree un Jitterpak (JPK) utilizando Jitterbit Design Studio. El Jitterpak se utilizará como base para la receta. Consulte Creación de Jitterpaks para Recetas.

Paso 2: Crear los metadatos de la receta

Cree un archivo de metadatos de receta (un archivo JSON). Los metadatos de la receta incluyen los pasos que los usuarios completan a través de la interfaz web y asocian la información proporcionada por el usuario con el Jitterpak. Consulte Creación de metadatos de receta para mejores prácticas, un recorrido de muestra, una descripción de los tipos de pasos de receta y documentación de los componentes de un archivo de metadatos de receta.

Paso 3: Validar los metadatos de la receta

Valide su archivo de metadatos de receta utilizando el jbcli. Consulte Validar una receta de la Interfaz de Línea de Comando de Jitterbit.

Paso 4: Cargar el Jitterpak y los metadatos de la receta

Carga tu archivo Jitterpak y los metadatos de la receta en tu repositorio de recetas. Consulta Cargar una nueva receta y Jitterpak de la Interfaz de Línea de Comando de Jitterbit. También puedes cargar recetas a través de la interfaz web de Citizen Integrator como se describe en las páginas de Citizen Integrator - Tablero o Citizen Integrator - Mis recetas.

Paso 5: Configurar y desplegar la receta

Tu nueva receta ya está disponible para que los miembros de tu organización la utilicen a través de la interfaz web de Citizen Integrator. Consulta Citizen Integrator - Configurar Receta para obtener instrucciones para el usuario sobre cómo configurar y desplegar recetas.

Crear Jitterpaks para recetas

Al crear una nueva receta de Citizen Integrator, se recomienda comenzar creando primero un Jitterpak de Design Studio que contenga la estructura del proyecto para tu plantilla de receta.

Los Jitterpaks no son específicos de la funcionalidad de recetas; son una función central de toda la aplicación de Design Studio. Se espera que los usuarios que deseen crear nuevas recetas ya estén familiarizados con Design Studio. Para más información, consulta los materiales bajo Design Studio y Jitterpaks.

Nota

Las recetas de Citizen Integrator se crean a partir de proyectos de Design Studio. Para Integration Studio, utiliza en su lugar recetas de integración o plantillas de proceso, disponibles en Jitterbit Marketplace.

Mejores prácticas para Jitterpak

Al crear un Jitterpak para su uso con recetas de Citizen Integrator, recomendamos estas mejores prácticas para la creación de recetas:

  • Define tu(s) caso(s) de uso típico(s)

    Antes de comenzar con cualquier Jitterpak o receta, debes tener una buena idea de lo que deseas que tus usuarios puedan lograr al utilizar la receta. Ten en cuenta que puedes crear múltiples recetas si es necesario. El caso de uso te ayudará a decidir qué incluir en tu Jitterpak y los pasos que deseas que un usuario complete a través de la interfaz de Citizen Integrator.

  • Consulta ejemplos para obtener ayuda para comenzar

    Revisa nuestros Jitterpaks públicos como referencia, o si encuentras uno que sea similar a tu caso de uso, incluso podrías querer comenzar con él. Para descargar cualquiera de los Jitterpaks creados para nuestras recetas públicas, sigue Obtener una Receta Específica y Guardar el Jitterpak Localmente bajo Interfaz de Línea de Comando de Jitterbit. O, consulta nuestra Biblioteca de Jitterpaks.

  • Crea variables de proyecto siempre que sea posible

    Las variables de proyecto son clave para crear recetas que puedan ser fácilmente completadas por un usuario a través de la interfaz web de Citizen Integrator. Piensa en las variables de proyecto como campos con información específica que deseas que los usuarios proporcionen al utilizar tu receta. Luego, crea esos elementos como variables de proyecto en tu Jitterpak. Por ejemplo, información de conexión para nuevos endpoints.

  • Nombra las variables de proyecto para referencia futura

    Cuando creas variables de proyecto, es una buena práctica nombrarlas con un espacio de nombres. Por ejemplo, una variable de proyecto para el host podría llamarse "db.host" para indicar que se refiere a un host de base de datos. Esto facilitará la lectura de las variables de proyecto al crear los metadatos de tu receta.

  • Coloca las operaciones en el nivel raíz si deseas ejecutarlas a través de un paso de receta

    Cualquier operación que desees ejecutar a través de un paso RunOperation en tu receta debe colocarse en el nivel raíz de la carpeta de operaciones dentro de Design Studio. Es decir, si tienes operaciones dentro de subcarpetas bajo tu árbol de operaciones, estas no se ejecutarán cuando se expongan a través de un paso RunOperation. Esta advertencia es solo para operaciones que se ejecutan en un paso específico de la receta. Si tus operaciones están dentro de subcarpetas, estas aún se ejecutarán al guardar y desplegar la receta.

  • Incluye WriteToOperationLog en las operaciones que deseas ejecutar a través de un paso de receta

    Incluye WriteToOperationLog en las operaciones que deseas ejecutar a través de un paso RunOperation en tu receta (ver Funciones de registro y error). Los mensajes de WriteToOperationLog se mostrarán en el panel debajo del botón RunOperation en la interfaz de Citizen Integrator y proporcionarán retroalimentación al usuario de la receta sobre la operación ejecutada.

  • Usa valores de variables de proyecto para probar, pero luego elimina los valores al exportar como un Jitterpak

    Donde sea que uses variables de proyecto en tu Jitterpak, asegúrate de no incluir valores específicos al exportar el Jitterpak. Recuerda que los valores suelen estar en blanco para que el usuario los complete al configurar la receta. Siempre es una buena idea probar tu proyecto de Design Studio con valores específicos, pero asegúrate de eliminar estos antes de exportar. Aquí hay un par de opciones para eliminar valores:

    • Todos los valores: Para eliminar todos los valores de variables de proyecto, al exportar como un Jitterpak, desmarca la casilla "Incluir valores de variables de proyecto". Esta es la forma estándar y recomendada de eliminar los valores de variables de proyecto.

    • Algunos valores: Para eliminar solo variables de proyecto específicas, simplemente elimina el valor predeterminado de la variable de proyecto. Esta opción puede ser más apropiada que usar la casilla de verificación descrita anteriormente si deseas mantener intencionalmente algunos valores de variables de proyecto. Por ejemplo, si tu receta es privada dentro de tu organización, podrías incluir información como una URL que no cambiará por cada usuario que complete la receta.

  • Toma nota de los horarios integrados

    Si incluyes un horario dentro del Jitterpak, toma nota de cuándo está programada la operación para ejecutarse y asegúrate de documentar esto en los metadatos de la receta. De lo contrario, los usuarios no estarán al tanto del horario que está integrado en el Jitterpak. Actualmente, los horarios no están disponibles para ser configurados dentro de una receta.

Crear metadatos de receta

Puedes comenzar a crear los metadatos de la receta del Integrador Ciudadano mientras creas tu Jitterpak, o crear los metadatos cuando hayas terminado. Los metadatos de la receta proporcionan dos funciones principales:

  1. Define los pasos que los usuarios deberán seguir para configurar la receta a través de la interfaz del Integrador Ciudadano.
  2. Conecta cualquier valor proporcionado por el usuario de vuelta al Jitterpak que acompaña a la receta para que las operaciones recién configuradas se ejecuten como se espera a través de Jitterbit.

Esta sección está organizada para proporcionar una lista de mejores prácticas para crear recetas, un ejemplo de recorrido para crear una receta, los tipos de pasos disponibles para ser utilizados en la receta, y finalmente una lista completa de todas las partes posibles del archivo de metadatos de la receta.

Mejores prácticas de metadatos

Al crear tu archivo de metadatos de receta del Integrador Ciudadano, estas mejores prácticas son útiles para aquellos que son nuevos en la creación de recetas.

  • Referencia ejemplos para comparar la interfaz del Integrador Ciudadano con los metadatos de la receta

    Echa un vistazo a cómo están estructuradas nuestras recetas públicas, comparando lo que ves en la interfaz del Integrador Ciudadano con el archivo de metadatos de la receta real para esa receta. Si encuentras una que sea similar a tu caso de uso, incluso podrías querer comenzar con ella.

  • Construye tu receta en iteraciones

    Espera necesitar hacer ajustes a tu Jitterpak mientras trabajas en los metadatos de tu receta, y viceversa. Siempre puedes subir una primera versión, verificar cómo se muestra y funciona en la interfaz del Integrador Ciudadano, y luego continuar actualizando tus archivos de receta desde la página Integrador Ciudadano - Mis recetas, o siguiendo Sube una nueva receta y Jitterpak y Actualiza una receta y Jitterpak existentes de la Interfaz de Línea de Comando de Jitterbit.

  • Incluir pasos de Introducción y Revisión en los metadatos de la receta

    Se recomienda comenzar con un paso de Introducción y terminar con un paso de Revisión para mantener la consistencia de las recetas. Estas secciones utilizan el tipo org.jitterbit.integration.data.entity.Description (descrito en Tipos de pasos).

    • La Introducción debe utilizarse para explicar para qué se utiliza la receta, describir cualquier limitación, listar campos estándar y/o proporcionar información previa de la que alguien que use la receta deba estar al tanto.

    • El paso de Revisión debe resumir y confirmar para el usuario el comportamiento esperado cuando la receta configurada se despliega. Si incluyes un horario dentro del Jitterpak, el paso de Revisión es un buen lugar para documentar la hora en que se programa la operación. Recuerda especificar la zona horaria (UTC es la predeterminada dentro de Design Studio, pero también podrías convertir la hora a tu zona horaria deseada dentro de Design Studio y especificar eso).

  • Estandarizar nombres dentro de los metadatos de tu receta

    Estandariza el nombre de tu receta, el nombre del proyecto, los nombres de los archivos y la estructura de directorios. Esto ayuda a prevenir errores no intencionados al referirse a partes dentro de la receta y facilita la gestión de todas las partes de tu receta.

  • Para migraciones de punto a punto, ordena los puntos direccionalmente

    Para migraciones de un punto a otro (por ejemplo, migrar Cuentas de Salesforce a Empresas de NetSuite), ordena los puntos direccionalmente:

    • En el archivo JSON: "name": "Migrar Cuentas de Salesforce a Empresas de NetSuite"
    • En el archivo JSON: "projectName": "cuentas_salesforce-a-empresas_netsuite"
    • Directorio: salesforce-a-netsuite/cuentas-a-empresas/
    • Nombres de archivos: cuentas_salesforce-a-empresas_netsuite.jpk y cuentas_salesforce-a-empresas_netsuite.json
  • Para sincronización de puntos, ordena los puntos alfabéticamente

    Para sincronizaciones de dos puntos (por ejemplo, sincronizar Cuentas de Salesforce y Empresas de NetSuite), ordena los puntos alfabéticamente:

    • En el archivo JSON: "name": "Sincronizar Empresas de NetSuite y Cuentas de Salesforce"
    • En el archivo JSON: "projectName": "empresas_netsuite-cuentas_salesforce"
    • Directorio: netsuite-salesforce/empresas-cuentas/
    • Nombres de archivos: empresas_netsuite-cuentas_salesforce.jpk y empresas_netsuite-cuentas_salesforce.json
  • Definir variables del proyecto al final de los metadatos de la receta

    Cualquier variable del proyecto utilizada dentro de tu Jitterpak y referenciada en los pasos de los metadatos de tu receta debe definirse al final de tu archivo de metadatos de la receta.

  • Ocultar pasos que deseas incrustar en otros pasos

    Puedes especificar un atributo oculto en un paso para hacerlo invisible en la interfaz del Integrador Ciudadano, pero luego referenciar ese paso utilizando una ruta que apunte a una acción con "useStepAsRequest." Esto es una buena idea si, por ejemplo, configuras un paso para probar la información de conexión, pero deseas incluirlo como un botón de Probar Conexión dentro de otro paso.

  • Omitir campos que se generarán al cargar los metadatos de la receta

    Algunos campos en el archivo de metadatos de la receta no se especifican al cargar el archivo y son generados por el sistema cuando se carga el archivo. Estos campos aparecen al principio y al final del archivo de metadatos de la receta.

    • id: Este campo se completa cuando los metadatos de la receta se cargan en el repositorio de recetas. Después de la carga, puedes averiguar el ID de Receta generado utilizando Listar todas las recetas de la Interfaz de Línea de Comando de Jitterbit.
    • guid: Requerido Este campo se completa cuando un Jitterpak asociado se carga en el repositorio de recetas. El GUID (identificador único global) se completa con el de Jitterpak asociado. Sin embargo, este campo es obligatorio, por lo que aún debes incluirlo en el archivo. El identificador real se actualizará al cargar.
    • createdAt: La marca de tiempo de la época Unix en milisegundos de cuando se cargó por primera vez la receta.
    • updatedAt: La marca de tiempo de la época Unix en milisegundos de cuando se actualizó por última vez la receta.
    • updatedBy

      • userId: El nombre de usuario de Harmony de la persona que actualizó por última vez la receta.
      • name: El nombre de la persona que actualizó por última vez la receta.
      • orgName: El nombre de la organización a la que pertenece la persona que actualizó por última vez la receta.
  • orgid: El ID de la organización a la que pertenece la persona que subió la receta. La receta es propiedad de esta organización y solo el autor de la receta o un administrador de la organización pueden actualizar o eliminar la receta (ver Citizen Integrator - Mis recetas o la Interfaz de Línea de Comando de Jitterbit).

  • author

    -   **userId:** El nombre de usuario de Harmony de la persona que subió la receta.
    -   **name:** El nombre de la persona que subió la receta.
    -   **orgName:** El nombre de la organización a la que pertenece la persona que subió la receta.
    

    Después de subir una receta, puedes ver los valores generados para estos campos cuando usas Obtener una receta específica para devolver los metadatos de la receta (ver la Interfaz de Línea de Comando de Jitterbit).

  • Usa HTML para texto enriquecido

    Si deseas usar enlaces, listas, negritas, etc. dentro de los pasos de tu receta, intenta usar HTML. La mayoría de los campos donde podrías querer usar esto permiten el uso de HTML, brindándote más control sobre la apariencia y funcionalidad de los pasos de la receta.

  • Valida antes de subir

    Siempre es una buena idea asegurarte de que los metadatos de tu receta se validen antes de subirla. Hazlo usando Validar una receta (ver la Interfaz de Línea de Comando de Jitterbit). No debes subir recetas que no se validen, ya que tendrán errores para los usuarios que intenten configurar la receta.

  • Revisa los registros para solucionar problemas

    Después de haber subido tu receta, también puedes probarla configurándola y desplegándola a través de la interfaz de Citizen Integrator. No olvides que todas las mismas herramientas para depuración están disponibles, al igual que para cualquier otro proyecto de Jitterbit. Consulta Citizen Integrator - Mis recetas o revisa los registros de operación, proyectos, actividades, etc. dentro de la Consola de Administración.

Ejemplo de recorrido

Esta sección proporciona un recorrido sobre cómo crear una receta para usar con la interfaz web de Citizen Integrator. Este ejemplo utiliza algunos de los elementos más comunes de las recetas que normalmente podrías encontrar. Para obtener una lista completa de opciones que puedes incluir dentro de las recetas, consulta Definiciones de metadatos de recetas.

Para este ejemplo, crearemos una receta que sincroniza cuentas de Salesforce y las inserta en Zendesk. Puedes seguir esta demostración descargando la última receta de Salesforce a Zendesk siguiendo Obtener una receta específica y Guardar el Jitterpak localmente de la Interfaz de Línea de Comando de Jitterbit.

Paso 1: Crear proyecto en Design Studio

El primer paso es configurar tu proyecto en Design Studio. Al crear tu proyecto, consulta las Mejores Prácticas de Jitterpak anteriores que son específicas para crear Jitterpaks para su uso con recetas.

Estos componentes del Jitterpak se utilizan para la receta de Salesforce a Zendesk:

  • Operaciones: Este Jitterpak está configurado de tal manera que al ejecutar la operación RunNow, Jitterbit consultará Salesforce para obtener información sobre los casos (Consultar Casos), y luego utilizará esos casos de Salesforce para actualizar e insertar tickets en Zendesk (Crear Tickets de Zendesk). Si has descargado el Jitterpak para seguir el ejemplo, puedes hacer clic en cada elemento del gráfico para aprender más sobre los componentes de las operaciones.

    image

  • Transformaciones: Cada transformación ha sido mapeada para que los campos estándar apropiados estén incluidos en la receta. Muchas recetas implicarán mapear campos estándar de un punto final a otro. En este ejemplo, la consulta de Salesforce utiliza solo los campos apropiados para esta receta específica (es decir, Número de Caso, Origen, Asunto, Correo Electrónico Proporcionado, Nombre Proporcionado). Si estás creando tu propia receta para usar en una organización que utiliza campos personalizados de Salesforce, también podrías optar por integrarlos en tu receta, siempre que el mapeo esté definido aquí.

    image

  • Fuentes y Destinos: Define cualquier fuente y destino como lo harías normalmente para cualquier proyecto de Design Studio. Esta receta en particular utiliza almacenamiento temporal para Cuentas de Salesforce y Casos de Salesforce, y destinos HTTP como los parámetros de conexión para Zendesk.

    image

  • Métodos de Servicio Web y Puntos Finales HTTP Alojados: Este Jitterpak no utiliza ninguno de estos componentes, pero puedes configurarlos tal como lo harías para cualquier otro proyecto de Design Studio.

  • Programaciones: Este Jitterpak no incluye una programación, pero puedes incluir una aquí si, por ejemplo, deseas que la operación se ejecute diariamente. Dado que la programación no es configurable por el usuario de la receta, debes asegurarte de anotar en un campo de texto de la receta cuándo está programada para ejecutarse tu operación. Un lugar típico para agregar esto es en el paso de Revisión.

  • Mensajes de Correo Electrónico: Este Jitterpak no incluye ningún mensaje de correo electrónico, pero puedes optar por configurarlos utilizando variables de proyecto si deseas que tu receta genere notificaciones por correo electrónico.

  • Scripts: En este Jitterpak, se utilizan scripts para escribir mensajes en el registro, incluidos mensajes específicos de éxito y fracaso.

  • Variables de Proyecto: Las variables de proyecto son clave para crear recetas configurables. Típicamente, las variables de proyecto se utilizan donde quieras que los usuarios proporcionen valores durante la configuración de la receta. En este Jitterpak, tenemos variables de proyecto para credenciales de Salesforce y Zendesk. Recuerda probar tu proyecto de Design Studio con valores reales, luego elimínalos antes de exportar el Jitterpak.

    image

  • Jitterbit Connect: Dado que este Jitterpak utiliza Salesforce, las credenciales de conexión para la organización están incluidas en esta sección.

    image

  • Conectores: Este Jitterpak no utiliza ningún conector, pero muchas otras recetas públicas sí lo hacen. Si deseas crear una nueva receta utilizando un conector, puede ser una buena idea descargar un ejemplo diferente que utilice uno de los conectores como Autodesk.

Paso 2: Prueba el proyecto de Design Studio

Después de definir tus componentes, guarda, despliega y ejecuta tu proyecto de Design Studio para asegurarte de que se ejecute correctamente.

image

Puedes revisar el registro de operaciones para cualquier mensaje de error.

Paso 3: Exporta el proyecto de Design Studio

Elimina cualquier valor de variable de proyecto u otra información de credenciales que estarás incorporando en tu receta, y exporta tu proyecto de Design Studio como un Jitterpak.

En este ejemplo, eliminamos las variables de proyecto y credenciales en la etapa de exportación. Puedes guardar en cualquier ubicación que desees por ahora, ya que subirás el Jitterpak más tarde (consulta Citizen Integrator - Mis Recetas o la Interfaz de Línea de Comando de Jitterbit).

image

Paso 4: Crea metadatos de la receta

Ahora que has creado un Jitterpak, puedes personalizar los metadatos de tu receta para que coincidan con los componentes en tu Jitterpak.

Consulta las mejores prácticas de metadatos anteriores para crear tu archivo de metadatos de receta, así como los tipos de pasos al comenzar una nueva receta. Para una lista completa de definiciones de recetas, consulta las definiciones de metadatos de receta a continuación como referencia.

El archivo JSON completo utilizado para definir los metadatos de la receta de Salesforce a Zendesk se proporciona a continuación, seguido de un desglose de cada sección del archivo de metadatos de la receta.

Metadatos JSON - Salesforce a Zendesk
{
  "description": "Sync accounts from Salesforce and upsert to Zendesk",
  "name": "Salesforce to Zendesk",
  "guid": "8yg7df8a-b526-4d14-a49d-39090d63a426",
  "projectName": "Salesforce to Zendesk",
  "steps": [
    {
      "name": "Introduction",
      "description": "Sync accounts from Salesforce and upsert them to Zendesk",
      "label": "Introduction",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>This <b>Recipe</b> Syncs accounts from Salesforce and upserts them to Zendesk.</p></div>"
        }
      ]
    },
    {
      "name": "Salesforce Endpoint Project Variables",
      "description": "Set-up the source Salesforce endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.salesforce.username",
          "com.salesforce.password",
          "com.salesforce.token"
        ],
        "action": {
          "name": "test-endpoint-connection",
          "displayName": "Test Connection",
          "useStepAsRequest": "/Source/SalesforceEndpoint"
        }
      }
    },
    {
      "name": "Test Salesforce Connection Information",
      "description": "Test Salesforce endpoint connection information",
      "label": "Source Endpoint (Salesforce)",
      "type": "org.jitterbit.integration.data.entity.SalesforceConnector",
      "hidden": true,
      "path": "/Source/SalesforceEndpoint",
      "properties": [
        {
          "name": "version",
          "defaultValue": "37.0"
        },
        {
          "name": "host",
          "defaultValue": "https://login.salesforce.com"
        },
        {
          "name": "username",
          "defaultValue": "[com.salesforce.username]"
        },
        {
          "name": "password",
          "hidden": false,
          "defaultValue": "[com.salesforce.password]"
        },
        {
          "name": "token",
          "hidden": false,
          "defaultValue": "[com.salesforce.token]"
        },
        {
          "name": "sandbox",
          "defaultValue": "0"
        }
      ]
    },
    {
      "name": "Zendesk Endpoint Project Variables",
      "description": "Set-up the target Zendesk endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.zendesk.username",
          "com.zendesk.password"
        ]
      }
    },
    {
      "name": "RunNow",
      "description": "The Run Now operation runs the integration right now.",
      "label": "RunNow",
      "type": "org.jitterbit.integration.data.entity.RunOperation",
      "hidden": false,
      "path": "/Operations/RunNow",
      "properties": [
        {
          "name": "operationName",
          "defaultValue": "RunNow",
          "description": "Run the recipe to get Salesforce accounts and upsert them to NetSuite right now."
        }
      ]
    },
    {
      "name": "Review",
      "description": "Push this recipe to the cloud",
      "label": "Review",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>When you click <b>Save</b> this recipe will be ran daily at 3am indefinitely</p></div>"
        }
      ]
    }
  ],
  "projectVariables": [
    {
      "name": "com.salesforce.username",
      "displayName": "Salesforce Login",
      "description": "Please provide your Salesforce username or email."
    },
    {
      "name": "com.salesforce.password",
      "displayName": "Salesforce Password",
      "description": "Please provide your Salesforce password.",
      "type": "password"
    },
    {
      "name": "com.salesforce.token",
      "displayName": "Salesforce Security Token",
      "description": "Please provide your Salesforce security token.",
      "type": "password"
    },
    {
      "name": "com.zendesk.username",
      "displayName": "Zendesk Login",
      "description": "Please provide your Zendesk email."
    },
    {
      "name": "com.zendesk.password",
      "displayName": "Zendesk Password",
      "description": "Please provide your Zendesk password.",
      "type": "password"
    }
  ],
}
  • description: Requerido

    Este campo debe contener una descripción de la receta.

    "description": "Sincronizar cuentas de Salesforce y hacer upsert a Zendesk"
    

  • guid: Requerido

    Este campo puede contener cualquier valor cuando la receta se sube por primera vez; al subirla con un Jitterpak asociado, el valor será reemplazado por el GUID (identificador único global) del Jitterpak asociado.

    "guid": "8yg7df8a-b526-4d14-a49d-39090d63a426"
    

  • name: Requerido

    Este campo debe contener el nombre de la receta.

    "name": "Salesforce to Zendesk"
    
    Se muestra como el título de la receta en la Lista de Recetas:

    image

    Se muestra como el título de la receta bajo Pasos de Configuración:

    image

  • projectName: Requerido

    Este campo debe coincidir con el nombre del archivo Jitterpak (JPK).

    "projectName": "Salesforce to Zendesk"
    

  • steps: Requerido

    Los pasos definen los Pasos de Configuración en la interfaz de Citizen Integrator. Los atributos de paso utilizados en la receta de Salesforce a Zendesk se proporcionan a continuación, seguidos de una comparación de la interfaz de Citizen Integrator y los metadatos JSON para el paso.

    • name: Requerido Este campo es el nombre del paso.
    • description: Requerido Este campo es una descripción del paso.
    • label: Este campo es una etiqueta que se puede usar para renderizar un nombre de paso que sea diferente del definido nombre del paso.
    • type: Requerido Este campo es el tipo asociado a este paso. Consulte Tipos de paso para una explicación de los varios tipos de paso.
    • required: Este valor puede establecerse como verdadero o falso. Si es verdadero, el paso de la receta será obligatorio completarse cuando la receta esté configurada antes de que se puedan usar las acciones de Probar Conexión o Ejecutar Operación.
    • hidden: Este valor puede establecerse como verdadero o falso. Si es verdadero, el paso estará oculto en la interfaz de Citizen Integrator. Esto puede ser útil si tiene pasos que no desea mostrar, como para probar la información de conexión. Si es falso, el paso se mostrará. El valor predeterminado es falso, lo que significa que los pasos se muestran por defecto.
    • path: Úselo si está ocultando pasos y desea hacer referencia a ellos en otros pasos. Este valor debe ser definido si planea incrustar un paso oculto en otro paso. Por ejemplo, si desea incluir un botón de Probar Conexión dentro de un paso, puede ocultar el paso para probar la información de conexión, luego hacer referencia a él en otro paso. La forma en que nos referimos a él es definiendo un camino.
    • properties: Solo se puede usar si no se utilizan projectVariables. Estos incluyen propiedades asociadas al paso. En un paso, puede tener propiedades o projectVariables asignadas, pero no ambas al mismo tiempo.
      • name: Requerido Este campo es el nombre de la propiedad que se define para este paso.
      • defaultValue: Este campo puede contener un valor predeterminado asociado a la propiedad. Típicamente, esto se utiliza para insertar texto instructivo o informativo en un paso.
      • description: Este campo puede contener texto predeterminado que aparecerá dentro del cuadro de texto.
    • projectVariables: Solo se puede usar si no se utilizan propiedades. Estos incluyen una lista de variables de proyecto agrupadas que representan entidades configurables. En un paso, puede tener projectVariables o propiedades asignadas, pero no ambas al mismo tiempo.
      • names: Requerido Este campo contiene una lista de todas las variables de proyecto que se utilizan en este paso.
      • action: Este campo define cualquier acción. Típicamente, estas se utilizan como botones dentro de un paso para realizar acciones que pueden definirse como pasos ocultos.
        • name: Requerido Este campo es el nombre de la acción.
        • displayName: Este campo se puede usar si desea un nombre diferente para mostrar en la interfaz de Citizen Integrator.
        • useStepAsRequest: Requerido Este campo se utiliza para proporcionar la ruta a las propiedades definidas en otro paso que no se renderiza. Use el mismo valor que definió para "path" en el paso oculto.

    Paso 1: Introducción

    image

    Metadatos JSON para el Paso 1
    {
      "name": "Introduction",
      "description": "Sync accounts from Salesforce and upsert them to Zendesk",
      "label": "Introduction",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>This <b>Recipe</b> Syncs accounts from Salesforce and upserts them to Zendesk.</p></div>"
        }
      ]
    },
    

    Paso 2: Variables del Proyecto de Endpoint de Salesforce

    image

    Metadatos JSON para el Paso 2
    {
      "name": "Salesforce Endpoint Project Variables",
      "description": "Set-up the source Salesforce endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.salesforce.username",
          "com.salesforce.password",
          "com.salesforce.token"
        ],
        "action": {
          "name": "test-endpoint-connection",
          "displayName": "Test Connection",
          "useStepAsRequest": "/Source/SalesforceEndpoint"
        }
      }
    },
    

    Paso Oculto: Información de Conexión de Prueba de Salesforce

    Metadatos JSON para el Paso Oculto
    {
      "name": "Test Salesforce Connection Information",
      "description": "Test Salesforce endpoint connection information",
      "label": "Source Endpoint (Salesforce)",
      "type": "org.jitterbit.integration.data.entity.SalesforceConnector",
      "hidden": true,
      "path": "/Source/SalesforceEndpoint",
      "properties": [
        {
          "name": "version",
          "defaultValue": "37.0"
        },
        {
          "name": "host",
          "defaultValue": "https://login.salesforce.com"
        },
        {
          "name": "username",
          "defaultValue": "[com.salesforce.username]"
        },
        {
          "name": "password",
          "hidden": false,
          "defaultValue": "[com.salesforce.password]"
        },
        {
          "name": "token",
          "hidden": false,
          "defaultValue": "[com.salesforce.token]"
        },
        {
          "name": "sandbox",
          "defaultValue": "0"
        }
      ]
    },
    

    Paso 3: Variables del Proyecto de Endpoint de Zendesk

    image

    Metadatos JSON para el Paso 3
    {
      "name": "Zendesk Endpoint Project Variables",
      "description": "Set-up the target Zendesk endpoint project variables",
      "type": "org.jitterbit.integration.data.entity.ProjectVariable",
      "hidden": false,
      "properties": [],
      "projectVariables": {
        "names": [
          "com.zendesk.username",
          "com.zendesk.password"
        ]
      }
    },
    

    Paso 4: RunNow

    image

    Metadatos JSON para el Paso 4
    {
      "name": "RunNow",
      "description": "The Run Now operation runs the integration right now.",
      "label": "RunNow",
      "type": "org.jitterbit.integration.data.entity.RunOperation",
      "hidden": false,
      "path": "/Operations/RunNow",
      "properties": [
        {
          "name": "operationName",
          "defaultValue": "RunNow",
          "description": "Run the recipe to get Salesforce accounts and upsert them to NetSuite right now."
        }
      ]
    },
    

    Paso 5: Revisión

    image

    Metadatos JSON para el Paso 5
    {
      "name": "Review",
      "description": "Push this recipe to the cloud",
      "label": "Review",
      "type": "org.jitterbit.integration.data.entity.Description",
      "hidden": false,
      "properties": [
        {
          "name": "template",
          "defaultValue": "<div><p>When you click <b>Save</b> this recipe will be ran daily at 3am indefinitely</p></div>"
        }
      ]
    }
    
  • projectVariables: Esta sección define cualquier variable de proyecto utilizada en los pasos de la receta. Tenga en cuenta que esta es una nueva sección del archivo de metadatos de la receta que se encuentra al final, después de los pasos, y no debe confundirse con las projectVariables utilizadas dentro de los propios pasos.

    • name: Requerido Este campo contiene el nombre de la variable de proyecto tal como se utiliza en su Jitterpak.
    • displayName: Este campo se puede utilizar si desea un nombre diferente para mostrar en la interfaz de Citizen Integrator.
    • description: Este campo se puede utilizar para insertar texto debajo del campo, por ejemplo, para proporcionar instrucciones sobre lo que los usuarios deben ingresar.
    • type: Este campo se puede utilizar para definir el tipo de valor que el usuario puede proporcionar. El valor predeterminado es string. También puede usar integer, float, double, date, time, boolean, password, enum, dropdown, checkboxes, o textarea.
    • required: Este valor se puede establecer como verdadero o falso. Si es verdadero, el campo de variable de proyecto será obligatorio completarlo cuando la receta esté configurada antes de que se puedan utilizar las acciones de Test Connection o Run Operation.
    • regex: Este campo se puede utilizar para proporcionar una expresión regular (string) que el valor de la variable de proyecto debe coincidir cuando la receta esté configurada antes de que se puedan utilizar las acciones de Test Connection o Run Operation. Por ejemplo: .+@.+[.].+.
    • value: Este campo se puede utilizar si desea asignar un valor predeterminado a su variable de proyecto. Esto se puede utilizar para proporcionar un valor predeterminado junto con otros valores opcionales para la variable de proyecto. Un ejemplo adicional de metadatos JSON utilizando valores y opciones se proporciona en el Ejemplo 2 a continuación.
    • options: Este campo se puede utilizar para presentar posibles valores en un menú desplegable, área de texto o casillas de verificación. Un ejemplo adicional de metadatos JSON utilizando valores y opciones se proporciona en el Ejemplo 2 a continuación.

    Ejemplo de Metadatos JSON 1

    "projectVariables": [
      {
        "name": "com.salesforce.username",
        "displayName": "Salesforce Login",
        "description": "Please provide your Salesforce username or email."
      },
      {
        "name": "com.salesforce.password",
        "displayName": "Salesforce Password",
        "description": "Please provide your Salesforce password.",
        "type": "password"
      },
      {
        "name": "com.salesforce.token",
        "displayName": "Salesforce Security Token",
        "description": "Please provide your Salesforce security token.",
        "type": "password"
      },
      {
        "name": "com.zendesk.username",
        "displayName": "Zendesk Login",
        "description": "Please provide your Zendesk email."
      },
      {
        "name": "com.zendesk.password",
        "displayName": "Zendesk Password",
        "description": "Please provide your Zendesk password.",
        "type": "password"
      }
    ]
    

    Ejemplo de Metadatos JSON 2

    "projectVariables": [
      {
        "name": "myDropdown",
        "displayName": "Dropdown Test",
        "value": "ProdOperation",
        "type": "dropdown",
        "description": "A field to test the dropdown feature",
        "options": [
          {
            "name": "Development",
            "value": "DevOperation"
          },
          {
            "name": "Production",
            "value": "ProdOperation"
          }
        ]
      },
      {
        "name": "myCheckboxes",
        "displayName": "Checkbox Test",
        "value": "ProdOperation",
        "type": "checkboxes",
        "description": "A field to test the checkbox feature",
        "options": [
          {
            "name": "Development",
            "value": "DevOperation"
          },
          {
            "name": "Production",
            "value": "ProdOperation"
          }
        ]
      },
      {
        "name": "myTextarea",
        "displayName": "Comments",
        "type": "textarea",
        "value": "This is a comment for the textarea",
        "description": "SAP Language"
      }
    ]
    

Tipos de pasos

Cada paso dentro de los metadatos de la receta del Integrador Ciudadano tiene un atributo "tipo" que indica el tipo del paso. Estos pasos corresponden directamente a los que los usuarios verán utilizando la interfaz del Integrador Ciudadano, y los tipos de esos pasos corresponden directamente con el Estudio de Diseño.

Estos son los posibles tipos de pasos disponibles. Se proporciona información adicional sobre cada tipo de paso en las siguientes secciones.

Descripción

org.jitterbit.integration.data.entity.Description

Este tipo de paso debe utilizarse cuando se necesita proporcionar información detallada sobre una receta o un paso, o puede ser utilizado como una Revisión al final de la receta.

  • Por ejemplo:

    {
    "name": "Introduction",
    "description": "Insert accounts into a postgres database",
    "label": "Introduction",
    "type": "org.jitterbit.integration.data.entity.Description",
    "properties": [
      {
        "name": "template",
        "defaultValue": "<div>...</div>"
      }
    
  • Si este paso es el último paso dentro de una receta (definido como un paso de Revisión) y contiene la propiedad "submitOperationsToRun", entonces el botón Guardar y Finalizar aplicará esta lógica respecto a las operaciones que necesitan ser enviadas para su ejecución. Tenga en cuenta que si estas opciones no están configuradas, el botón Guardar y Finalizar no enviará operaciones para su ejecución.

    • No se enviarán operaciones para su ejecución si:

      {
        "name": "submitOperationsToRun",
        "value": ""
      }
      
    • Solo se enviarán las operaciones especificadas para su ejecución si:

      {
      "name": "submitOperationsToRun",
      "value": "Operation1;Operation2"
      }
      
    • Se enviarán todas las operaciones para su ejecución si la propiedad no está presente:

      {
      "name": "submitOperationsToRun",
      "value": "*"
      }
      

VariableDeProyecto

org.jitterbit.integration.data.entity.ProjectVariable

Este tipo de paso se utiliza para agrupar un conjunto de variables de proyecto. También se puede utilizar para redefinir una definición de endpoint. Se puede adjuntar una "acción" opcional a él.

  • Por ejemplo:

       {
        "name": "Ftp Endpoint",
        "description": "Set-up the Source FTP Endpoint project variables",
        "type": "org.jitterbit.integration.data.entity.ProjectVariable",
        "projectVariables": {
          "names": [
            "acme.org.ftp.host",
            "acme.org.ftp.username",
            "acme.org.ftp.password",
            "acme.org.ftp.path",
            "acme.org.ftp.filename"
          ],
          "action": {
            "name": "test-endpoint-connection",
            "displayName": "Test Connection",
            "useStepAsRequest": "/Source/FtpSite"
          }
        }
      }
    
  • Estas "acciones" son compatibles:

    • "test-endpoint-connection": Esto se utiliza para probar una conexión de endpoint. Debe usarse junto con un endpoint.
    • "submit-http-form": Esto necesita ser utilizado junto con un formulario HTTP (ver más abajo).

EjecutarOperación

org.jitterbit.integration.data.entity.RunOperation

Este tipo de paso se utiliza para ejecutar una operación con el fin de permitir al usuario realizar pruebas.

  • Por ejemplo:

       {
        "name": "Run Now",
        "description": "Run Now operation - fetch the csv file, parse and insert into database",
        "label": "Run Now",
        "type": "org.jitterbit.integration.data.entity.RunOperation",
        "path": "/Operation/SyncAccounts",
        "properties": [
          {
            "name": "operationName",
            "defaultValue": "SyncAccounts",
            "description": "Synchronize Accounts"
          }
        ]
      }
    

VinculaciónApi

org.jitterbit.integration.data.entity.ApiBinding

Este tipo de paso se utiliza cuando hay necesidad de externalizar operaciones como APIs.

  • "assignTo": Esto permite almacenar la URI en una variable de proyecto que se puede utilizar dentro del Jitterpak. Por ejemplo:

    {
        "name": "Review the WebHooks associated to this recipe",
        "description": "The following Web API will be registered as webhooks to your system",
        "type": "org.jitterbit.integration.data.entity.ApiBinding",
        "bindings": {
          "apis": [
            {
              "apiName": "FetchAccounts",
              "publicName": "citizen-fetchaccounts",
              "version": "v1",
              "sslOnly": "True",
              "timeout": "30",
              "enableCORS": "False",
              "assignTo": "acme.com.myservice.fetchaccounts.uri",
              "methods": [
                {
                  "method": "GET",
                  "operationName": "RunNow",
                  "responseType": "FINAL_TARGET" // possible - values "NO_RESPONSE", "FINAL_TARGET", "VARIABLE"
                }
              ]
            }
          ],
          "action": {
            "name": "import-api-packs",
            "displayName": "Bind API(s)",
            "useStepAsRequest": ""
          }
        }
      }
    

HttpForm

org.jitterbit.integration.data.entity.HttpForm

Este tipo de paso se utiliza cuando hay necesidad de interactuar con un Endpoint HTTP. Se pueden usar variables de proyecto como entradas para solicitudes/cabeceras.

  • Por ejemplo:

      {
        "name": "ConstantContact Endpoint Project Variables",
        "description": "Set up the target Constant Contact endpoint project variable. Enter one of com.constantcontact.listid or com.constantcontact.listname.",
        "type": "org.jitterbit.integration.data.entity.ProjectVariable",
        "projectVariables": {
          "names": [
            "com.constantcontact.apikey",
            "com.constantcontact.accesstoken",
            "com.constantcontact.listid",
            "com.constantcontact.listname"
          ],
          "action": {
            "name": "submit-http-form",
            "displayName": "Test Connection",
            "useStepAsRequest": "/Target/ConstantContactEndpoint"
          }
        }
       },
       ...
       {
        "name": "Test ConstantContact Connection Information",
        "description": "Test ConstantContact endpoint connection information",
        "label": "Target Endpoint (ConstantContact)",
        "type": "org.jitterbit.integration.data.entity.HttpForm",
        "hidden": true,
        "path": "/Target/ConstantContactEndpoint",
        "properties": [
          { "name": "verb", "defaultValue": "GET" },
          { "name": "url", "defaultValue": "https://api.constantcontact.com/v2/lists?api_key=[com.constantcontact.apikey]" },
          { "name": "headers", "defaultValue": "Authorization: Bearer [com.constantcontact.accesstoken]" },
          { "name": "httpRequest", "defaultValue": "" },
          { "name": "httpResponse", "defaultValue": "" }
        ]
       }
    

Connector

org.jitterbit.integration.data.connector.*

Estos se utilizan para los respectivos endpoints listados:

  • org.jitterbit.integration.data.connector.FTPEndpoint
  • org.jitterbit.integration.data.connector.DBEndpoint
  • org.jitterbit.integration.data.connector.AutoDeskEndpoint
  • org.jitterbit.integration.data.connector.NetSuiteEndpoint
  • org.jitterbit.integration.data.connector.SapEndpoint
  • org.jitterbit.integration.data.connector.JMSEndpoint
  • org.jitterbit.integration.data.connector.MSAXEndpoint
  • org.jitterbit.integration.data.connector.Four51Endpoint
  • org.jitterbit.integration.data.connector.ClarizenEndpoint
  • org.jitterbit.integration.data.connector.QuickBooksEndpoint

Definiciones de metadatos de receta

Estas subsecciones cubren las definiciones completas de metadatos para recetas tal como están definidas dentro de Jitterbit. Estas secciones describen todas las partes posibles del archivo de metadatos JSON. Cualquier campo requerido se lista al final de cada sección.

Receta

  Recipe:
    type: object
    properties:
      id:
        type: string
        description: "The numerical ID of the recipe"
      guid:
        type: string
        description: "Unique identifier representing a recipe"
      author:
        See separate definition for Author
      orgId:
         type: string
         description: "The Organization ID"
      description:
        type: string
        description: "Description of Recipe"
      name:
        type: string
        description: "Name of Recipe"
      projectName:
        type: string
        description: "Name of the Jitterbit Project (or Jitterpak)"
      displayName:
        type: string
        description: "Display name of Recipe"
      summary:
        type: string
        description: "Short description of Recipe"
      tags:
        type: array
        items:
          See separate definition for Tag
        description: List of tags
      steps:
        type: array
        items:
          See separate definition for Step
      projectVariables:
         type: array
         items:
           See separate definition for property
      createdAt:
         type: number
         description: "Number of milliseconds since the UNIX epoch (Jan 1 1970 12am UTC)"
      updatedAt:
         type: number
         description: "Number of milliseconds since the UNIX epoch (Jan 1 1970 12am UTC)"
      updatedBy:
         See separate definition for Author
      version:
         type: string
         description: "Version of the recipe. Incremented when updated."
    required:
      - guid
      - description
      - name
      - projectName
      - steps

Paso

  Step:
    properties:
      name:
       type: string
       description: "Name of step"
      description:
        type: string
        description: "Description of the step"
      guid:
        type: string
        description: "A unique id associated to the step"
      label:
        type: string
        description: "A label that can be used for rendering instead of the name property"
      type:
        type: string
        enum:
         - org.jitterbit.integration.data.entity.Description
         - org.jitterbit.integration.data.entity.ProjectVariable
         - org.jitterbit.integration.data.entity.RunOperation
         - org.jitterbit.integration.data.connector.FTPEndpoint
         - org.jitterbit.integration.data.connector.DBEndpoint
         - org.jitterbit.integration.data.connector.AutoDeskEndpoint
         - org.jitterbit.integration.data.connector.NetSuiteEndpoint
         - org.jitterbit.integration.data.connector.SapEndpoint
         - org.jitterbit.integration.data.connector.JMSEndpoint
         - org.jitterbit.integration.data.entity.SalesforceConnector
         - org.jitterbit.integration.data.entity.GenericProperties
         - org.jitterbit.integration.data.entity.Schedule
         - org.jitterbit.integration.data.entity.ApiBinding
         - org.jitterbit.integration.data.entity.HttpForm
         - org.jitterbit.integration.data.entity.TemporaryStorage
         - org.jitterbit.integration.data.entity.FileShare
         - org.jitterbit.integration.data.connector.MSAXEndpoint
         - org.jitterbit.integration.data.connector.QuickBooksEndpoint
         - org.jitterbit.integration.data.connector.ClarizenEndpoint
         - org.jitterbit.integration.data.connector.Four51Endpoint
        description: |
           "Type associated with this step; these are possible values:
                    org.jitterbit.integration.data.entity.Description
                    org.jitterbit.integration.data.entity.ProjectVariable,
                    org.jitterbit.integration.data.entity.RunOperation,
                    org.jitterbit.integration.data.connector.FTPEndpoint,
                    org.jitterbit.integration.data.connector.DBEndpoint,
                    org.jitterbit.integration.data.connector.AutoDeskEndpoint,
                    org.jitterbit.integration.data.connector.NetSuiteEndpoint,
                    org.jitterbit.integration.data.connector.SapEndpoint,
                    org.jitterbit.integration.data.connector.JMSEndpoint,
                    org.jitterbit.integration.data.entity.SalesforceConnector,
                    org.jitterbit.integration.data.entity.GenericProperties,
                    org.jitterbit.integration.data.entity.ApiBinding,
                    org.jitterbit.integration.data.entity.Schedule,
                    org.jitterbit.integration.data.entity.HttpForm,
                    org.jitterbit.integration.data.entity.FileShare,
                    org.jitterbit.integration.data.entity.TemporaryStorage,
                    org.jitterbit.integration.data.connector.MSAXEndpoint,
                    org.jitterbit.integration.data.connector.QuickBooksEndpoint,
                    org.jitterbit.integration.data.connector.ClarizenEndpoint,
                    org.jitterbit.integration.data.connector.Four51Endpoint"
      hidden:
        type: boolean
        description: "Indicate if this step should be renderable or not"
      required:
        type: boolean
        description: "Whether the step requires validation or not"
      properties:
        type: array
        description: "Properties associated with this step; in a step you can have either properties or projectVariables but not both at the same time"
        items:
          See separate definition for property
      path:
        type: string
        description: "If this step maps to an entry in Jitterpak provide the path to; in general, this is valid for endpoints"
      projectVariables:
        type: object
        description: "A list of project variables grouped together to represent a configurable entities; this cannot be used if properties are defined"
        properties:
          names:
            type: array
            items:
             type: string
          action:
            See separate definition for Action
            description: "Describe an action that can be invoked using properties from specified step; example: test connection endpoint"
        required:
          - names
      bindings:
        type: object
        properties:
          apis:
            type: array
            items:
              See separate definition for API
          action:
            See separate definition for Action
    required:
      - name
      - description
      - type

Acción

  Action:
    properties:
      name:
        type: string
      displayName:
        type: string
      useStepAsRequest:
        type: string
        description: "Use properties from a specified steps within the recipe; usually such a step is defined as a hidden step that is not rendered"
    required:
      - name
      - useStepAsRequest

API

  API:
    properties:
      apiName:
        type: string
        description: "Name of the API"
      publicName:
        type: string
        description: "The public name of the API; this name would be part of the URI that will be public"
      description:
        type: string
        description: "A short description of the api"
      version:
        type: string
        description: "Version of the API"
      sslOnly:
        type: boolean
        description: "Indicate if should only listen over HTTPS only - defaults to true"
      timeout:
        type: number
        description: "Indicate after how many seconds to timeout; default is 30s"
      enableCORS:
        type: boolean
        description: "Indicate if the cors should be enabled or not; defaults to false"
      assignTo:
        type: string
        description: "Assign the API URL to a project variable defined within the associated JPK"
      methods:
        type: array
        items:
          See separate definition for API Method
    required:
      - apiName
      - publicName
      - description
      - version
      - methods

Método de API

  APIMethod:
    properties:
      method:
        type: string
        description: "Indicate the HTTP verb for to use for this APIMethod (PUT|POST|DELETE|GET)"
        enum:
          - GET
          - DELETE
          - POST
          - PUT
      operationName:
        type: string
        description: "Name of operation that will be invoked when this APIMethod is invoked"
      responseType:
        type: string
        description: "Response type returned by the operation; defaults to NO_RESPONSE"
        enum:
          - VARIABLE
          - FINAL_TARGET
          - NO_RESPONSE
    required:
      - method
      - operationName

Propiedad

  Property:
    properties:
      name:
        type: string
        description: "Property name"
      defaultValue:
        type: string
        description: "Default value associated to this property"
      value:
        type: string
        description: "A value assigned by the user; if no value is provided by default the defaultValue will be assigned"
      type:
        type: string
        description: "Indicate the type of the value; integer, float, double, date, time, boolean, string, password, textarea, enum; default string"
      description:
        type: string
        description: "Provide a description of this property"
      hidden:
        type: boolean
        description: "Default value will be false"
      displayName:
        type: string
        description: "Name used for displaying; if not defined then the name property will be used"
      required:
        type: boolean
        description: "Whether the property requires a value or not"
      regex:
        type: boolean
        description: "Regex that the value should match"
    required:
      - name

Detalles de despliegue de Jitterpak

  DeployJpkDetails:
    type: object
    properties:
      envId:
        type: string
        description: "Environment ID of the deployed recipe."
      envName:
        type: string
        description: "Environment name"
      projectId:
        type: string
        description: "Deployed recipe ID"
      projectGuid:
        type: string
        description: "Deployed project GUID"
      projectName:
        type: string
        description: "Deployed project name"
      oldProjectVariables:
        type: array
        items:
          See separate definition for property

Operación

  Operation:
    type: object
    properties:
      operationGuid:
        type: string
        description: "The GUID of the operation"
      operationName:
        type: string
        description: "The name of the operation"

Respuesta de despliegue

  DeployResponse:
    properties:
      deployJpkDetails:
        type: array
        items:
          See separate definition for Deploy JPK Details
      operations:
        type: array
        items:
          See separate definition for Operation

Integración de receta

  RecipeIntegration:
    allOf:
      - See separate definition for Recipe
      - properties:
         deployedRecipeId:
           description: "ID of the deployed configured recipe (this is the same as the ID of a Jitterbit project that is deployed to an environment)"
           type: string

Etiqueta

  Tag:
    type: object
    properties:
      key:
        type: string
        description: "A key that can be used for searching the recipe later; possible values: source, target, search"
      value:
        type: string
        description: "A value that can be in a search to match a recipe"
    required:
      - key
      - value

Autor

  Author:
    type: object
    properties:
      userId:
         type: string
         description: "ID of the recipe's author"
      name:
          type: string
          description: "Name of the recipe's author"
      orgName:
          type: string
          description: "Name of the organization that this user is part of"
    required:
      - userId
      - name

Entorno

  Environment:
    type: object
    properties:
      id:
        type: string
        description: "A unique ID associated to environment"
      orgId:
        type: string
        description: "The ID of the org that this environment is part of"
      name:
        type: string
        description: "Name of the environment"
      agentGroupName:
        type: string
        description: "The agent group associated with this environment"
      agentGroupId:
        type: string
        description: "The ID of the agent group"
      urlPrefix:
         type: string
         description: "Prefix URL associated to environment"

Agente

  Agent:
    type: object
    properties:
      id:
        type: string
        description: "Unique ID of the agent"
      name:
        type: string
        description: "Name of the agent"
      os:
        type: string
        description: "Type of operating system where agent is running"
      osVersion:
        type: string
        description: "Type of operating system where agent is running"
      jitterbitVersion:
        type: string
        description: "Version of the Jitterbit agent"
      hostname:
        type: string
        description: "Name of the host"
      ipv4Address:
        type: string
        description: "IPV4 Address"
      ipv6Address:
        type: string
        description: "IPV6 Address"
      agentGroupName:
        type: string
        description: "Associate the agent with the named agent group"
      status:
        type: string
        description: "Indicates if the agent is running"
      agentGroupId:
        type: string
        description: "Id of the agent group that this agent is part of"

Grupo de agentes

  AgentGroup:
    type: object
    properties:
      id:
        type: string
        description: "ID of the agent group"
      name:
        type: string
        description: "Name of the agent group"
      description:
        type: string
        description: "Description of the agent group"

Respuesta de inicio de sesión

  LoginResponse:
    type: object
    properties:
      authenticationToken:
        type: string
        description: "Token that is used for authentication/authorizing client's REST requests"
      status:
        type: boolean
        description: "Indicate if the user is active or not"
      defaultOrgId:
        type: string
        description: "Default organization id that the user has logged into"
      orgs:
        type: array
        description: "Organizations that the user is part of"
        items:
          See separate definition for Organization

Organización

  Org:
     type: object
     properties:
       orgId:
         type: string
         description: "ID of the organization"
       orgName:
         type: string
         description: "Name of the organization"
       orgZoneUrl:
         type: string
         description: "Zone URL associated to this organization"
       urlPrefix:
         type: string
         description: "The URL prefix used for the API gateway for this organization"
       apiHost:
         type: string
         description: "The DNS hostname used by this organization when exposing APIs"

Detalle de organización

  OrgDetail:
    allOf:
      - See separate definition for Recipe
      - properties:
          orgType:
            description: "Type of org"
            type: number
          active:
            description: "Indicate if this org is active or not"
            type: boolean
          legalName:
            description: "The legal name of the org"
            type: string
          environments:
            type: array
            items:
              See separate definition for Environment

Información de conexión de endpoint

  EndpointConnectionInfo:
    type: object
    description: "Object that defines the properties associated to a connection endpoint"
    properties:
      keyValues:
        type: array
        items:
          See separate definition for KeyValue

Parámetros de conexión HTTP

  HttpConnectionParams:
    type: object
    properties:
      verb:
        type: array
        items:
          See separate definition for property
      url:
        type: array
        items:
          See separate definition for property
      headers:
        type: array
        items:
          See separate definition for property
      httpRequest:
        type: array
        items:
          See separate definition for property
      httpResponse:
        type: array
        items:
          See separate definition for property
      username:
        type: array
        items:
          See separate definition for property
      password:
        type: array
        items:
          See separate definition for property
      errorIfRegexMatch:
        type: array
        items:
          See separate definition for property
      errorMessageRegexSearch:
        type: array
        items:
          See separate definition for property

Valor de clave

  KeyValue:
    type: object
    properties:
      key:
       type: string
      value:
       type: string

Error

  Error:
    type: object
    properties:
      code:
        type: integer
        description: "Code associated with this error; in general, maps to an HTTP Code"
      message:
        type: string
        description: "A description of the error"
      fields:
        type: string
        description: "Fields that report the error (optional)"

Registro de operación

  OperationLog:
    type: object
    properties:
      records:
        type: array
        items:
          See separate definition for Operation Log Record

Registro de operación

  OperationLogRecord:
    type: object
    properties:
      attributes:
        See separate definition for Record
      childRecords:
        See separate definition for Operation Log

Detalles del registro de operación

  OperationLogDetails:
    type: object
    properties:
      operationName:
        type: string
      mainMessage:
        type: string
      sourceRecords:
        type: integer
        description: Number of source records
      targetRecords:
        type: integer
        description: Number of target records
      failedRecords:
        type: integer
        description: Number of failed records
      successRecords:
        type: integer
        description: Number of success records
      filesProcessed:
        type: integer
        description: Number of files processed
      messageAndFieldName:
        type: array
        items:
          See separate definition for Message and Field Name
      resultFileCategoryAndGuid:
        type: array
        items:
          See separate definition for Result File Category and GUID

Mensaje y nombre de campo

  MessageAndFieldName:
    type: object
    properties:
      message:
        type: string
      fieldName:
        type: string

Categoría de archivo de resultado y GUID

  ResultFileCategoryAndGuid:
    type: object
    properties:
      category:
        type: number
      fileGuid:
        type: number

Respuesta de operación de ejecución

  RunOperationResponse:
    type: object
    properties:
      orgId:
        type: string
        description: "ID of the organization associated with the environment where the operation has been deployed and executed"
      environmentId:
        type: string
        description: "ID of the environment where the operation has been deployed and executed"
      operationInstanceGuid:
        type: string
        description: "GUID of the operation instance"
      operationGuid:
        type: string
        description: "GUID of the operation"
      submittedAt:
        type: string
        description: "Date when the operation was submitted for execution"

Registro

  Record:
    type: object
    properties:
      operationInstanceGuid:
        type: string
        description: "GUID of an instance of an operation; represents an execution of an operation"
      parentInstanceGuid:
        type: string
        description: "GUID associated to the parent operation; an operation that has been triggered/executed this operation instance"
      operationGuid:
        type: string
        description: "GUID associated to this operation"
      operationName:
        type: string
        description: "Name of the operation"
      operationStatusId:
        type: number
        description: "Possible value for the operation statusId: SUBMITTED(0), PENDING(1), CANCELED(2), RUNNING(3), SUCCESS(4), SUCCESS_WITH_INFO(5), SUCCESS_WITH_WARNING(6), ERROR(7), CANCEL_REQUESTED(8), SUCCESS_WITH_CHILD_ERROR(9), RECEIVED(10), UNKNOWN(-1)"
      operationStatus:
        type: string
        description: "Status of the operation - see operationStatusId for possible values"
      environmentId:
        type: string
        description: "ID of the  environment where operation has been deployed and running"
      environmentName:
        type: string
        description: "Name of the environment where operation has been deployed and running"
      agentId:
        type: string
        description: "ID of the agent where operation has been running"
      agentName:
        type: string
        description: "Name of the agent where operation has been running"
      projectName:
        type: string
        description: "Name of the Jitterbit pack associated to the recipe"
      message:
        type: string
        description: "The message associated with this operation indicating the status of it"
      operationEnteredTimestamp:
        type: number
        description: "Timestamp when the operation was entered"
      operationStartedTimestamp:
        type: number
        description: "Timestamp when the operation was started"
      operationStatusTimestamp:
        type: number
        description: "Timestamp of the operation status"
      debugModeEnabled:
        type: boolean
        description: "Indicate if the debug mode is enabled or not"
      debugFilePresent:
        type: boolean
        description: "Indicate if there is a debug file present for downloading"

Información del usuario

  UserInfo:
    type: object
    properties:
      title:
        type: string
      phone:
       type: string
      company:
        type: string
      postalCode:
        type: string
      subscription:
        type: string
      signUpSource:
        type: string
      offeringEnumId:
        type: string
      active:
        type: string
      timezone:
        type: string

Estado desplegado

  DeployedStatus:
    type: object
    properties:
      good:
        type: integer
      warn:
        type: integer
      error:
        type: integer

Información del punto final

  EndpointInfo:
    type: object
    properties:
      name:
        type: string
        description: "Name of the endpoint"
      category:
        type: string
        description: "Indicates the category this endpoint is part of; examples: crm, database"
      icon:
        type: string
        description: "Path to fetch the icon associated with this endpoint"
    required:
      - name
      - icon

Error de AWS

  AWSError:
    type: object
    properties:
      code:
        type: string
      message:
        type: string
      retryable:
        type: boolean
      statusCode:
        type: number
      hostname:
        type: string
      region:
        type: string
      retryDelay:
        type: number
      requestId:
        type: string
      extendedRequestId:
        type: string
      cfId:
        type: string