For the complete documentation index, see llms.txt. This page is also available as Markdown.

Step 3 — Create the Booking (Event)

Create the event booking using the selected sessionId and sessionTableId values retrieved in Step 2. This request links one or more consecutive sessions to a court and publishes the event.

Now that you have selected the correct sessions and extracted:

  • sessionId

  • sessionTableId

You can create the actual event booking.

This request links one or more consecutive sessions to the selected court and publishes the event.

Create the Booking Request

To create the event, send a POST request to:

POST /bookings

Full URL:

https://sandbox1.podplay.app/apis/v2/bookings

You must include:

  • The event configuration (type, subtype, status, etc.)

  • An items[] array

  • One object per session being booked

Example — 1-Hour Open Play Event

curl -sS -X POST \
  -H "x-api-key: <your-api-key>" \
  -H "Content-Type: application/json" \
  "https://sandbox1.podplay.app/apis/v2/bookings" \
  -d '{
    "type": "ORDER",
    "eventSubtype": "OPEN_PLAY",
    "bookingMode": "FREE_OF_CHARGE",
    "eventName": "Open Play Session",
    "eventStatus": "PUBLISHED",
    "admission": "OPEN",
    "admissionRate": {
      "regular": 0,
      "membersDefault": 0,
      "chargingStrategy": "SPOT"
    },
    "totalTeams": 0,
    "teamSize": 0,
    "termsAgreed": true,
    "liabilityWaiverAgreed": true,
    "eventFeatures": [],
    "items": [
      {
        "session": {
          "id": "b066d668-e64f-480a-ad31-110b3433c080@1772643600000"
        },
        "sessionTable": {
          "id": "b066d668-e64f-480a-ad31-110b3433c080@61e3f1c2-d23b-4eb3-bebb-77c4eeda6d03@1772643600000"
        }
      },
      {
        "session": {
          "id": "b066d668-e64f-480a-ad31-110b3433c080@1772645400000"
        },
        "sessionTable": {
          "id": "b066d668-e64f-480a-ad31-110b3433c080@61e3f1c2-d23b-4eb3-bebb-77c4eeda6d03@1772645400000"
        }
      }
    ]
  }'

Understanding the Payload

The booking request contains two main parts:

  1. Event configuration

  2. Session allocation (items[])

Event Configuration Fields

Field
Value
Notes

type

"ORDER"

Required. Use "ORDER" when creating an event booking.

eventSubtype

"OPEN_PLAY"

Defines the event category (e.g. "OPEN_PLAY", "ADULT_CLASS").

bookingMode

"FREE_OF_CHARGE"

Required for events. Indicates no payment is collected.

eventStatus

"PUBLISHED" or "DRAFT"

"PUBLISHED" makes the event visible to users. "DRAFT" keeps it hidden.

admission

"OPEN" or "MEMBERS_ONLY"

"OPEN" allows all players to join. "MEMBERS_ONLY" restricts participation.

Session Allocation (items[])

The items[] array defines which sessions are being booked.

Each object inside items[] represents:

  • One session

  • One specific court allocation for that session

Each item must contain:

  • A session.id

  • The corresponding sessionTable.id

These values are not generated here — they come directly from Step 2, when you retrieved available sessions and matched them to your selected tableId.

Structure

In this example, the two session objects used in the booking request are exactly the ones retrieved in Step 2 for:

How This Looks in the Admin Dashboard (EST Time)

After the booking is successfully created, the event becomes visible in the Admin calendar view.

Below is the Open Play event created for:

  • March 4th

  • 17:00 → 18:00 UTC

  • Which corresponds to:

    • 12:00 → 13:00 EST (New York)

Step 3 Completed — Event Successfully Created

At this point:

  • The booking request has been accepted (201 Created)

  • The Open Play event is visible in the Admin dashboard

  • The two 30-minute sessions are combined into one 1-hour event

  • The event is scheduled on:

    • March 4th

    • 12:00 → 13:00 EST

    • Court 1 (C1)

The API and the Admin UI now reflect the same state.

In the next step, we will verify the event programmatically using the Events endpoint.

Last updated

Was this helpful?