API de suscripción a eventos
Cuando se produce una acción en un objeto de Adobe Workfront compatible con las suscripciones a eventos, puede configurar Workfront para que envíe una respuesta al punto final deseado. Esto significa que las aplicaciones de terceros pueden recibir actualizaciones de las interacciones de Workfront a través de la API de Workfront poco después de que se produzcan. En general, puede esperar recibir notificaciones de webhook en menos de 5 segundos desde que se registra el cambio de datos. De media, los clientes reciben notificaciones de webhook en menos de un segundo desde que se registra el cambio de datos.
Para recibir cargas útiles de suscripciones a eventos a través del cortafuegos, debe añadir las siguientes direcciones IP a la lista de permitidos:
Para clientes de Europa:
- 52.30.133.50
- 52.208.159.124
- 54.220.93.204
- 52.17.130.201
- 34.254.76.122
- 34.252.250.191
Para clientes que no se encuentran en Europa:
- 54.244.142.219
- 44.241.82.96
- 52.36.154.34
- 34.211.224.9
- 54.218.48.56
- 52.39.217.230
Los siguientes temas admiten la API de suscripción a eventos:
Objetos admitidos por suscripciones a eventos
Las suscripciones a eventos admiten los siguientes objetos de Workfront.
- Asignación
- Compañía
- Panel de control
- Documento
- Gasto
- Campo
- Hora
- Problema
- Nota
- Portafolio
- Programa
- Proyecto
- Registro
- Tipo de registro
- Informe
- Tarea
- Plantilla
- Plantilla de horas
- Usuario
- Espacio de trabajo
Para obtener una lista de los campos admitidos por los objetos de suscripción a eventos, consulte Campos de recurso de suscripción a eventos.
Autenticación de suscripción de evento
Para crear, consultar o eliminar una suscripción a eventos, el usuario de Workfront necesita lo siguiente:
-
Se requiere un nivel de acceso de “Administrador del sistema” para utilizar las suscripciones a eventos.
-
Se requiere un encabezado
sessionID
para usar la API de suscripciones a eventosPara obtener más información, consulte Autenticación en Conceptos básicos de la API.
Formación del recurso de suscripción
El recurso de suscripción contiene los campos siguientes.
-
objId (opcional)
- Cadena: ID del objeto del objCode especificado para el que se activan los eventos. Si no se especifica este campo, el usuario recibe eventos para todos los objetos del tipo especificado.
-
objCode (obligatorio)
-
Cadena: objCode del objeto al que se está suscribiendo a cambios. Los valores posibles de objCode se enumeran en la tabla siguiente.
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2 16-row-2 17-row-2 18-row-2 19-row-2 20-row-2 layout-auto Objeto objCode Asignación ASSGN Compañía CMPY Panel de control PTLTAB Documento DOCU Gasto EXPNS Campo FIELD Hora HOUR Problema OPTASK Nota NOTA Portafolio PORT Programa PRGM Proyecto PROJ Registro RECORD Tipo de registro RECORD_TYPE Informe PTLSEC Tarea TASK Plantilla TMPL Plantilla de horas TSHET Usuario USER Espacio de trabajo WORKSPACE
-
-
eventType (obligatorio)
-
Cadena: valor que representa el tipo de evento al que está suscrito el objeto. Los tipos de eventos disponibles incluyen:
- CREATE
- ELIMINAR
- UPDATE
-
-
url (obligatorio)
- Cadena: dirección URL del punto final al que se envían las cargas útiles de evento de suscripción a través de HTTP.
-
authToken (obligatorio)
- Cadena: El token de portador de OAuth2 utilizado para autenticarse con la dirección URL especificada en el campo "URL".
Creación de solicitudes de API de suscripción de evento
Después de asegurarse de que el usuario tiene acceso de administrador y de formar el recurso de suscripción, está listo para crear suscripciones a eventos.
Utilice la siguiente sintaxis para construir la dirección URL.
URL de solicitud
POST https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions
Encabezados de solicitud
Ejemplo de cuerpo de solicitud:
{
"objCode": "PROJ",
"eventType": "UPDATE",
"url": "http://requestb.in/ua5hi2ua",
"authToken": "EauthTokenWorkfrontRocks1234_"
}
Ejemplo de cuerpo de respuesta
{
"id": <NEW SUBSCRIPTION ID>,
"version": <NEW SUBSCRIPTION VERSION>
}
Si se pasa un recurso de suscripción como cuerpo de una solicitud (con el tipo de contenido "application/json"), se crea una suscripción de evento para el objeto especificado. Un código de respuesta 201 (Creado) indica que se creó la suscripción. Un código de respuesta distinto de 201 significa que la suscripción NO se ha creado.
Ejemplo de encabezados de respuesta:
→0
→Wed, 05 Apr 2017 21:23:33 GMT
→https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/750a636c-5628-48f5-ba26-26b7ce537ac2
→Apache-Coyote/1.1
Consulta de suscripciones a eventos
Al consultar el código HTTP de Workfront, utilice el método GET. Existen dos formas de consultar suscripciones a eventos: consultar por el ID de suscripción (véase más abajo) o consultar todas las suscripciones a eventos.
Consultar todas las suscripciones a eventos
Puede consultar todas las suscripciones a eventos de un cliente o utilizar lo siguiente para administrar la respuesta. También puede utilizar las siguientes opciones para administrar la respuesta:
- page: opción de parámetro de consulta para especificar el número de páginas que se van a devolver. El valor predeterminado es 1.
- limit: opción de parámetro de consulta para especificar el número de resultados que se devolverán por página. El valor predeterminado es 100, con un máximo de 1000.
La sintaxis de solicitud para enumerar todas las suscripciones a eventos de un cliente específico es la siguiente:
URL de solicitud
GET https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions
Encabezados de la solicitud:
Códigos de respuesta
Ejemplo de encabezados de respuesta
→application/json;charset=UTF-8
→Wed, 05 Apr 2017 21:29:32 GMT
→Apache-Coyote/1.1
→chunked
Ejemplo de cuerpo de respuesta
{
"id": "750a636c-5628-48f5-ba26-26b7ce537ac2",
"date_created": "2024-04-11T17:10:10.305981",
"date_modified": "2024-04-11T17:10:10.305981",
"customerId": "504f9640000013401be513579fbebffa",
"objId": null,
"objCode": "PROJ",
"url": "http://requestb.in/ua5hi2ua",
"eventType": "UPDATE",
"authToken": "authTokenWorkfrontRocks1234_"
"subscription_url": {
"url": "http://requestb.in/ua5hi2ua",
"date_created": "2024-04-11T15:56:14.169489",
"successes": 11,
"failures": 2,
"disabled_at": null,
"frozen_at": null
}
}
Donde
- page y limit son los valores proporcionados en la solicitud o el valor predeterminado si no se proporcionan valores
- page_count es el número total de páginas que se pueden consultar.
- total_count es el número total de suscripciones que coinciden con la consulta.
Consulta por el ID de suscripción de eventos
Puede consultar suscripciones de eventos por el ID de suscripción de eventos. La sintaxis de solicitud para enumerar suscripciones de eventos es la siguiente:
URL de solicitud
GET https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/<SUBSCRIPTION ID>
Encabezados de solicitud
Códigos de respuesta
Ejemplo de cuerpo de respuesta
{
"id": "750a636c-5628-48f5-ba26-26b7ce537ac2",
"date_created": "2024-04-11T17:10:10.305981",
"date_modified": "2024-04-11T17:10:10.305981",
"customerId": "504f9640000013401be513579fbebffa",
"objId": null,
"objCode": "PROJ",
"url": "http://requestb.in/ua5hi2ua",
"eventType": "UPDATE",
"authToken": "authTokenWorkfrontRocks1234_"
"subscription_url": {
"url": "http://requestb.in/ua5hi2ua",
"date_created": "2024-04-11T15:56:14.169489",
"successes": 11,
"failures": 2,
"disabled_at": null,
"frozen_at": null
}
}
Versiones de suscripción de evento
Workfront tiene dos versiones de suscripciones a eventos.
La capacidad de actualizar o reducir las suscripciones a eventos garantiza que, cuando se realicen cambios en la estructura de los eventos, las suscripciones existentes no se rompan, lo que le permite probar y actualizar a la nueva versión sin interrupciones en la suscripción de evento.
Para obtener más información sobre las versiones de suscripción de evento, incluidas las diferencias específicas entre la versión y las fechas importantes, consulte Versiones de suscripción de evento.
Cambio de versión de suscripción única
La sintaxis de solicitud para cambiar la versión de una sola suscripción es:
URL de solicitud
PUT https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/<SUBSCRIPTION ID>/version
Cuerpo de solicitud de ejemplo
{
"version": "v2"
}
Cuerpo de respuesta de ejemplo (200)
{
"id": <SUBSCRIPTION ID>,
"version": "v2"
}
Códigos de respuesta posibles
- 200
- 400
- 404
Cambio de versión de suscripción múltiple
Este punto de conexión cambia la versión de varias suscripciones, por lista de suscripciones o por indicador de todas las suscripciones del cliente.
La sintaxis de solicitud para cambiar la versión de una sola suscripción es:
URL de solicitud
PUT https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/version
Cuerpos de solicitud de ejemplo
-
Cuerpo de solicitud de lista de suscripciones
code language-none { "subscriptionIds": [<SUBSCRIPTION ID 1>, <SUBSCRIPTION ID 2>], "version": "v2" }
-
Solicitar cuerpo para todas las suscripciones del cliente
code language-none { "allCustomerSubscriptions": true, "version": "v2" }
Cuerpo de respuesta de ejemplo (200)
{
"subscription_ids": [<SUBSCRIPTION ID 1>, <SUBSCRIPTION ID 2>, ...],
"version": "v2"
}
Códigos de respuesta posibles
- 200
- 400
Filtrado de suscripción a eventos
El filtrado de suscripción a eventos se puede utilizar para garantizar que solo recibe mensajes relevantes. La creación de filtros para sus suscripciones puede disminuir significativamente la cantidad de mensajes que debe consumir su punto final.
Por ejemplo, una suscripción al evento UPDATE - TASK solo se puede establecer para que se active solamente cuando el newState de una carga útil de evento define taskStatus como actual.
-
Cuando un campo de filtro tiene un valor que no está vacío, solo se envían mensajes con un newState que contiene las claves de filtro y los valores a la dirección URL suscrita
-
Puede filtrar por los datos personalizados incluidos en newState AND/OR oldState del objeto
-
Los filtros se evalúan únicamente en función de si equivalen o no a un valor específico
-
Si la sintaxis del filtro es incorrecta o no coincide con ningún dato contenido en newState de la carga útil, no se devolverá un mensaje de validación para indicar que se ha producido un error
-
Los filtros no se pueden actualizar en una suscripción que exista actualmente; se debe crear una nueva suscripción con nuevos parámetros de filtro.
-
Se pueden aplicar varios filtros a una sola suscripción y esta solo se entregará cuando se hayan cumplido todas las condiciones de filtro.
-
Aplicar varios filtros a una sola suscripción es una práctica equivalente a utilizar un operador lógico AND.
-
Se pueden aplicar varias suscripciones de eventos a un único objeto siempre que uno o más parámetros de campo de suscripción a eventos sean diferentes entre cada suscripción a evento.
-
Cuando se asignan varias suscripciones de eventos a un único objeto, todas las suscripciones de eventos asociadas a ese objeto se pueden devolver a un único punto final. Esta práctica se puede utilizar como un sustituto equivalente del operador lógico OR que no se puede establecer mediante parámetros de filtro.
-
Los campos siguientes no se pueden filtrar:
- DOCU.groups
- RECORD.data
- RECORD_TYPE.data
- RECORD_TYPE.fields
Uso de operadores de comparación
Puede especificar un campo de comparación junto con el campo de filtro. Utilice un operador de comparación en el campo para filtrar los resultados comparativos. Por ejemplo, puede crear una suscripción UPDATE - TASK que solo envíe una carga útil si el estado de la tarea NO es igual a actual. Puede utilizar los siguientes operadores de comparación:
eq: igual
Este filtro permite que los mensajes lleguen si el cambio que se produjo coincide exactamente con fieldValue
en el filtro. El valor fieldValue
distingue entre mayúsculas y minúsculas.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "name",
"fieldValue": "again",
"comparison": "eq"
}
]
}
ne: no igual a
Este filtro permite que los mensajes lleguen si el cambio que se produjo no coincide exactamente con fieldValue
en el filtro. El valor fieldValue
distingue entre mayúsculas y minúsculas.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "name",
"fieldValue": "again",
"comparison": "ne"
}
]
}
gt: mayor que
Este filtro permite que los mensajes lleguen si la actualización del fieldName
especificado es mayor que el valor de fieldValue
.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "plannedCompletionDate",
"fieldValue": "2022-12-11T16:00:00.000-0800",
"comparison": "gt"
}
]
}
gte: mayor o igual que
Este filtro permite que los mensajes lleguen si la actualización del fieldName
especificado es mayor o igual que el valor de fieldValue
.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "plannedCompletionDate",
"fieldValue": "2022-12-11T16:00:00.000-0800",
"comparison": "gte"
}
]
}
It: menor que
Este filtro permite que los mensajes lleguen si la actualización del fieldName
especificado es menor que el valor de fieldValue
.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "plannedCompletionDate",
"fieldValue": "2022-12-18T16:00:00.000-0800",
"comparison": "lt"
}
]
}
lte: menor o igual que
Este filtro permite que los mensajes lleguen si la actualización del fieldName
especificado es menor o igual que el valor de fieldValue
.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "plannedCompletionDate",
"fieldValue": "2022-12-18T16:00:00.000-0800",
"comparison": "lte"
}
]
}
contiene
Este filtro permite que se envíen mensajes si el cambio que se produjo contiene fieldValue
en el filtro. El valor fieldValue
distingue entre mayúsculas y minúsculas
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "name",
"fieldValue": "again",
"comparison": "contains"
}
]
}
cambiar
Este filtro permite que los mensajes se transmitan solo si el campo especificado (fieldName
) tiene un valor diferente en oldstate y newstate. Al actualizar otros campos además del especificado (fieldName
), no se devolverá ese cambio.
fieldValue
en la matriz de filtros siguiente no tiene ningún efecto.{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "name",
"fieldValue": "",
"comparison": "changed"
}
]
}
state
Este conector hace que el filtro se aplique al nuevo estado o al antiguo estado del objeto que se creó o actualizó. Esto resulta útil si desea saber dónde se realizó un cambio de alguna cosa a otra.oldState
no es posible en CREATE eventTypes
.
again
en oldState
, tal como sucedía antes de que se realizara una actualización en la tarea.Un caso de uso para esto sería encontrar los mensajes de objCode que han cambiado de una manera a otra. Por ejemplo, para averiguar todas las tareas que cambiaron de "Investigar Algún nombre" a "Investigar TeamName Algún nombre"
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "name",
"fieldValue": "again",
"comparison": "contains",
"state": "oldState"
}
]
}
Uso de filtros anidados
La suscripción a evento admite el filtrado en campos anidados de eventos mediante el uso de nombres de campo anidados. Por ejemplo, para filtrar un mensaje donde newState.data.customField1 = 'myCustomeFieldValue'
, se puede crear la siguiente suscripción con filtro:
{
"objCode": "RECORD",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedRecords",
"filters": [
{
"fieldName": "data",
"fieldValue": {
"customField1": "myCustomFieldValue"
},
"comparison": "eq",
"state": "newState"
}
]
}
También se pueden abordar los filtros doblemente anidados.
"filters": [
{
"fieldName": "data",
"fieldValue": {
"fields": {
"children": {
"customerId":"customer1234",
"name":"New Campaign"
}
}
},
"comparison": "eq",
"state": "newState"
}
],
"filterConnector": 'AND'
Uso de campos de conector
El campo filterConnector
de la carga útil de suscripción le permite elegir cómo se deben aplicar los filtros. El valor predeterminado es “AND”, donde los filtros deben ser todos true
para que se transmita el mensaje de suscripción. Si se especifica “OR", solo debe coincidir un filtro para que aparezca el mensaje de suscripción.
{
"objCode": "TASK",
"eventType": "UPDATE",
"authToken": "token",
"url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
"filters": [
{
"fieldName": "name",
"fieldValue": "again",
"comparison": "contains"
},
{
"fieldName": "name",
"fieldValue": "also",
"comparison": "contains"
}
],
"filterConnector": "AND"
}
Eliminación de suscripciones a eventos
Al eliminar HTTP de Workfront, utilice el método DELETE. La sintaxis de solicitud para eliminar una sola suscripción a eventos por ID de suscripción es la siguiente:
URL de la solicitud:
DELETE https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/<SUBSCRIPTION ID>
Encabezados de la solicitud:
Códigos de respuesta:
Ejemplo de encabezados de respuesta:
→Wed, 05 Apr 2017 21:33:41 GMT
→Apache-Coyote/1.1
Ejemplo de cuerpo de respuesta: N/D
Ejemplos de cargas útiles de eventos
La carga útil que recibe un usuario varía según el tipo de objeto, pero existe un formato coherente para la entrega de esas cargas útiles variables.
Por ejemplo, las siguientes propiedades siguen siendo coherentes en todas las cargas útiles de evento:
- eventType
- subscriptionId
- oldState
- newState
- eventTime
Aunque son coherentes en cuanto a formato, los valores contenidos en las propiedades varían entre diferentes objetos y tipos de objetos.
A continuación se muestran ejemplos de cargas útiles para un evento UPDATE y un evento CREATE. Observe que en el ejemplo UPDATE los objetos oldState y newState son los mismos, mientras que en el ejemplo CREATE el objeto oldState está vacío (no es NULL).
A continuación se muestra un ejemplo de carga útil para un evento UPDATE:
{
"eventType": "UPDATE",
"subscriptionId": "8a0d839d5ef32c9a015ef336a5ed0002",
"eventTime": {
"nano": 998000000,
"epochSecond": 1507319336
},
"newState": {
"ID": "59d7ddf7000002322d791eb08bafddfb",
"name": "EventSub Test updated",
"objCode": "PROJ",
"entryDate": "2017-10-06T13:48:07.776-0600",
"accessorIDs": [
"544820df0000142362741fc0c368de19"
],
"lastUpdateDate": "2017-10-06T13:48:56.980-0600",
"groupID": "544820df0000140f6a9c1faa7cacadd3",
"sponsorID": null,
"description": null,
"plannedCompletionDate": "2017-10-06T09:00:00.000-0600",
"enteredByID": "544820df0000142362741fc0c368de19",
"ownerID": "544820df0000142362741fc0c368de19",
"templateID": null,
"priority": 0,
"companyID": null,
"portfolioID": null,
"referenceNumber": 1894,
"lastUpdatedByID": "544820df0000142362741fc0c368de19",
"customerID": "544820df0000135b7719dcca654391f6",
"currency": null, "categoryID": null,
"status": "CUR",
"parameterValues": {}
},
"oldState": {
"ID": "59d7ddf7000002322d791eb08bafddfb",
"name": "EventSub Test 180fd595-63fb-4fa9-bd47-58bf6e53d964",
"objCode": "PROJ",
"entryDate": "2017-10-06T13:48:07.776-0600",
"accessorIDs": [
"544820df0000142362741fc0c368de19"
],
"lastUpdateDate": "2017-10-06T13:48:07.792-0600",
"groupID": "544820df0000140f6a9c1faa7cacadd3",
"sponsorID": null,
"description": null,
"plannedCompletionDate": "2017-10-06T09:00:00.000-0600",
"enteredByID": "544820df0000142362741fc0c368de19",
"ownerID": "544820df0000142362741fc0c368de19",
"templateID": null,
"priority": 0,
"companyID": null,<
"portfolioID": null,
"referenceNumber": 1894,
"lastUpdatedByID": "544820df0000142362741fc0c368de19",
"customerID": "544820df0000135b7719dcca654391f6",
"currency": null,
"categoryID": null,
"status": "CUR",
"parameterValues": {}
}
}
A continuación se muestra un ejemplo de carga útil para un evento CREATE:
{
"eventType": "CREATE",
"subscriptionId": "4028e3815ebf03a7015ebfa53b6d0002",
"eventTime": {
"nano": 232000000,
"epochSecond": 1506453831
},
"newState": {
"ID": "59caa946000000e07b0afc3383230c67",
"name": "EventSub Test fe16d470-0a40-4290-92f4-6a0389fb536c",
"objCode": "PROJ",
"entryDate": "2017-09-26T13:23:50.746-0600",
"accessorIDs": ["544820df0000142362741fc0c368de19"],
"lastUpdateDate": "2017-09-26T13:23:50.927-0600",
"groupID": "544820df0000140f6a9c1faa7cacadd3",
"sponsorID": null,
"description": null,
"plannedCompletionDate": "2017-09-26T09:00:00.000-0600",
"enteredByID": "544820df0000142362741fc0c368de19",
"ownerID": "544820df0000142362741fc0c368de19",
"templateID": null,
"priority": 0,
"companyID": null,
"portfolioID": null,
"referenceNumber": 1750,
"lastUpdatedByID": "544820df0000142362741fc0c368de19",
"customerID": "544820df0000135b7719dcca654391f6",
"currency": null,
"categoryID": null,
"status": "CUR",
"parameterValues": {}
},
"oldState": {}
}
Codificación base 64
Si se rechaza una suscripción a eventos debido a un conflicto entre los caracteres especiales contenidos en las suscripciones a eventos y la configuración de red, puede utilizar la codificación Base64 para pasar las suscripciones a eventos. Base64 es un conjunto de esquemas de codificación que pueden traducir cualquier dato arbitrario a un formato de cadena ASCII. Es importante tener en cuenta que Base64 no es una forma de cifrado de seguridad.
Campo de codificación Base 64
El campo base64Encoding es un campo opcional que se utiliza para habilitar la codificación Base64 de las cargas útiles de suscripción a eventos. El valor predeterminado es falso y los valores posibles son: verdadero, falso y " " (en blanco).
Ejemplo de una solicitud que utiliza el campo base64Encoding
Si se realiza una solicitud utilizando el campo base64Encoding establecido en true, los objetos newState y oldState de la carga útil se entregan como cadenas de codificación base 64. Si el campo base64Encoding se establece en false, se deja en blanco o no se incluye en la solicitud y la carga útil devuelta no se codificará en base 64.
A continuación se muestra un ejemplo de una solicitud que utiliza el campo base64Encoding:
{
"objCode": "PROJ",
"eventType": "UPDATE",
"url": "http://requestb.in/ua5hi2ua"",
"authToken": "EauthTokenWorkfrontRocks1234_",
"base64Encoding": "true"
}
Ejemplos de cargas útiles de respuesta en codificación base 64
{
"eventType": "UPDATE",
"subscriptionId": "8a0d839d5ef32c9a015ef336a5ed0002",
"eventTime": {
"nano": 998000000,
"epochSecond": 1507319336
},
"newState": "ewogICAgICAgIklEIjogIjU5ZDdkZGY3MDAwMDAyMzIyZDc5MWViMDhiYWZkZGZiIiwgCiAgICAgICAibmFtZSI6ICJFdmVudFN1YiBUZXN0IHVwZGF0ZWQiLAogICAgICAgIm9iakNvZGUiOiAiUFJPSiIsCiAgICAgICAiZW50cnlEYXRlIjogIjIwMTctMTAtMDZUMTM6NDg6MDcuNzc2LTA2MDAiLAogICAgICAgImFjY2Vzc29ySURzIjogWwogICAgICAgICAgICI1NDQ4MjBkZjAwMDAxNDIzNjI3NDFmYzBjMzY4ZGUxOSIKICAgICAgIF0sCiAgICAgICAibGFzdFVwZGF0ZURhdGUiOiAiMjAxNy0xMC0wNlQxMzo0ODo1Ni45ODAtMDYwMCIsCiAgICAgICAiZ3JvdXBJRCI6ICI1NDQ4MjBkZjAwMDAxNDBmNmE5YzFmYWE3Y2FjYWRkMyIsCiAgICAgICAic3BvbnNvcklEIjogbnVsbCwKICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsCiAgICAgICAicGxhbm5lZENvbXBsZXRpb25EYXRlIjogIjIwMTctMTAtMDZUMDk6MDA6MDAuMDAwLTA2MDAiLAogICAgICAgImVudGVyZWRCeUlEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICJvd25lcklEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICJ0ZW1wbGF0ZUlEIjogbnVsbCwKICAgICAgICJwcmlvcml0eSI6IDAsCiAgICAgICAiY29tcGFueUlEIjogbnVsbCwKICAgICAgICJwb3J0Zm9saW9JRCI6IG51bGwsCiAgICAgICAicmVmZXJlbmNlTnVtYmVyIjogMTg5NCwKICAgICAgICJsYXN0VXBkYXRlZEJ5SUQiOiAiNTQ0ODIwZGYwMDAwMTQyMzYyNzQxZmMwYzM2OGRlMTkiLAogICAgICAgImN1c3RvbWVySUQiOiAiNTQ0ODIwZGYwMDAwMTM1Yjc3MTlkY2NhNjU0MzkxZjYiLAogICAgICAgImN1cnJlbmN5IjogbnVsbCwKICAgICAgICJjYXRlZ29yeUlEIjogbnVsbCwKICAgICAgICJzdGF0dXMiOiAiQ1VSIiwKICAgICAgICJwYXJhbWV0ZXJWYWx1ZXMiOiB7fQogICAgfQ==",
"oldState": "ewogICAgICAgICJJRCI6ICI1OWQ3ZGRmNzAwMDAwMjMyMmQ3OTFlYjA4YmFmZGRmYiIsCiAgICAgICAgIm5hbWUiOiAiRXZlbnRTdWIgVGVzdCAxODBmZDU5NS02M2ZiLTRmYTktYmQ0Ny01OGJmNmU1M2Q5NjQiLAogICAgICAgICJvYmpDb2RlIjogIlBST0oiLAogICAgICAgICJlbnRyeURhdGUiOiAiMjAxNy0xMC0wNlQxMzo0ODowNy43NzYtMDYwMCIsCiAgICAgICAgImFjY2Vzc29ySURzIjogWwogICAgICAgICAgICAiNTQ0ODIwZGYwMDAwMTQyMzYyNzQxZmMwYzM2OGRlMTkiCiAgICAgICAgXSwKICAgICAgICAibGFzdFVwZGF0ZURhdGUiOiAiMjAxNy0xMC0wNlQxMzo0ODowNy43OTItMDYwMCIsCiAgICAgICAgImdyb3VwSUQiOiAiNTQ0ODIwZGYwMDAwMTQwZjZhOWMxZmFhN2NhY2FkZDMiLAogICAgICAgICJzcG9uc29ySUQiOiBudWxsLAogICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsCiAgICAgICAgInBsYW5uZWRDb21wbGV0aW9uRGF0ZSI6ICIyMDE3LTEwLTA2VDA5OjAwOjAwLjAwMC0wNjAwIiwKICAgICAgICAiZW50ZXJlZEJ5SUQiOiAiNTQ0ODIwZGYwMDAwMTQyMzYyNzQxZmMwYzM2OGRlMTkiLAogICAgICAgICJvd25lcklEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICAidGVtcGxhdGVJRCI6IG51bGwsCiAgICAgICAgInByaW9yaXR5IjogMCwKICAgICAgICAiY29tcGFueUlEIjogbnVsbCw8CiAgICAgICAgInBvcnRmb2xpb0lEIjogbnVsbCwKICAgICAgICAicmVmZXJlbmNlTnVtYmVyIjogMTg5NCwKICAgICAgICAibGFzdFVwZGF0ZWRCeUlEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICAiY3VzdG9tZXJJRCI6ICI1NDQ4MjBkZjAwMDAxMzViNzcxOWRjY2E2NTQzOTFmNiIsCiAgICAgICAgImN1cnJlbmN5IjogbnVsbCwKICAgICAgICAiY2F0ZWdvcnlJRCI6IG51bGwsCiAgICAgICAgInN0YXR1cyI6ICJDVVIiLAogICAgICAgICJwYXJhbWV0ZXJWYWx1ZXMiOiB7fQogICAgfQ=="
}
Método obsoleto para consultar todas las suscripciones a eventos
El siguiente punto final de API está obsoleto y no debe utilizarse para nuevas implementaciones. También recomendamos la transición de implementaciones antiguas al método en la sección Consulta de suscripciones a eventos descrita anteriormente.
Puede consultar todas las suscripciones a eventos de un cliente según lo especificado por el valor sessionID. La sintaxis de solicitud para enumerar todas las suscripciones a eventos de un cliente específico es la siguiente URL:
GET https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/list
Encabezados de solicitud:
Códigos de respuesta:
Ejemplo de cuerpo de respuesta
[
{
"id": "37c4bcf5-e0b5-4256-aba3-a51cba7bf997",
"customer_id": "504f9640000013401be513579fbebffa",
"obj_id": "ObjId1234",
"obj_code": "TASK",
"url": "http://test.test.net/test/1234",
"event_type": "UPDATE",
"auth_token": "auth_token"
},
{
"id": "750a636c-5628-48f5-ba26-26b7ce537ac2",
"customer_d": "504f9640000013401be513579fbebffa",
"obj_id": null,
"obj_code": "PROJ",
"url": "http://requestb.in/ua5hi2ua",
"event_type": "UPDATE",
"auth_token": "authTokenWorkfrontRocks1234_"
}
]