Reclaim.ai schedule-actions API

The schedule-actions API from Reclaim.ai — 12 operation(s) for schedule-actions.

OpenAPI Specification

reclaim-ai-schedule-actions-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Reclaim account-time-schemes schedule-actions 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: schedule-actions
paths:
  /api/schedule-actions:
    post:
      tags:
      - schedule-actions
      operationId: actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleActionRequest'
        required: true
      responses:
        '200':
          description: actions 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleActionResponse'
      security:
      - Authorization: []
  /api/schedule-actions/apply-actions:
    post:
      tags:
      - schedule-actions
      operationId: applyActions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyScheduleActionsRequest'
        required: true
      responses:
        '200':
          description: applyActions 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyScheduleActionsResponse'
      security:
      - Authorization: []
  /api/schedule-actions/disable-background-automation:
    post:
      tags:
      - schedule-actions
      operationId: disableBackgroundAutomation
      parameters:
      - name: value
        in: query
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: disableBackgroundAutomation 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /api/schedule-actions/enable:
    post:
      tags:
      - schedule-actions
      operationId: enable
      parameters:
      - name: value
        in: query
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: enable 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /api/schedule-actions/enable-calendar-ui:
    post:
      tags:
      - schedule-actions
      operationId: enableCalendarUI
      parameters:
      - name: value
        in: query
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: enableCalendarUI 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /api/schedule-actions/enable-experimental-features:
    post:
      tags:
      - schedule-actions
      operationId: enableExperimentalFeatures
      parameters:
      - name: value
        in: query
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: enableExperimentalFeatures 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /api/schedule-actions/enable-org-relationships:
    post:
      tags:
      - schedule-actions
      operationId: enableOrgRelationships
      parameters:
      - name: value
        in: query
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: enableOrgRelationships 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /api/schedule-actions/event-actions:
    post:
      tags:
      - schedule-actions
      operationId: actionsForEvents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionsForEventsRequest'
        required: true
      responses:
        '200':
          description: actionsForEvents 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
  /api/schedule-actions/find-problems:
    post:
      tags:
      - schedule-actions
      operationId: findProblems
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleProblemRequest'
        required: true
      responses:
        '200':
          description: findProblems 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduleProblemResponse'
      security:
      - Authorization: []
  /api/schedule-actions/migrate-user-assist:
    get:
      tags:
      - schedule-actions
      operationId: getMigrationLogs
      responses:
        '200':
          description: getMigrationLogs 200 response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserAssistMigrationLogView'
      security:
      - Authorization: []
    post:
      tags:
      - schedule-actions
      operationId: migrateUserAssist
      parameters:
      - name: dryRun
        in: query
        required: true
        schema:
          type: string
          default: 'true'
      - name: notificationKey
        in: query
        schema:
          type: string
          nullable: true
      responses:
        '200':
          description: migrateUserAssist 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MigrateUserAssistResponse'
      security:
      - Authorization: []
  /api/schedule-actions/migrate-user-assist-available:
    get:
      tags:
      - schedule-actions
      operationId: isMigrationAvailable
      responses:
        '200':
          description: isMigrationAvailable 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MigrateUserAssistAvailableResponse'
      security:
      - Authorization: []
  /api/schedule-actions/set-self-service-migration:
    post:
      tags:
      - schedule-actions
      operationId: setSelfServiceMigration
      parameters:
      - name: value
        in: query
        required: true
        schema:
          type: boolean
      responses:
        '200':
          description: setSelfServiceMigration 200 response
          content:
            application/json:
              schema:
                type: object
      security:
      - Authorization: []
