Workfront Environment Promotion API を使用して Workfront 環境間でオブジェクトを移動する
環境プロモーション機能を使用すると、設定関連のオブジェクトを環境間で移動できます。 この記事の説明に従って、Workfront API を使用してこれらのオブジェクトを移動できます。
Workfront アプリケーションを使用して環境間でオブジェクトを移動する手順については、以下を参照してください。
アクセス要件
以下が必要です。
この表の情報について詳しくは、Workfront ドキュメントのアクセス要件を参照してください。
前提条件
プロモーションパッケージを作成するエンドポイントは、既にソース環境が設定されていることを前提としています。この API 呼び出しでは、手動で Workfront objCodes のオブジェクトマップとオブジェクトの GUID を作成します。このマップの具体的な構造を以下に示します。
環境のプロモーションでサポートされるオブジェクト
環境プロモーション機能は、設定関連のオブジェクトを環境間で移動する機能を提供することを目的としています。トランザクションオブジェクトを移動する機能はサポートしていません(限定的な例外はあります)。
プロモーション可能なオブジェクトとこれに含まれるプロモーション可能なサブオブジェクトのリストについては、Workfront 環境間でのオブジェクトの移動の概要の記事の環境のプロモーションでサポートされているオブジェクトを参照してください。
認証
API はリクエストごとに認証を行い、リクエストされたオブジェクトを表示または変更するためのアクセス権をクライアントが持っていることを確認します。
認証は、次の方法で指定できるセッション ID または API キーを渡すことで実行されます。
リクエストヘッダー認証
推奨される認証方法は、セッショントークンを含む SessionID という名前のリクエストヘッダーを渡すことです。クロスサイトリクエストフォージェリー(CSRF)攻撃に対して安全で、キャッシュ目的で URI に干渉することがありません。
リクエストヘッダーの例を次に示します。
GET /attask/api/v15.0/project/search
SessionID: abc1234
API エンドポイント
パッケージを作成
この呼び出しでは、複数ステップのプロセスが実行されます。
最初のステップでは、「ASSEMBLING」ステータスの空のプロモーションパッケージが作成されます。
2 番目のステップでは、POST 本文で指定された objectCollections
配列を使用して、Workfront に要求されたレコードを組み立てます。要求されたレコードの数と Workfront の設定によっては、このステップが完了するまでに数分かかる場合があります。このプロセスの終わりに、空のプロモーションパッケージに packageEntities
が反映され、ステータスが自動的に「DRAFT」に設定されます。
objectCollections
配列の構造をメモしておきます。objCode
キーが含まれます。entities
コレクションも含まれています。これは、ID
フィールドを想定しています。また、ID
で表されている内容がわかりやすくなるように、オプションの name
属性を指定することもできます。objectCollections
リストで要求できるオブジェクトコードのリストについては、この記事の環境プロモーションでサポートされているオブジェクトの節を参照してください。URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages
ヘッダー
{
"apikey": "**********",
"Content-Type": "application/json"
}
または
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
本文
{
"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"
}
]
}
]
}
応答
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"
}
}
パッケージのリストを取得
この呼び出しでは、顧客に属するプロモーションパッケージのフィルタリングされていないリストを返します。
応答には、顧客の Workfront のサンドボックス、プレビューインスタンス、実稼動インスタンスのいずれかから作成されたすべてのパッケージが含まれます。
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages
ヘッダー
{
"apikey": "**********"
}
または
{
"sessionID": "*****************"
}
本文
空
応答
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
},
{...}
]
}
<!-- 前述の「ステータス」を確認します–追加しましたか?–>
ID でパッケージを取得
この呼び出しでは、要求されたプロモーションパッケージの詳細を返します。
リクエストは、プロモーションパッケージの元のソースに関係なく、任意の環境を通じて行うことができます。
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}
ヘッダー
{
"apikey": "**********"
}
または
{
"sessionID": "*****************"
}
本文
空
応答
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": [
{...}
],
...
}
}
}
パッケージの特定のプロパティを更新
この呼び出しでは、PATCH 本体で提供されるプロモーションパッケージのコンテンツが更新されます。
編集可能な属性は次のとおりです。
- name(文字列)
- description(文字列)
- status(値の検証を含む文字列)
利用可能なステータスについて詳しくは、Workfront 環境間でのオブジェクトの移動の概要の記事の環境のプロモーションでサポートされているオブジェクトを参照してください。
URL
PATCH https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}
ヘッダー
{
"apikey": "**********",
"Content-Type": "application/json"
}
または
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
本文
{
"status": "ACTIVE"
}
応答
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": [
{...}
],
...
}
}
}
パッケージを削除
この呼び出しでは、プロモーションパッケージレコードが削除されます。このアクションは元に戻せません。
URL
DELETE https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}
ヘッダー
{
"apikey": "**********"
}
または
{
"sessionID": "*****************"
}
本文
空
応答
200
Deleted
事前実行を実行
この呼び出しでは、URL で識別されたパッケージ定義とターゲット環境の間の比較が行われます。
結果は、ターゲット環境でプロモーションオブジェクトが見つかったかどうかを識別する JSON 本文です。
プロモーションオブジェクトごとに、次の actions
のいずれかが設定されます。
現在、このサービスのアルファ版機能では、UPDATE action
はサポートされていません。UPDATE action
を許可するオプションについては、現在調査中です。
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/:id/prepare-installation
ヘッダー
{
"apikey": "**********",
"Content-Type": "application/json"
}
または
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
本文
{}
応答
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
フィールドです。この例では、id
フィールドは上から 3 番目にあり、c0bc79bd
で始まる値を持ちます。インストールを実行
この呼び出しでは、POST URL で識別されたターゲット環境へのプロモーションパッケージのインストール試行が開始されます。
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/installations/{id}/install
ヘッダー
{
"apikey": "**********",
"Content-Type": "application/json"
}
または
{
"sessionID": "*****************",
"Content-Type": "application/json"
}
本文
{
}
応答
202
{}
特定のパッケージのインストールのリストを取得
結果には、パッケージがデプロイされた、すべての環境のインストールイベントが含まれます。リクエストされた環境へのインストールに限定されません。これにより、このパッケージを受け取った環境を識別できます。
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/installations?environmentPromotionPackageId={environmentPromotionPackageId}
ヘッダー
{
"apikey": "**********"
}
または
{
"sessionID": "*****************"
}
本文
空
応答
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"
},
...
},
...
}
},
{...}
]
インストールのインストール詳細を取得
この呼び出しは、特定のインストール用にインストールサービスで生成された最終的な translationMap
を返します。
各レコードは、設定された action
について、そして、そのアクションがが成功したかどうかを示します。
CREATE action
を含むレコードの場合、targetId
フィールドは、ターゲットシステムで新しく作成されたレコードの値で設定されます。また、installationStatus
フィールドが INSTALLED に設定されます。
USEEXISTING action
を含むレコードの場合、targetId
フィールドも設定され、installationStatus
フィールドが REGISTERED に設定されます。これは、マッピングプロセスが完了し、インストールサービスがレコードを評価して、何も操作が必要ないことを確認します。
レコードに CREATE action
があるにもかかわらず、レコードが正常に作成されなかった場合、installationStatus
は FAILED に設定され、失敗の理由も提示されます。
URL
GET https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/installations/{id}
ヘッダー
{
"apikey": "**********"
}
または
{
"sessionID": "*****************"
}
本文
空
応答
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"
},
...
},
...
}
}
上書き
これは 3 段階のプロセスです。
- 翻訳マップを作成します(「インストールの準備」フェーズに類似しています)。
- 生成された翻訳マップを編集し、上書きするオブジェクトの
action
フィールドとtargetId
フィールドを設定します。 アクションはOVERWRITING
、targetId
は上書きするオブジェクトの uuid にしてください - インストールを実行します。
手順 1 – 翻訳マップの作成
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}/translation-map
本文
なし
応答
翻訳マップ(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}
}
例
{
"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
}
}
}
手順 2 – 翻訳マップの変更
この手順にはエンドポイントがありません。
-
手順 1 – 翻訳マップの作成で返された翻訳マップで、インストールするオブジェクトのリストを調べます。
-
各オブジェクトのアクションフィールドを目的のインストールアクションに更新します。
-
各オブジェクトの
targetId
を検証します。 set アクションがUSEEXISTING
またはOVERWRITING
の場合、targetId
は、ターゲット環境のターゲットオブジェクトの UUID に設定する必要があります。 その他のアクションの場合は、targetId を空の文字列にする必要があります。note note NOTE 競合が検出された場合、 targetId
は既に入力されています。
手順 3 - インストール
URL
POST https://{domain}.{environment}.workfront.com/environment-promotion/api/v1/packages/{id}/install
本文
これは、単一のフィールド translationMap
を持つオブジェクトで、 手順 2 – 翻訳マップの変更で変更した翻訳マップと等しくなります。
{
"translationMap": {
{objcode}: {
{object uuid}: {
"targetId": {uuid of object in destination},
"action": {installation action},
"name": {name of the object},
"isValid": true
},
{...more objects}
},
{...more objcodes}
}
}
例
{
"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
}
}
}
}
応答
応答には、{uuid of the created installation}
と 202 - ACCEPTED
ステータスが含まれます。
例:b6aa0af8-3520-4b25-aca3-86793dff44a6