Sposta oggetti tra ambienti Workfront utilizzando l'API di promozione dell'ambiente Workfront
La funzionalità di promozione dell’ambiente consente di spostare gli oggetti relativi alla configurazione da un ambiente all’altro. Puoi spostare questi oggetti utilizzando l’API di Workfront come descritto in questo articolo.
Per istruzioni sullo spostamento di oggetti tra ambienti utilizzando l'applicazione Workfront, vedere:
Requisiti di accesso
Devi avere i seguenti:
Per ulteriori dettagli sulle informazioni contenute in questa tabella, vedere Requisiti di accesso nella documentazione di Workfront.
Prerequisiti
L’endpoint "Crea pacchetto di promozione" presuppone che tu abbia già configurato l’ambiente di origine. Questa chiamata API richiede la creazione manuale di una mappa oggetto di Workfront objCodes e GUID oggetto. La struttura specifica di questa mappa è descritta di seguito.
Oggetti supportati per la promozione dell’ambiente
La funzionalità di promozione dell’ambiente ha lo scopo di consentire lo spostamento di oggetti correlati alla configurazione da un ambiente all’altro. Non supporta la possibilità di spostare oggetti transazionali (con eccezioni limitate).
Per un elenco degli oggetti promozionali e dei relativi oggetti secondari promozionali inclusi, vedere Oggetti supportati per la promozione dell'ambiente nell'articolo Panoramica sullo spostamento di oggetti tra ambienti Workfront.
Autenticazione
L’API autentica ogni richiesta per garantire che il client abbia accesso alla visualizzazione o alla modifica di un oggetto richiesto.
L’autenticazione viene eseguita trasmettendo un ID sessione o una chiave API, che può essere fornita utilizzando il seguente metodo:
Autenticazione intestazione richiesta
Il metodo preferito per l’autenticazione consiste nel trasmettere un’intestazione di richiesta denominata SessionID contenente il token di sessione. Questo ha il vantaggio di essere sicuro contro gli attacchi di Cross-Site Request Forgery (CSRF) e di non interferire con l'URI a scopo di caching.
Di seguito è riportato un esempio di intestazione di richiesta:
GET /attask/api/v15.0/project/search
SessionID: abc1234
Endpoint API
- Creare un pacchetto
- Ottieni un elenco di pacchetti
- Ottenere un pacchetto per ID
- Aggiornare proprietà specifiche di un pacchetto
- Eliminare un pacchetto
- Eseguire una
- Eseguire un’installazione
- Ottieni un elenco di installazioni per un pacchetto specifico
- Ottenere i dettagli di installazione per un'installazione
Creare un pacchetto
Questa chiamata esegue un processo con più passaggi.
Il primo passaggio comporta la creazione di un pacchetto di promozione vuoto con lo stato "ASSEMBLAGGIO".
Nel secondo passaggio viene utilizzato l'array objectCollections
fornito nel corpo del POST per assemblare i record richiesti da Workfront. Questo passaggio potrebbe richiedere alcuni minuti, a seconda del numero di record richiesti e della configurazione di Workfront. Al termine di questo processo, il pacchetto di promozione vuoto viene aggiornato con packageEntities
e lo stato viene impostato automaticamente su "BOZZA".
objectCollections
.objCode
che corrisponde al codice oggetto documentato in Esplora API di Workfront.entities
. È previsto il campo ID
. Può inoltre accettare un attributo name
facoltativo per semplificare la conoscenza di ciò che rappresenta ID
.objectCollections
, vedere la sezione Oggetti supportati per la promozione dell'ambiente in questo articolo.URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages
Intestazioni
{
"apikey": "**********",
"Content-Type": "application/json"
}
Oppure
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
Corpo
{
"name": "Agency Onboarding - 2023-06-06",
"description": "This promotion package contains configuration to support the agency onboarding processes...",
"source": "https://{domain}.{environment}.workfront.com",
"objectCollections": [
{
"objCode": "PROJ",
"entities": [
{
"ID": "6419b8b9001151ee258921a4f7597ba1",
"name": "Agency Request"
}
]
},
{
"objCode": "TMPL",
"entities": [
{
"ID": "6419b8b9001151ee258921a4f7597bb2",
"name": "New Agency Onboarding"
},
{
"ID": "6419b8b9001151ee258921a4f7597bc3",
"name": "New Agency Offboarding"
}
]
},
{
"objCode": "PTLTAB",
"entities": [
{
"ID": "645e6435000b4aaebe4776f4a42ed5ad",
"name": "Agency Performance and Readiness"
}
]
}
]
}
Risposta
200
{
"data": {
"id": "1d5693b9-b7b5-492d-8219-c21f34bcaca6",
"name": "Agency Onboarding - 2023-06-06",
"description": "This promotion package contains configuration to support the agency onboarding processes...",
"source": "https://{domain}.{environment}.workfront.com",
"status": "ASSEMBLING",
"version": 1,
"createdAt": "2023-06-06T17:29:21.600Z",
"createdById": "61aa9d0e0005fcee8f212835bdaa2619",
"publishedAt": null,
"customerId": "61aa9d090005fa42152c1cb66659f38d"
}
}
Ottieni un elenco di pacchetti
Questa chiamata restituisce un elenco non filtrato di pacchetti promozionali appartenenti al cliente.
La risposta includerà tutti i pacchetti creati da una qualsiasi delle istanze sandbox, anteprima o produzione del cliente di Workfront.
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages
Intestazioni
{
"apikey": "**********"
}
Oppure
{
"sessionID": "*****************"
}
Corpo
Vuoto
Risposta
200
{
"data": [
{
"id": "1d5693b9-b7b5-492d-8219-c21f34bcaca6",
"name": "Agency Onboarding - 2023-06-06",
"description": "This promotion package contains configuration to support the agency onboarding processes...",
"status": "ASSEMBLING",
"createdAt": "2023-06-06T17:29:21.600Z",
"deletedAt": null
},
{...}
]
}
<!—Controllare "status" sopra—è stato aggiunto?—>
Ottenere un pacchetto per ID
Questa chiamata restituisce i dettagli di un pacchetto di promozione richiesto.
La richiesta può essere effettuata tramite qualsiasi ambiente indipendentemente dall’origine del pacchetto promozionale.
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}
Intestazioni
{
"apikey": "**********"
}
Oppure
{
"sessionID": "*****************"
}
Corpo
Vuoto
Risposta
200
{
"data": {
"id": "1d5693b9-b7b5-492d-8219-c21f34bcaca6",
"name": "Agency Onboarding - 2023-06-06",
"description": "This promotion package contains configuration to support the agency onboarding processes...",
"source": "https://{domain}.{environment}.workfront.com",
"status": "DRAFT",
"version": 1,
"createdAt": "2023-06-06T17:29:21.600Z",
"publishedAt": null,
"customerId": "61aa9d090005fa42152c1cb66659f38d",
"packageEntities": {
"GROUP": [
{
"id": "52aa9d0e0005fcee8f212835bdaa2691",
"name": "Default Group",
"description": "null"
- or -
"description": "..."
}
],
"ROLE": [
{...}
],
...
}
}
}
Aggiornare proprietà specifiche di un pacchetto
Questa chiamata aggiorna qualsiasi contenuto del pacchetto promozionale fornito nel corpo del PATCH.
Gli attributi modificabili sono:
- nome (stringa)
- descrizione (stringa)
- stato (stringa con convalida del valore)
Per una descrizione dettagliata degli stati disponibili, vedere Stati di promozione dell'ambiente nell'articolo Panoramica sullo spostamento di oggetti tra ambienti Workfront.
URL
PATCH https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}
Intestazioni
{
"apikey": "**********",
"Content-Type": "application/json"
}
Oppure
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
Corpo
{
"status": "ACTIVE"
}
Risposta
200
{
"data": {
"id": "1d5693b9-b7b5-492d-8219-c21f34bcaca6",
"name": "Agency Onboarding - 2023-06-06",
"description": "This promotion package contains configuration to support the agency onboarding processes...",
"source": "https://{domain}.{environment}.workfront.com",
"status": "ACTIVE",
"version": 1,
"createdAt": "2023-06-06T17:29:21.600Z",
"publishedAt": "2023-06-06T19:39:01.600Z",
"customerId": "61aa9d090005fa42152c1cb66659f38d",
"packageEntities": {
"GROUP": [
{
"id": "52aa9d0e0005fcee8f212835bdaa2691",
"name": "Default Group",
"description": "..."
}
],
"ROLE": [
{...}
],
...
}
}
}
Eliminare un pacchetto
Questa chiamata elimina il record del pacchetto di promozione. Questa azione è irreversibile.
URL
DELETE https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}
Intestazioni
{
"apikey": "**********"
}
Oppure
{
"sessionID": "*****************"
}
Corpo
Vuoto
Risposta
200
Deleted
Eseguire una
Questa chiamata esegue un confronto tra la definizione del pacchetto e l’ambiente di destinazione identificato nell’URL.
Il risultato è un corpo JSON che identifica se un oggetto di promozione viene trovato o meno nell’ambiente di destinazione.
Per ogni oggetto promozione verrà impostato uno dei seguenti actions
:
Non è attualmente supportato un aggiornamento action
nelle funzionalità alfa di questo servizio. Si sta ricercando l'opzione per consentire un aggiornamento action
.
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/:id/prepare-installation
Intestazioni
{
"apikey": "**********",
"Content-Type": "application/json"
}
Oppure
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
Corpo
{}
Risposta
200
{
"environmentPromotionPackageId": "45f2ae94-76c0-4b13-8f3b-f688de83043d",
"environmentPromotionPackageVersion": 1,
"id": "c0bc79bd-c9c1-4b5b-b118-b1241392de0e",
"userId": "5ba38da500b752fd66439d4f6a9999a1",
"customerId": "5ba38d9d00b74f0c7a38b1b487fc9710",
"status": "PREPARING",
"environment": "mmi.my.workfront.com",
"registeredAt": "2023-10-19T20:00:16.697Z",
"updatedAt": "2023-10-19T20:00:16.701Z",
"translationMap": {
"CTGY": {
"62d9c9a0000013aeeefe7242a0a5fdb2": {
"name": "Example Document Form",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d9c9a0000013aeeefe7242a0a5fdb2"
}
},
"PGRP": {
"62d1eee4001c6618e6b9f9a588ba1598": {
"name": "Asset Detail",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d1eee4001c6618e6b9f9a588ba1598"
}
},
"GROUP": {
"5ba38da500b752b0f46d13186030b7ad": {
"name": "Default Group",
"action": "USEEXISTING",
"isValid": true,
"targetId": "5ba38da500b752b0f46d13186030b7ad"
}
},
"PARAM": {
"62d1eee400f8578895166ee91a83f97a": {
"name": "Asset Type",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d1eee400f8578895166ee91a83f97a"
},
"62d1eee50001407c713514a8970b58e4": {
"name": "Keywords",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d1eee50001407c713514a8970b58e4"
},
"62d1eee5000333ac3981ea4f3df6d88e": {
"name": "Permitted Uses",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d1eee5000333ac3981ea4f3df6d88e"
},
"62d1eee5000b188e9ec8039a097fc7ab": {
"name": "File Format",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d1eee5000b188e9ec8039a097fc7ab"
},
"62d1eee500100c159fd5f838ce560507": {
"name": "CTA",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d1eee500100c159fd5f838ce560507"
},
"62d9c988001c1f23954dbb9d646335b5": {
"name": "Other CTA",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d9c988001c1f23954dbb9d646335b5"
},
"62d9c9880070f546cf4c798ea6c3eaa4": {
"name": "Other Audience",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d9c9880070f546cf4c798ea6c3eaa4"
},
"62d9c990006258baf1b40f2569c3eab7": {
"name": "Target Audience",
"action": "USEEXISTING",
"isValid": true,
"targetId": "62d9c990006258baf1b40f2569c3eab7"
}
}
}
}
id
. In questo esempio, il campo id
è terzo dall'alto e ha un valore che inizia con c0bc79bd
.Eseguire un’installazione
Questa chiamata avvia un tentativo di installazione di un pacchetto di promozione nell’ambiente di destinazione identificato nell’URL di POST.
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/installations/{id}/install
Intestazioni
{
"apikey": "**********",
"Content-Type": "application/json"
}
Oppure
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
Corpo
{
}
Risposta
202
{}
Ottieni un elenco di installazioni per un pacchetto specifico
I risultati includono gli eventi di installazione da tutti gli ambienti in cui è stato distribuito il pacchetto. Non si limitano alle installazioni per l’ambiente attraverso cui viene effettuata la richiesta. Questo consente di identificare gli ambienti che hanno ricevuto questo pacchetto.
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/installations?environmentPromotionPackageId={environmentPromotionPackageId}
Intestazioni
{
"apikey": "**********"
}
Oppure
{
"sessionID": "*****************"
}
Corpo
Vuoto
Risposta
200
[
{
"id": "2892b936-e09e-455a-935f-e1462ab9753c",
"environmentPromotionPackageId": "4fae2b9d-d315-45f4-909f-a0c0d79fc65d",
"environmentPromotionPackageVersion": 1,
"userId": "8fbbc5bcf4f94a5b862483ee05573e73",
"customerId": "54286d78b064451096752b99bf968481",
"status": "INSTALLED",
"environment": "https://{domain}.{environment}.workfront.com",
"registeredAt": "2021-03-16T02:21:31.908Z",
"updatedAt": null,
"translationMap": {
"ROLE": {
"5f6d114f006883209828ddd9088e63b3": {
"name": "DAM Curator",
"action": "USEEXISTING",
"isValid": true,
"targetId": "600f4bed00028a718599f29575840053"
},
"ad535a9ebe647361e053a7656a0a1575": {
"name": "Copywriter",
"action": "USEEXISTING",
"isValid": true,
"targetId": "600f162700001ca051081c06667b14a4"
},
...
},
"TMPL": {
"5f9b317c00b3db5af69abcd1ed5f82aa": {
"name": "Digital Asset Production (Integrated)",
"action": "CREATE",
"isValid": true,
"targetId": "6054cda40000d5af63dc811d9c2b3a07"
},
...
},
...
}
},
{...}
]
Ottenere i dettagli di installazione per un'installazione
Questa chiamata restituirà il translationMap
finale prodotto dal servizio di installazione per un'installazione specifica.
Ogni record indicherà quale era il action
prescritto e se l'azione è stata eseguita correttamente o meno.
Per i record con CREATE action
il campo targetId
verrà impostato con il valore del record appena creato nel sistema di destinazione. Inoltre, il campo installationStatus
verrà impostato su INSTALLATO.
Per i record con USEEXISTING action
verrà impostato anche il campo targetId
e il campo installationStatus
verrà impostato su REGISTERED. Ciò significa che il processo di mappatura è stato completato e che il servizio di installazione riconosce di aver valutato il record e non c'è nulla su cui intervenire.
Se il record contiene un elemento CREATE action
ma la creazione del record non riesce, installationStatus
verrà impostato su FAILED e verrà fornito anche il motivo dell'errore.
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/installations/{id}
Intestazioni
{
"apikey": "**********"
}
Oppure
{
"sessionID": "*****************"
}
Corpo
Vuoto
Risposta
200
{
"id": "2892b936-e09e-455a-935f-e1462ab9753c",
"environmentPromotionPackageId": "4fae2b9d-d315-45f4-909f-a0c0d79fc65d",
"environmentPromotionPackageVersion": 1,
"userId": "8fbbc5bcf4f94a5b862483ee05573e73",
"customerId": "54286d78b064451096752b99bf968481",
"status": "INSTALLED",
"environment": "https://{domain}.{environment}.workfront.com",
"registeredAt": "2021-03-16T02:21:31.908Z",
"updatedAt": null,
"translationMap": {
"ROLE": {
"5f6d114f006883209828ddd9088e63b3": {
"name": "DAM Curator",
"action": "USEEXISTING",
"isValid": true,
"targetId": "600f4bed00028a718599f29575840053"
},
...
},
"TMPL": {
"5f9b317c00b3db5af69abcd1ed5f82aa": {
"name": "Digital Asset Production (Integrated)",
"action": "CREATE",
"isValid": true,
"targetId": "6054cda40000d5af63dc811d9c2b3a07"
},
...
},
...
}
}
Sovrascrittura
Si tratta di un processo in tre fasi.
- Creare una mappa di traduzione (analogamente alla fase di "preparazione dell’installazione")
- Modificare la mappa di traduzione generata, impostando i campi
action
etargetId
per qualsiasi oggetto che si desidera sovrascrivere. L'azione deve essereOVERWRITING
etargetId
deve essere l'UUID dell'oggetto da sovrascrivere - Eseguire l'installazione.
Passaggio 1 - Creare una mappa di traduzione
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}/translation-map
Corpo
Nessuno
Risposta
Mappa di traduzione con stato 202 - OK
{
{objcode}: {
{object uuid}: {
"targetId": {uuid of object in destination},
"action": {installation action},
"name": {name of the object},
"isValid": true
},
{...more objects}
},
{...more objcodes}
}
Esempio
{
"UIVW": {
"109f611680bb3a2b0c0a8c1f5ec63f6d": {
"targetId": "6643a26b0001401ff797ccb318f97aa6",
"action": "CREATE",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"UIGB": {
"edb4c6c127d38910e4860eb25569a5cc": {
"targetId": "6643a26b000178fb5cc27b74cc1e87ec",
"action": "USEEXISTING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"UIFT": {
"f97b662e229fd09ee595d8d359ec88bd": {
"targetId": "6643a26b00015cdd6727b76d6fda1d1d",
"action": "USEEXISTING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"PTLSEC": {
"4bb80aa88a96420296a7f47bf866f162": {
"targetId": "4bb80aa88a96420296a7f47bf866f162",
"action": "USEEXISTING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"EXTSEC": {
"65f8637900015e4dceb6fe079bd5409d": {
"targetId": "65f8637900015e4dceb6fe079bd5409d",
"action": "USEEXISTING",
"name": "Asnyc List",
"isValid": true
}
},
"PTLTAB": {
"65f8638a00016422a83ddc3508852d0f": {
"targetId": "65f8638a00016422a83ddc3508852d0f",
"action": "CREATEWITHALTNAME",
"name": "Cool 2.0 The Best",
"isValid": true
}
}
}
Passaggio 2: modificare la mappa di traduzione
Nessun endpoint per questo passaggio.
-
Nella mappa di traduzione restituita nel Passaggio 1 - Creare una mappa di traduzione, controllare l'elenco degli oggetti che verranno installati.
-
Aggiornare il campo di azione di ogni oggetto all'azione di installazione desiderata.
-
Convalida
targetId
su ciascun oggetto. Se l'azione impostata èUSEEXISTING
oOVERWRITING
,targetId
deve essere impostato sull'UUID dell'oggetto di destinazione nell'ambiente di destinazione. Per qualsiasi altra azione, targetId deve essere una stringa vuota.note note NOTE targetId
è già popolato se è stato rilevato un conflitto.
Passaggio 3 - Installa
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}/install
Corpo
Questo è un oggetto con un singolo campo translationMap
, che deve corrispondere alla mappa di traduzione modificata da Passaggio 2 - Modifica la mappa di traduzione.
{
"translationMap": {
{objcode}: {
{object uuid}: {
"targetId": {uuid of object in destination},
"action": {installation action},
"name": {name of the object},
"isValid": true
},
{...more objects}
},
{...more objcodes}
}
}
Esempio
{
"translationMap": {
"UIVW": {
"109f611680bb3a2b0c0a8c1f5ec63f6d": {
"targetId": "6643a26b0001401ff797ccb318f97aa6",
"action": "USEEXISTING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"UIGB": {
"edb4c6c127d38910e4860eb25569a5cc": {
"targetId": "6643a26b000178fb5cc27b74cc1e87ec",
"action": "USEEXISTING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"UIFT": {
"f97b662e229fd09ee595d8d359ec88bd": {
"targetId": "6643a26b00015cdd6727b76d6fda1d1d",
"action": "OVERWRITING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"PTLSEC": {
"4bb80aa88a96420296a7f47bf866f162": {
"targetId": "4bb80aa88a96420296a7f47bf866f162",
"action": "USEEXISTING",
"name": "Actual Portfolio Cost by Program",
"isValid": true
}
},
"EXTSEC": {
"65f8637900015e4dceb6fe079bd5409d": {
"targetId": "65f8637900015e4dceb6fe079bd5409d",
"action": "USEEXISTING",
"name": "Asnyc List",
"isValid": true
}
},
"PTLTAB": {
"65f8638a00016422a83ddc3508852d0f": {
"targetId": "65f8638a00016422a83ddc3508852d0f",
"action": "CREATEWITHALTNAME",
"name": "Cool 2.0 The Best",
"isValid": true
}
}
}
}
Risposta
La risposta include lo stato {uuid of the created installation}
e 202 - ACCEPTED
.
Esempio: b6aa0af8-3520-4b25-aca3-86793dff44a6