Sposta oggetti tra Workfront ambienti che utilizzano Workfront API di promozione dell’ambiente
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 al sicuro CSRF (Cross-Site Request Forgery) attacchi e 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".
Il secondo passaggio utilizza il 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 "DRAFT" (BOZZA).
objectCollections
array.objCode
chiave che corrisponde al codice oggetto documentato in Workfront API Explorer.entities
raccolta. Questo prevede che ID
campo. Può inoltre accettare un name
per rendere più facile sapere quale ID
rappresenta.objectCollections
, vedere la 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, vedi 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, effettuare una delle seguenti operazioni actions
verrà impostato:
Non è attualmente supportato alcun aggiornamento action
nelle funzionalità alfa di questo servizio. Opzione per consentire un aggiornamento action
è qualcosa su cui stiamo facendo ricerche.
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
campo. In questo esempio, la proprietà id
è il terzo campo dalla parte superiore 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 finale translationMap
prodotto dal servizio di installazione per un'installazione specifica.
Ogni documento indicherà il tipo di action
e se tale azione sia stata eseguita con successo o meno.
Per i record con un valore CREATE action
il targetId
verrà impostato con il valore del record appena creato nel sistema di destinazione. Inoltre, il installationStatus
verrà impostato su INSTALLATO.
Per i record con USEEXISTING action
il targetId
verrà impostato anche il campo e installationStatus
verrà impostato su REGISTRATO. 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 ha un valore CREATE action
ma non riesce a creare il record, quindi il installationStatus
verrà impostato su FAILED (NON RIUSCITO) e verrà indicato 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")
- Modifica la mappa di traduzione generata, impostando
action
etargetId
campi 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
Una mappa di traduzione, con 202 - OK
stato
{
{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 in Passaggio 1: creare una mappa di traduzione, controlla l'elenco degli oggetti che verranno installati.
-
Aggiornare il campo di azione di ogni oggetto all'azione di installazione desiderata.
-
Convalidare
targetId
su ciascun oggetto. Se l'azione impostata èUSEEXISTING
oOVERWRITING
, iltargetId
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 Il targetId
è già popolato se è stato rilevato un conflitto.
Passaggio 3: installare
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: modificare 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 {uuid of the created installation}
e un 202 - ACCEPTED
stato.
Esempio: b6aa0af8-3520-4b25-aca3-86793dff44a6