API di abbonamento agli eventi

Quando si verifica un'azione su un oggetto Adobe Workfront supportato dalle sottoscrizioni di eventi, puoi configurare Workfront per inviare una risposta all'endpoint desiderato. Ciò significa che le applicazioni di terze parti possono ricevere aggiornamenti dalle interazioni Workfront tramite l’API Workfront subito dopo che si verificano. In generale, puoi aspettarti di ricevere le notifiche del webhook in meno di 5 secondi dalla registrazione della modifica dei dati. In media, i clienti ricevono le notifiche dei webhook in meno di 1 secondo dalla registrazione della modifica dei dati.

Per ricevere i payload degli abbonamenti agli eventi tramite il firewall, è necessario aggiungere i seguenti indirizzi IP al inserisco nell'elenco Consentiti di accesso agli eventi:

Per i clienti in 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

Per clienti in località diverse dall'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

I seguenti argomenti supportano l’API di abbonamento agli eventi:

Oggetti supportati dalle sottoscrizioni di eventi

I seguenti oggetti Workfront sono supportati dalle sottoscrizioni di eventi.

  • Assegnazione
  • Azienda
  • Dashboard
  • Documento
  • Spesa
  • Campo
  • Ora
  • Problema
  • Nota
  • Portfolio
  • Programma
  • Progetto
  • Inserimento
  • Tipo di record
  • Rapporto
  • Attività
  • Modello
  • Scheda orario
  • Utente
  • Area di lavoro

Per un elenco dei campi supportati dagli oggetti di sottoscrizione degli eventi, vedere Campi delle risorse di sottoscrizione degli eventi.

Autenticazione sottoscrizione eventi

Per creare, eseguire query o eliminare un abbonamento a un evento, l’utente di Workfront ha bisogno dei seguenti elementi:

  • Per utilizzare le sottoscrizioni di eventi è necessario un livello di accesso "Amministratore di sistema".

  • È necessaria un'intestazione sessionID per utilizzare l'API sottoscrizioni eventi

    Per ulteriori informazioni, vedere Autenticazione in Nozioni di base sulle API.

Formazione della risorsa abbonamento

La risorsa abbonamento contiene i campi seguenti.

  • objId (facoltativo)

    • Stringa - ID dell'oggetto objCode specificato per il quale vengono attivati gli eventi. Se questo campo non è specificato, l'utente riceve eventi per tutti gli oggetti del tipo specificato.
  • objCode (obbligatorio)

    • Stringa - L'objCode dell'oggetto a cui si desidera sottoscrivere le modifiche. I valori possibili per objCode sono elencati nella tabella seguente.

      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
      Oggetto objCode
      Assegnazione ASSEGNA
      Azienda AZIENDA
      Dashboard PTLTAB
      Documento DOCU
      Spesa EXPNS
      Campo CAMPO
      Ora HOUR
      Problema OPTASK
      Nota NOTA
      Portfolio PORTA
      Programma PRGM
      Progetto PROJ
      Inserimento RECORD
      Tipo di record TIPO_RECORD
      Rapporto PTLSEC
      Attività ATTIVITÀ
      Modello TMPL
      Scheda orario SCHEDA
      Utente UTENTE
      Area di lavoro WORKSPACE
  • eventType (obbligatorio)

    • Stringa - Valore che rappresenta il tipo di evento a cui l'oggetto è abbonato. I tipi di evento disponibili includono:

      • CREA
      • DELETE
      • AGGIORNA
  • url (obbligatorio)

    • Stringa - URL dell'endpoint a cui vengono inviati i payload degli eventi di sottoscrizione tramite HTTP.
  • authToken (obbligatorio)

    • Stringa - Il token Bearer OAuth2 utilizzato per l'autenticazione con l'URL specificato nel campo "URL".

Creazione di richieste API di abbonamento a eventi

Dopo aver verificato che l’utente disponga dell’accesso di amministratore e aver creato la risorsa dell’abbonamento, puoi creare abbonamenti a eventi.

Utilizza la sintassi seguente per creare l’URL.

URL richiesta:

POST https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions

Intestazioni richiesta:

Nome intestazione
Valore intestazione
Tipo di contenuto
application/json
sessionID
valore sessionID

Esempio di corpo della richiesta:

