액션 한 건 적용(Apply Action) (V2)
지정한 매개변수로 액션을 적용합니다. 기본 모드는 VALIDATE_AND_EXECUTE이며, VALIDATE_ONLY는 검증만 수행합니다. 이 예시의 기본 모드 요청은 선택한 데이터 문맥에서 직원 이름을 변경합니다.
HTTP 200은 서버가 요청을 받아 처리했다는 뜻입니다. 액션 적용 결과는 실행 모드와 응답의 validation을 함께 확인합니다. 매개변수 기본값은 지원하지 않으므로 필요한 입력을 명시합니다.
Object Storage V1의 객체와 링크 변경은 최종 일관성을 따르므로 조회에 반영되기까지 시간이 걸릴 수 있습니다. Object Storage V2의 변경은 액션이 끝난 직후 보입니다.
HTTP 요청
POST /api/v2/ontologies/{ontology}/actions/{action}/apply
작업 식별자는 v2.applyActionV2입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:ontologies-read, api:ontologies-write 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.
경로 매개변수
| 이름 | 자료형 | 필수 여부 | 의미와 조건 | 예시 값 |
|---|---|---|---|---|
ontology | string | 필수 | 온톨로지의 API 이름 또는 RID입니다. List Ontologies 또는 Ontology Manager에서 확인합니다. | palantir |
action | string | 필수 | 적용할 액션의 API 이름입니다. List Action Types 또는 Ontology Manager에서 확인합니다. | rename-employee |
쿼리 매개변수
| 이름 | 자료형 | 필수 여부 | 의미와 조건 | 예시 값 |
|---|---|---|---|---|
sdkPackageRid | string | 선택 | 생성된 SDK 패키지의 RID입니다. | |
sdkVersion | string | 선택 | 생성된 SDK의 버전입니다. | |
transactionId | string | 선택 | 액션을 적용할 온톨로지 트랜잭션 ID입니다. 트랜잭션은 실험적 기능이며 모든 작업 경로를 지원하지 않을 수 있습니다. | |
scenarioRid | string | 선택 | 액션을 적용할 온톨로지 시나리오의 RID입니다. | ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890 |
branch | string | 선택 | 액션을 적용할 Foundry 브랜치입니다. 생략하면 기본 브랜치를 사용합니다. 브랜치는 실험적 기능이며 모든 작업 경로를 지원하지 않습니다. | ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252 |
요청 본문
본문 형식은 ApplyActionRequestV2이며 필수입니다.
| 이름 | 자료형 | 필수 여부 | 의미와 조건 | 예시 값 |
|---|---|---|---|---|
options | object | 선택 | ||
parameters | map<ParameterId, DataValue> | 선택 |
options의 구조
| 이름 | 자료형 | 필수 여부 | 의미와 조건 | 예시 값 |
|---|---|---|---|---|
mode | enum | 선택 | 생략하면 VALIDATE_AND_EXECUTE입니다. 허용값: VALIDATE_ONLY, VALIDATE_AND_EXECUTE. | |
returnEdits | enum | 선택 | 생략하면 NONE입니다. 허용값: ALL, ALL_V2_WITH_DELETIONS, NONE. |
parameters의 구조
맵의 키는 ParameterId(string), 값은 DataValue(any)입니다.
키: 액션이나 쿼리 입력에 사용하는 매개변수의 고유 ID입니다. 매개변수는 Ontology Manager에서 확인하고 관리할 수 있습니다.
중첩 가능한 데이터 값입니다. 자료형별 JSON 표현은 액션 데이터 값을 따릅니다.
직원 이름을 변경하는 요청 본문 예시입니다.
{
"parameters": {
"id": 80060,
"newName": "Anna Smith-Doe"
}
}
응답
응답 형식은 SyncApplyActionResponseV2입니다.
반환된 validation.result와 매개변수별 제약 결과를 확인합니다. 검증만 요청했다면 결과가 VALID여도 변경을 실행하지 않습니다.
성공 응답입니다.
| 이름 | 자료형 | 필수 여부 | 의미와 조건 | 예시 값 |
|---|---|---|---|---|
operationId | string | 선택 | ||
validation | object | 선택 | ||
edits | union<edits, largeScaleEdits> | 선택 |
validation의 구조
전체 필드는 액션 검증 응답을 따릅니다.
edits의 구조
해당 요청 방식의 편집 응답을 따릅니다.
액션 적용의 응답 예시입니다.
{
"operationId": "ri.actions.main.action.c61d9ab5-2919-4127-a0a1-ac64c0ce6367",
"validation": {
"result": "VALID",
"parameters": {
"id": {
"evaluatedConstraints": [],
"result": "VALID",
"required": true
},
"newName": {
"evaluatedConstraints": [],
"result": "VALID",
"required": true
}
}
}
}
개별 오류
오류 응답 처리는 공통 API 오류 계약을 따릅니다.
요청 예제
FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다. 예시 식별자와 매개변수 값은 실제 작업 대상에 맞게 바꿉니다.
시나리오 RID와 브랜치 RID, 액션 이름 및 입력값은 실제 변경 대상에 맞춰 지정합니다. 기본 브랜치를 사용할 때는 branch를 생략합니다.
cURL
curl -X POST \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
"https://${FOUNDRY_HOST}/api/v2/ontologies/palantir/actions/rename-employee/apply?scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890&branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252" \
-d '{"parameters":{"id":80060,"newName":"Anna Smith-Doe"}}'
Python
Requests 라이브러리가 설치된 Python 환경에서 사용합니다.
import os
import requests
HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
"content-type": "application/json",
"authorization": "Bearer {}".format(TOKEN)
}
request_body = {
"parameters": {
"id": 80060,
"newName": "Anna Smith-Doe"
}
}
response = requests.post('https://{}/api/v2/ontologies/palantir/actions/rename-employee/apply?scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890&branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252'.format(HOSTNAME), headers=headers, json=request_body)
response.raise_for_status()
print(response.json())
Java
Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 ApplyActionV2Example.java 파일에서 사용합니다.
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
public class ApplyActionV2Example {
public static void main(String[] args) throws Exception {
String HOSTNAME = System.getenv("FOUNDRY_HOST");
String TOKEN = System.getenv("FOUNDRY_TOKEN");
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpPost request = new HttpPost("https://" + HOSTNAME + "/api/v2/ontologies/palantir/actions/rename-employee/apply?scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890&branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252");
request.addHeader("content-type", "application/json");
request.addHeader("authorization", String.format("Bearer %s", TOKEN));
request.setEntity(new StringEntity("{\"parameters\":{\"id\":80060,\"newName\":\"Anna Smith-Doe\"}}", ContentType.APPLICATION_JSON));
try (CloseableHttpResponse response = httpClient.execute(request)) {
System.out.println(org.apache.http.util.EntityUtils.toString(response.getEntity(), java.nio.charset.StandardCharsets.UTF_8));
}
}
}
}
JavaScript
fetch를 제공하는 Node.js 환경에서 사용합니다. 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.
const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;
fetch(`https://${HOSTNAME}/api/v2/ontologies/palantir/actions/rename-employee/apply?scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890&branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${TOKEN}`,
},
body: '{"parameters":{"id":80060,"newName":"Anna Smith-Doe"}}'
}).then(async (response) => {
console.log(await response.json());
});
PowerShell
$ErrorActionPreference = 'Stop'
$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST
$headers = @{
"authorization" = "Bearer $TOKEN"
}
$response = Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/ontologies/palantir/actions/rename-employee/apply?scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890&branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252" `
-Method Post `
-Headers $headers `
-ContentType application/json `
-Body "{`"parameters`":{`"id`":80060,`"newName`":`"Anna Smith-Doe`"}}"
$response.content