Mobile-ID · Long-term digital evidence preservation
Customers and partnersWorkflow demoContact
Trusted LTANS
Evaluate
MOBILE-ID · TRUSTED LTANS

Transfer API

Initiate transfer, inspect results and acknowledge the correct transfer; export does not itself change custody or delete sources.

VI–EN terminology

A verifiable handover package

01

Inventory

Inventory exported content bytes, evidence and context.

02

Recipient verification

Reconcile components, digests and independent verifiability.

03

Acknowledgement

Record conditions and custody handover point.

openapi.yamlopenapi.jsonasyncapi.yamlpostman-target.json

LOCAL SIMULATION · Target contracts · No network requests

POST/v1/archives/{archiveId}/transfers
TARGET CONTRACT · API 3.0.0-draft
PropertyValue
Technical ownerArchive Service
Application scopetransfers:write
HTTP202
Call processingAsynchronous work: inspect Job and the result-resource state.
EventTransferStarted

Keep source custody; verify manifest and recipient acknowledgement.

cURL
curl --fail-with-body --request POST \
  "${BASE_URL%/}/v1/archives/${ARCHIVE_ID}/transfers" \
  --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  --header "X-Correlation-ID: ${CORRELATION_ID}" \
  --header "Idempotency-Key: ${IDEMPOTENCY_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary "@${REQUEST_FILE}"
Request JSON
{
  "exportId": "exp-test-001",
  "destinationProfileId": "destination-test-001",
  "approvalId": "approval-test-002"
}
Target response
{
  "jobId": "job-transfer-001",
  "state": "QUEUED",
  "resourceId": "trf-test-001",
  "correlationId": "corr-test-001",
  "pollAfterSeconds": 2
}
GET/v1/transfers/{transferId}
TARGET CONTRACT · API 3.0.0-draft
PropertyValue
Technical ownerArchive Service
Application scopetransfers:read
HTTP200
Call processingAuthentication/authorization → HTTP handling; not a resource-state enum.
EventAudit or internal event

Keep source custody; verify manifest and recipient acknowledgement.

cURL
curl --fail-with-body --request GET \
  "${BASE_URL%/}/v1/transfers/${TRANSFER_ID}" \
  --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  --header "X-Correlation-ID: ${CORRELATION_ID}"
Target response
{
  "transferId": "trf-test-001",
  "archiveId": "arc-test-001",
  "exportId": "exp-test-001",
  "recipientId": "recipient-test-001",
  "state": "AWAITING_ACKNOWLEDGEMENT",
  "scope": "Complete manifest inventory for exp-test-001; cryptographic verification outside this synthetic example",
  "jobId": "job-transfer-001",
  "packageDigest": {
    "algorithm": "SHA-256",
    "value": "5c34a84b064c4aa79bbc8f49cadeea9c55cfc9df10d655e9bc6f7a6af248e1c1"
  }
}
POST/v1/transfers/{transferId}/acknowledgements
TARGET CONTRACT · API 3.0.0-draft

The recipient binds transferId, exportId, recipientId, digest and scope. Backend must match authenticated identity, reject mismatches and retain an audited statement.

PropertyValue
Technical ownerArchive Service
Application scopetransfers:acknowledge
HTTP201
Call processingAuthentication/authorization → HTTP handling; not a resource-state enum.
EventTransferCompleted

Keep source custody; verify manifest and recipient acknowledgement.

cURL
curl --fail-with-body --request POST \
  "${BASE_URL%/}/v1/transfers/${TRANSFER_ID}/acknowledgements" \
  --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  --header "X-Correlation-ID: ${CORRELATION_ID}" \
  --header "Idempotency-Key: ${IDEMPOTENCY_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary "@${REQUEST_FILE}"
Request JSON
{
  "transferId": "trf-test-001",
  "exportId": "exp-test-001",
  "recipientId": "recipient-test-001",
  "packageDigest": {
    "algorithm": "SHA-256",
    "value": "5c34a84b064c4aa79bbc8f49cadeea9c55cfc9df10d655e9bc6f7a6af248e1c1"
  },
  "verificationReportReference": "urn:ltans:synthetic:recipient-report-001",
  "scope": "Complete manifest inventory for exp-test-001; cryptographic verification outside this synthetic example",
  "acceptedAt": "2026-10-15T09:00:00Z"
}
Target response
{
  "transferId": "trf-test-001",
  "archiveId": "arc-test-001",
  "exportId": "exp-test-001",
  "recipientId": "recipient-test-001",
  "state": "ACKNOWLEDGED",
  "scope": "Complete manifest inventory for exp-test-001; cryptographic verification outside this synthetic example",
  "jobId": "job-transfer-001",
  "packageDigest": {
    "algorithm": "SHA-256",
    "value": "5c34a84b064c4aa79bbc8f49cadeea9c55cfc9df10d655e9bc6f7a6af248e1c1"
  },
  "acknowledgementId": "ack-test-001",
  "acceptedAt": "2026-10-15T09:00:00Z"
}

Next steps

Search LTANS documentation

Expanded illustration