{
                "objCode": "PROJ",
                "eventType": "UPDATE",
                "url": "http://requestb.in/ua5hi2ua",
                "authToken": "EauthTokenWorkfrontRocks1234_"
            }
Codice di risposta
Descrizione
201 (creato)
La sottoscrizione dell’evento è stata creata correttamente.
400 (richiesta non valida)
Il campo URL della risorsa abbonamento è stato ritenuto non valido.
401 (non autorizzato)
Il valore sessionID fornito è vuoto o ritenuto non valido.
403 (non consentito)
L’utente che corrisponde al valore sessionID fornito non dispone dell’accesso di amministratore.

Il passaggio di una risorsa di abbonamento come corpo di una richiesta (con il tipo di contenuto "application/json") determina la creazione di una sottoscrizione di evento per l’oggetto specificato. Il codice di risposta 201 (Creato) indica che l’abbonamento è stato creato. Un codice di risposta diverso da 201 indica che la sottoscrizione è stata NOT creata.

NOTE
L’intestazione di risposta "Location" contiene l’URI della sottoscrizione dell’evento appena creata.

Esempio di intestazioni di risposta:

Intestazioni di risposta
Esempio
Content-Length
→0
Data
→Wed, 05 Apr 2017 21:23:33 GMT
Posizione
→https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/750a636c-5628-48f5-ba26-26b7ce537ac2
Server
→Apache-Coyote/1.1

Query delle sottoscrizioni eventi

Quando esegui una query su HTTP di Workfront, utilizza il metodo GET. Esistono due modi per eseguire query per le sottoscrizioni di eventi: eseguire query per ID sottoscrizione (vedi sotto) o eseguire query su tutte le sottoscrizioni di eventi.

Esegui query su tutte le sottoscrizioni eventi

Puoi eseguire una query su tutte le sottoscrizioni di eventi per un cliente oppure utilizzare quanto segue per gestire la risposta. Per gestire la risposta, puoi inoltre utilizzare le seguenti opzioni:

  • pagina: opzione parametro query per specificare il numero di pagine da restituire. Il valore predefinito è 1.
  • limit: opzione parametro query per specificare il numero di risultati da restituire per pagina. Il valore predefinito è 100 con un massimo di 1000.

La sintassi della richiesta per elencare tutte le sottoscrizioni di eventi per un cliente specifico è la seguente:

URL richiesta:

GET https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions

Intestazioni richiesta:

Nome intestazione
Valore intestazione
sessionID
valore sessionID

Codici di risposta:

Codice di risposta
Descrizione
200 (OK)
La richiesta restituita con tutte le sottoscrizioni di eventi trovate per il cliente che corrispondono all’ID sessione fornito.
401 (non autorizzato)
Il valore sessionID fornito è vuoto.
403 (non consentito)
L’utente, che corrisponde all’ID sessione fornito, non dispone dell’accesso di amministratore.

Esempio di intestazioni di risposta:

Intestazione risposta
Esempio
Content-Type
→application/json;charset=UTF-8
Data
→Wed, 05 Apr 2017 21:29:32 GMT
Server
→Apache-Coyote/1.1
Transfer-Encoding
→chunked

Esempio di corpo della risposta:

{
    "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
   }
}

Dove

  • page e limit sono i valori forniti nella richiesta o il valore predefinito se non vengono forniti valori
  • conteggio_pagine è il numero totale di pagine che è possibile interrogare.
  • total_count è il numero totale di sottoscrizioni corrispondenti alla query.

Eseguire una query in base all’ID sottoscrizione evento

Puoi eseguire una query per le sottoscrizioni di eventi in base all’ID della sottoscrizione di eventi. La sintassi della richiesta per l’elenco delle sottoscrizioni di eventi è la seguente:

URL richiesta:

GET https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/<SUBSCRIPTION ID>

Intestazioni richiesta:

Nome intestazione
Valore intestazione
sessionID
valore sessionID

Codici di risposta:

Codice di risposta
Descrizione
200 (OK)
La richiesta restituita con l’abbonamento all’evento corrispondente all’ID dell’abbonamento fornito.
401 (non autorizzato)
Il valore sessionID fornito è vuoto.
403 (non consentito)
L’utente, che corrisponde all’ID sessione fornito, non dispone dell’accesso di amministratore.

Esempio di corpo della risposta:

{
    "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
   }
}

Filtro abbonamento eventi

