Advanced DSL Project Management

Push files (batch upload)

Uploads a batch of DSL project files as part of a push operation.

Features:

  • Multi-file batch upload (up to 499 per batch)
  • Automatic content hashing (SHA-256)
  • Best-effort compensation on failure
  • Lock heartbeat extension per batch
  • Relationship creation for final batch

Use Cases:

  • Large project push split into multiple batches
  • Single-batch push for small projects
  • Resumable uploads via batching strategy

Request model:

  • Reservation controls are provided via headers: X-Reservation-Id, X-Proposed-Revision-Number
  • Batch controls and metadata are provided as multipart form fields: isFinal, description, unchangedFileIds, transitionDraftAssetIds, fileMetadata
  • Changed files are uploaded through the multipart files part

Batch constraints:

  • Maximum 499 assets per batch
  • Maximum 24 MB total payload per batch
  • Batches are submitted sequentially under one reservation
  • fileMetadata is sent as a multipart form field in the request body (JSON map of flattenedPath -> {version,mimeType,encoding}) for uploaded files only
  • unchangedFileIds and transitionDraftAssetIds are accepted only when isFinal=true

Final batch behavior:

  • Set isFinal=true on the last batch
  • Triggers revision asset creation (DISDSLRevision)
  • Creates Defines (ReplicationProject → DISDSLRevision) relationship
  • Creates Includes (DISDSLRevision → DISDSLFile) relationships for all files
  • Heartbeat extends lock TTL per batch

Required Permissions: replication-pipeline::create when permission harmonization is enabled; otherwise, replication-pipeline::manage.

post/v1/integration/advanced-dsl/projects/{projectId}/push

Request

  • Base URL: https://integration-adapter.connect.cloud.precisely.com
  • URL: https://integration-adapter.connect.cloud.precisely.com/v1/integration/advanced-dsl/projects/{projectId}/push
  • Auth: HTTP bearer

Path parameters

projectIdstring required

Unique project identifier

Query parameters

isFinalboolean

Whether this is the final batch in the push sequence

descriptionstring

Optional commit message (used on final batch)

unchangedFileIdsstring[]

Catalog asset IDs of unchanged files (final batch only; rejected when isFinal=false)

transitionDraftAssetIdsstring[]

Catalog asset IDs of existing draft files to transition to approved (final batch only; rejected when isFinal=false)

fileMetadatastring

Optional JSON map of flattenedPath -> {version,phase,mimeType,encoding} for changed files

Headers

X-Reservation-Idstring required

The reservation ID from the push-reservation response

X-Proposed-Revision-Numberinteger required

The proposed revision number from the push-reservation response

Response

Final batch processed — push completed successfully

status'success' | 'partial' | 'failed'

Status of the push operation

revisionIdstring

Unique identifier of the created revision

revisionNumberinteger

The revision number assigned to this push

filesPersistedCountinteger

Total number of files persisted in this revision

warningsstring[]

Non-fatal warnings produced during the push

timestampstring date-time

Server timestamp when the push was finalized

Example response

{
  "status": "success",
  "revisionId": "rev-abc123",
  "revisionNumber": 4,
  "filesPersistedCount": 12,
  "fileResults": [
    {
      "flattenedPath": "pipelines/customer-sync.dis.yaml",
      "catalogAssetId": "asset-xyz-789",
      "action": "created",
      "phase": "draft",
      "version": 1,
      "catalogLink": "https://catalog.precisely.com/assets/asset-xyz-789"
    }
  ],
  "retentionEvictions": [
    {
      "evictedRevisionId": "rev-old-001",
      "evictedRevisionNumber": 1,
      "filesPhysicallyDeleted": 5,
      "filesRelationshipDeleted": 5
    }
  ],
  "timestamp": "2026-05-17T10:00:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.