{
  "play": {
    "id": 117,
    "playbook_id": null,
    "name": "Rub",
    "description": "Imported from bulk PDF \u2014 Offense",
    "category": "offense",
    "tags": "",
    "diagram_json": "{\"section\":\"Offense\",\"subsection\":\"\",\"source\":\"bulk_import\",\"import_id\":\"d125785a44474042b13589e9aadeca4f\",\"option_names\":[\"Rub\"],\"start_page\":87,\"end_page\":90,\"name\":\"Rub\",\"category_id\":\"2\"}",
    "created_by": null,
    "created_at": "2026-07-23 23:23:44",
    "updated_at": "2026-08-02 04:57:55",
    "category_id": 2,
    "program": "shared",
    "share_token": null,
    "parent_play_id": null,
    "progression_order": 0,
    "list_order": 9,
    "team_key": "hs_boys"
  },
  "steps": [
    {
      "id": 402,
      "play_id": 117,
      "step_number": 0,
      "label": "Step 1 (Page 87)",
      "positions_json": "{\"o2\": {\"x\": 447, \"y\": 267.6}, \"o3\": {\"x\": 46.4, \"y\": 274}, \"o4\": {\"x\": 179.6, \"y\": 269}}",
      "movements_json": "[{\"_meta\": true, \"_ball\": \"o1\"}]",
      "notes": "",
      "source_image": "/uploads/bulk_imports/d125785a44474042b13589e9aadeca4f/page_0087.png",
      "created_at": "2026-08-02 04:57:55"
    },
    {
      "id": 403,
      "play_id": 117,
      "step_number": 1,
      "label": "Step 2 (Page 88)",
      "positions_json": "{\"o2\": {\"x\": 447, \"y\": 267.6}, \"o3\": {\"x\": 46.4, \"y\": 274}, \"o4\": {\"x\": 179.6, \"y\": 269}}",
      "movements_json": "[{\"_meta\": true, \"_ball\": \"o1\"}]",
      "notes": "",
      "source_image": "/uploads/bulk_imports/d125785a44474042b13589e9aadeca4f/page_0088.png",
      "created_at": "2026-08-02 04:57:55"
    },
    {
      "id": 404,
      "play_id": 117,
      "step_number": 2,
      "label": "Step 3 (Page 89)",
      "positions_json": "{\"o1\": {\"x\": 185.4, \"y\": 296.4}, \"o2\": {\"x\": 447, \"y\": 267.6}, \"o3\": {\"x\": 46.4, \"y\": 274}, \"o4\": {\"x\": 179.8, \"y\": 269.3}}",
      "movements_json": "[{\"_meta\": true, \"_ball\": \"o1\"}]",
      "notes": "",
      "source_image": "/uploads/bulk_imports/d125785a44474042b13589e9aadeca4f/page_0089.png",
      "created_at": "2026-08-02 04:57:55"
    },
    {
      "id": 405,
      "play_id": 117,
      "step_number": 3,
      "label": "Step 4 (Page 90)",
      "positions_json": "{\"o1\": {\"x\": 261.6, \"y\": 380.1}, \"o2\": {\"x\": 256.9, \"y\": 252.7}, \"o3\": {\"x\": 160.8, \"y\": 345.9}, \"o4\": {\"x\": 200.8, \"y\": 333.4}, \"o5\": {\"x\": 391.4, \"y\": 270.1}}",
      "movements_json": "[{\"_meta\": true, \"_ball\": \"o1\"}]",
      "notes": "",
      "source_image": "/uploads/bulk_imports/d125785a44474042b13589e9aadeca4f/page_0090.png",
      "created_at": "2026-08-02 04:57:55"
    }
  ]
}