Reclaim.ai websocket API

The websocket API from Reclaim.ai — 7 operation(s) for websocket.

OpenAPI Specification

reclaim-ai-websocket-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Reclaim account-time-schemes websocket API
  description: Reclaim's awesome API
  contact:
    name: Reclaim.ai Inc.
    url: http://reclaim.ai
    email: info@reclaim.ai
  license:
    name: Reclaim 9.9
    url: http://reclaim.ai
  version: '0.1'
tags:
- name: websocket
paths:
  /ws-relay:
    post:
      tags:
      - websocket
      operationId: relay
      parameters:
      - name: connectionId
        in: query
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
                format: byte
        required: true
      responses:
        '200':
          description: relay 200 response
          content:
            application/json:
              schema:
                type: object
  /ws/bogus:
    post:
      tags:
      - websocket
      summary: This is a bogus endpoint that gives us swagger generated objects for our websocket specific classes.
      description: This is a bogus endpoint that gives us swagger generated objects for our websocket specific classes.
      operationId: swaggerHelper
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/BogusRequest'
              - properties:
                  user:
                    $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: swaggerHelper 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /ws/connect:
    post:
      tags:
      - websocket
      operationId: connect_1
      parameters:
      - name: connectionId
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: connect_1 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /ws/default:
    post:
      tags:
      - websocket
      operationId: defaultHandler
      responses:
        '200':
          description: defaultHandler 200 response
          content:
            application/json:
              schema:
                type: object
  /ws/disconnect:
    post:
      tags:
      - websocket
      operationId: disconnect
      parameters:
      - name: connectionId
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: disconnect 200 response
          content:
            application/json:
              schema:
                type: object
  /ws/subscribe:
    post:
      tags:
      - websocket
      operationId: subscribe
      parameters:
      - name: connectionId
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscribeAction'
        required: true
      responses:
        '200':
          description: subscribe 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebSocketResponseEnvelope'
  /ws/unsubscribe:
    post:
      tags:
      - websocket
      operationId: unsubscribe_2
      parameters:
      - name: connectionId
        in: header
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnsubscribeAction'
        required: true
      responses:
        '200':
          description: unsubscribe_2 200 response
          content:
            application/json:
              schema:
                type: object
