> ## Documentation Index
> Fetch the complete documentation index at: https://developers.calendbook.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Generic Topic

> generic topic structure

<ResponseExample>
  ```json Response theme={null}
  {
    "bookingId": "1052bf6a-e00a-4604-afee-024d42ef4bd7",
    "eventKey": "etypeKeyId",
    "operation": "booking",
    "date": "2024-05-05T18:30:00+02:00",
    "owner": {
      "username": "owner_username",
      "fullName": "Owner Full Name",
      "email": "owner@company.com",
      "timezone": "Europe/Rome",
      "lang": "en"
    },
    "guest": {
      "username": "guest_username",
      "fullName": "Guest Full Name",
      "email": "guest@company.com",
      "timezone": "Europe/Berlin",
      "lang": "en"
    },
    "etype": {
      "name": "Etype Name",
      "description": "Etype description",
      "location": {
        "locationType": "gmeet",
        "value": "https://meet.google.com/xxx-yy-zz"
      },
      "duration": 30,
      "reminders": [
        {
          "method": "telegram",
          "minutes": "30",
          "unit": "minutes",
        }
      ],
      "surveys": null,
      "surveys_obj": [
        {
          "answer": [
            "https://wa.me/5555551234"
          ],
          "question": "Please provide your WhatsApp number.",
          "question_type": "6"
        }
      ],
      "premium_notification": {
        "guest": "premium notification",
        "salesforza": false
      },
      "isPaidEvent": false,
      "amount": "",
      "currency": "",
      "refunded": false
    },
    "notes": "note about booking from the guests",
    "reason": "",
    "bookingPendingReason": ""
  }
  ```
</ResponseExample>

<ResponseField name="bookingId" type="string">
  Booking ID for the event
</ResponseField>

<ResponseField name="eventKey" type="string">
  Key identifier for the event
</ResponseField>

<ResponseField name="operation" type="string">
  Operation type: **booking | reschedule | delete**
</ResponseField>

<ResponseField name="date" type="string">
  Date and time of the event.
</ResponseField>

<ResponseField name="owner" type="object">
  <Expandable title="properties">
    <ResponseField name="owner.username" type="string">
      Username of the owner
    </ResponseField>

    <ResponseField name="owner.fullName" type="string">
      Full name of the owner
    </ResponseField>

    <ResponseField name="owner.email" type="string">
      Email of the owner
    </ResponseField>

    <ResponseField name="owner.timezone" type="string">
      Timezone of the owner
    </ResponseField>

    <ResponseField name="owner.lang" type="string" default="en">
      Language of the owner.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="guest" type="object">
  <Expandable>
    <ResponseField name="guest.username" type="string">
      Username of the guest
    </ResponseField>

    <ResponseField name="guest.fullName" type="string">
      Full name of the guest
    </ResponseField>

    <ResponseField name="guest.email" type="string">
      Email of the guest
    </ResponseField>

    <ResponseField name="guest.timezone" type="string">
      Timezone of the guest
    </ResponseField>

    <ResponseField name="guest.lang" type="string" default="en">
      Language of the guest
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="etype" type="object">
  <Expandable>
    <ResponseField name="etype.name" type="string">
      Name of the event type
    </ResponseField>

    <ResponseField name="etype.description" type="string">
      Description of the event type
    </ResponseField>

    <ResponseField name="etype.location" type="object">
      Object containing location details for the event type

      <Expandable>
        <ResponseField name="etype.location.locationType" type="string">
          Type of location for the event type: **custom | gmeet | zoom**
        </ResponseField>

        <ResponseField name="etype.location.value" type="string">
          Value of the location for the event type.
          If 'locationType' is **'gmeet'** or **'zoom'**, it contains the corresponding *conference link*.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="etype.duration" type="number">
      Duration of the event type
    </ResponseField>

    <ResponseField name="etype.reminders" type="object">
      Reminders set for the event type

      <Expandable>
        <ResponseField name="etype.reminders.method" type="string">
          Method of reminder for the event type **email | telegram | whatsapp**
        </ResponseField>

        <ResponseField name="etype.reminders.minutes" type="string">
          Minutes before event for the reminder
        </ResponseField>

        <ResponseField name="etype.reminders.unit" type="string">
          Unit of time for the reminder. **minutes | hours | days | weeks**
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="etype.surveys_obj" type="object">
      Object containing surveys details for the event type

      <Expandable>
        <ResponseField name="etype.surveys_obj.answer" type="list">
          Contains responses to questions, which may include multiple answers.
        </ResponseField>

        <ResponseField name="etype.surveys_obj.question" type="string">
          Question for the survey
        </ResponseField>

        <ResponseField name="etype.surveys_obj.question_type" type="string">
          Type of question for the survey:

          * **Radio:  1**
          * **Check:  2**
          * **Text : 3**
          * **Phone:  4**
          * **Telegram:  5**
          * **Whatsapp:  6**
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="etype.premium_notification" type="object">
      Object containing premium notification details for the event type
    </ResponseField>

    <ResponseField name="etype.isPaidEvent" type="boolean">
      Indicates whether the event type is paid
    </ResponseField>

    <ResponseField name="etype.amount" type="string">
      Amount for the event type if the event type is paid
    </ResponseField>

    <ResponseField name="etype.currency" type="string">
      Currency for the event type if the event type is paid
    </ResponseField>

    <ResponseField name="etype.refunded" type="boolean">
      Indicates whether the event type has been refunded if the event type is paid
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="notes" type="string">
  Optional notes left by the guest about the booking
</ResponseField>

<ResponseField name="reason" type="string">
  Reason for if the guest/owner reschedule or cancel the current booking
</ResponseField>

<ResponseField name="bookingPendingReason" type="string" default="pending; pending">
  Reason for the pending booking. **pending\_payment | pending\_confirmation**
</ResponseField>
