Prepare
Inventory and hash each file; retain relative paths.
Seal inventories, transfer batches atomically and reconcile every item before completion.
This is a target connector convention for deployment agreement, not a provisioned SFTP endpoint or an accepted REST extension.
Inventory and hash each file; retain relative paths.
Upload to staging; do not ingest files still being written.
Use atomic rename or a profile-defined completion signal.
Check authority, paths, MIME, digests and per-item idempotency.
Return per-item results with archiveId/jobId links.
Complete only when every item has a reconciled outcome.
batch-test-001/
manifest.json
payload/record.txt
payload/record-2.txt
COMPLETE # optional deployment-agreed marker{
"format": "ltans-batch-target-1",
"batchId": "batch-test-001",
"sourceSystem": "synthetic-dms",
"closedAt": "2026-10-15T07:00:00Z",
"items": [
{
"sourceId": "record-test-001",
"path": "payload/record.txt",
"mimeType": "text/plain",
"digest": {
"algorithm": "SHA-256",
"value": "e436e77069edf8e8304082264f9307846d4847c55e249d17560dcdcde49385b8"
},
"profileId": "profile-test-01",
"policyId": "policy-test-v1"
},
{
"sourceId": "record-test-002",
"path": "payload/record-2.txt",
"mimeType": "text/plain",
"digest": {
"algorithm": "SHA-256",
"value": "1ce3381cd3564715e1aff7426b16e48409930a4713913d91a472f62dab322eb5"
},
"profileId": "profile-test-01",
"policyId": "policy-test-v1"
}
]
}The receipt illustrates a negative case: the second file changes after manifest sealing. samples/batch-target retains the original valid data; this receipt was not produced by a backend.
{
"batchId": "batch-test-001",
"state": "PARTIAL",
"items": [
{
"sourceId": "record-test-001",
"state": "ACCEPTED",
"archiveId": "arc-test-001"
},
{
"sourceId": "record-test-002",
"state": "REJECTED",
"code": "SOURCE_DIGEST_MISMATCH"
}
]
}