Files
kvitt/contracts/examples/sync/push-response-rejections.json
T
jacobh2 c6df2ab8f5 M1: contracts and vectors (SPEC v0.1, schema 1)
contracts/openapi.yaml (OpenAPI 3.1, E-1..E-33, error shape and the
exhaustive error code enum, device bearer scheme), contracts/schema/
server-v1.sql (SPEC §14.1 verbatim), seven test-vector files per §14.5.5,
80 examples (every JSON body of §14.3.4, every error code, sync pull/push,
every FCM push type), and tools/contracts-check.py (stdlib-only reference
of §9.1, §9.3, §9.4 and §14.5.4 plus shape checks; the M1 gate).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 20:57:59 +02:00

72 lines
2.3 KiB
JSON

{
"server_time": "2026-10-17T12:00:00.000Z",
"results": [
{
"mutation_id": "01929c5e-6c1f-7d3a-9b2e-4f5a6b7c8da3",
"entity_type": "expense",
"entity_id": "01929c5e-1111-7aaa-8bbb-000000000002",
"status": "rejected",
"reason": "deleted",
"message": "the row is deleted",
"current": {
"id": "01929c5e-1111-7aaa-8bbb-000000000002",
"account_id": "0192a003-0000-7000-8000-000000000001",
"category_id": "01920000-0000-7000-8000-000000000002",
"amount_ore": 1001,
"description": "Fika",
"notes": "Kanelbullar\noch kaffe",
"expense_date": "2026-10-15",
"payer_user_id": "0192a000-0000-7000-8000-000000000002",
"split_mode": "exact",
"splits": [
{
"user_id": "0192a000-0000-7000-8000-000000000001",
"share_ore": 701,
"share_bp": null
},
{
"user_id": "0192a000-0000-7000-8000-000000000002",
"share_ore": 300,
"share_bp": null
}
],
"recurring_template_id": null,
"recurring_period": null,
"created_by_user_id": "0192a000-0000-7000-8000-000000000002",
"updated_by_user_id": "0192a000-0000-7000-8000-000000000001",
"created_at": "2026-10-15T10:00:00.000Z",
"updated_at": "2026-10-17T08:00:00.000Z",
"deleted_at": "2026-10-17T08:00:00.000Z",
"server_version": 925
}
},
{
"mutation_id": "01929c5e-6c1f-7d3a-9b2e-4f5a6b7c8da4",
"entity_type": "expense",
"entity_id": "01929c5e-1111-7aaa-8bbb-000000000004",
"status": "rejected",
"reason": "validation_failed",
"message": "share_ore does not match the split rule",
"current": null
},
{
"mutation_id": "01929c5e-6c1f-7d3a-9b2e-4f5a6b7c8da1",
"entity_type": "expense",
"entity_id": "01929c5e-1111-7aaa-8bbb-000000000005",
"status": "rejected",
"reason": "reference_not_found",
"message": "account_id",
"current": null
},
{
"mutation_id": "01929c5e-6c1f-7d3a-9b2e-4f5a6b7c8da2",
"entity_type": "expense",
"entity_id": "01929c5e-1111-7aaa-8bbb-000000000006",
"status": "rejected",
"reason": "clock_skew",
"message": "updated_at is more than 10 minutes ahead of server time",
"current": null
}
]
}