Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

객체 유형의 액션 편집 이력(Get Object Type Edits History) (V2)

액션 실행에서 객체가 생성, 수정 또는 삭제된 이력을 조회합니다. objectPrimaryKey를 지정하면 해당 객체를, 생략하면 유형의 모든 객체를 대상으로 합니다. 기본 정렬은 최신 순서인 newest_first입니다.

시간 필터의 시작과 끝은 모두 경계를 포함합니다. OSv1 객체 유형에서는 filters가 무시되므로 이 조건으로 결과가 제한된다고 판단하지 않습니다. 페이지 크기의 기본값은 100이며 다음 토큰은 요청 본문에 전달합니다.

HTTP 요청

POST /api/v2/ontologies/{ontology}/objectTypes/{objectType}/editsHistory

작업 식별자는 v2.getObjectTypeEditsHistory입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:ontologies-read 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.

경로 매개변수

이름자료형필수 여부의미와 조건예시 값
ontologystring필수온톨로지의 RID 또는 API 이름입니다.palantir
objectTypestring필수객체 유형의 API 이름입니다.Employee

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
branchstring선택편집 이력을 조회할 Foundry 브랜치입니다. 생략하면 기본 브랜치를 사용합니다. 브랜치는 실험적 기능이며 모든 작업 경로를 지원하지 않습니다.ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252
scenarioRidstring선택편집 이력을 조회할 온톨로지 시나리오의 RID입니다.ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890

요청 본문

본문 형식은 ObjectTypeEditsHistoryRequest이며 필수입니다.

객체 유형의 편집 이력을 조회하는 필터와 페이지 설정입니다. objectPrimaryKey를 지정하면 해당 객체의 이력이며 생략하면 유형의 모든 객체 이력을 대상으로 합니다.

이름자료형필수 여부의미와 조건예시 값
objectPrimaryKeymap<PropertyApiName, PrimaryKeyValueV2>선택
filtersunion<timestampFilter, operationIdsFilter>선택
sortOrderenum선택허용값: newest_first, oldest_first.
includeAllPreviousPropertiesboolean선택
pageSizeinteger선택페이지마다 반환할 편집 수의 상한이며 기본값은 100입니다.
pageTokenstring선택다음 페이지 조회 토큰입니다.

objectPrimaryKey의 구조

맵의 키는 PropertyApiName(string), 값은 PrimaryKeyValueV2(union<dateValue, stringValue, timestampValue, booleanValue, integerValue, doubleValue, longValue>)입니다.

키: 속성의 API 이름입니다. Get Object Type 또는 Ontology Manager에서 확인합니다.

분기 dateValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: dateValue.dateValue
valuestring (date)필수
분기 stringValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: stringValue.stringValue
valuestring필수
분기 timestampValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: timestampValue.timestampValue
valuestring (date-time)필수
분기 booleanValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: booleanValue.booleanValue
valueboolean필수
분기 integerValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: integerValue.integerValue
valueinteger필수
분기 doubleValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: doubleValue.doubleValue
valuedouble필수
분기 longValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: longValue.longValue
valuelong필수64비트 정수입니다.

filters의 구조

분기 timestampFilter
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: timestampFilter.timestampFilter
startTimestring (date-time)선택이 시각 이후의 편집이며 경계 시각을 포함합니다. ISO 8601 형식을 사용합니다. 예시는 2024-01-01T00:00:00Z입니다.
endTimestring (date-time)선택이 시각 이전의 편집이며 경계 시각을 포함합니다. ISO 8601 형식을 사용합니다. 예시는 2024-12-31T23:59:59Z입니다.
분기 operationIdsFilter
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: operationIdsFilter.operationIdsFilter
operationIdslist<ActionRid>선택
operationIds의 구조

배열 항목은 ActionRid이며 자료형은 string입니다.

액션 실행의 고유 RID입니다.

페이지 크기와 정렬 순서를 지정한 요청 본문 예시입니다.

{
  "pageSize": 100,
  "sortOrder": "newest_first"
}

응답

ObjectTypeEditsHistoryResponse의 data는 편집 이력 목록입니다. totalCount는 현재 data 배열의 항목 수이며 전체 이력의 총합을 뜻하지 않습니다. 각 항목은 액션 실행 RID, 액션 유형 RID, 실행 주체와 시각 및 createEdit/deleteEdit/modifyEdit 정보를 가집니다.

성공 응답입니다.

이름자료형필수 여부의미와 조건예시 값
datalist<ObjectEditHistoryEntry>선택객체 유형의 편집 이력 목록입니다.
totalCountinteger선택현재 data 배열에 담긴 항목 수입니다.
nextPageTokenstring선택다음 페이지를 요청할 때 pageToken에 전달할 토큰입니다. 다음 토큰이 없으면 마지막 페이지입니다.

data의 구조

배열 항목은 ObjectEditHistoryEntry이며 자료형은 object입니다.

액션 실행에서 객체를 생성, 수정 또는 삭제한 개별 편집 이력입니다.

이름자료형필수 여부의미와 조건예시 값
objectPrimaryKeymap<PropertyApiName, PrimaryKeyValueV2>선택
operationIdstring필수액션 실행의 고유 RID입니다.
actionTypeRidstring필수액션 유형의 고유 RID입니다.
userIdstring필수액션을 수행한 사용자 ID 또는 주체입니다.
timestampstring (date-time)필수편집이 발생한 시각이며 ISO 8601 형식입니다.
editunion<createEdit, deleteEdit, modifyEdit>필수
objectPrimaryKey의 구조

