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

# Get Calendar

> Get calendar by ID

Get calendar by ID

```http theme={null}
GET https://services.leadconnectorhq.com/calendars/{calendarId}
```

## Autorización

<ParamField header="Authorization" type="string" required>
  Bearer token generado desde el portal Leadway. Ver [Autenticación](/authentication).
</ParamField>

<ParamField header="Version" type="string" required default="2021-07-28">
  Versión de la API.
</ParamField>

## Path parameters

<ParamField path="calendarId" type="string" required default="ocQHyuzHvysMo5N5VsXc">
  Calendar Id
</ParamField>

## Respuestas

<Accordion title="200 - Successful response">
  <ResponseField name="calendar" type="object" required>
    <Expandable title="propiedades">
      <ResponseField name="isActive" type="boolean">
        Should the created calendar be active or draft
      </ResponseField>

      <ResponseField name="notifications" type="object[]">
        🚨 Deprecated! Please use 'Calendar Notifications APIs' instead.

        <Expandable title="cada item">
          <ResponseField name="type" type="string" default="email">
            Calendar Notification Posibles valores: 'email'
          </ResponseField>

          <ResponseField name="shouldSendToContact" type="boolean" required />

          <ResponseField name="shouldSendToGuest" type="boolean" required />

          <ResponseField name="shouldSendToUser" type="boolean" required />

          <ResponseField name="shouldSendToSelectedUsers" type="boolean" required />

          <ResponseField name="selectedUsers" type="string" required default="user1@testemail.com,user2@testemail.com">
            Comma separated emails
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="locationId" type="string" required default="ocQHyuzHvysMo5N5VsXc" />

      <ResponseField name="groupId" type="string" default="BqTwX8QFwXzpegMve9EQ">
        Group Id
      </ResponseField>

      <ResponseField name="teamMembers" type="object[]">
        Team members are for calendars of type: Round Robin, Collective, Class, Service. Personal calendar must have exactly one team member.

        <Expandable title="cada item">
          <ResponseField name="userId" type="string" required default="ocQHyuzHvysMo5N5VsXc" />

          <ResponseField name="priority" type="number">
            Posibles valores: 0, 0.5, 1
          </ResponseField>

          <ResponseField name="meetingLocationType" type="string" default="custom">
            🚨 Deprecated! Use `locationConfigurations.kind` instead. Posibles valores: 'custom', 'zoom', 'gmeet', 'phone', 'address', 'teams', 'booker'
          </ResponseField>

          <ResponseField name="meetingLocation" type="string">
            🚨 Deprecated! Use `locationConfigurations.account` instead.
          </ResponseField>

          <ResponseField name="isPrimary" type="boolean">
            Marks a user as primary. This property is required in case of collective booking calendars. Only one user can be primary.
          </ResponseField>

          <ResponseField name="locationConfigurations" type="object[]">
            Meeting account configurations

            <Expandable title="cada item">
              <ResponseField name="kind" type="string" required default="custom">
                Type of meeting account. zoom\_conference/google\_conference/ms\_teams\_conference is not supported in event calendar type Posibles valores: 'custom', 'zoom\_conference', 'google\_conference', 'inbound\_call', 'outbound\_call', 'physical', 'booker', 'ms\_teams\_conference'
              </ResponseField>

              <ResponseField name="location" type="string">
                Address for meeting account. Not applicable on "zoom\_conference", "google\_conference" and "ms\_teams\_conference" kind
              </ResponseField>

              <ResponseField name="meetingId" type="string" default="my_conference_id">
                Unique ID used to select a specific meeting account
              </ResponseField>
            </Expandable>
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="eventType" type="string">
        Posibles valores: 'RoundRobin\_OptimizeForAvailability', 'RoundRobin\_OptimizeForEqualDistribution'
      </ResponseField>

      <ResponseField name="name" type="string" required default="test calendar" />

      <ResponseField name="description" type="string" default="this is used for testing" />

      <ResponseField name="slug" type="string" default="test1" />

      <ResponseField name="widgetSlug" type="string" default="test1" />

      <ResponseField name="calendarType" type="string">
        Posibles valores: 'round\_robin', 'event', 'class\_booking', 'collective', 'service\_booking', 'personal'
      </ResponseField>

      <ResponseField name="widgetType" type="string" default="classic">
        Calendar widget type. Choose "default" for "neo" and "classic" for "classic" layout. Posibles valores: 'default', 'classic'
      </ResponseField>

      <ResponseField name="eventTitle" type="string" />

      <ResponseField name="eventColor" type="string" />

      <ResponseField name="meetingLocation" type="string">
        🚨 Deprecated! Use `locationConfigurations.account` or `teamMembers[].locationConfigurations.account` instead.
      </ResponseField>

      <ResponseField name="locationConfigurations" type="object[]">
        Meeting account configuration for event calendar

        <Expandable title="cada item">
          <ResponseField name="kind" type="string" required default="custom">
            Type of meeting account. zoom\_conference/google\_conference/ms\_teams\_conference is not supported in event calendar type Posibles valores: 'custom', 'zoom\_conference', 'google\_conference', 'inbound\_call', 'outbound\_call', 'physical', 'booker', 'ms\_teams\_conference'
          </ResponseField>

          <ResponseField name="location" type="string">
            Address for meeting account. Not applicable on "zoom\_conference", "google\_conference" and "ms\_teams\_conference" kind
          </ResponseField>

          <ResponseField name="meetingId" type="string" default="my_conference_id">
            Unique ID used to select a specific meeting account
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="slotDuration" type="number">
        This controls the duration of the meeting
      </ResponseField>

      <ResponseField name="slotDurationUnit" type="string">
        Unit for slot duration. Posibles valores: 'mins', 'hours'
      </ResponseField>

      <ResponseField name="slotInterval" type="number">
        Slot interval reflects the amount of time the between booking slots that will be shown in the calendar.
      </ResponseField>

      <ResponseField name="slotIntervalUnit" type="string">
        Unit for slot interval. Posibles valores: 'mins', 'hours'
      </ResponseField>

      <ResponseField name="slotBuffer" type="number">
        Slot-Buffer is additional time that can be added after an appointment, allowing for extra time to wrap up
      </ResponseField>

      <ResponseField name="slotBufferUnit" type="string">
        Unit for slot buffer. Posibles valores: 'mins', 'hours'
      </ResponseField>

      <ResponseField name="preBuffer" type="number">
        Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready
      </ResponseField>

      <ResponseField name="preBufferUnit" type="string">
        Unit for pre-buffer. Posibles valores: 'mins', 'hours'
      </ResponseField>

      <ResponseField name="appoinmentPerSlot" type="number">
        Maximum bookings per slot (per user). Maximum seats per slot in case of Class Booking Calendar.
      </ResponseField>

      <ResponseField name="appoinmentPerDay" type="number">
        Number of appointments that can be booked for a given day
      </ResponseField>

      <ResponseField name="allowBookingAfter" type="number">
        Minimum scheduling notice for events
      </ResponseField>

      <ResponseField name="allowBookingAfterUnit" type="string" default="days">
        Unit for minimum scheduling notice Posibles valores: 'hours', 'days', 'weeks', 'months'
      </ResponseField>

      <ResponseField name="allowBookingFor" type="number">
        Minimum number of days/weeks/months for which to allow booking events
      </ResponseField>

      <ResponseField name="allowBookingForUnit" type="string" default="days">
        Unit for controlling the duration for which booking would be allowed for Posibles valores: 'days', 'weeks', 'months'
      </ResponseField>

      <ResponseField name="openHours" type="object[]">
        This is only to set the standard availability. For custom availability, use the availabilities property

        <Expandable title="cada item">
          <ResponseField name="daysOfTheWeek" type="number[]" required />

          <ResponseField name="hours" type="object[]" required>
            <Expandable title="cada item">
              <ResponseField name="openHour" type="number" required />

              <ResponseField name="openMinute" type="number" required />

              <ResponseField name="closeHour" type="number" required />

              <ResponseField name="closeMinute" type="number" required />
            </Expandable>
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="enableRecurring" type="boolean">
        Enable recurring appointments for the calendars. Please note that only one member should be added in the calendar to enable this
      </ResponseField>

      <ResponseField name="recurring" type="object">
        <Expandable title="propiedades">
          <ResponseField name="freq" type="string">
            Posibles valores: 'DAILY', 'WEEKLY', 'MONTHLY'
          </ResponseField>

          <ResponseField name="count" type="number">
            Number of recurrences
          </ResponseField>

          <ResponseField name="bookingOption" type="string">
            This setting contols what to do incase a recurring slot is unavailable Posibles valores: 'skip', 'continue', 'book\_next'
          </ResponseField>

          <ResponseField name="bookingOverlapDefaultStatus" type="string">
            This setting contols what to do incase a recurring slot is unavailable Posibles valores: 'confirmed', 'new'
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="formId" type="string" />

      <ResponseField name="stickyContact" type="boolean" />

      <ResponseField name="isLivePaymentMode" type="boolean" />

      <ResponseField name="autoConfirm" type="boolean" />

      <ResponseField name="shouldSendAlertEmailsToAssignedMember" type="boolean" />

      <ResponseField name="alertEmail" type="string" />

      <ResponseField name="googleInvitationEmails" type="boolean" />

      <ResponseField name="allowReschedule" type="boolean" />

      <ResponseField name="allowCancellation" type="boolean" />

      <ResponseField name="shouldAssignContactToTeamMember" type="boolean" />

      <ResponseField name="shouldSkipAssigningContactForExisting" type="boolean" />

      <ResponseField name="notes" type="string" />

      <ResponseField name="pixelId" type="string" />

      <ResponseField name="formSubmitType" type="string">
        Posibles valores: 'RedirectURL', 'ThankYouMessage'
      </ResponseField>

      <ResponseField name="formSubmitRedirectURL" type="string" />

      <ResponseField name="formSubmitThanksMessage" type="string" />

      <ResponseField name="availabilityType" type="number">
        Determines which availability type to consider:

        * **1**: Only custom availabilities will be used.
        * **0**: Only open hours will be used.
        * **null**: Both custom availabilities and open hours will be considered. Posibles valores: 0, 1
      </ResponseField>

      <ResponseField name="availabilities" type="object[]">
        This is only to set the custom availability. For standard availability, use the openHours property

        <Expandable title="cada item">
          <ResponseField name="date" type="string" required default="2023-09-24T00:00:00.000Z">
            Formulate the date string in the format of `&lt;YYYY-MM-DD in local timezone&gt;T00:00:00.000Z`.
          </ResponseField>

          <ResponseField name="hours" type="object[]" required>
            <Expandable title="cada item">
              <ResponseField name="openHour" type="number" required />

              <ResponseField name="openMinute" type="number" required />

              <ResponseField name="closeHour" type="number" required />

              <ResponseField name="closeMinute" type="number" required />
            </Expandable>
          </ResponseField>

          <ResponseField name="deleted" type="boolean" />
        </Expandable>
      </ResponseField>

      <ResponseField name="guestType" type="string">
        Posibles valores: 'count\_only', 'collect\_detail'
      </ResponseField>

      <ResponseField name="consentLabel" type="string" />

      <ResponseField name="calendarCoverImage" type="string" default="https://path-to-image.com" />

      <ResponseField name="lookBusyConfig" type="object">
        Look Busy Configuration
      </ResponseField>

      <ResponseField name="id" type="string" required default="0TkCdp9PfvLeWKYRRvIz" />
    </Expandable>
  </ResponseField>

  ```json theme={null}
  {
    "calendar": {
      "isActive": true,
      "notifications": [
        {
          "type": "email",
          "shouldSendToContact": true,
          "shouldSendToGuest": true,
          "shouldSendToUser": true,
          "shouldSendToSelectedUsers": true,
          "selectedUsers": "user1@testemail.com,user2@testemail.com"
        }
      ],
      "locationId": "ocQHyuzHvysMo5N5VsXc",
      "groupId": "BqTwX8QFwXzpegMve9EQ",
      "teamMembers": [
        {
          "userId": "ocQHyuzHvysMo5N5VsXc",
          "priority": 0.5,
          "meetingLocationType": "custom",
          "meetingLocation": "string",
          "isPrimary": true,
          "locationConfigurations": []
        }
      ],
      "eventType": "RoundRobin_OptimizeForAvailability",
      "name": "test calendar",
      "description": "this is used for testing",
      "slug": "test1",
      "widgetSlug": "test1",
      "calendarType": "round_robin",
      "widgetType": "classic",
      "eventTitle": "{{contact.name}}",
      "eventColor": "#039be5",
      "meetingLocation": "string",
      "locationConfigurations": [
        {
          "kind": "custom",
          "location": "string",
    // truncado: 60 lineas mas
  }
  ```
