Crear y administrar webhooks

Un webhook es un mecanismo que permite que una aplicación proporcione información basada en eventos a otras aplicaciones. Como administrador de un portal de ArcGIS Enterprise, puede crear, administrar y configurar webhooks. Puede configurar sus webhooks para que le notifiquen automáticamente cuando sucedan eventos asociados con los elementos, grupos y usuarios del portal. Cuando se desencadena un webhook, se realiza una solicitud HTTP a una URL de carga única definida por el usuario para ofrecer información relacionada con el evento.

Términos clave

A continuación se muestran términos clave de los webhooks:

  • Evento desencadenador: la operación que configura para desencadenar el webhook. Por ejemplo, puede configurar su webhook para que se desencadene cuando se actualice un grupo específico de su organización o cuando se comparta un elemento. Un webhook puede tener más de un evento desencadenador.
  • Carga: los datos del evento desencadenador que envía el webhook después de que ocurra el evento especificado. Esta información tiene el formato JSON. Consulte la sección Cargas que aparece a continuación para obtener más información.
  • URL de carga: la ubicación a la que se enviará la carga. Es posible crear la URL de carga con servicios como Microsoft Power Automate, Zapier o IFTTT. También puede crear su propio extremo de servicio web personalizado con la plataforma que elija.

Ejemplos de casos de uso

Los webhooks permiten la integración de flujos de trabajo en sistemas; existen diversas formas de aprovechar los webhooks en su organización.

Monitorizar actividades en ArcGIS Enterprise

Puede utilizar los webhooks para monitorizar actividades en ArcGIS Enterprise. Por ejemplo, puede suscribirse a todos los eventos asociados con un elemento concreto. El webhook se desencadena cuando se actualizan las propiedades del elemento, y una solicitud HTTPS proporciona una carga con datos que describen el evento. Usted decide el lugar de entrega de esta carga y podrá tomar las medidas adecuadas tras recibir la información.

Eventos desencadenadores compatibles

Cuando crear el webhook, se está suscribiendo a los eventos desencadenadores. Puesto que estos eventos son operaciones del portal, es necesario proporcionar la URI de la operación en la configuración del webhook. Las siguientes subsecciones describen los eventos desencadenadores disponibles y las URI asociadas.

Elementos

Las propiedades del elemento que se pueden actualizar varían entre tipos de elementos y existen acciones únicas que desencadenan la operación /update. Por ejemplo, si el elemento es un mapa web, actualizar la etiqueta, configurar un elemento emergente o cambiar el mapa base son eventos de actualización que desencadenarán el webhook.

La siguiente tabla muestra los eventos desencadenadores de elementos del portal compatibles, lo que incluye mapas web, aplicaciones web, capas, paquetes, documentos PDF, etc.:

Desencadenar eventoEjemplo de URI

Todos los eventos desencadenadores de todos los elementos

/items

Se agrega un elemento al portal

/items/add

Se elimina cualquier elemento

/items/delete

Se actualiza cualquier elemento

/items/update

Se mueve o se cambia la propiedad de cualquier elemento

/items/move

Se publica cualquier elemento

/items/publish

Se comparte cualquier elemento

/items/share

Se deja de compartir cualquier elemento

/items/unshare

Se ha reasignado la propiedad de cualquier elemento

/items/reassign

Todos los eventos desencadenadores de un elemento específico

/items/<itemID>

Se elimina un elemento específico

/items/<itemID>/delete

Se actualizan las propiedades de un elemento específico

/items/<itemID>/update

Se cambia la propiedad de un elemento específico o se mueve el elemento

/items/<itemID>/move

Se publica un elemento específico

/items/<itemID>/publish

Se comparte un elemento específico

/items/<itemID>/share

Se deja de compartir un elemento específico

/items/<itemID>/unshare

Se ha reasignado la propiedad de un elemento específico

/items/<itemID>/reassign

Grupos

Todos los cambios generales realizados en la configuración del grupo constituyen una actualización. Por ejemplo, cambiar el acceso de un grupo desencadenará un evento de actualización.

La siguiente tabla muestra los eventos desencadenadores asociados con grupos:

Desencadenar eventoEjemplo de URI

Todos los eventos desencadenadores de todos los grupos

/groups

Se agrega un grupo

