VRPlatformVRPlatform
Listings

/listings/{id}/children/merge

Merge standalone listings and their published owner statement history into this listing as a group. Run with dryRun=true first, then apply with the returned planDigest.

Required scope: listings:merge-children

POST
/listings/{id}/children/merge
X-API-Key<token>

API key provided in dashboard

In: header

Path Parameters

id*string

Top-level listing that becomes the group parent.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Query Parameters

dryRun?boolean

Validate this request through the real write path, then roll back all changes. See https://docs.vrplatform.app/api/dry-run-mode.

Request Body

application/json

childIds*array<string>

Standalone listings that join the group with their history.

Items1 <= items <= 50
openingBalance*integer

Accountant-asserted combined opening balance in cents. Must equal the sum of the listing opening balances and the merged opening-month statement balance.

Range-9007199254740991 <= value <= 9007199254740991
acknowledgeBalanceMismatch?boolean

Required to apply when the dry run reports balanceMismatch issues.

Defaultfalse
planDigest?string|null

The planDigest from the dry run. Required to apply; the merge is refused when the recomputed plan differs.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.vrplatform.app/listings/497f6eca-6276-4993-bfeb-53cbbbba6f08/children/merge" \  -H "Content-Type: application/json" \  -d '{    "childIds": [      "497f6eca-6276-4993-bfeb-53cbbbba6f08"    ],    "openingBalance": -9007199254740991  }'
{
  "status": "merged",
  "planDigest": "string",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "ownershipPeriodId": "c57a699e-6bf1-422b-96b5-7c5d439de4ed",
  "childIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "alreadyGroupedChildIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "openingBalance": {
    "amount": -9007199254740991,
    "month": "string",
    "openingMonthBalanceStart": -9007199254740991
  },
  "statements": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "mergedStatementIds": [
        "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      ],
      "month": "string",
      "currency": "string",
      "balanceStart": -9007199254740991,
      "balanceEnd": -9007199254740991,
      "netRevenue": -9007199254740991,
      "expenses": -9007199254740991,
      "transfers": -9007199254740991,
      "payout": -9007199254740991,
      "rentalRevenue": -9007199254740991,
      "total": -9007199254740991
    }
  ],
  "deletedDraftStatementIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "removedOwnershipPeriodIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "removedOpeningBalanceTransactionIds": [
    "497f6eca-6276-4993-bfeb-53cbbbba6f08"
  ],
  "journalEntryUpdateCount": -9007199254740991,
  "payoutLineUpdateCount": -9007199254740991,
  "issues": [
    {
      "code": "balanceMismatch",
      "severity": "warning",
      "context": {
        "scope": "source",
        "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
        "month": "string",
        "previousBalanceEnd": -9007199254740991,
        "balanceStart": -9007199254740991,
        "delta": -9007199254740991
      },
      "message": "string"
    }
  ],
  "operation": {
    "operationId": "3051932a-fdd2-48fa-b330-7e7d41535969",
    "type": "ach-verification",
    "status": "queued",
    "resource": {
      "type": "bank-rule",
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "role": "source"
    }
  }
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "MISDIRECTED_REQUEST",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": {
    "teamId": "a4ede8ba-7c0a-4485-8763-cbd9b282fbec",
    "dataRegion": "ap",
    "apiBaseUrl": "http://example.com"
  }
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "LOCKED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "AUDIT_CURSOR_EXPIRED",
  "reason": "accountClassificationLocked",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "code": "duplicateLast4",
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}