</Accordion>

<Accordion title="400 - Bad Request">
  ```json theme={null}
  {}
  ```
</Accordion>

<Accordion title="401 - Unauthorized">
  ```json theme={null}
  {}
  ```
</Accordion>

## Ejemplo

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET 'https://services.leadconnectorhq.com/calendars/YOUR_calendarId' \
    -H 'Authorization: Bearer YOUR_TOKEN' \
    -H 'Version: 2021-07-28'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://services.leadconnectorhq.com/calendars/YOUR_calendarId', {
    method: 'GET',
    headers: {
      Authorization: `Bearer ${process.env.LEADWAY_TOKEN}`,
      Version: '2021-07-28',
    },
  });
  const data = await response.json();
  ```

  ```python Python theme={null}
  import os, requests
  response = requests.request(
      'GET',
      'https://services.leadconnectorhq.com/calendars/YOUR_calendarId',
      headers={
          'Authorization': f"Bearer {os.environ['LEADWAY_TOKEN']}",
          'Version': '2021-07-28',
      },
  )
  data = response.json()
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init('https://services.leadconnectorhq.com/calendars/YOUR_calendarId');
  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => 'GET',
      CURLOPT_HTTPHEADER => [
          'Authorization: Bearer ' . getenv('LEADWAY_TOKEN'),
          'Version: 2021-07-28',
      ],
  ]);
  $data = json_decode(curl_exec($ch), true);
  ```
</CodeGroup>
