Reporting back!
After working with the Graph Dev team (Bonny specifically - who is fantastic!), my problem was an actual bug in the system, which they promptly fixed. However, you must also be careful to follow all Booking Business policies AND Service Booking policies if you are using Application permissions. I had another node.js timezone issue that I resolved. I could not figure out how to convert the UTC timezone to local time but ended up being successful after a few weeks of bashing my head against the wall. To whoever is reading this - please message me to get help if needed.
This is the final case summary:
Issue Statement:
Unknown Error 400 Bad Request @ POST /solutions/bookingBusinesses
Cause:
Product issue on the API
Resolution:
400 bad request:
When you try creating Booking Appointment using Application permission, if you encounter 400 bad request – Check the Booking business configuration and Policies. For example, if the booking service is configured to take 1hr appointment and you try creating a 2 hr appointment, it will fail with 400 bad request. This is expected for app permissions. To fix it – make sure the Booking Business and Booking Service settings are honored.
500 internal Server error:
Even after you fix 400 bad requests, it will still cause another error – 500 Internal server error. This was a cosmetic error on the service (though it errors out, respective appointment gets created in the bookings calendar). This issue is fixed with a code change.