/groups/add

Se actualiza cualquier grupo

/groups/update

Se elimina cualquier grupo

/groups/delete

Protección contra eliminación está habilitada para cualquier grupo

/groups/protect

Protección contra eliminación está deshabilitada para cualquier grupo

/groups/unprotect

Se invita a un usuario a cualquier grupo

/groups/invite

Se agrega un usuario a cualquier grupo

/groups/addUsers

Se elimina un usuario de cualquier grupo

/groups/removeUsers

Se actualiza un rol de usuario en cualquier grupo

/groups/updateUsers

Se ha reasignado la propiedad de cualquier grupo

/groups/reassign

Todos los eventos desencadenadores de un grupo específico

/groups/<groupID>

Se actualiza un grupo específico

/groups/<groupID>/update

Se elimina un grupo específico

/groups/<groupID>/delete

Protección contra eliminación está habilitada para un grupo específico

/groups/<groupID>/protect

Protección contra eliminación está deshabilitada para un grupo específico

/groups/<groupID>/unprotect

Se invita a un usuario a un grupo específico

/groups/<groupID>/invite

Se agrega un usuario a un grupo específico

/groups/<groupID>/addUsers

Se elimina un usuario de un grupo específico

/groups/<groupID>/removeUsers

Se actualiza un rol de usuario en un grupo específico

/groups/<groupID>/updateUsers

Se ha reasignado la propiedad de un grupo específico

/groups/<groupID>/reassign

Usuarios

Los eventos de actualización se desencadenan siempre que se realiza un cambio en el perfil del usuario. Sin embargo, los cambios que se realizan en el rol, el tipo o la licencia de un usuario no se consideran una actualización del perfil del usuario.

La siguiente tabla muestra los eventos desencadenadores asociados con usuarios:

Desencadenar eventoEjemplo de URI

Todos los eventos desencadenadores de todos los usuarios del portal

/users

Se agrega un usuario a la organización

/users/add

Cualquier usuario ha iniciado sesión en el portal

/users/signin

Cualquier usuario ha cerrado sesión en el portal

/users/signout

Se elimina cualquier usuario

/users/delete

Se actualiza cualquier perfil de usuario

/users/update

Se deshabilita cualquier cuenta de usuario

/users/disable

Se habilita cualquier cuenta de usuario

/users/enable

Se asigna un nuevo rol a cualquier usuario

/users/updateUserRole

Se asigna un nuevo tipo de usuario a cualquier usuario

/users/updateUserLicenseType

Todos los eventos desencadenadores asociados con un usuario específico

/users/<username>

Un usuario especificado ha iniciado sesión en el portal

/users/<username>/signIn

Un usuario especificado ha cerrado sesión en el portal

/users/<username>/signOut

Se elimina un usuario específico

/users/<username>/delete

Se actualiza un perfil de usuario específico

/users/<username>/update

Se deshabilita la cuenta de un usuario específico

/users/<username>/disable

Se habilita la cuenta de un usuario específico

/users/<username>/enable

Se asigna un nuevo rol a un usuario específico

/users/<username>/updateUserRole

Se asigna un nuevo tipo de usuario a un usuario específico

/users/<username>/updateUserLicenseType

Roles

Los eventos de actualización se desencadenan siempre que se realiza un cambio en los roles de la organización.

La siguiente tabla muestra los eventos desencadenadores asociados con roles de usuarios:

Desencadenar eventoEjemplo de URI

Todos los eventos desencadenadores de todos los roles del portal

/roles

Se crea un nuevo rol

/roles/add

Se actualiza un rol existente

/roles/updated

Se elimina un rol existente

/roles/delete

Cargas

Cuando se desencadena un webhook, se envía una carga a la URL de carga específica en formato JSON. Todos los eventos siguen un esquema JSON similar con información relevante del evento.

ClaveTipoDescripción
webhookName

string

El nombre del webhook que envió la carga.

webhookId

string

El Id. del webhook que envió la carga.

portalURL

string

La URL del portal en el que se registra el webhook.

when

marca de hora

La hora a la que se envió la carga.

username

string

El usuario que desencadenó el evento.

userId

string

El Id. del usuario que desencadenó el evento.

when

marca de hora

La hora a la que se produjo el evento.

operation

string

