Closed
Conversation
Discovered while building the ePOS staff app against the staging API that several schema definitions don't match the real responses: - room.id: Changed from string to integer. The API returns numeric IDs (e.g. 1, 2, 3), not string codes. - customer.regular_bookings_count: Can return boolean `false` instead of integer `0` when the customer has no regular bookings. Updated to oneOf [integer, boolean]. - short_group: Added `number` field (nullable integer, used in customer band responses) and `booking_count` field. The existing `number_of_members` is retained for full group responses. https://claude.ai/code/session_01AUVAYoQ6vtiGeSvWiGsfpK
Deploying api with
|
| Latest commit: |
2fe6293
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://47b4de67.api-dwa.pages.dev |
| Branch Preview URL: | https://claude-init-staff-admin-app.api-dwa.pages.dev |
The dashboard endpoint returns bookings in a completely different format than was documented: Removed (not present in real response): - start_at, end_at (unix timestamps) - start_time, end_time (time strings) - room (object with id/name/code) - customer (object with id/name/email) - cancelled (boolean) Added (present in real response): - start, end: datetime strings "YYYY-MM-DD HH:mm" - split: room code string (matches rooms[].code) - room_name: room display name - amount_due: formatted currency string e.g. "£1.00" (was integer) - payments_recieved: boolean (note API spelling) - show_studio_notes: boolean - extras_summary: changed from string to array of strings - link: admin path string - type: "booking" or "blocked" - class: CSS class string https://claude.ai/code/session_01AUVAYoQ6vtiGeSvWiGsfpK
acallaghan
pushed a commit
that referenced
this pull request
Mar 29, 2026
Replays schema fixes from PR #6 cleanly onto main, avoiding merge conflicts caused by intervening Postman collection and studio.json changes. - room.id: string → integer (API returns numeric IDs) - customer.regular_bookings_count: allow boolean false in addition to integer - short_group: add number (nullable) and booking_count fields - dashboard_booking: rewrite to match actual dashboard response format (start/end datetimes, split room code, formatted amount_due, etc.) https://claude.ai/code/session_01DgxWeWcLq3ao4NDvAUQTzX
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Discovered while building the ePOS staff app against the staging API (
demo.jammed.dev) that several schema definitions inv2/jammed.yamldon't match the actual API responses.room.id: Changed fromstringtointeger. The API returns numeric IDs (e.g.1,2,3), not string codescustomer.regular_bookings_count: Can return booleanfalseinstead of integer0when the customer has no regular bookings. Updated tooneOf [integer, boolean]short_group: Addednumberfield (nullable integer, used in customer band responses) andbooking_countfield. The existingnumber_of_membersis retained for full group responsesTest plan
GET /dashboardresponserooms[].idis integer in stagingGET /customers.jsonwith a customer who has 0 regular bookings returnsfalseforregular_bookings_countGET /customers.jsonband objects includenumberandbooking_countfieldshttps://claude.ai/code/session_01AUVAYoQ6vtiGeSvWiGsfpK
Note
Low Risk
Low risk because changes are documentation/schema-only, but they can break generated clients by changing types (e.g.
room.idto integer and widening unions).Overview
Updates
v2/jammed.yamlto better match real API responses seen in staging.Adjusts model typing by making
room.idaninteger(notstring), allowingcustomer.regular_bookings_countto beintegerorboolean(to reflectfalsefor none), and expandingshort_groupwith nullablenumberplusbooking_countwhile keepingnumber_of_membersfor full group responses.Written by Cursor Bugbot for commit cf62f31. This will update automatically on new commits. Configure here.