Puoi utilizzare il filtro dell’abbonamento agli eventi per assicurarti di ricevere solo messaggi pertinenti. La creazione di filtri per gli abbonamenti può ridurre in modo significativo il numero di messaggi che l’endpoint deve utilizzare.

Ad esempio, è possibile impostare una sottoscrizione dell'evento UPDATE - TASK per l'attivazione solo quando newState di un payload dell'evento definisce taskStatus come current.

IMPORTANT
I seguenti attributi si applicano al filtro di abbonamento agli eventi
  • Quando un campo filtro contiene un valore non vuoto, solo i messaggi con un newState contenente le chiavi e i valori del filtro vengono inviati all'URL sottoscritto

  • Puoi filtrare in base ai dati personalizzati inclusi in newState AND/OR oldState dell'oggetto

  • I filtri vengono valutati solo a seconda che siano uguali o meno a un valore specifico

  • Se la sintassi del filtro non è corretta o non corrisponde ad alcun dato contenuto nel newState del payload, non verrà restituito un messaggio di convalida per indicare che si è verificato un errore

  • Non è possibile aggiornare i filtri di una sottoscrizione esistente; è necessario creare una nuova sottoscrizione con nuovi parametri di filtro.

  • È possibile applicare più filtri a un singolo abbonamento e l’abbonamento verrà consegnato solo quando sono state soddisfatte tutte le condizioni del filtro.

  • L'applicazione di più filtri a una singola sottoscrizione equivale a utilizzare un operatore logico AND.

  • È possibile applicare più sottoscrizioni di eventi a un singolo oggetto, a condizione che uno o più parametri del campo di sottoscrizione dell’evento siano diversi tra ciascuna sottoscrizione di eventi.

  • Quando a un singolo oggetto vengono assegnate più sottoscrizioni di eventi, tutte le sottoscrizioni di eventi associate a tale oggetto possono essere restituite a un singolo endpoint. Questa esercitazione può essere utilizzata come sostituto equivalente dell'operatore logico OR che non può essere impostato utilizzando i parametri di filtro.

  • I seguenti campi non sono filtrabili:

    • DOCU.groups
    • RECORD.data
    • RECORD_TYPE.data
    • RECORD_TYPE.fields

Utilizzo degli operatori di confronto

È possibile specificare un campo di confronto insieme al campo filtro. Utilizza un operatore di confronto in questo campo per filtrare i risultati comparativi. Ad esempio, puoi creare una sottoscrizione UPDATE - TASK che invia un payload solo se lo stato dell’attività NON è uguale a corrente. Puoi utilizzare i seguenti operatori di confronto:

eq: equal

Questo filtro consente la trasmissione dei messaggi se la modifica che si è verificata corrisponde esattamente a fieldValue nel filtro. Il valore fieldValue distingue tra maiuscole e minuscole.

{
    "objCode": "TASK",
    "eventType": "UPDATE",
    "authToken": "token",
    "url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
    "filters": [
        {
            "fieldName": "name",
            "fieldValue": "again",
            "comparison": "eq"
        }
    ]
}

ne: diverso da

Questo filtro consente la trasmissione dei messaggi se la modifica non corrisponde esattamente a fieldValue nel filtro. Il valore fieldValue distingue tra maiuscole e minuscole.

{
    "objCode": "TASK",
    "eventType": "UPDATE",
    "authToken": "token",
    "url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
    "filters": [
        {
            "fieldName": "name",
            "fieldValue": "again",
            "comparison": "ne"
        }
    ]
}

gt: maggiore di

Questo filtro consente la trasmissione dei messaggi se l'aggiornamento per fieldName specificato è maggiore del valore per 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: maggiore o uguale a

Questo filtro consente la trasmissione dei messaggi se l'aggiornamento per fieldName specificato è maggiore o uguale al valore per 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"
        }
    ]
}

lt: less than (minore di)

Questo filtro consente la trasmissione dei messaggi se l'aggiornamento per fieldName specificato è minore del valore per 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: less than or equal to

Questo filtro consente la trasmissione dei messaggi se l'aggiornamento per fieldName specificato è minore o uguale al valore per 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

Questo filtro consente la trasmissione dei messaggi se la modifica apportata contiene fieldValue nel filtro. Il valore fieldValue distingue tra maiuscole e minuscole