components:
  schemas:
    GroupSubjectView:
      type: object
      discriminator:
        propertyName: type
        mapping:
          EventKey: '#/components/schemas/EventKeySubjectView'
      oneOf:
      - $ref: '#/components/schemas/EventKeySubjectView'
    GtdGoogleTasksTaskForCreate:
      required:
      - sourceType
      - title
      type: object
      properties:
        sourceType:
          $ref: '#/components/schemas/GtdTaskId.TaskSourceType'
        title:
          type: string
        description:
          type: string
          nullable: true
        due:
          type: string
          format: date-time
          nullable: true
        start:
          type: string
          format: date-time
          nullable: true
        priority:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/PriorityLevel'
        estimateMinutes:
          type: integer
          format: int32
          nullable: true
        listId:
          type: string
          nullable: true
        parentTaskId:
          type: string
          nullable: true
        type:
          type: string
    EventLockAction:
      required:
      - eventKey
      - lockMode
      - policyId
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        eventKey:
          $ref: '#/components/schemas/EventKey'
        lockMode:
          $ref: '#/components/schemas/EventLockAction.LockMode'
        type:
          type: string
    AnyAttendeeEventMatcher:
      required:
      - attendeeMatcher
      type: object
      properties:
        attendeeMatcher:
          $ref: '#/components/schemas/AttendeeMatcher'
        type:
          type: string
      description: Matches if any attendee satisfies the given attendee predicate
    AndEventMatcher:
      required:
      - left
      - right
      type: object
      properties:
        left:
          $ref: '#/components/schemas/EventMatcher'
        right:
          $ref: '#/components/schemas/EventMatcher'
        type:
          type: string
      description: Matches if both the left and right matchers match
    AddEventAction:
      required:
      - attendees
      - dateRange
      - eventKey
      - guestsCanModify
      - policyId
      - title
      type: object
      properties:
        eventKey:
          readOnly: true
          allOf:
          - $ref: '#/components/schemas/EventKey'
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        calendarId:
          type: integer
          format: int64
          nullable: true
        eventId:
          type: string
          nullable: true
        dateRange:
          $ref: '#/components/schemas/EventDateRange'
        title:
          type: string
        description:
          type: string
          nullable: true
        color:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EntryColor'
        location:
          type: string
          nullable: true
        transparency:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/Transparency'
        visibility:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/Visibility'
        reminders:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/Reminders'
        eventCategory:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventCategory'
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/EventAttendee'
        notificationRequest:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EntryNotificationRequest'
        guestsCanModify:
          type: boolean
        guestsCanInviteOthers:
          type: boolean
          nullable: true
        guestsCanSeeOtherGuests:
          type: boolean
          nullable: true
        conferenceRequest:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ConferenceRequest'
        recurrence:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ReclaimRecurrence'
        priority:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/PriorityLevel'
        type:
          type: string
    Transparency:
      type: string
      enum:
      - OPAQUE
      - TRANSPARENT
    GtdTaskForCreate:
      type: object
      discriminator:
        propertyName: type
        mapping:
          GtdAsanaTaskForCreate: '#/components/schemas/GtdAsanaTaskForCreate'
          GtdTodoistTaskForCreate: '#/components/schemas/GtdTodoistTaskForCreate'
          GtdClickUpTaskForCreate: '#/components/schemas/GtdClickUpTaskForCreate'
          GtdGoogleTasksTaskForCreate: '#/components/schemas/GtdGoogleTasksTaskForCreate'
          GtdLinearTaskForCreate: '#/components/schemas/GtdLinearTaskForCreate'
          ReclaimTaskForCreate: '#/components/schemas/ReclaimTaskForCreate'
          GtdJiraTaskForCreate: '#/components/schemas/GtdJiraTaskForCreate'
          GtdNotionTaskForCreate: '#/components/schemas/GtdNotionTaskForCreate'
      oneOf:
      - $ref: '#/components/schemas/ReclaimTaskForCreate'
      - $ref: '#/components/schemas/GtdAsanaTaskForCreate'
      - $ref: '#/components/schemas/GtdClickUpTaskForCreate'
      - $ref: '#/components/schemas/GtdGoogleTasksTaskForCreate'
      - $ref: '#/components/schemas/GtdJiraTaskForCreate'
      - $ref: '#/components/schemas/GtdLinearTaskForCreate'
      - $ref: '#/components/schemas/GtdNotionTaskForCreate'
      - $ref: '#/components/schemas/GtdTodoistTaskForCreate'
    GtdTaskId.TaskSourceType:
      type: string
      enum:
      - TODOIST
      - CLICK_UP
      - LINEAR
      - GOOGLE_TASKS
      - JIRA
      - ASANA
      - NOTION
      - RECLAIM
    Colorized:
      type: object
      properties:
        color:
          $ref: '#/components/schemas/EventColor'
    EventDateRange:
      type: object
      discriminator:
        propertyName: type
        mapping:
          FixedDateTimeRange: '#/components/schemas/FixedDateTimeRange'
          AllDayDateRange: '#/components/schemas/AllDayDateRange'
      oneOf:
      - $ref: '#/components/schemas/FixedDateTimeRange'
      - $ref: '#/components/schemas/AllDayDateRange'
    SelfRSVPMatcher:
      required:
      - operator
      type: object
      properties:
        operator:
          $ref: '#/components/schemas/EventMatcherOperator'
        predicateValue:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ResponseStatus'
        predicateValues:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ResponseStatus'
        type:
          type: string
      description: Matches by the user's own RSVP status
    SmartSeriesId:
      required:
      - lineageId
      - seriesId
      type: object
      properties:
        seriesId:
          type: integer
          format: int64
        lineageId:
          type: integer
          format: int64
        type:
          type: string
    UncompleteGtdTaskAction:
      required:
      - task
      type: object
      properties:
        hash:
          type: string
          nullable: true
        task:
          $ref: '#/components/schemas/GtdTask'
        type:
          type: string
    ApplyScheduleActionsResponse:
      required:
      - results
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ScheduleActionResultWithMessage'
        events:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/Event'
        calendarEvents:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/CalendarEventV2'
    HasVideoConferenceEventMatcher:
      required:
      - predicateValue
      type: object
      properties:
        predicateValue:
          type: boolean
        type:
          type: string
      description: Matches events with or without a video conference link
    TimeWindowEventMatcher.TimeWindowMatchMode:
      type: string
      enum:
      - STARTS_WITHIN
      - ENDS_WITHIN
      - STARTS_OR_ENDS_WITHIN
      - CONTAINED_WITHIN
      - OVERLAPS
    RecurrenceFrequency:
      type: string
      enum:
      - DAILY
      - WEEKLY
      - MONTHLY
      - YEARLY
    CancelEventAction:
      required:
      - eventKey
      - policyId
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        eventKey:
          $ref: '#/components/schemas/EventKey'
        notificationMessage:
          type: string
          nullable: true
        notificationRequest:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EntryNotificationRequest'
        recurrenceEditType:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/RecurrenceEditType'
        assistantData:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/AssistantData'
        title:
          type: string
          nullable: true
        start:
          type: string
          format: date-time
          nullable: true
        end:
          type: string
          format: date-time
          nullable: true
        type:
          type: string
    RescheduleEventAction:
      required:
      - end
      - eventKey
      - policyId
      - start
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        eventKey:
          $ref: '#/components/schemas/EventKey'
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        notificationMessage:
          type: string
          nullable: true
        notificationRequest:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EntryNotificationRequest'
        recurrenceEditType:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/RecurrenceEditType'
        rescheduledFromStart:
          type: string
          format: date-time
          nullable: true
        rescheduledFromEnd:
          type: string
          format: date-time
          nullable: true
        type:
          type: string
    LacksRsvpCreateRequestFields:
      required:
      - commonData
      type: object
      properties:
        commonData:
          $ref: '#/components/schemas/SchedulePolicyCommonDataCreateRequestFields'
        eventMatcher:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventMatcher'
        eventMatcherTags:
          description: Predefined event matching tags. Either this or eventMatcher is required.
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventMatcherTags'
        type:
          type: string
    FeatureMigrationResultView.CleanupOnly.Reason:
      type: string
      enum:
      - EQUIVALENT_POLICY_ALREADY_EXISTS
    AttendeeCountEventMatcher:
      required:
      - attendeeType
      - includeResources
      - operator
      - predicateValue
      type: object
      properties:
        operator:
          $ref: '#/components/schemas/EventMatcherOperator'
        predicateValue:
          type: integer
          format: int32
        attendeeType:
          $ref: '#/components/schemas/AttendeeCountEventMatcher.AttendeeType'
        includeResources:
          type: boolean
          default: false
        type:
          type: string
      description: Matches by attendee count using a comparison operator
    EventConflictPatchRequestFields:
      type: object
      properties:
        commonData:
          $ref: '#/components/schemas/SchedulePolicyCommonDataPatchRequestFields'
        timePolicy:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/SchedulePolicyTimePolicy'
        type:
          type: string
    ZoomConferenceRequest:
      required:
      - enabled
      type: object
      properties:
        enabled:
          type: boolean
        type:
          type: string
    EventEditType:
      type: string
      enum:
      - THIS
      - ALL
      - THIS_AND_FOLLOWING
    Reminders:
      required:
      - overrides
      - useDefault
      type: object
      properties:
        useDefault:
          type: boolean
        overrides:
          type: array
          items:
            $ref: '#/components/schemas/Reminder'
    CreateGtdTaskAction:
      required:
      - fields
      - sourceType
      - title
      type: object
      properties:
        hash:
          type: string
          nullable: true
        sourceType:
          $ref: '#/components/schemas/GtdTaskId.TaskSourceType'
        title:
          type: string
        fields:
          $ref: '#/components/schemas/GtdTaskForCreate'
        tempId:
          type: string
          nullable: true
        type:
          type: string
    ManualEventEdit:
      required:
      - eventDateRange
      - eventKey
      - eventStatus
      - policyId
      - policyType
      - relatedFields
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        policyType:
          $ref: '#/components/schemas/SchedulePolicyType'
        eventKey:
          $ref: '#/components/schemas/EventKey'
        eventDateRange:
          $ref: '#/components/schemas/EventDateRange'
        eventVersion:
          type: integer
          format: int32
          nullable: true
        eventStatus:
          $ref: '#/components/schemas/EntryStatus'
        relatedFields:
          type: array
          items:
            $ref: '#/components/schemas/CalendarEventField'
        type:
          type: string
    RecurrenceEditType:
      type: string
      enum:
      - ALL
      - THIS_AND_FOLLOWING
    PlatformEventData:
      type: object
      discriminator:
        propertyName: type
        mapping:
          GoogleEventData: '#/components/schemas/GoogleEventData'
          OutlookEventData: '#/components/schemas/OutlookEventData'
      oneOf:
      - $ref: '#/components/schemas/GoogleEventData'
      - $ref: '#/components/schemas/OutlookEventData'
    ConferenceRequest:
      type: object
      discriminator:
        propertyName: type
        mapping:
          ZoomConferenceRequest: '#/components/schemas/ZoomConferenceRequest'
          MeetConferenceRequest: '#/components/schemas/MeetConferenceRequest'
          TeamsConferenceRequest: '#/components/schemas/TeamsConferenceRequest'
      oneOf:
      - $ref: '#/components/schemas/MeetConferenceRequest'
      - $ref: '#/components/schemas/TeamsConferenceRequest'
      - $ref: '#/components/schemas/ZoomConferenceRequest'
    PolicyScope:
      type: string
      enum:
      - USER
      - TEAM
    LacksVideoConferencePatchRequestFields:
      type: object
      properties:
        commonData:
          $ref: '#/components/schemas/SchedulePolicyCommonDataPatchRequestFields'
        eventMatcher:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventMatcher'
        eventMatcherTags:
          description: Predefined event matching tags. Either this or eventMatcher is required.
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventMatcherTags'
        type:
          type: string
    DayOfWeek:
      type: string
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
    EventStatus:
      type: string
      enum:
      - PUBLISHED
      - CANCELLED
    ShieldsUpProblem:
      required:
      - hash
      - policyId
      - policyType
      - problemType
      type: object
      properties:
        hash:
          type: string
        policyId:
          type: string
          format: uuid
        policyType:
          $ref: '#/components/schemas/SchedulePolicyType'
        problemType:
          $ref: '#/components/schemas/ShieldsUpProblemType'
        eventKey:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventKey'
        type:
          type: string
    HabitPatchRequestFields:
      type: object
      properties:
        commonData:
          $ref: '#/components/schemas/SchedulePolicyCommonDataPatchRequestFields'
        eventMatcher:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventMatcher'
        idealDurationMinutes:
          type: integer
          description: Preferred duration in minutes. Reclaim tries this first, falling back to minDurationMinutes.
          format: int64
          nullable: true
        minDurationMinutes:
          type: integer
          description: Minimum acceptable duration in minutes.
          format: int64
        availableTimeForTransparencyChangeMinutes:
          type: integer
          description: Minutes before event start to switch the calendar entry from free to busy. Null keeps the event busy from creation.
          format: int64
          nullable: true
        availableSlotsForTransparencyChange:
          type: integer
          description: Number of alternative time slots to hold as free before committing to one. Null means only the best slot is held.
          format: int64
          nullable: true
        autoBusyBeforeStartMinutes:
          type: integer
          description: Minutes before start to force the event to show as busy, even if other slots are still held. Null disables.
          format: int64
          nullable: true
        timePolicy:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/SchedulePolicyTimePolicy'
        proactivelyUseIdealTime:
          type: boolean
          description: When true, Reclaim proactively schedules at the ideal duration even when no conflict forces rescheduling.
        noAvailabilityAction:
          description: 'What to do when no available slot exists: CANCEL (remove the event) or WARNING (keep it and surface a warning).'
          nullable: true
          allOf:
          - $ref: '#/components/schemas/ManagedEventNoAvailabilityAction'
        suppressWarnings:
          type: boolean
          description: When true, suppresses all warnings/problems detected by this policy.
        type:
          type: string
    ScheduleActionResultWithMessage:
      required:
      - action
      - result
      type: object
      properties:
        result:
          $ref: '#/components/schemas/ScheduleActionResult'
        action:
          $ref: '#/components/schemas/ScheduleActionWithEvents'
        message:
          type: string
          nullable: true
    RecentPaperDocMatcher:
      required:
      - defaultValue
      - recentThresholdMinutes
      type: object
      properties:
        defaultValue:
          type: boolean
        recentThresholdMinutes:
          type: integer
          format: int32
        type:
          type: string
      description: Matches events with a recently modified paper document
    TeamsConferenceData:
      required:
      - conferenceUrl
      type: object
      properties:
        conferenceUrl:
          type: string
        entryPoints:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ConferenceEntryPoint'
        type:
          type: string
    Reminder:
      required:
      - minutes
      - reminderType
      type: object
      properties:
        reminderType:
          $ref: '#/components/schemas/ReminderType'
        minutes:
          type: integer
          format: int32
    EventLockAction.LockMode:
      type: string
      enum:
      - LOCK
      - UNLOCK
    SchedulePolicy:
      type: object
      discriminator:
        propertyName: type
        mapping:
          EventConflictPolicy: '#/components/schemas/EventConflictPolicy'
          FocusTimePolicy: '#/components/schemas/FocusTimePolicy'
          LacksRsvpPolicy: '#/components/schemas/LacksRsvpPolicy'
          AttendeeAvailabilityWarningPolicy: '#/components/schemas/AttendeeAvailabilityWarningPolicy'
          BasicEventWarningPolicy: '#/components/schemas/BasicEventWarningPolicy'
          SmartMeetingPolicy: '#/components/schemas/SmartMeetingPolicy'
          ShieldsUpPolicy: '#/components/schemas/ShieldsUpPolicy'
          BufferEventPolicy: '#/components/schemas/BufferEventPolicy'
          LacksVideoConferencePolicy: '#/components/schemas/LacksVideoConferencePolicy'
          HabitPolicy: '#/components/schemas/HabitPolicy'
          UnknownPolicy: '#/components/schemas/UnknownPolicy'
      oneOf:
      - $ref: '#/components/schemas/AttendeeAvailabilityWarningPolicy'
      - $ref: '#/components/schemas/BasicEventWarningPolicy'
      - $ref: '#/components/schemas/BufferEventPolicy'
      - $ref: '#/components/schemas/EventConflictPolicy'
      - $ref: '#/components/schemas/FocusTimePolicy'
      - $ref: '#/components/schemas/HabitPolicy'
      - $ref: '#/components/schemas/LacksRsvpPolicy'
      - $ref: '#/components/schemas/LacksVideoConferencePolicy'
      - $ref: '#/components/schemas/ShieldsUpPolicy'
      - $ref: '#/components/schemas/SmartMeetingPolicy'
      - $ref: '#/components/schemas/UnknownPolicy'
    SlotAvailability:
      required:
      - attendees
      - movabilityScore
      type: object
      properties:
        movabilityScore:
          type: integer
          format: int32
        attendees:
          type: array
          items:
            $ref: '#/components/schemas/AttendeeAvailabilityView'
    AssistType:
      type: string
      enum:
      - TASK
      - CUSTOM_DAILY
      - CATCHUP_AM
      - CATCHUP_PM
      - LUNCH
      - FOCUS
      - TRAVEL_PRE
      - TRAVEL_POST
      - CONBUF
      - SMART_HABIT
      - SMART_MEETING
      - RECLAIM_FOCUS
    ScheduleProblemGroup:
      required:
      - mergedActions
      - problemHashes
      - subject
      type: object
      properties:
        subject:
          $ref: '#/components/schemas/GroupSubjectView'
        problemHashes:
          type: array
          items:
            type: string
        mergedActions:
          type: array
          items:
            $ref: '#/components/schemas/ScheduleActionRefView'
    GtdTask:
      type: object
      discriminator:
        propertyName: type
        mapping:
          GtdGoogleTasksTask: '#/components/schemas/GtdGoogleTasksTask'
          GtdLinearTask: '#/components/schemas/GtdLinearTask'
          GtdJiraTask: '#/components/schemas/GtdJiraTask'
          GtdClickUpTask: '#/components/schemas/GtdClickUpTask'
          GtdAsanaTask: '#/components/schemas/GtdAsanaTask'
          GtdTodoistTask: '#/components/schemas/GtdTodoistTask'
          GtdNotionTask: '#/components/schemas/GtdNotionTask'
          ReclaimTask: '#/components/schemas/ReclaimTask'
      oneOf:
      - $ref: '#/components/schemas/GtdTodoistTask'
      - $ref: '#/components/schemas/GtdGoogleTasksTask'
      - $ref: '#/components/schemas/GtdClickUpTask'
      - $ref: '#/components/schemas/GtdLinearTask'
      - $ref: '#/components/schemas/GtdJiraTask'
      - $ref: '#/components/schemas/GtdAsanaTask'
      - $ref: '#/components/schemas/GtdNotionTask'
      - $ref: '#/components/schemas/ReclaimTask'
    NotEventMatcher:
      required:
      - toNegate
      type: object
      properties:
        toNegate:
          $ref: '#/components/schemas/EventMatcher'
        type:
          type: string
      description: Negates another matcher
    FindANewTimeAction:
      required:
      - eventKey
      - policyId
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        eventKey:
          $ref: '#/components/schemas/EventKey'
        type:
          type: string
    BufferEventData:
      required:
      - bufferEventType
      - bufferTarget
      - policyId
      type: object
      properties:
        bufferTarget:
          $ref: '#/components/schemas/EventKey'
        policyId:
          type: string
          format: uuid
        bufferEventType:
          $ref: '#/components/schemas/BufferEventType'
        bufferEventDateRange:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/EventDateRange'
    TimeOfDayEventMatcher:
      required:
      - operator
      - predicateValue
      - timeField
      type: object
      properties:
        timeField:
          $ref: '#/components/schemas/TimeOfDayEventMatcher.TimeField'
        operator:
          $ref: '#/components/schemas/EventMatcherOperator'
        predicateValue:
          type: string
          format: partial-time
        type:
          type: string
      description: Matches events based on their start or end time of day
    AttendeeDeclined:
      required:
      - declinedAttendeeEmails
      - event
      - policyId
      - policyType
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        policyType:
          $ref: '#/components/schemas/SchedulePolicyType'
        event:
          $ref: '#/components/schemas/EventKey'
        recurringEventId:
          type: string
          nullable: true
        declinedAttendeeEmails:
          t

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