Workfront 환경 프로모션 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" 상태의 빈 프로모션 패키지를 만드는 결과를 초래합니다.
두 번째 단계에서는 POST 본문에 제공된 objectCollections
배열을 사용하여 Workfront에서 요청된 레코드를 조합합니다. 요청한 레코드 수와 Workfront 구성에 따라 이 단계를 완료하는 데 몇 분이 걸릴 수 있습니다. 이 프로세스가 끝나면 빈 프로모션 패키지가 packageEntities
(으)로 업데이트되고 상태가 자동으로 "초안"으로 설정됩니다.
objectCollections
배열의 구조를 확인합니다.objCode
키가 있습니다.entities
컬렉션도 포함되어 있습니다. ID
필드가 필요합니다. 또한 선택적 name
특성을 수락하여 ID
이(가) 나타내는 내용을 더 쉽게 알 수 있습니다.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 본문에 제공되는 프로모션 패키지의 콘텐츠를 업데이트합니다.
편집 가능한 속성은 다음과 같습니다.
- 이름(문자열)
- 설명(문자열)
- 상태(값 유효성 검사가 포함된 문자열)
사용 가능한 상태에 대한 자세한 설명은 문서 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
필드는 맨 위에서 세 번째이며 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
의 유효성을 검사합니다. 설정 작업이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