맵의 키는 PropertyApiName(string), 값은 PrimaryKeyValueV2(union<dateValue, stringValue, timestampValue, booleanValue, integerValue, doubleValue, longValue>)입니다.

키: 속성의 API 이름입니다. Get Object Type 또는 Ontology Manager에서 확인합니다.

분기 dateValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: dateValue.dateValue
valuestring (date)필수
분기 stringValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: stringValue.stringValue
valuestring필수
분기 timestampValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: timestampValue.timestampValue
valuestring (date-time)필수
분기 booleanValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: booleanValue.booleanValue
valueboolean필수
분기 integerValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: integerValue.integerValue
valueinteger필수
분기 doubleValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: doubleValue.doubleValue
valuedouble필수
분기 longValue
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: longValue.longValue
valuelong필수64비트 정수입니다.
edit의 구조
분기 createEdit
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: createEdit.createEdit
propertiesmap<PropertyApiName, PropertyValue>선택객체 생성 당시 속성 API 이름에서 값으로 대응하는 맵입니다.
properties의 구조

맵의 키는 PropertyApiName(string), 값은 PropertyValue(any)입니다.

키: 속성의 API 이름입니다. Get Object Type 또는 Ontology Manager에서 확인합니다.

속성 자료형에 따른 JSON 값입니다. Long과 Decimal은 문자열이며 하위 호환성을 위해 일부 숫자와 boolean도 문자열로 인코딩할 수 있습니다.

모든 자료형과 하위 호환 JSON 표현은 속성값 인코딩을 따릅니다.

분기 deleteEdit
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: deleteEdit.deleteEdit
previousPropertiesmap<PropertyApiName, PropertyValue>선택
previousProperties의 구조

맵의 키는 PropertyApiName(string), 값은 PropertyValue(any)입니다.

키: 속성의 API 이름입니다. Get Object Type 또는 Ontology Manager에서 확인합니다.

속성 자료형에 따른 JSON 값입니다. Long과 Decimal은 문자열이며 하위 호환성을 위해 일부 숫자와 boolean도 문자열로 인코딩할 수 있습니다.

모든 자료형과 하위 호환 JSON 표현은 속성값 인코딩을 따릅니다.

분기 modifyEdit
이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: modifyEdit.modifyEdit
includesAllPreviousValuesboolean선택
previousPropertiesmap<PropertyApiName, PropertyValue>선택수정 전의 속성값입니다. 변경된 속성만 포함하며 속성 API 이름에서 이전 값으로 대응합니다.
propertiesmap<PropertyApiName, PropertyValue>선택
previousProperties의 구조

맵의 키는 PropertyApiName(string), 값은 PropertyValue(any)입니다.

키: 속성의 API 이름입니다. Get Object Type 또는 Ontology Manager에서 확인합니다.

속성 자료형에 따른 JSON 값입니다. Long과 Decimal은 문자열이며 하위 호환성을 위해 일부 숫자와 boolean도 문자열로 인코딩할 수 있습니다.

모든 자료형과 하위 호환 JSON 표현은 속성값 인코딩을 따릅니다.

properties의 구조

맵의 키는 PropertyApiName(string), 값은 PropertyValue(any)입니다.

키: 속성의 API 이름입니다. Get Object Type 또는 Ontology Manager에서 확인합니다.

속성 자료형에 따른 JSON 값입니다. Long과 Decimal은 문자열이며 하위 호환성을 위해 일부 숫자와 boolean도 문자열로 인코딩할 수 있습니다.

모든 자료형과 하위 호환 JSON 표현은 속성값 인코딩을 따릅니다.

개별 오류

오류 응답 처리는 공통 API 오류 계약을 따릅니다.

요청 예제

FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다. 예시 식별자와 매개변수 값은 실제 작업 대상에 맞게 바꿉니다.

Employee 유형의 최근 이력을 최대 100개 요청하는 예제입니다. 특정 객체나 시간 필터는 생략했습니다. 실제 브랜치와 시나리오를 사용하며 시나리오를 지정하지 않으려면 scenarioRid 쿼리를 생략합니다.

cURL

curl -X POST \
	-H "Content-type: application/json" \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/ontologies/palantir/objectTypes/Employee/editsHistory?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252&scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
	-d '{"pageSize":100,"sortOrder":"newest_first"}'

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 = {'pageSize': 100, 'sortOrder': 'newest_first'}

response = requests.post('https://{}/api/v2/ontologies/palantir/objectTypes/Employee/editsHistory?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252&scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890'.format(HOSTNAME), headers=headers, json=request_body)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 GetObjectTypeEditsHistoryExample.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 GetObjectTypeEditsHistoryExample {
    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/objectTypes/Employee/editsHistory?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252&scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890");
            request.addHeader("content-type", "application/json");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            request.setEntity(new StringEntity("{\"pageSize\":100,\"sortOrder\":\"newest_first\"}", ContentType.APPLICATION_JSON));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println(response);
            }
        }
    }
}

JavaScript

fetch를 제공하는 Node.js 환경에서 사용합니다. 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.

const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;

fetch(`https://${HOSTNAME}/api/v2/ontologies/palantir/objectTypes/Employee/editsHistory?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252&scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890`, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${TOKEN}`,
    },
    body: JSON.stringify({"pageSize":100,"sortOrder":"newest_first"})
}).then((response) => {
    console.log(response)
});

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/objectTypes/Employee/editsHistory?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252&scenarioRid=ri.actions..scenario.a1b2c3d4-e5f6-7890-abcd-ef1234567890" `
	-Method Post `
	-Headers $headers `
	-ContentType application/json `
	-Body '{"pageSize":100,"sortOrder":"newest_first"}'

$response.content