[{"id":1,"name":"Balance query","category":"Happy Path"},{"id":2,"name":"Debit reduces balance","category":"Happy Path"},{"id":3,"name":"Credit increases balance","category":"Happy Path"},{"id":4,"name":"Full round","category":"Happy Path"},{"id":5,"name":"Rollback restores balance","category":"Happy Path"},{"id":6,"name":"Multi-action round","category":"Happy Path"},{"id":7,"name":"Zero-win round","category":"Happy Path"},{"id":39,"name":"Authenticate successful","category":"Happy Path"},{"id":40,"name":"Authenticate returns balance","category":"Happy Path"},{"id":8,"name":"Idempotent debit replay","category":"Idempotency"},{"id":9,"name":"Idempotent credit replay","category":"Idempotency"},{"id":10,"name":"Idempotent rollback replay","category":"Idempotency"},{"id":43,"name":"Duplicate debit different params","category":"Idempotency"},{"id":44,"name":"Duplicate credit different params","category":"Idempotency"},{"id":45,"name":"Duplicate rollback different params","category":"Idempotency"},{"id":11,"name":"Insufficient funds","category":"Error Handling"},{"id":12,"name":"Rollback unknown tx","category":"Error Handling"},{"id":42,"name":"Authenticate invalid player","category":"Error Handling"},{"id":15,"name":"Wrong HMAC signature","category":"HMAC Security"},{"id":16,"name":"Mismatched body HMAC","category":"HMAC Security"},{"id":17,"name":"Tampered body","category":"HMAC Security"},{"id":29,"name":"Replay attack (expired timestamp)","category":"HMAC Security"},{"id":41,"name":"Authenticate HMAC required","category":"HMAC Security"},{"id":18,"name":"Negative debit amount","category":"Attack Vectors"},{"id":19,"name":"Negative credit amount","category":"Attack Vectors"},{"id":20,"name":"Zero debit amount","category":"Attack Vectors"},{"id":21,"name":"Overflow amount","category":"Attack Vectors"},{"id":22,"name":"SQL injection in playerId","category":"Attack Vectors"},{"id":23,"name":"XSS in fields","category":"Attack Vectors"},{"id":24,"name":"Missing required fields","category":"Attack Vectors"},{"id":25,"name":"Extra unknown fields","category":"Attack Vectors"},{"id":26,"name":"Wrong Content-Type","category":"Attack Vectors"},{"id":27,"name":"Concurrent duplicates","category":"Attack Vectors"},{"id":30,"name":"Very long strings","category":"Edge Cases"},{"id":31,"name":"Unicode/emoji","category":"Edge Cases"},{"id":32,"name":"Decimal precision","category":"Edge Cases"},{"id":33,"name":"Empty playerId","category":"Edge Cases"},{"id":34,"name":"Rapid requests","category":"Edge Cases"},{"id":35,"name":"Rollback before debit","category":"Debit/Rollback Ordering"},{"id":37,"name":"Concurrent debit and rollback","category":"Debit/Rollback Ordering"},{"id":38,"name":"Late debit after confirmed rollback","category":"Debit/Rollback Ordering"}]