La operación que realizó el usuario. Puede tratarse de lo siguiente:

  • add
  • addUsers
  • delete
  • disable
  • enable
  • invite
  • move
  • protect
  • publish
  • removeUsers
  • share
  • unprotect
  • unshare
  • update
  • updateUsers
source

string

El tipo de elemento en el que se realizó la operación. Puede ser item, group o user.

id

string

El Id. del elemento de origen en el que se realizó la operación.

properties

objeto

Propiedades adicionales asociadas con el evento. Puede tratarse de lo siguiente:

  • sharedToGroups: cómo se comparte un elemento (groupID, Organización o Todos).
  • unsharedFromGroups: cómo se deja de compartir un elemento (groupID, Organización o Todos).
  • removeUserNames: los nombres de los usuarios eliminados de un grupo.
  • updateUserNames: los nombres de los usuarios cuyos roles de grupo se han actualizado.
  • invitedUserNames: los nombres de los usuarios invitados a un grupo.
  • addedUserNames: los nombres de los usuarios agregados a un grupo.
  • userRoleUpdatedTo: el nuevo rol asignado al usuario.
  • reassignedTo: el nuevo usuario al que se le ha reasignado un elemento o grupo.
  • userLicenseTypeUpdatedTo: el nuevo tipo de usuario asignado a un usuario.
  • name: el nombre del rol creado, actualizado o eliminado.

URL de carga

Es necesario que el usuario proporcione una URL de carga al crear un webhook, ya que define dónde se enviará la carga. Puesto que la carga se envía a través de una solicitud POST de HTTPS, el webhook receptor se debe configurar para comunicarse mediante HTTPS y para que el portal pueda alcanzarlo. Puede usar varios servicios web, como Microsoft Power Automate, Zapier e IFFT, para configurar flujos de trabajo personalizados con su carga. Por ejemplo, puede crear un flujo de trabajo para que cuando Microsoft Power Automate reciba una carga, la analice, la formatee y la envíe a un alias de correo electrónico. De forma alternativa, puede crear y personalizar su servicio web para que reciba cargas. En el caso de organizaciones que restringen el acceso a Internet, se recomienda crear un servicio web personalizado que reciba las cargas. Consulte nuestras muestras de Enterprise SDK para un servlet de Java listo para usar.

Ejemplo de carga

A continuación, se ofrece una carga de muestra que ilustra que un grupo específico se ha actualizado:

{
   "info": {
      "webhookName": "Group monitoring",
      "webhookId": "72fed926aeb74c9ca8a22aacddc6725a",
      "portalURL": "https://orgURL/portal/",
      "when": 1543192196521
   },
   "events": [{
      "username": "administrator",
      "userId": "173dd04b69134bdf99c5000aad0b6298",
      "when": 1543192196521,
      "operation": "update",
      "source": "group",
      "id": "173dd04b69134bdf99c5000aad0b6298",
      "properties": {}
   }]
}

Crear un webhook

Los webhooks solo se pueden administrar mediante el Directorio de Portal for ArcGIS (API de uso compartido). Siga estos pasos para crear un webhook:

  1. Vaya al Directorio de Portal for ArcGIS.
    https://organization.domain.com/context/sharing/rest
  2. Inicie sesión como administrador.

    Solo los administradores pueden crear y administrar webhooks.

    Aparece la página de usuario administrador.

  3. Haga clic en el hipervínculo ID de organización o realice una solicitud del siguiente formulario para ir a la página del recurso Portal Self.
    https://organization.domain.com/context/sharing/rest/portals/<orgID>
  4. Desplácese al final de la página, a Webhooks, en Recursos secundarios.
    https://organization.domain/com/context/sharing/rest/portals/<orgID>/webhooks
  5. En Operaciones compatibles, seleccione Create Webhook.
  6. Especifique los parámetros de su webhook.

    Consulte la documentación de la API REST de los webhooks para obtener más información sobre estos parámetros.

    Ahora su webhook aparece con los demás: https://organization.domain.com/context/sharing/rest/portals/<orgID>/webhooks

Administrar webhooks

Puede administrar sus webhooks mediante el Directorio de Portal for ArcGIS si realiza una solicitud del siguiente formulario:

https://organization.domain.com/context/sharing/rest/<orgID>/webhooks/<webhookID>.