{
    "objCode": "TASK",
    "eventType": "UPDATE",
    "authToken": "token",
    "url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
    "filters": [
        {
            "fieldName": "name",
            "fieldValue": "again",
            "comparison": "contains"
        }
    ]
}

cambia

Questo filtro consente la trasmissione dei messaggi solo se nel campo specificato (fieldName) è presente un valore diverso in oldstate e newstate. L'aggiornamento di altri campi oltre a quello specificato (fieldName) non restituirà la modifica.

NOTE
fieldValue nell'array di filtri seguente non ha alcun effetto.
{
    "objCode": "TASK",
    "eventType": "UPDATE",
    "authToken": "token",
    "url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
    "filters": [
        {
            "fieldName": "name",
            "fieldValue": "",
            "comparison": "changed"
        }
    ]
}

stato

Questo connettore applica il filtro al nuovo stato o al vecchio stato dell’oggetto creato o aggiornato. Questa funzione è utile quando si desidera sapere dove è stata apportata una modifica da un elemento all’altro.
oldState non è possibile in CREATE eventTypes.

NOTE
La sottoscrizione seguente con il filtro specificato restituirà solo i messaggi in cui il nome dell'attività contiene again per oldState, ovvero ciò che si trovava prima di un aggiornamento dell'attività.
Un caso d’uso per questo potrebbe essere quello di trovare i messaggi objCode che sono cambiati da una cosa all’altra. Ad esempio, per individuare tutte le attività che sono cambiate da "Cerca nome" a "Cerca nome team"
{
    "objCode": "TASK",
    "eventType": "UPDATE",
    "authToken": "token",
    "url": "https://domain-for-subscription.com/API/endpoint/UpdatedTasks",
    "filters": [
        {
            "fieldName": "name",
            "fieldValue": "again",
            "comparison": "contains",
            "state": "oldState"
        }
    ]
}

Utilizzo dei campi del connettore

Il campo filterConnector nel payload della sottoscrizione consente di scegliere come applicare i filtri. Il valore predefinito è "AND", dove i filtri devono essere tutti true affinché il messaggio di abbonamento venga inviato. Se si specifica "OR", solo un filtro deve corrispondere per consentire il completamento del messaggio di abbonamento.

{
    "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"
}

Eliminazione di sottoscrizioni di eventi

Quando si elimina il codice HTTP di Workfront, utilizzare il metodo DELETE. La sintassi della richiesta per l’eliminazione di una singola sottoscrizione di evento per ID sottoscrizione è la seguente:

URL richiesta:

DELETE https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/<SUBSCRIPTION ID>

Intestazioni richiesta:

Nome intestazione
Valore intestazione
sessionID
valore sessionID

Codici di risposta:

Codice di risposta
Descrizione
200 (nessun contenuto)
Il server ha rimosso correttamente la sottoscrizione dell'evento corrispondente all'subscriptionID fornito.
401 (non autorizzato)
Il valore sessionID fornito è vuoto.
403 (non consentito)
L’utente che corrisponde al valore sessionID fornito non dispone dell’accesso di amministratore.
404 (non trovato)
Il server non è stato in grado di trovare una sottoscrizione di eventi corrispondente all'subscriptionID fornito per l'eliminazione.

Esempio di intestazioni di risposta:

Intestazione risposta
Esempio
Data
→Wed, 05 Apr 2017 21:33:41 GMT
Server
→Apache-Coyote/1.1

Esempio di corpo della risposta: N/D

Esempi di payload di eventi

Il payload ricevuto da un utente varia a seconda del tipo di oggetto, ma esiste un formato coerente per il quale vengono consegnati i payload variabili.

Ad esempio, le seguenti proprietà rimangono coerenti in tutti i payload dell’evento:

  • eventType
  • subscriptionId
  • oldState
  • newState
  • eventTime

Sebbene siano coerenti nel formato, i valori contenuti all'interno delle proprietà variano tra oggetti e tipi di oggetto diversi.

Di seguito sono riportati esempi di payload per un evento UPDATE e un evento CREATE. Nell'esempio UPDATE gli oggetti oldState e newState sono gli stessi, mentre nell'esempio CREATE l'oggetto oldState è vuoto (non NULL).

Di seguito è riportato un payload di esempio per 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": {}
                   }
                }

Di seguito è riportato un payload di esempio per 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": {}
            }

