Advanced DSL Project Management

Create push reservation

Atomically checks push readiness and acquires a distributed lock for the project.

Features:

  • Atomic revision conflict detection and lock acquisition
  • Distributed Redis-based locking with configurable TTL
  • Heartbeat-based lock extension per batch
  • Automatic lock release on success or failure

Use Cases:

  • VS Code extension initiating a DSL project push
  • CLI tooling pushing project changes to Suite

Process:

  1. Validates the base revision number against the server's latest revision.
  2. Attempts to acquire a Redis-based distributed lock (TTL: 300s).
  3. Returns the proposed revision number (latest + 1) and reservation expiry.

Conflict scenarios:

  • REVISION_CONFLICT (409): The client's base revision is stale — a newer revision exists.
  • PUSH_IN_PROGRESS (409): Another user currently holds the push lock.

Lock behavior:

  • Lock TTL: 300 seconds (extended via heartbeat per batch).
  • Auto-released on push success or failure.
  • Only one concurrent push per project.

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

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

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-reservation
  • Auth: HTTP bearer

Path parameters

projectIdstring required

Unique project identifier

Request body

baseRevisionNumberinteger required

The base revision number that the client last synced from. The server uses this to detect revision conflicts (stale base). Must match the latest server revision for the reservation to succeed.

Example request

{
  "baseRevisionNumber": 3
}

Response

Push reservation acquired successfully

reservationIdstring

Unique identifier of the reservation (used as correlation ID for subsequent push requests)

projectIdstring

The project ID for which the reservation was acquired

proposedRevisionNumberinteger

The proposed revision number assigned by the server (latest + 1)

expiresAtstring date-time

Timestamp when the reservation expires (300s TTL from acquisition)

Example response

{
  "reservationId": "res-a1b2c3d4-5678-90ef-ghij-klmnopqrstuv",
  "projectId": "project-123",
  "proposedRevisionNumber": 4,
  "expiresAt": "2026-05-17T10:05:00Z"
}

Changes

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