components:
  schemas:
    EventSourceDetails:
      required:
      - base64Id
      - calendarId
      - description
      - etag
      - eventId
      - eventKey
      - title
      - url
      - writable
      type: object
      properties:
        writable:
          type: boolean
        calendarId:
          type: integer
          format: int64
        eventId:
          type: string
        etag:
          type: string
        eventKey:
          $ref: '#/components/schemas/EventKey'
        base64Id:
          type: string
        url:
          type: string
        title:
          type: string
        description:
          type: string
    DefaultRsvpAvailability:
      type: object
      properties:
        treatNeedsActionRsvpAs:
          $ref: '#/components/schemas/AvailabilityType'
    SchedulingWindowWeeks:
      type: string
      enum:
      - ONE
      - TWO
      - THREE
      - FOUR
      - FIVE
      - SIX
      - SEVEN
      - EIGHT
      - NINE
      - TEN
      - ELEVEN
      - TWELVE
    EventKey:
      required:
      - calendarId
      - eventId
      type: object
      properties:
        eventId:
          type: string
        calendarId:
          type: integer
          format: int64
    WebhookSettings:
      type: object
      properties:
        enabled:
          type: boolean
        all:
          $ref: '#/components/schemas/WebhookSettings'
    MergeDetails:
      required:
      - key
      - sourceCalendarId
      - sourceReclaimCalendarId
      - type
      type: object
      properties:
        key:
          type: string
        type:
          $ref: '#/components/schemas/MergeDetails.EventType'
        sourceCalendarId:
          type: string
          nullable: true
        sourceReclaimCalendarId:
          type: integer
          format: int64
          nullable: true
    UserInterests:
      type: object
      properties:
        tasks:
          type: boolean
        priorities:
          type: boolean
        office365:
          type: boolean
        calendar:
          type: boolean
        asana:
          type: boolean
        trello:
          type: boolean
        todoist:
          type: boolean
        jira:
          type: boolean
        linear:
          type: boolean
        clickup:
          type: boolean
        monday:
          type: boolean
        MSTeams:
          type: boolean
    AvailabilitySettings:
      type: object
      properties:
        redisCacheEnabled:
          type: boolean
    WebSocketRequestAction:
      type: object
      discriminator:
        propertyName: action
        mapping:
          subscribe: '#/components/schemas/SubscribeAction'
          unsubscribe: '#/components/schemas/UnsubscribeAction'
    UserProfileDepartment:
      type: string
      enum:
      - PRODUCT
      - ENGINEERING
      - SUPPORT
      - MARKETING
      - SALES
      - DESIGN
      - HR
      - OPERATIONS
      - ACCOUNTING_AND_FINANCE
      - FOUNDER
      - EXECUTIVE_ASSISTANT
      - IT_SECURITY
      - OTHER
      x-deprecated:
      - OTHER
    Colorized:
      type: object
      properties:
        color:
          $ref: '#/components/schemas/EventColor'
    EventType:
      type: string
      enum:
      - MEETING
      - WORK
      - LOGISTICS
      - PERSONAL
    TaskAutoWorkflowSettings:
      type: object
      properties:
        category:
          $ref: '#/components/schemas/TaskAutoWorkflowType'
        durationToWaitInDays:
          type: integer
          format: int32
    RecurringAssignmentType:
      type: string
      enum:
      - ONE_ON_ONE
      - DAILY_HABIT
      - TASK
    AsanaSettings:
      type: object
      properties:
        enabled:
          type: boolean
    TimezonePreference:
      type: string
      enum:
      - USE_PRIMARY_CALENDAR_TZ
      - USE_RECLAIM_TZ
    UserProvisioningDetails:
      required:
      - hasTeamProvisionedMetadata
      type: object
      properties:
        hasTeamProvisionedMetadata:
          type: boolean
    PriorityLevel:
      type: string
      enum:
      - P1
      - P2
      - P3
      - P4
      - PRIORITIZE
      - DEFAULT
      x-deprecated:
      - PRIORITIZE
      - DEFAULT
    EventAttendee:
      required:
      - email
      type: object
      properties:
        email:
          type: string
        self:
          type: boolean
          nullable: true
        displayName:
          type: string
          nullable: true
        responseStatus:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ResponseStatus'
        comment:
          type: string
          nullable: true
        optional:
          type: boolean
          nullable: true
        additionalGuests:
          type: integer
          format: int32
          nullable: true
        organizer:
          type: boolean
          nullable: true
        resource:
          type: boolean
          nullable: true
    UserMetadataUsecase:
      type: string
      enum:
      - EDUCATION
      - WORK
      - NON_PROFIT
      - TEAM
      - SOLO_WORK
      - PERSONAL
      x-deprecated:
      - EDUCATION
      - NON_PROFIT
    ExperimentalSettings:
      type: object
      properties:
        treatOptionalSmartMeetingAttendeesAsFree:
          type: boolean
        lookAheadForSmartMeetingIdealDayOnWeeklyMeetings:
          type: boolean
    EventSubType:
      type: string
      enum:
      - ONE_ON_ONE
      - STAFF_MEETING
      - OP_REVIEW
      - EXTERNAL
      - IDEATION
      - FOCUS
      - PRODUCTIVITY
      - TRAVEL
      - FLIGHT
      - TRAIN
      - RECLAIM
      - VACATION
      - HEALTH
      - ERRAND
      - OTHER_PERSONAL
      - UNKNOWN
    PrioritiesSettings:
      type: object
      properties:
        enabled:
          type: boolean
    EventDisplayPreferences:
      required:
      - attribution
      - busyEmoji
      - description
      - doneEmoji
      - freeEmoji
      - lockEmoji
      - prefix
      - progressEmoji
      - warningEmoji
      type: object
      properties:
        progressEmoji:
          type: boolean
        lockEmoji:
          type: boolean
        freeEmoji:
          type: boolean
        busyEmoji:
          type: boolean
        doneEmoji:
          type: boolean
        warningEmoji:
          type: boolean
        description:
          type: boolean
        attribution:
          type: boolean
        prefix:
          type: boolean
    SchedulingWindowWeeksOverride:
      type: string
      enum:
      - ONE
      - TWO
      - THREE
      - FOUR
      - FIVE
      - SIX
      - SEVEN
      - EIGHT
      - NINE
      - TEN
      - ELEVEN
      - TWELVE
    UserAccountLock.AccountLockType:
      type: string
      enum:
      - PIPELINE_MIGRATION
    SignupMethod:
      type: string
      enum:
      - SCIM
      - ADMIN_API
      - SLACK
      - SELF
    AssistPlanned:
      required:
      - endTime
      - notificationKeys
      - startTime
      type: object
      properties:
        startTime:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        notificationKeys:
          type: array
          items:
            type: string
        events:
          type: array
          items:
            $ref: '#/components/schemas/Event'
    UserMetadata:
      type: object
      properties:
        jobTitle:
          type: string
        companyName:
          type: string
        companySize:
          $ref: '#/components/schemas/UserMetadataCompanySize'
        usecase:
          $ref: '#/components/schemas/UserMetadataUsecase'
        role:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/UserProfileRole'
        goals:
          type: array
          items:
            $ref: '#/components/schemas/UserProfileGoal'
        isWorkspace:
          type: boolean
        department:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/UserProfileDepartment'
        orgMetadata:
          $ref: '#/components/schemas/OrgMetadata'
    UserMetadataCompanySize:
      type: string
      enum:
      - SUB_10
      - SUB_50
      - SUB_100
      - SUB_500
      - SUB_1000
      - THOUSAND_PLUS
    EventResponseStatus:
      type: string
      enum:
      - None
      - Organizer
      - Accepted
      - Declined
      - TentativelyAccepted
      - NotResponded
      x-enum-varnames:
      - None
      - Organizer
      - Accepted
      - Declined
      - TentativelyAccepted
      - NotResponded
    CalendarEntrySettings:
      type: object
      properties:
        pipelineEnabled:
          type: boolean
        pipelineWatchEnabled:
          type: boolean
        autoMigrate:
          type: boolean
        shouldMigrate:
          type: boolean
        selfServiceMigrate:
          type: boolean
        dailyAudit:
          type: boolean
        microsoftPipelineBatching:
          type: boolean
        scoredTopContacts:
          type: boolean
        googleGhCutoff:
          type: boolean
        usePipelineCleanCalendar:
          type: boolean
        dedicatedUpsertEnabled:
          type: boolean
    DetailedEntitlements:
      type: object
      properties:
        unlimitedHabitsEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        unlimitedSyncEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        unlimitedConnectedCalendarsEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        customSyncTransparencyEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        smart11CreationEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        customSlackSyncStatusEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        customConferenceBufferTitleEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        linearEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        jiraEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        todoistEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        asanaEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        clickupEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        trelloEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
        mondayEnabled:
          $ref: '#/components/schemas/EntitlementDetails'
    AssistSettings:
      type: object
      properties:
        travel:
          type: boolean
        otherTravelDuration:
          type: integer
          format: int32
        conferenceBuffer:
          type: boolean
        conferenceBufferDuration:
          type: integer
          format: int32
        assignmentPaddingDuration:
          type: integer
          format: int32
        conferenceBufferPrivate:
          type: boolean
        conferenceBufferType:
          $ref: '#/components/schemas/ConferenceBufferType'
        customConferenceBufferTitle:
          type: string
        focus:
          type: boolean
        allOneOnOnesBusy:
          type: boolean
        autoLockForMeetings:
          $ref: '#/components/schemas/AutoLock'
        autoLockForNonMeetings:
          $ref: '#/components/schemas/AutoLock'
        sendMeetingNotifications:
          type: boolean
        useFreeBusyEmojis:
          type: boolean
        useLockEmoji:
          type: boolean
        includeDescription:
          type: boolean
        includeAttribution:
          type: boolean
        smartSeries:
          type: boolean
        smartMeetingRecurrenceType:
          $ref: '#/components/schemas/SmartSeriesRecurrenceType'
        smartHabitRecurrenceType:
          $ref: '#/components/schemas/SmartSeriesRecurrenceType'
        showClassicHabits:
          type: boolean
        allowSmartSeriesOptIn:
          type: boolean
        smartSeriesMigrateComplete:
          type: boolean
        neverSeenClassicHabits:
          type: boolean
        notificationSettings:
          $ref: '#/components/schemas/AssistNotificationSettings'
        assistDays:
          type: integer
          format: int32
        bypassed:
          type: boolean
        dayZero:
          type: string
          format: date
        schedulerDisabled:
          type: boolean
        schedulerSuppressedUntil:
          type: string
          format: date-time
        schedulerSuppressed:
          type: boolean
        rescheduleUnstarted:
          type: boolean
        rescheduleUnstartedOkToSchedule:
          type: boolean
        dampSmartMeetings:
          type: boolean
        scheduleSmartMeetingsAtMostDaily:
          type: boolean
        scheduleSmartMeetingsOnce:
          type: boolean
        manualAssistRunsEnabled:
          type: boolean
        schedulerWindowWeeks:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/SchedulingWindowWeeksOverride'
        extendedSmartMeetingCooldown:
          type: boolean
        includeOrganizerInSmartSeries:
          type: boolean
          deprecated: true
        debugScheduler:
          type: boolean
        smartHabitGen2ToGen3MigrationDate:
          type: string
          format: date-time
        smartMeetingGen2ToGen3MigrationDate:
          type: string
          format: date-time
        gen1HabitsAndMeetingsToGen3AutoMigrate:
          type: boolean
        smartHabitsToGen3AutoMigrate:
          type: boolean
        smartMeetingsToGen3AutoMigrate:
          type: boolean
    SubscriptionType:
      type: string
      enum:
      - Events
      - CalendarEvents
      - SyncStatus
      - DailyHabit
      - OneOnOne
      - Task
      - AssistCompleted
      - AssistPlanned
      - NewSubscription
      - Moment
      - Quest
      - ProductUsage
      - User
      - Team
      - SchedulingLink
      - Analytics
      - SmartMeeting
      - SmartHabit
      - Unsubscribe
      - AssistantInteraction
      - UserReset
      - PipelineMigration
      - ProactiveGtd
      - ActionItemCreation
      - AssistMigration
      x-enum-varnames:
      - Events
      - CalendarEvents
      - SyncStatus
      - DailyHabit
      - OneOnOne
      - Task
      - AssistCompleted
      - AssistPlanned
      - NewSubscription
      - Moment
      - Quest
      - ProductUsage
      - User
      - Team
      - SchedulingLink
      - Analytics
      - SmartMeeting
      - SmartHabit
      - Unsubscribe
      - AssistantInteraction
      - UserReset
      - PipelineMigration
      - ProactiveGtd
      - ActionItemCreation
      - AssistMigration
    DayOfWeek:
      type: string
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
    AdventureSetting:
      required:
      - complete
      type: object
      properties:
        complete:
          type: boolean
    AssistNotificationSettings:
      required:
      - detectedDigest
      - instanceChanges
      - instanceWindowInDays
      - needsAttentionDigest
      type: object
      properties:
        instanceChanges:
          type: boolean
        instanceWindowInDays:
          type: integer
          format: int32
        needsAttentionDigest:
          type: boolean
        detectedDigest:
          type: boolean
    User:
      required:
      - edition
      - editionUsage
      - schedulerWindowWeeks
      - sku
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        principal:
          type: string
        provider:
          type: string
        baseProvider:
          type: string
        name:
          type: string
        firstName:
          type: string
        entitlements:
          $ref: '#/components/schemas/Entitlements'
        detailedEntitlements:
          $ref: '#/components/schemas/DetailedEntitlements'
        editionEntitlements:
          properties:
            MAX_TEAM_SIZE:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SCHEDULER_WEEKS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_TASKS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_CALENDARS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_SYNCS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_HABITS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_TASKS_WEEK:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            TRAVEL_TIME:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            DECOMPRESSION_TIME:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            CUSTOM_BLOCKING:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            CUSTOM_BLOCKING_DECOMPRESSION:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            CUSTOM_BLOCKING_HABITS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            CUSTOM_BLOCKING_CALENDAR_SYNC:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            CUSTOM_SLACK_STATUS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_SCHEDULING_LINKS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            DERIVATIVE_SCHEDULING_LINKS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SCHEDULING_LINK_SURVEY:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SCHEDULING_LINK_REDIRECT:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_SCHEDULING_LINK_MEETINGS_QUARTER:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_1_ON_1_ORGANIZE:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_1_ON_1_ATTEND:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_CUSTOM_TIME_SCHEMES:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATIONS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_GOOGLE_TASKS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_GOOGLE_ADD_ON:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_SLACK:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_RAYCAST:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_ZOOM:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_TODOIST:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_LINEAR:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_JIRA:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_CLICKUP:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_ASANA:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_OFFICE_365:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_MONDAY:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_TRELLO:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            INTEGRATION_DROPBOX:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SUPPORT:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SSO:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            TEAM_ANALYTICS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            EVENT_PREFERENCES:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            DELEGATED_ACCESS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SCHEDULING_LINK_ROUND_ROBIN:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SCHEDULING_LINK_BRANDING:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            SMART_MEETING_ATTENDEE_USERS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            WEBHOOKS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_STATS_WINDOW:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            FOCUS_TIME:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            OOO_CALENDAR:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_AGENTS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MAX_DAILY_LLM_COST_MICROS:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            PROACTIVE_LLM:
              $ref: '#/components/schemas/EntitlementValue_Object_'
            MCP:
              $ref: '#/components/schemas/EntitlementValue_Object_'
        lastName:
          type: string
        avatarUrl:
          type: string
        admin:
          type: boolean
        slackEnabled:
          type: boolean
        impersonated:
          type: boolean
        timestampOffsetMs:
          type: integer
          format: int64
        features:
          $ref: '#/components/schemas/UserSettings'
        settings:
          $ref: '#/components/schemas/Settings'
        metadata:
          $ref: '#/components/schemas/UserMetadata'
        created:
          type: string
          format: date-time
        deleted:
          type: string
          format: date-time
        onboarded:
          type: boolean
        trackingCode:
          type: string
        locale:
          type: string
        likelyPersonal:
          type: boolean
        apiKey:
          type: string
        sku:
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/ReclaimEdition'
        edition:
          $ref: '#/components/schemas/ReclaimEdition'
        editionAfterTrial:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ReclaimEdition'
        editionUsage:
          $ref: '#/components/schemas/ReclaimEdition'
        preDowngradeEditionUsage:
          $ref: '#/components/schemas/ReclaimEdition'
        overage:
          type: boolean
        logContextUser:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ObservedUser'
        refCode:
          type: string
        hostedDomain:
          type: string
          nullable: true
        primaryCalendar:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ThinCalendar'
        primaryCalendarId:
          type: string
        timezone:
          type: string
        startOfWeek:
          $ref: '#/components/schemas/DayOfWeek'
        usingDelegatedAccess:
          type: boolean
        firstLogin:
          type: string
          format: date-time
          nullable: true
        signupMethod:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/SignupMethod'
        providerCreated:
          type: string
          format: date-time
          nullable: true
        schedulerWindowWeeks:
          $ref: '#/components/schemas/SchedulingWindowWeeks'
        userDateTimeFormatter:
          $ref: '#/components/schemas/UserDateTimeFormatter'
        userProvisioningDetails:
          $ref: '#/components/schemas/UserProvisioningDetails'
    EventStatus:
      type: string
      enum:
      - PUBLISHED
      - CANCELLED
    TaskAutoWorkflowType:
      type: string
      enum:
      - NOTHING
      - REOPEN
      - CLOSE
    MicrosoftSettings:
      type: object
      properties:
        smartSeriesDetectionEnabled:
          type: boolean
        useFullyExpandedSeriesMasterForInterop:
          type: boolean
        resolveReclaimForNonMemberUsingCalendarView:
          type: boolean
    GoogleAddOnSettings:
      type: object
      properties:
        enabled:
          type: boolean
    UserProfileGoal:
      type: string
      enum:
      - HEADS_DOWN_TIME
      - MEETINGS
      - WORK_LIFE_BALANCE
      - MULTIPLE_CALENDARS
    TimezoneSettings:
      required:
      - timeZonePreference
      type: object
      properties:
        zoneId:
          type: string
          nullable: true
        timeZonePreference:
          $ref: '#/components/schemas/TimezonePreference'
        timezonePreference:
          $ref: '#/components/schemas/TimezonePreference'
    EntitlementDetails:
      required:
      - minimumEdition
      - name
      type: object
      properties:
        minimumEdition:
          type: string
        name:
          type: string
        enabledForUser:
          type: boolean
    ConferenceBufferType:
      type: string
      enum:
      - ALL_MEETINGS
      - CONFERENCE_MEETINGS
    UserDateTimeFormatter:
      type: object
      properties:
        locale:
          type: string
    AvailabilityType:
      type: string
      enum:
      - BUSY
      - FREE
    Subscription:
      type: object
      properties:
        subscriptionType:
          $ref: '#/components/schemas/SubscriptionType'
      discriminator:
        propertyName: subscriptionType
        mapping:
          Task: '#/components/schemas/TaskSubscription'
          ActionItemCreation: '#/components/schemas/ActionItemCreationSubscription'
          User: '#/components/schemas/UserSubscription'
          AssistCompleted: '#/components/schemas/AssistCompletedSubscription'
          ProductUsage: '#/components/schemas/ProductUsageSubscription'
          AssistantInteraction: '#/components/schemas/AssistantInteractionSubscription'
          AssistPlanned: '#/components/schemas/AssistPlannedSubscription'
          ProactiveGtd: '#/components/schemas/ProactiveGtdSubscription'
          SyncStatus: '#/components/schemas/SyncStatusSubscription'
          SmartHabit: '#/components/schemas/SmartHabitSubscription'
          SchedulingLink: '#/components/schemas/SchedulingLinkSubscription'
          Quest: '#/components/schemas/QuestSubscription'
          Analytics: '#/components/schemas/AnalyticsSubscription'
          DailyHabit: '#/components/schemas/DailyHabitSubscription'
          OneOnOne: '#/components/schemas/OneOnOneSubscription'
          Moment: '#/components/schemas/MomentSubscription'
          Events: '#/components/schemas/EventsSubscription'
          UserReset: '#/components/schemas/UserResetSubscription'
          AssistMigration: '#/components/schemas/AssistMigrationSubscription'
          Team: '#/components/schemas/TeamSubscription'
          CalendarEvents: '#/components/schemas/CalendarEventsSubscription'
          PipelineMigration: '#/components/schemas/PipelineMigrationSubscription'
          SmartMeeting: '#/components/schemas/SmartMeetingSubscription'
    SyncFeatureSettings:
      type: object
      properties:
        enabled:
          type: boolean
        hasVipPrivileges:
          type: boolean
        daysBackwardOverride:
          type: integer
          format: int32
    AssistType:
      type: string
      enum:
      - TASK
      - CUSTOM_DAILY
      - CATCHUP_AM
      - CATCHUP_PM
      - LUNCH
      - FOCUS
      - TRAVEL_PRE
      - TRAVEL_POST
      - CONBUF
      - SMART_HABIT
      - SMART_MEETING
      - RECLAIM_FOCUS
    GoogleCalendarEventMetadata:
      required:
      - guestsCanInviteOthers
      - guestsCanModify
      - guestsCanSeeOtherGuests
      type: object
      properties:
        guestsCanModify:
          type: boolean
        guestsCanInviteOthers:
          type: boolean
        guestsCanSeeOtherGuests:
          type: boolean
    SlackStatusSetting:
      type: object
      properties:
        emoji:
          type: string
        template:
          type: string
        dnd:
          type: boolean
        enabled:
          type: boolean
    UserPostOnboard:
      type: object
      properties:
        welcomed:
          $ref: '#/components/schemas/UserPostOnboardState'
        focus:
          $ref: '#/components/schemas/UserPostOnboardState'
        hours:
          $ref: '#/components/schemas/UserPostOnboardState'
  

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/reclaim-ai/refs/heads/main/openapi/reclaim-ai-websocket-api-openapi.yml