Las operaciones compatibles para administrar sus webhook son:

  • Update Webhook: actualiza los parámetros del webhook. Puede actualizar el nombre, la URL de carga, la configuración o los eventos desencadenadores del webhook especificado.
  • Delete Webhook: elimina el webhook del portal.
  • Deactivate Webhook y Activate Webhook: desactiva el webhook, lo que detiene el envío de las cargas cuando se ha desencadenado el webhook. Cuando se desactiva el webhook, la operación Activar webhook está disponible para reanudar el envío de cargas.

La página Notification Status muestra información relacionada con los eventos desencadenadores asociados con el webhook específico. Puede usar esta tabla para supervisar el webhook y los detalles de las cargas enviadas, por ejemplo, la hora a la que se desencadenó el webhook y las respuestas recibidas de la URL de carga, así como la carga enviada. Los registros que indican el envío correcto de una carga se eliminan a las 24 horas. Los registros que indican un envío fallido se almacenan durante siete días.

Consulte la API de webhooks para ver ejemplos de estas operaciones.

Configurar parámetros avanzados

Existen varios parámetros avanzados que puede utilizar para personalizar aún más sus webhooks. Dichos parámetros se aplicarán a todos los webhooks configurados en su portal y se puede acceder a ellos desde https://organization.domain.com/context/sharing/rest/portals/<orgID>/webhooks/settings.

Mediante la operación Update puede actualizar estos parámetros:

  • Número de intentos de envío: especifique el número de intentos que se realizarán para enviar una carga. El valor predeterminado son tres y se puede aumentar hasta cinco.
  • Tiempo de espera de notificación: especifique el periodo de tiempo que tendrá que esperar una conexión para recibir una respuesta. Si no se recibe ninguna respuesta durante este intervalo, la conexión caducará y se considerará un intento de notificación fallido.
  • Tiempo transcurrido entre intentos de envío: especifique el tiempo entre cada intento de envío de carga. El valor predeterminado es de 30 segundos y se puede aumentar a un máximo de 100 o reducir a un mínimo de 1.

Consulte la documentación de la API de los webhooks para obtener más información sobre cómo configurar parámetros avanzados.

Preguntas frecuentes sobre webhooks

A continuación figuran las preguntas que suelen plantearse cuando se utilizan webhooks.

ArcGIS Enterprise está implementado en un entorno desconectado, detrás del firewall de mi organización. ¿Puedo seguir configurando webhooks?

Sí. Para configurar webhooks, debe usar una URL de carga a la que pueda acceder su portal de ArcGIS Enterprise. Para ello, puede crear una aplicación personalizada e implementarla en su servidor interno.

¿Qué constituye una actualización de un elemento, usuario o grupo?

Para ello, puede crear una aplicación personalizada e implementarla en su servidor interno. Por ejemplo, si se ha suscrito a las actualizaciones de un elemento específico de su portal, su webhook se desencadena si se actualizó el título, las etiquetas o la vista en miniatura del elemento. Una forma de determinar si una acción constituye una actualización en su portal es examinar el tráfico de red. Siempre que una acción dé lugar a la llamada de la operación Actualizar, la misma acción puede desencadenar un webhook a la escucha de actualizaciones.

Utilizo la Autenticación integrada de Windows en mi portal de ArcGIS Enterprise. ¿Aún puedo suscribirme al inicio y cierre de sesión del portal (user/<username>/signIn)?

A partir de la versión 10.9, puede utilizar el evento desencadenador de /signin para capturar eventos de inicio de sesión para la autenticación del portal, la autenticación de nivel de web y los inicios de sesión corporativos.

¿Qué ocurre si mi URL de carga deja de funcionar o deja de estar disponible? ¿Hay alguna forma de recuperar una carga que no se envió?

Si el portal intenta entregar una carga a una URL de carga o un webhook receptor no disponibles o que no responden, los parámetros avanzados que haya configurado determinarán cómo y cuándo intentará el portal otro envío. Si estos intentos adicionales tampoco envían la carga, cuenta como fallo para la deactivationPolicy que definió al crear el webhook. El webhook se desactiva cuando se cumple esta política.

Puede ir al estado de notificación del webhook para ver todos los intentos de envíos de cargas y determinar si se enviaron correctamente o no.