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

# 매니페스트 검증

> 쓰기 없이 매니페스트 전체 검증. 이슈 목록과 미리보기 카드.

**`POST`** `https://api-datahub.octoparse.com/v1/data-apps/validate`

인증: API 키 필요(`Authorization: Bearer <API Key>`).

2단계 게시의 1단계: 구조, 블록 간 규칙, 자체 게시 가드레일, 코드 패키지 검사, 파일 이름 검사를 모두 검증합니다(게시 시와 같은 규칙). 문제 목록과 미리보기 카드를 반환합니다. 통과 여부를 결정하는 유일한 기준은 이 엔드포인트이며, 문서의 필드 표로 추측하지 마세요.

## 요청

### 요청 body

<ParamField body="manifest" type="string" required>
  YAML 또는 JSON 문자열로 된 매니페스트 원본 텍스트.
</ParamField>

<ParamField body="files" type="object">
  첨부 파일. 키는 상대 경로, 값은 텍스트입니다(code 유형이거나 README가 있을 때 사용).
</ParamField>

<ParamField body="secrets" type="object">
  시크릿 이름과 평문의 맵. 검증 엔드포인트는 이를 저장하지 않습니다.
</ParamField>

### 요청 예시

```bash theme={null}
curl -X POST \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"manifest": "spec_version: \"0.2\"\nidentity:\n  app_name: reviews-query\n  name: Product review lookup\n  …"}' \
  "https://api-datahub.octoparse.com/v1/data-apps/validate"
```

## 응답

### 200 성공

```json theme={null}
{
  "data": {
    "valid": false,
    "errors": [
      {
        "path": "$",
        "message": "'identity' is a required property"
      },
      {
        "path": "$",
        "message": "'input' is a required property"
      },
      "…"
    ],
    "card": null
  }
}
```

페이로드는 `data`로 감쌉니다. 필드:

<ResponseField name="valid" type="boolean" required>
  검증 통과 여부.
</ResponseField>

<ResponseField name="errors" type="object[]">
  문제 목록. 각 항목에는 `path`(JSON 경로)와 `message`가 있습니다.

  <Expandable title="fields">
    <ResponseField name="path" type="string" required>
      —
    </ResponseField>

    <ResponseField name="message" type="string" required>
      —
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="card" type="object">
  유효하면 미리보기 카드, 유효하지 않으면 `null`.
</ResponseField>

### 오류

| HTTP | `code`         | `category`  | 설명              |
| ---- | -------------- | ----------- | --------------- |
| 401  | `unauthorized` | `forbidden` | API 키 누락 또는 무효. |

오류 응답은 `{"error": {code, category, message, retryable}}`입니다. <a href="/docs/ko/datahub/api/reference/introduction#errors">오류</a> 참고.

## 클라이언트 라이브러리

Python / JavaScript SDK는 아직 이 엔드포인트를 감싸지 않습니다. REST를 직접 호출하세요.
