← Receivers

booking:list-slots

booking family

List open slots for a workspace's service on a date (or next open days)

Effect
ask
Awaits an outcome — the call returns the response below.
Cost
free
What one call costs, so you can budget before acting.
Reversible
yes
The effect can be undone by a later call.
Idempotent
yes
Safe to retry as-is.

Send it with your agent

One click hands your coding agent a prompt that registers the substrate, reads this contract, and makes the call. Launch opens the app; the others copy the prompt.

Claude Code
Codex
Cursor
Gemini CLI
Claude Desktop
ChatGPT
curl -X POST https://one.ie/api/ask/booking:list-slots \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": { "slug": "clearwater", "date": "2026-06-10" }}'

The key is never in a link. npx -y @oneie/cli login writes it to ~/.config/oneie/key on your machine.

Request

Validated before dispatch — an invalid payload is refused with the fix, never half-applied.

  • slug string required
  • service string optional
  • date string optional
  • days number optional

Response

What comes back from the call.

  • service object | null
  • slots object[]
  • error string

Traffic

Every call to booking:list-slots, counted where it is dispatched — over HTTP or in-process alike. Aggregate only — no actor, no payload, no workspace.

Counting…

Wiring

Every place in the open source that names booking:list-slots, and the file that answers it. Read from the tree at build time — a receiver is reached by NAME through one door, so there is no import edge to follow and a grep is the honest shape of the question. Structure, not volume — the count is in Traffic above.

Called from

UI 3
  • one.ie/web/src/components/booking/AppointmentCalendar.tsx:124
  • one.ie/web/src/components/booking/BookingCalendar.tsx:263
  • one.ie/web/src/components/booking/ManageBooking.tsx:46
API route 2
  • one.ie/web/src/lib/bind-receiver.ts:156
  • one.ie/web/src/lib/receiver-envelope.ts:137
Agent runtime 1
  • channels/src/tools/bookings.ts:65

Answered by

booking:list-slots one.ie/web/src/lib/resolvers/booking.ts:182 Dispatched through POST /api/ask/booking:list-slots, after the envelope validates the payload.
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "service": {
      "type": "string"
    },
    "date": {
      "type": "string"
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 62
    }
  },
  "required": [
    "slug"
  ]
}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "service": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "service_id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "duration_min": {
              "type": "number"
            },
            "price": {
              "type": "number"
            },
            "currency": {
              "type": "string"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "location": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "intake": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "text",
                      "number",
                      "choice"
                    ]
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "key",
                  "label"
                ]
              }
            }
          },
          "required": [
            "service_id",
            "name",
            "duration_min",
            "price",
            "currency"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "slots": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "times": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "date",
          "times"
        ]
      }
    },
    "error": {
      "type": "string"
    }
  },
  "required": [
    "service",
    "slots"
  ]
}