YNAB avea o sincronizare cu Drobox care funcționa în felul următor:
- fiecare tranzacție era un fișier json cu un anumit pattern al numelui;
- sincronizarea însemna de fapt sincronizarea acestori fișiere cu drobox
- mergea rezonabil (i.e. n-au fost conflicte) de pe trei device-uri simultan (probabil mai mult, dar nu am avut nevoie/curiozitatea să încerc)
Nu sunt foarte sigur, dar parcă era un dialect de couchdb.
exemple de fișiere:
A-342,B-125,C-150,D-46,E-67_E-68.ydiff
A-356,B-145,C-150,D-48,E-71_E-73.ydiff
A-356,B-145,C-150,D-48,E-73_E-75.ydiff
Exemplu de tranzacție:
{
"deviceGUID": "2B7719E9-0CE8-2DC2-A3B7-D42107483F21",
"publishTime": "Sat Sep 14 21:30:31 GMT+0300 2013",
"items": [
{
"autoFillMemo": "",
"madeWithKnowledge": null,
"isResolvedConflict": false,
"autoFillCategoryId": "5731ACB5-9B31-F87A-93EC-CE8FE1F75910",
"enabled": true,
"entityId": "EBC0C5DF-BE49-73FD-126E-1DBD0CDCDA05",
"autoFillAmount": -202.38,
"entityType": "payee",
"targetAccountId": null,
"name": "real",
"isTombstone": false,
"entityVersion": "E-17"
},
{
"date": "2013-09-14",
"subTransactions": null,
"entityId": "4B591D5C-2FC4-370F-2A50-1DBCB9468ECF",
"entityType": "transaction",
"matchedTransactions": null,
"source": null,
"amount": -202.38,
"accepted": true,
"entityVersion": "E-18",
"madeWithKnowledge": null,
"isResolvedConflict": false,
"memo": null,
"transferTransactionId": null,
"categoryId": "5731ACB5-9B31-F87A-93EC-CE8FE1F75910",
"cleared": "Uncleared",
"targetAccountId": null,
"dateEnteredFromSchedule": null,
"payeeId": "EBC0C5DF-BE49-73FD-126E-1DBD0CDCDA05",
"checkNumber": null,
"parentTransactionIdIfMatched": null,
"accountId": "DDBAE60C-B839-279B-F69A-CA07390273EE",
"flag": null,
"isTombstone": false,
"importedPayee": null,
"YNABID": null,
"FITID": null
}
],
"dataVersion": "4.2",
"budgetDataGUID": null,
"shortDeviceId": "E",
"startVersion": "A-281,B-60,C-150,D-23,E-16",
"endVersion": "A-281,B-60,C-150,D-23,E-18",
"formatVersion": null
}