Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

민감 데이터 검사 기록 목록(List Scan Records) (V2)

특정 검사 구성의 기록을 페이지 단위로 조회합니다. scanConfigurationId는 반복 검사 또는 일회성 검사를 가리키며, 검사한 리소스가 속한 공간의 scopeRid도 필수입니다.

활성 여부 필터와 결과 상태 필터는 별도 매개변수입니다. 둘 다 생략하면 활성 검사와 완료된 검사를 모든 결과 상태에 대해 조회합니다. 첫 페이지에서는 pageToken을 생략하고 다음 응답의 nextPageToken을 쿼리 매개변수로 전달합니다.

이 엔드포인트는 미리보기 기능이며 언제든 변경되거나 제거될 수 있습니다. 사용하려면 preview=true를 지정합니다.

HTTP 요청

GET /api/v2/sds/scanConfigurations/{scanConfigurationId}/records

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

경로 매개변수

이름자료형필수 여부의미와 조건예시 값
scanConfigurationIdstring필수검사 구성의 식별자입니다. 반복 검사와 일회성 검사 모두를 가리킬 수 있습니다.ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
scopeRidstring필수검사한 리소스가 속한 공간입니다.ri.compass.main.folder.833bc64a-f8fb-4ade-834e-6814242613ae
scanRecordIsActiveFilterenum선택생략하면 활성 검사와 완료된 검사를 모두 반환합니다. 허용값: ALL_SCANS, ACTIVE_SCANS, COMPLETED_SCANS.ALL_SCANS
scanResultStatusFilterenum선택생략하면 검사 결과 상태에 관계없이 모든 기록을 반환합니다. 허용값: RUNNING, FAILED, SUCCEEDED_WITH_MATCHES, SUCCEEDED_WITHOUT_MATCHES, CANCELLED, UNPROCESSABLE_SKIPPED, NO_PERMISSION_SKIPPED, NO_NEW_DATA_SKIPPED.SUCCEEDED_WITH_MATCHES
pageSizeinteger선택요청할 페이지 크기입니다.
pageTokenstring선택페이지 조회를 시작할 위치입니다. 첫 요청에서는 생략하고, 다음 요청에서는 직전 응답의 nextPageToken을 pageToken으로 전달합니다.
previewboolean선택미리보기 기능 사용을 활성화합니다.true

요청 본문

요청 본문을 사용하지 않습니다.

응답

ListScanRecordsResponse는 선택적인 기록 목록 data와 다음 페이지 토큰을 반환합니다. 한 기록의 scanResult는 탐지 조건별 평가 결과입니다. 검출되지 않은 조건, 일치한 데이터셋 열과 미디어 항목 결과를 서로 다른 type으로 구분합니다.

검사 상태와 이 HTTP 요청의 성공 여부는 별개입니다. 예를 들어 NO_PERMISSION_SKIPPED는 기록된 검사의 결과이며 목록 요청의 HTTP 오류 코드가 아닙니다.

이름자료형필수 여부의미와 조건예시 값
datalist<ScanRecord>선택
nextPageTokenstring선택다음 페이지를 요청할 때 pageToken에 전달할 토큰입니다. 다음 토큰이 없으면 마지막 페이지입니다.

data의 구조

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

이름자료형필수 여부의미와 조건예시 값
idstring필수검사 기록의 식별자입니다.a5621a18-0412-4304-8eb8-22de9bbeeffe
scanConfigurationIdstring필수검사 구성의 식별자입니다. 반복 검사와 일회성 검사 모두를 가리킬 수 있습니다.ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259
scannedResourcestring필수검사한 리소스입니다.ri.foundry.main.dataset.437313ac-11dc-4e23-8c4c-3d510f1b10be
branchIdstring필수검사한 브랜치입니다.master
transactionRidstring선택
startTimestring (date-time)필수검사를 시작한 시각입니다.2026-03-16T18:51:00.527Z
completedTimestring (date-time)선택검사를 완료한 시각입니다.2026-03-16T18:51:04.218Z
matchConditionRidslist<MatchConditionRid>선택
matchActionRidslist<MatchActionRid>선택
buildRidstring선택
statusenum필수민감 데이터 검사의 결과 상태입니다. 허용값: RUNNING, FAILED, SUCCEEDED_WITH_MATCHES, SUCCEEDED_WITHOUT_MATCHES, CANCELLED, UNPROCESSABLE_SKIPPED, NO_PERMISSION_SKIPPED, NO_NEW_DATA_SKIPPED.SUCCEEDED_WITH_MATCHES
scanResultlist<MatchConditionOutcome>선택응답 예시 참조
matchConditionRids의 구조

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

탐지 조건의 RID입니다.

matchActionRids의 구조

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

탐지 대응의 RID입니다.

scanResult의 구조

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

특정 탐지 조건을 평가한 결과입니다. 검사한 행 수와 검사 결과를 포함합니다.

이름자료형필수 여부의미와 조건예시 값
matchConditionRidstring필수탐지 조건의 RID입니다.ri.foundry-inference.main.match-condition.c12f6d47-197a-3f9a-ba1e-e1331133fa9e
numberOfScannedRowslong필수
resultunion<noMatch, datasetMatch, mediasetMatch>필수특정 일치 조건의 검사 결과입니다.
result의 구조
분기 noMatch

검사한 데이터에서 해당 조건이 검출되지 않았습니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: noMatch.noMatch
분기 datasetMatch

검사한 조건에 일치하는 항목을 찾았습니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: datasetMatch.datasetMatch
matchedColumnslist<ColumnMatch>선택
matchedColumns의 구조

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

