---
title: "Validate a project of any type"
method: POST
path: "/v1/integration/projects/{projectId}/validate"
tags: ["Unified Project Lifecycle APIs"]
---

# Validate a project of any type

`POST /v1/integration/projects/{projectId}/validate`

## Request

- Base URL: `https://integration-adapter.connect.cloud.precisely.com`
- URL: `https://integration-adapter.connect.cloud.precisely.com/v1/integration/projects/{projectId}/validate`
- Auth: HTTP bearer

Validates a project of any type through a single type-agnostic endpoint.

**Features:**
- `DSL_ONLY` scope performs a synchronous syntax check and returns HTTP 200 immediately.
- `FULL` scope performs the syntax check then starts semantic validation asynchronously.
  When semantic validation is in progress the endpoint returns HTTP 202 with a
  `Location` header pointing to the status resource — poll until `validateStatus.status`
  is terminal (`COMPLETED`, `FAILED`, etc.).
- `scope` and `revisionNumber` apply to Advanced Replication projects; `revisionNumber`
  selects the project-file revision to validate.
- `incremental` applies only to Mainframe Replication projects, which validate files in
  chunks due to large project sizes. The first Mainframe validation always establishes a
  full baseline regardless of the flag. Later requests with `incremental=true` validate
  only file chunks changed since that baseline.
- Optional `projectType` hint avoids an internal store probe when the type is known.

**Use Cases:**
- Agent/automation triggers a DSL syntax check before committing Advanced Replication project files.
- Validate a complete Advanced Replication project including semantic checks and poll status.
- Validate incremental Mainframe Replication file changes after an initial full baseline.

**Authorization:** Requires either `replication-pipeline::create` or `replication-pipeline::update` when permission harmonization is enabled; otherwise, `replication-pipeline::manage`.

## Path parameters

- `projectId` string, required

## Query parameters

- `scope` 'DSL_ONLY' | 'FULL'
- `projectType` 'REPLICATION' | 'MAINFRAME_REPLICATION' | 'ADVANCED_REPLICATION': Supported project types for unified project operations
- `incremental` boolean
- `revisionNumber` integer

## Response `200`

Synchronous validation completed, including all DSL_ONLY validations and terminal FULL validations

- ProjectValidationResponse: Unified project validation response
  - `validateStatus` ValidationStatusResponse: Adapter-owned validation status details
    - `status` 'OPEN' | 'INPROGRESS' | 'SUCCESS' | 'COMPLETED' | 'TIMEOUT' | 'ERROR': Validation execution status
    - `lastUpdatedOn` string, date-time: Timestamp when validation status was last updated
    - `message` string: Validation summary message
    - `completePercentage` integer: Validation completion percentage
    - `projectValidation` ValidationResultResponse: Validation result summary including counts and per-scope details
      - `severityLevel` 'VALID' | 'S4_WARNING' | 'S3_INCOMPLETE' | 'S2_ERROR' | 'S1_FATAL' | 'INFO': Overall validation severity level
      - `message` string: Overall validation message
      - `warning` integer: Warning count
      - `incomplete` integer: Incomplete count
      - `error` integer: Error count
      - `fatal` integer: Fatal count
      - `total` integer: Total findings count
      - `scopeStatuses` ValidationScopeStatusResponse[]: Per-scope validation details
        - `scope` 'DSL_ONLY' | 'FULL': Scope name
        - `status` 'STARTED' | 'INPROGRESS' | 'SKIPPED' | 'PASSED' | 'FAILED' | 'PASSED_WITH_WARNINGS': Validation status for this scope
        - `findingCount` integer: Total findings in this scope
        - `errorCount` integer: Total errors in this scope
        - `warningCount` integer: Total warnings in this scope
        - `message` string: Scope-specific summary message
        - `findings` ValidationFindingResponse[]: Detailed findings for this scope
          - `findingId` string: Stable finding identifier
          - `category` string: Finding category
          - `severity` 'INFO' | 'WARNING' | 'ERROR' | 'FATAL': Finding severity
          - `layer` string: Validation layer that produced the finding
          - `dslPath` string: DSL path where the issue was found
          - `message` string: Human-readable finding message
          - `errorCode` string: Internal finding error code
          - `suggestion` string: Suggested remediation for the finding
          - `line` integer: Line number where the issue was found
          - `column` integer: Column number where the issue was found
          - `sourceFile` string: Source file containing the issue

## Other responses

- `202`: FULL semantic validation remains in progress. Poll the URI in the Location header.
- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden — requires replication-pipeline::create or replication-pipeline::update when permission harmonization is enabled, or legacy replication-pipeline::manage otherwise
- `404`: Project not found for validation (DI-ADAPTER-PRJ-0009)
- `500`: Validation failed (DI-ADAPTER-PRJ-0010)

---

[API](https://skmtc.dev/precisely/apis/precisely-integration-adapter-service.md) · [All operations](https://skmtc.dev/precisely/apis/precisely-integration-adapter-service/llms.txt) · [OpenAPI document](https://skmtc.dev/precisely/apis/precisely-integration-adapter-service/revisions/2d2629f4987d?raw)
