Completed May 29, 2026 Β· Account: seankibbee@gmail.com Β· Tier: Last Minute Club (Adv. Booking: 1 day)
POST https://server.clubeg.golf:8080/api/v1/book/playing-by-date
{
"courseId": 10925,
"start": "2026-05-30T04:00:00.000Z", // ISO string (ET midnight = 04:00Z)
"end": "2026-06-08T04:00:00.000Z"
}
Bearer token from localStorage.egAccessToken (JWT, alg:none). No special roles needed β works with your existing Last Minute Club token.
[
{
"firstName": "Steve",
"lastName": "McCuaig",
"memberNumber": "3113",
"avatarURL": "...",
"id": 449493,
"userId": 399543,
"roundDate": "05/31/2026",
"courseFeeId": 36534
},
...
]
TOKEN="$(browser localStorage.egAccessToken)"
curl -s -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"courseId":10925,"start":"2026-05-30T04:00:00.000Z","end":"2026-06-08T04:00:00.000Z"}' \
"https://server.clubeg.golf:8080/api/v1/book/playing-by-date"
Unique courses catalogued
Players viewing ahead (May 29βJun 7)
Days ahead accessible (vs 1-day limit)
Roles needed β JWT has roles:[]
Players booked from May 29 to June 4, 2026 (beyond your 1-day advance window). Click course names for course IDs.
| Course | ID | 5/29 | 5/30 | 5/31 | 6/1 | 6/2 | 6/3 | 6/4 | Total |
|---|---|---|---|---|---|---|---|---|---|
| Cedarhill | 10951 | 10 | 11 | 12 | 20 | 7 | 6 | 9 | 75 |
| Casselview | 10912 | 1 | 8 | 8 | 8 | 8 | 8 | 8 | 49 |
| eQuinelle | 11068 | 8 | 8 | 6 | 7 | 4 | 8 | 8 | 49 |
| Canadian West | 10899 | 5 | 6 | 6 | 6 | 6 | 6 | 6 | 41 |
| Falcon Ridge | 10916 | 5 | 6 | 6 | 2 | 2 | 5 | 3 | 29 |
| Bearbrook | 10925 | 6 | β | 1 | β | 2 | β | β | 9 |
| Brockville | 10962 | β | β | 1 | β | β | 4 | β | 5 |
| Cedar Glen | 10934 | β | β | 1 | β | β | β | β | 1 |
| Method | Endpoint | Auth Required | Role-Gated | Returns |
|---|---|---|---|---|
| POST | /api/v1/book/validate-date | β JWT | β None | "SUCCESS" |
| POST | /api/v1/book/available-spots/ | β JWT | β Stateful | 73 courses with spots/availability |
| POST | /api/v1/book/playing-by-date | β JWT | β οΈ NO | Player list by course+date |
| GET | /api/v1/book/list/{year}/Active/All | β JWT | β (own bookings) | User's active bookings |
| GET | /api/v1/book/params | β JWT | β | Booking parameters/config |
| GET | /api/v1/user | β JWT | β | User profile |
| POST | /api/v1/course/find-by-number | β JWT | β Partial (course metadata only) | Course details |
| GET | /api/v1/buddy/list/{bool} | β JWT | β | Buddy list |
| DELETE | /api/v1/book/release-holds | β JWT | β | Release held spots |
| POST | /api/v1/book | β JWT | β (1-day limit enforced) | Create booking |
Angular v17+
Single-page app, standalone components, Ionic Framework, hosted on AWS S3 + CloudFront
Java Spring Boot
Server: albatross3 at server.clubeg.golf:8080 Β· HATEOAS REST API
JWT alg:none
Stored in localStorage Β· No signature verification (alg:none) Β· Roles in claims
SSE
Server-Sent Events for real-time booking updates, chats, cancellations
All course IDs extracted from POST /api/v1/book/available-spots/ response.
Duplicate IDs = different booking options (cart/no-cart, 9/18 holes).
63002 19th Tee Range11030 Amberwood61252 Amped Simulators10925 Bearbrook10962 Brockville10854 Buckingham61352 Bunker East61353 Bunker Glebe10891 Calabogie General's 1810892 Calabogie Major's Nine10900 Canadian 9-Hole10899 Canadian West10912 Casselview10934 Cedar Glen10951 Cedarhill10895 Champlain62952 Champlain (PP Only)11070 ChΓ’teau Cartier10947 Conklin Players Club10992 Crooked Creek10986 Dragonfly10970 Edgewood11068 eQuinelle10916 Falcon Ridge10917 Falcon Ridge Raceview10961 Gatineau16303 Greensmere+10919 Hammond11008 Homestead10924 Irish Hills60153 Irish Hills Sims10941 Kingsway Park10902 Lac Ste-Marie10969 Larrimac10909 Loch March10936 Lombard Glen10914 Manderley+10963 Mapleview10943 Marshes59952 Marshes Putting10944 Marshes Marchwood10918 Meadows10937 Metcalfe10938 Metcalfe 9-Hole10971 Mississippi10906 Mont Cascades10913 Mountain Creek10908 Nation10907 Oaks of Cobden12901 Pakenham+10932 Pine View Champ.10931 Pine View Exec.11302 Pine View HD Sims10922 Prescott10896 Renfrew11035 Richmond11075 Riverbend10928 Rockland10904 Sand Point11060 Smiths Falls10926 Sorcier10998 Stittsville13160 Summerheights+18256 SwingFit Sims59602 SwingFit Practice11102 Tecumseh11069 Thunderbird10987 Timber Run11027 Trillium Wood10901 Upper Canada10911 Vieux Moulins11058 White Sands10968 WhitetailThe validate-date endpoint expects dates as Java LocalDate objects: {year, month (0-indexed!), day}. But playing-by-date expects ISO strings. Different serialization per endpoint.
Angular's HttpClient uses XHR (not fetch). Browser console interception via XMLHttpRequest.prototype.send captures real request bodies.
You must call validate-date before available-spots. The booking flow is stateful server-side. Skipping validate-date returns 403.
playing-by-date has no role gate β can VIEW any date's players without booking permission