> ## Documentation Index
> Fetch the complete documentation index at: https://developers.argosidentity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /profiles

> 워크플로우 하위 프로필 목록 조회 또는 특정 프로필 조회.

## 프로필 목록 조회

```
GET /v1/workflows/{workflowId}/profiles
```

### 요청

```bash theme={null}
curl -X GET "http://client-omni-api.argosidentity.com/v1/workflows/{workflowId}/profiles?sort=createdAt&order=desc&limit=20" \
  -H "x-api-key: your-api-key-here"
```

### 쿼리 파라미터

| 파라미터     | 타입     | 기본값         | 설명                                           |
| -------- | ------ | ----------- | -------------------------------------------- |
| `search` | string |             | 프로필 이름으로 검색                                  |
| `sort`   | string | `createdAt` | 정렬 필드: `name`, `createdAt`, `lastAnalysisAt` |
| `order`  | string | `desc`      | 정렬 순서: `asc`, `desc`                         |
| `cursor` | string |             | 이전 응답의 페이지네이션 커서                             |
| `limit`  | number | 10          | 페이지당 항목 수 (최대 100)                           |

### 응답

```json theme={null}
{
  "count": 10,
  "nextCursor": "dXNlcjpVMDYxTkZUVDI",
  "items": [
    {
      "id": "pf_a1b2c3d4",
      "workflowId": "wf_7a3f9c2e",
      "name": "Acme Corp - KYB Verification",
      "description": "KYB verification for Acme Corp",
      "metadata": {
        "region": "KR",
        "riskProfile": "standard"
      },
      "itemsCount": 3,
      "foldersCount": 1,
      "lastAnalysisAt": "2026-03-15T10:30:00Z",
      "createdAt": "2026-03-15T10:00:00Z",
      "updatedAt": "2026-03-15T10:30:00Z"
    }
  ]
}
```

<ResponseField name="count" type="number" required>
  현재 응답의 총 항목 수
</ResponseField>

<ResponseField name="nextCursor" type="string | null" required>
  다음 페이지 커서 (더 이상 결과가 없으면 `null`)
</ResponseField>

<ResponseField name="items[].id" type="string" required>
  프로필 ID
</ResponseField>

<ResponseField name="items[].workflowId" type="string" required>
  상위 워크플로우 ID
</ResponseField>

<ResponseField name="items[].name" type="string" required>
  프로필 표시 이름
</ResponseField>

<ResponseField name="items[].description" type="string | null">
  프로필 설명
</ResponseField>

<ResponseField name="items[].metadata" type="object | null">
  사용자 정의 메타데이터
</ResponseField>

<ResponseField name="items[].itemsCount" type="number" required>
  모든 폴더의 총 아이템 수
</ResponseField>

<ResponseField name="items[].foldersCount" type="number" required>
  폴더 수
</ResponseField>

<ResponseField name="items[].lastAnalysisAt" type="string | null">
  마지막 분석 시간 (ISO 8601)
</ResponseField>

<ResponseField name="items[].createdAt" type="string" required>
  생성 시간 (ISO 8601)
</ResponseField>

<ResponseField name="items[].updatedAt" type="string" required>
  마지막 업데이트 시간 (ISO 8601)
</ResponseField>

<Note>
  일관된 결과를 위해 커서 기반 페이지네이션을 사용하세요. 응답의 `nextCursor` 값을 다음 요청의 `cursor` 파라미터로 전달하세요.
</Note>

***

## 프로필 ID로 조회

```
GET /v1/profiles/{profileId}
```

### 요청

```bash theme={null}
curl -X GET "http://client-omni-api.argosidentity.com/v1/profiles/{profileId}" \
  -H "x-api-key: your-api-key-here"
```

### 응답

```json theme={null}
{
  "id": "pf_a1b2c3d4",
  "workflowId": "wf_7a3f9c2e",
  "name": "Acme Corp - KYB Verification",
  "description": "KYB verification for Acme Corp",
  "metadata": {
    "region": "KR",
    "riskProfile": "standard"
  },
  "itemsCount": 3,
  "lastAnalysisAt": "2026-03-15T10:30:00Z",
  "folders": [
    {
      "id": "fld_default001",
      "name": "default",
      "isDefault": true,
      "itemsCount": 2,
      "createdAt": "2026-03-15T10:00:00Z"
    }
  ],
  "createdAt": "2026-03-15T10:00:00Z",
  "updatedAt": "2026-03-15T10:30:00Z"
}
```

### 에러 코드

| 상태  | 코드                  | 설명           |
| --- | ------------------- | ------------ |
| 404 | `PROFILE_NOT_FOUND` | 프로필을 찾을 수 없음 |

***

## 아이템 상태 조회

```
GET /v1/profiles/{profileId}/items/status
```

프로필 내 모든 폴더의 아이템 처리 상태 요약을 반환합니다.

```bash theme={null}
curl -X GET "http://client-omni-api.argosidentity.com/v1/profiles/{profileId}/items/status" \
  -H "x-api-key: your-api-key-here"
```

```json theme={null}
{
  "profileId": "pf_a1b2c3d4",
  "summary": {
    "total": 3,
    "pending": 0,
    "active": 3,
    "failed": 0
  },
  "isRagReady": true,
  "items": [
    {
      "id": "item_abc123",
      "name": "business_registration.pdf",
      "type": "file",
      "status": "ACTIVE",
      "processedAt": "2026-03-15T10:02:00Z"
    }
  ]
}
```

<ResponseField name="profileId" type="string" required>
  프로필 ID
</ResponseField>

<ResponseField name="summary.total" type="number" required>
  총 아이템 수
</ResponseField>

<ResponseField name="summary.pending" type="number" required>
  PENDING 상태의 아이템 수
</ResponseField>

<ResponseField name="summary.active" type="number" required>
  ACTIVE 상태의 아이템 수
</ResponseField>

<ResponseField name="summary.failed" type="number" required>
  FAILED 상태의 아이템 수
</ResponseField>

<ResponseField name="isRagReady" type="boolean" required>
  모든 아이템이 ACTIVE 상태일 때 `true` (분석 준비 완료)
</ResponseField>

<Tip>
  분석을 시작하기 전에 이 엔드포인트를 **1초 간격**으로 폴링하여 `isRagReady`가 `true`가 될 때까지 확인하세요.
</Tip>