Codifica Base 64

Se un abbonamento a un evento viene rifiutato a causa di un conflitto tra i caratteri speciali contenuti negli abbonamenti agli eventi e le impostazioni di rete, è possibile utilizzare la codifica Base64 per trasmettere gli abbonamenti agli eventi. Base64 è un insieme di schemi di codifica in grado di tradurre qualsiasi dato arbitrario in un formato di stringa ASCII. È importante notare che Base64 non è una forma di crittografia di sicurezza.

Campo di codifica Base 64

Il campo base64Encoding è un campo facoltativo utilizzato per abilitare la codifica Base64 dei payload di abbonamento agli eventi. Il valore predefinito è false e i valori possibili sono: true, false e " " (vuoto).

Esempio di richiesta tramite il campo base64Encoding

Se viene effettuata una richiesta utilizzando il campo base64Encoding impostato su true, gli oggetti newState e oldState nel payload vengono consegnati come stringhe di codifica base 64. Se il campo base64Encoding è impostato su false, lasciato vuoto o non incluso nella richiesta, il payload restituito non verrà codificato in base 64.

Di seguito è riportato un esempio di richiesta che utilizza il campo base64Encoding:

{
                "objCode": "PROJ",
                "eventType": "UPDATE",
                "url": "http://requestb.in/ua5hi2ua"",
                "authToken": "EauthTokenWorkfrontRocks1234_",
                "base64Encoding": "true"
            }

