mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
56 lines
2.4 KiB
JSON
56 lines
2.4 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://cosmic-clash.invalid/contracts/v1/state-transitions.json",
|
|
"version": 1,
|
|
"resource_states": {
|
|
"queue_ticket": ["QUEUED", "PROPOSED", "ACCEPTED", "ALLOCATING", "PROCESS_READY", "ASSIGNMENT_READY", "ASSIGNED", "CONNECTING", "LIVE", "RESULT_PENDING", "COMPLETED", "CANCELLED", "EXPIRED", "FAILED"],
|
|
"proposal": ["OPEN", "ACCEPTED", "DECLINED", "EXPIRED", "CANCELLED"],
|
|
"match": ["ALLOCATING", "PROCESS_READY", "ASSIGNMENT_READY", "ASSIGNED", "CONNECTING", "LIVE", "RESULT_PENDING", "COMPLETED", "CANCELLED", "FAILED"]
|
|
},
|
|
"transitions": {
|
|
"queue_ticket": {
|
|
"QUEUED": ["PROPOSED", "CANCELLED", "EXPIRED"],
|
|
"PROPOSED": ["QUEUED", "ACCEPTED", "CANCELLED", "EXPIRED"],
|
|
"ACCEPTED": ["QUEUED", "ALLOCATING", "CANCELLED", "FAILED"],
|
|
"ALLOCATING": ["PROCESS_READY", "FAILED", "CANCELLED"],
|
|
"PROCESS_READY": ["ASSIGNMENT_READY", "FAILED", "CANCELLED"],
|
|
"ASSIGNMENT_READY": ["ASSIGNED", "FAILED", "CANCELLED"],
|
|
"ASSIGNED": ["CONNECTING", "FAILED", "CANCELLED"],
|
|
"CONNECTING": ["LIVE", "FAILED", "EXPIRED"],
|
|
"LIVE": ["RESULT_PENDING", "FAILED"],
|
|
"RESULT_PENDING": ["COMPLETED", "FAILED"],
|
|
"COMPLETED": [],
|
|
"CANCELLED": [],
|
|
"EXPIRED": [],
|
|
"FAILED": []
|
|
},
|
|
"proposal": {
|
|
"OPEN": ["ACCEPTED", "DECLINED", "EXPIRED", "CANCELLED"],
|
|
"ACCEPTED": [],
|
|
"DECLINED": [],
|
|
"EXPIRED": [],
|
|
"CANCELLED": []
|
|
},
|
|
"match": {
|
|
"ALLOCATING": ["PROCESS_READY", "FAILED", "CANCELLED"],
|
|
"PROCESS_READY": ["ASSIGNMENT_READY", "FAILED", "CANCELLED"],
|
|
"ASSIGNMENT_READY": ["ASSIGNED", "FAILED", "CANCELLED"],
|
|
"ASSIGNED": ["CONNECTING", "FAILED", "CANCELLED"],
|
|
"CONNECTING": ["LIVE", "FAILED", "CANCELLED"],
|
|
"LIVE": ["RESULT_PENDING", "FAILED"],
|
|
"RESULT_PENDING": ["COMPLETED", "FAILED"],
|
|
"COMPLETED": [],
|
|
"CANCELLED": [],
|
|
"FAILED": []
|
|
}
|
|
},
|
|
"mutation_rules": {
|
|
"required_headers": ["Idempotency-Key", "If-Match-Revision"],
|
|
"same_key_same_payload": "return_original_result_without_new_revision",
|
|
"same_key_different_payload": "reject_conflict_without_state_change",
|
|
"stale_revision": "reject_conflict_without_state_change",
|
|
"event_revision": "strictly_increases_per_resource",
|
|
"event_recovery": "REST_get_by_resource_id_then_resume_from_next_revision"
|
|
}
|
|
}
|