Define archive control v1 protocol

This commit is contained in:
2026-07-22 11:59:57 +00:00
commit 7652262b4c
25 changed files with 1333 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "2fc6a524-84cd-47ab-bd73-30d463b7c43f",
"sentAt": "2026-07-22T12:03:00Z",
"command": {
"commandId": "6bfccbf4-866f-46fe-bf67-d8943c1ece91",
"createdAt": "2026-07-22T12:03:00Z",
"assignJob": {
"job": {
"jobId": "fd6844d0-ed76-475e-8375-2f98d8eea470",
"idempotencyKey": "telegram-confirmation-615e42",
"operation": "JOB_OPERATION_ARCHIVE",
"resourceId": {
"infoHashV1Hex": "0123456789abcdef0123456789abcdef01234567"
},
"resourceDisplayName": "Resource A",
"createdAt": "2026-07-22T12:03:00Z",
"transfer": {
"sourceClientId": "x1",
"targetClientId": "lithium",
"routeId": "archive-control-x1-lithium-f8b629",
"requestedFiles": {
"ranges": [
{
"first": 2,
"last": 4
}
]
},
"expectedTargetPlacementGeneration": "3",
"targetBaselineFiles": {
"ranges": [
{
"first": 2,
"last": 2
}
]
},
"transferDeltaFiles": {
"ranges": [
{
"first": 3,
"last": 4
}
]
},
"requestedLogicalBytes": "10735000000",
"transferDeltaLogicalBytes": "7340000000"
}
},
"expectedLastEventSequence": "0"
}
}
}
+63
View File
@@ -0,0 +1,63 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "9c62fcda-5f83-4286-80cf-a628001e44d3",
"sentAt": "2026-07-22T12:05:00Z",
"command": {
"commandId": "daf7ebaf-f3fa-4ff9-979e-1c0c95e08376",
"createdAt": "2026-07-22T12:05:00Z",
"assignJob": {
"job": {
"jobId": "5e76f086-79ed-41e5-9306-c4a0312e4d26",
"idempotencyKey": "evict-confirmation-c9c04a",
"operation": "JOB_OPERATION_EVICT_CACHE",
"resourceId": {
"infoHashV1Hex": "0123456789abcdef0123456789abcdef01234567"
},
"resourceDisplayName": "Resource A",
"createdAt": "2026-07-22T12:05:00Z",
"eviction": {
"cacheClientId": "x1",
"filesToEvict": {
"ranges": [
{
"first": 0,
"last": 6
}
]
},
"cachePlacementGeneration": "8",
"archiveCoverage": [
{
"archiveClientId": "lithium",
"coveredFiles": {
"ranges": [
{
"first": 0,
"last": 4
}
]
},
"placementGeneration": "4"
},
{
"archiveClientId": "cold2",
"coveredFiles": {
"ranges": [
{
"first": 5,
"last": 6
}
]
},
"placementGeneration": "2"
}
]
}
},
"expectedLastEventSequence": "0"
}
}
}
+18
View File
@@ -0,0 +1,18 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "7c4a3534-c754-4c4d-a12e-1a1047e3f96e",
"sentAt": "2026-07-22T12:06:00Z",
"command": {
"commandId": "d9721ad2-f98d-485f-9370-476e49f7897a",
"createdAt": "2026-07-22T12:06:00Z",
"cancelJob": {
"jobId": "fd6844d0-ed76-475e-8375-2f98d8eea470",
"expectedJobRevision": "6",
"reason": "administrator requested removal",
"expectedLastEventSequence": "17"
}
}
}
+78
View File
@@ -0,0 +1,78 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "56aae470-d1c9-402a-bf14-d7a28ff8998f",
"sentAt": "2026-07-22T12:10:00Z",
"clientStateSnapshot": {
"snapshotId": "6067263d-548c-4548-974f-9f73ca9fb7ec",
"activeJobs": [
{
"job": {
"definition": {
"jobId": "fd6844d0-ed76-475e-8375-2f98d8eea470",
"idempotencyKey": "telegram-confirmation-615e42",
"operation": "JOB_OPERATION_ARCHIVE",
"resourceId": {
"infoHashV1Hex": "0123456789abcdef0123456789abcdef01234567"
},
"resourceDisplayName": "Resource A",
"createdAt": "2026-07-22T12:03:00Z",
"transfer": {
"sourceClientId": "x1",
"targetClientId": "lithium",
"routeId": "archive-control-x1-lithium-f8b629",
"requestedFiles": {
"ranges": [
{
"first": 2,
"last": 4
}
]
},
"expectedTargetPlacementGeneration": "3",
"targetBaselineFiles": {
"ranges": [
{
"first": 2,
"last": 2
}
]
},
"transferDeltaFiles": {
"ranges": [
{
"first": 3,
"last": 4
}
]
},
"requestedLogicalBytes": "10735000000",
"transferDeltaLogicalBytes": "7340000000"
}
},
"state": "JOB_STATE_RUNNING",
"revision": "6",
"progress": {
"step": "JOB_STEP_KIND_SYNCTHING_TRANSFER",
"displayStepNumber": 2,
"displayStepTotal": 5,
"state": "STEP_STATE_RUNNING",
"fractionComplete": 0.4231,
"bytesComplete": "4543000000",
"bytesTotal": "10735000000",
"lastProgressAt": "2026-07-22T12:04:00Z",
"overallFractionComplete": 0.2846
},
"updatedAt": "2026-07-22T12:04:00Z"
},
"lastEventSequence": "17",
"inFlightCommandIds": [
"f253f9fc-2a43-491d-8317-24795bb7638a"
]
}
],
"observedAt": "2026-07-22T12:10:00Z"
}
}
+24
View File
@@ -0,0 +1,24 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "830626f3-dc76-46f0-a9b1-a6fb61b3ba73",
"sentAt": "2026-07-22T12:02:00Z",
"command": {
"commandId": "75425c3b-1ceb-4e9d-9af6-402a06e5bf8d",
"createdAt": "2026-07-22T12:02:00Z",
"ensureRoute": {
"route": {
"routeId": "archive-control-x1-lithium-f8b629",
"peerClientId": "lithium",
"peerSyncthingDeviceId": "LITHIUM-DEVICE-ID",
"peerAddresses": [
"tcp://lithium-syncthing:22000"
],
"localRelativePath": ".archive-control/routes/archive-control-x1-lithium-f8b629",
"setupTimeoutSeconds": 1800
}
}
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "d00def27-cde1-43b7-a6af-ee3582d0c7c1",
"sentAt": "2026-07-22T12:01:00Z",
"command": {
"commandId": "cc791b88-cbca-418f-9732-c605c8144c90",
"createdAt": "2026-07-22T12:01:00Z",
"inventoryQuery": {
"queryId": "1944768a-843c-460a-8ea2-27ea0f682aa6",
"scope": "INVENTORY_SCOPE_RESOURCE_SUMMARIES",
"page": {
"pageSize": 200
},
"selectedCompleteOnly": true
}
}
}
+50
View File
@@ -0,0 +1,50 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "f337dc9c-84b8-42c6-a2ae-52f8f91258a8",
"correlationId": "6bfccbf4-866f-46fe-bf67-d8943c1ece91",
"sentAt": "2026-07-22T12:08:00Z",
"jobEvent": {
"eventId": "ecfbd79e-e0fe-41da-ab77-012cde0ed53f",
"jobId": "fd6844d0-ed76-475e-8375-2f98d8eea470",
"sequence": "23",
"jobRevision": "9",
"type": "JOB_EVENT_TYPE_COMMITTED",
"state": "JOB_STATE_RUNNING",
"committed": true,
"progress": {
"step": "JOB_STEP_KIND_QB_VERIFY",
"displayStepNumber": 4,
"displayStepTotal": 5,
"state": "STEP_STATE_SUCCEEDED",
"fractionComplete": 1,
"bytesComplete": "10735000000",
"bytesTotal": "10735000000",
"detail": "target selection passed a stopped full recheck",
"lastProgressAt": "2026-07-22T12:08:00Z",
"overallFractionComplete": 0.95
},
"observedPlacement": {
"resourceId": {
"infoHashV1Hex": "0123456789abcdef0123456789abcdef01234567"
},
"clientId": "lithium",
"state": "PLACEMENT_STATE_PRESENT",
"verifiedFiles": {
"ranges": [
{
"first": 2,
"last": 4
}
]
},
"verifiedLogicalBytes": "10735000000",
"generation": "4",
"verifiedAt": "2026-07-22T12:08:00Z",
"createdByJobId": "fd6844d0-ed76-475e-8375-2f98d8eea470"
},
"occurredAt": "2026-07-22T12:08:00Z"
}
}
+31
View File
@@ -0,0 +1,31 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "44b64096-cd58-4f49-bae4-d829f50f787c",
"correlationId": "6bfccbf4-866f-46fe-bf67-d8943c1ece91",
"sentAt": "2026-07-22T12:04:00Z",
"jobEvent": {
"eventId": "18cf6a34-b0a5-429e-b56a-9228b2dca640",
"jobId": "fd6844d0-ed76-475e-8375-2f98d8eea470",
"sequence": "17",
"jobRevision": "6",
"type": "JOB_EVENT_TYPE_PROGRESS",
"state": "JOB_STATE_RUNNING",
"progress": {
"step": "JOB_STEP_KIND_SYNCTHING_TRANSFER",
"displayStepNumber": 2,
"displayStepTotal": 5,
"state": "STEP_STATE_RUNNING",
"fractionComplete": 0.4231,
"bytesComplete": "4543000000",
"bytesTotal": "10735000000",
"approximateBytesPerSecond": 12450000,
"detail": "x1 to lithium",
"lastProgressAt": "2026-07-22T12:04:00Z",
"overallFractionComplete": 0.2846
},
"occurredAt": "2026-07-22T12:04:00Z"
}
}
+38
View File
@@ -0,0 +1,38 @@
{
"protocolVersion": {
"major": 1,
"minor": 0
},
"messageId": "0d6d31f8-1242-4a40-a261-433897102fe4",
"sentAt": "2026-07-22T12:00:00Z",
"registerRequest": {
"protocolVersion": {
"major": 1,
"minor": 0
},
"client": {
"clientId": "x1",
"displayName": "Cache x1",
"role": "CLIENT_ROLE_CACHE"
},
"connectionInstanceId": "fd4f7c2a-836a-4699-8078-f0ec8601febe",
"sharedToken": "redacted-example-token",
"capabilities": {
"features": [
"CLIENT_FEATURE_INVENTORY_CHUNKS",
"CLIENT_FEATURE_CONTENT_TREE",
"CLIENT_FEATURE_ROUTE_PROVISIONING",
"CLIENT_FEATURE_EVICTION"
],
"syncthingDeviceId": "CACHE1-DEVICE-ID",
"syncthingAdvertisedAddresses": [
"dynamic"
],
"qbittorrentVersion": "v5.1.2",
"qbittorrentWebApiVersion": "2.11.3",
"libtorrentVersion": "2.0.11.0",
"syncthingVersion": "v2.0.0",
"maxEnvelopeBytes": 1048576
}
}
}