Esempi di payload di risposta con codifica base 64

                {
                "eventType": "UPDATE",
                "subscriptionId": "8a0d839d5ef32c9a015ef336a5ed0002",
                "eventTime": {
                "nano": 998000000,
                "epochSecond": 1507319336
                },
                "newState": "ewogICAgICAgIklEIjogIjU5ZDdkZGY3MDAwMDAyMzIyZDc5MWViMDhiYWZkZGZiIiwgCiAgICAgICAibmFtZSI6ICJFdmVudFN1YiBUZXN0IHVwZGF0ZWQiLAogICAgICAgIm9iakNvZGUiOiAiUFJPSiIsCiAgICAgICAiZW50cnlEYXRlIjogIjIwMTctMTAtMDZUMTM6NDg6MDcuNzc2LTA2MDAiLAogICAgICAgImFjY2Vzc29ySURzIjogWwogICAgICAgICAgICI1NDQ4MjBkZjAwMDAxNDIzNjI3NDFmYzBjMzY4ZGUxOSIKICAgICAgIF0sCiAgICAgICAibGFzdFVwZGF0ZURhdGUiOiAiMjAxNy0xMC0wNlQxMzo0ODo1Ni45ODAtMDYwMCIsCiAgICAgICAiZ3JvdXBJRCI6ICI1NDQ4MjBkZjAwMDAxNDBmNmE5YzFmYWE3Y2FjYWRkMyIsCiAgICAgICAic3BvbnNvcklEIjogbnVsbCwKICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsCiAgICAgICAicGxhbm5lZENvbXBsZXRpb25EYXRlIjogIjIwMTctMTAtMDZUMDk6MDA6MDAuMDAwLTA2MDAiLAogICAgICAgImVudGVyZWRCeUlEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICJvd25lcklEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICJ0ZW1wbGF0ZUlEIjogbnVsbCwKICAgICAgICJwcmlvcml0eSI6IDAsCiAgICAgICAiY29tcGFueUlEIjogbnVsbCwKICAgICAgICJwb3J0Zm9saW9JRCI6IG51bGwsCiAgICAgICAicmVmZXJlbmNlTnVtYmVyIjogMTg5NCwKICAgICAgICJsYXN0VXBkYXRlZEJ5SUQiOiAiNTQ0ODIwZGYwMDAwMTQyMzYyNzQxZmMwYzM2OGRlMTkiLAogICAgICAgImN1c3RvbWVySUQiOiAiNTQ0ODIwZGYwMDAwMTM1Yjc3MTlkY2NhNjU0MzkxZjYiLAogICAgICAgImN1cnJlbmN5IjogbnVsbCwKICAgICAgICJjYXRlZ29yeUlEIjogbnVsbCwKICAgICAgICJzdGF0dXMiOiAiQ1VSIiwKICAgICAgICJwYXJhbWV0ZXJWYWx1ZXMiOiB7fQogICAgfQ==",
                "oldState": "ewogICAgICAgICJJRCI6ICI1OWQ3ZGRmNzAwMDAwMjMyMmQ3OTFlYjA4YmFmZGRmYiIsCiAgICAgICAgIm5hbWUiOiAiRXZlbnRTdWIgVGVzdCAxODBmZDU5NS02M2ZiLTRmYTktYmQ0Ny01OGJmNmU1M2Q5NjQiLAogICAgICAgICJvYmpDb2RlIjogIlBST0oiLAogICAgICAgICJlbnRyeURhdGUiOiAiMjAxNy0xMC0wNlQxMzo0ODowNy43NzYtMDYwMCIsCiAgICAgICAgImFjY2Vzc29ySURzIjogWwogICAgICAgICAgICAiNTQ0ODIwZGYwMDAwMTQyMzYyNzQxZmMwYzM2OGRlMTkiCiAgICAgICAgXSwKICAgICAgICAibGFzdFVwZGF0ZURhdGUiOiAiMjAxNy0xMC0wNlQxMzo0ODowNy43OTItMDYwMCIsCiAgICAgICAgImdyb3VwSUQiOiAiNTQ0ODIwZGYwMDAwMTQwZjZhOWMxZmFhN2NhY2FkZDMiLAogICAgICAgICJzcG9uc29ySUQiOiBudWxsLAogICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsCiAgICAgICAgInBsYW5uZWRDb21wbGV0aW9uRGF0ZSI6ICIyMDE3LTEwLTA2VDA5OjAwOjAwLjAwMC0wNjAwIiwKICAgICAgICAiZW50ZXJlZEJ5SUQiOiAiNTQ0ODIwZGYwMDAwMTQyMzYyNzQxZmMwYzM2OGRlMTkiLAogICAgICAgICJvd25lcklEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICAidGVtcGxhdGVJRCI6IG51bGwsCiAgICAgICAgInByaW9yaXR5IjogMCwKICAgICAgICAiY29tcGFueUlEIjogbnVsbCw8CiAgICAgICAgInBvcnRmb2xpb0lEIjogbnVsbCwKICAgICAgICAicmVmZXJlbmNlTnVtYmVyIjogMTg5NCwKICAgICAgICAibGFzdFVwZGF0ZWRCeUlEIjogIjU0NDgyMGRmMDAwMDE0MjM2Mjc0MWZjMGMzNjhkZTE5IiwKICAgICAgICAiY3VzdG9tZXJJRCI6ICI1NDQ4MjBkZjAwMDAxMzViNzcxOWRjY2E2NTQzOTFmNiIsCiAgICAgICAgImN1cnJlbmN5IjogbnVsbCwKICAgICAgICAiY2F0ZWdvcnlJRCI6IG51bGwsCiAgICAgICAgInN0YXR1cyI6ICJDVVIiLAogICAgICAgICJwYXJhbWV0ZXJWYWx1ZXMiOiB7fQogICAgfQ=="
                }

Metodo obsoleto per la query di tutte le sottoscrizioni di eventi

Il seguente endpoint API è obsoleto e non deve essere utilizzato per le nuove implementazioni. È inoltre consigliabile eseguire la transizione delle implementazioni precedenti al metodo nella sezione Query delle sottoscrizioni di eventi descritta in precedenza.

Puoi eseguire una query su tutte le sottoscrizioni di eventi per un cliente come specificato dal valore sessionID. La sintassi della richiesta per elencare tutte le sottoscrizioni di eventi per un cliente specifico è il seguente URL:

GET https://<HOSTNAME>/attask/eventsubscription/api/v1/subscriptions/list

Intestazioni richiesta:

Nome intestazione
Valore intestazione
sessionID
valore sessionID

Codici di risposta:

Codice di risposta
Descrizione
200 (nessun contenuto)
La richiesta ha restituito tutte le sottoscrizioni di eventi trovate per l'utente.
401 (non autorizzato)
Il valore sessionID fornito è vuoto.
403 (non consentito)
L’utente che corrisponde al valore sessionID fornito non dispone dell’accesso di amministratore.

Esempio di corpo della risposta

                [
                {
                "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_"
                }
                ]
recommendation-more-help
5f00cc6b-2202-40d6-bcd0-3ee0c2316b43