검사 조건과 일치하는 행이 있는 열입니다.

이름자료형필수 여부의미와 조건예시 값
columnNamestring필수
numberOfMatchedRowslong필수
분기 mediasetMatch

검사 조건과 일치하는 미디어 항목이 있는 미디어 집합입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: mediasetMatch.mediasetMatch
numberOfMatchedMediaItemslong필수
exampleslist<MediaMatchExample>선택
examples의 구조

배열 항목은 MediaMatchExample이며 자료형은 union<mediaItemExample>입니다.

검사 조건과 일치한 미디어 항목의 예시입니다.

분기 mediaItemExample

검사 조건과 일치한 미디어 항목의 예시입니다.

이름자료형필수 여부의미와 조건예시 값
typeenum필수허용값: mediaItemExample.mediaItemExample
mediaItemRidstring필수

가상 민감 데이터 검사 기록의 응답 예시입니다.

{
  "data": [
    {
      "branchId": "master",
      "matchActionRids": [
        "ri.foundry-inference.main.inference-action.a3cff674-6303-4900-a0f6-3d3ea44bcdcc"
      ],
      "completedTime": "2026-03-16T18:51:04.218Z",
      "matchConditionRids": [
        "ri.foundry-inference.main.match-condition.c12f6d47-197a-3f9a-ba1e-e1331133fa9e"
      ],
      "startTime": "2026-03-16T18:51:00.527Z",
      "id": "a5621a18-0412-4304-8eb8-22de9bbeeffe",
      "scanResult": [
        {
          "matchConditionRid": "ri.foundry-inference.main.match-condition.c12f6d47-197a-3f9a-ba1e-e1331133fa9e",
          "numberOfScannedRows": 15000,
          "result": {
            "type": "datasetMatch",
            "matchedColumns": [
              {
                "columnName": "email_address",
                "numberOfMatchedRows": 120
              },
              {
                "columnName": "phone_number",
                "numberOfMatchedRows": 45
              }
            ]
          }
        },
        {
          "matchConditionRid": "ri.foundry-inference.main.match-condition.a1b2c3d4-5678-9abc-def0-1234567890ab",
          "numberOfScannedRows": 15000,
          "result": {
            "type": "noMatch"
          }
        }
      ],
      "scannedResource": "ri.foundry.main.dataset.437313ac-11dc-4e23-8c4c-3d510f1b10be",
      "scanConfigurationId": "ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259",
      "status": "SUCCEEDED_WITH_MATCHES"
    }
  ],
  "nextPageToken": "v1.QnVpbGQgdGhlIEZ1dHVyZTogaHR0cHM6Ly93d3cucGFsYW50aXIuY29tL2NhcmVlcnMvP2xldmVyLXNvdXJjZSU1YiU1ZD1BUElEb2NzI29wZW4tcG9zaXRpb25z"
}

개별 오류

오류 이름오류 코드HTTP의미와 조건추가 매개변수
ScanConfigurationNotFoundNOT_FOUND404검사 구성을 찾을 수 없습니다.scanConfigurationId

요청 예제

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

가상 검사 구성과 공간 범위를 사용하여 SUCCEEDED_WITH_MATCHES 기록을 조회하는 첫 페이지 예제입니다. 식별자와 필요한 상태 조건을 실제 대상에 맞게 바꿉니다.

cURL

curl \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/sds/scanConfigurations/ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259/records?scopeRid=ri.compass.main.folder.833bc64a-f8fb-4ade-834e-6814242613ae&scanRecordIsActiveFilter=ALL_SCANS&scanResultStatusFilter=SUCCEEDED_WITH_MATCHES&preview=true"

Python

Requests 라이브러리가 설치된 Python 환경에서 사용합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "authorization": "Bearer {}".format(TOKEN)
}

response = requests.get('https://{}/api/v2/sds/scanConfigurations/ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259/records?scopeRid=ri.compass.main.folder.833bc64a-f8fb-4ade-834e-6814242613ae&scanRecordIsActiveFilter=ALL_SCANS&scanResultStatusFilter=SUCCEEDED_WITH_MATCHES&preview=true'.format(HOSTNAME), headers=headers)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 ListScanRecordsExample.java 파일에서 사용합니다.

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;

public class ListScanRecordsExample {
    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()) {
            HttpGet request = new HttpGet("https://" + HOSTNAME + "/api/v2/sds/scanConfigurations/ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259/records?scopeRid=ri.compass.main.folder.833bc64a-f8fb-4ade-834e-6814242613ae&scanRecordIsActiveFilter=ALL_SCANS&scanResultStatusFilter=SUCCEEDED_WITH_MATCHES&preview=true");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            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/sds/scanConfigurations/ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259/records?scopeRid=ri.compass.main.folder.833bc64a-f8fb-4ade-834e-6814242613ae&scanRecordIsActiveFilter=ALL_SCANS&scanResultStatusFilter=SUCCEEDED_WITH_MATCHES&preview=true`, {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${TOKEN}`,
    }
}).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/sds/scanConfigurations/ri.foundry-inference.main.auto-inference-config.7f99a5a0-7692-420f-a79c-53756c3e9259/records?scopeRid=ri.compass.main.folder.833bc64a-f8fb-4ade-834e-6814242613ae&scanRecordIsActiveFilter=ALL_SCANS&scanResultStatusFilter=SUCCEEDED_WITH_MATCHES&preview=true" `
	-Headers $headers

$response.content