synology_apm_repo.sdk.format.repo_transaction module

repo_transaction.<N> — magic rPTs, the same headers.py parse_json_payload_header shell repo_info.py uses (crc@8, data_size BE u64 @12), minus a meaningful repo-uuid field (bytes [20,36) are always zero-filled here) — followed by a small JSON payload (FORMAT-SPEC.md: generation-selection).

class synology_apm_repo.sdk.format.repo_transaction.RepoTransaction(transaction_id, session_id, compact_id, raw)

Bases: object

Parsed repo_transaction.<N> payload. session_id/ compact_id are carried through for completeness/diagnostics (dump-style tooling); generation selection only ever needs transaction_id.

transaction_id: int
session_id: int | None
compact_id: int | None
raw: dict[str, object]
synology_apm_repo.sdk.format.repo_transaction.parse_repo_transaction(data)

Parse a repo_transaction.<N> file’s full bytes (header + JSON payload).

Raises:
  • DataCorruptError – A magic, header-CRC, or payload-CRC mismatch, or a payload missing transaction_id entirely.

  • FormatError – The payload is truncated relative to the length the header declares.