Reclaim.ai schedule-policy API

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

OpenAPI Specification

reclaim-ai-schedule-policy-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Reclaim account-time-schemes schedule-policy 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-policy
paths:
  /api/schedule-policy:
    get:
      tags:
      - schedule-policy
      operationId: listPolicies
      responses:
        '200':
          description: listPolicies 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindSchedulePoliciesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/available-types:
    get:
      tags:
      - schedule-policy
      operationId: availablePolicyTypes
      responses:
        '200':
          description: availablePolicyTypes 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvailablePolicyTypesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/create-default-policies:
    get:
      tags:
      - schedule-policy
      operationId: createDefaultPolicies
      responses:
        '200':
          description: createDefaultPolicies 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindSchedulePoliciesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/event-matcher-tags:
    get:
      tags:
      - schedule-policy
      operationId: getEventMatcherTags
      responses:
        '200':
          description: getEventMatcherTags 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventMatcherTag'
      security:
      - Authorization: []
  /api/schedule-policy/matching-events:
    post:
      tags:
      - schedule-policy
      operationId: findMatchingEvents
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchingEventsRequest'
        required: true
      responses:
        '200':
          description: findMatchingEvents 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchingEventsResponse'
      security:
      - Authorization: []
  /api/schedule-policy/recommended:
    post:
      tags:
      - schedule-policy
      operationId: recommendedPolicies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecommendedPoliciesRequest'
        required: true
      responses:
        '200':
          description: recommendedPolicies 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecommendedPoliciesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/smart-meeting/candidates:
    get:
      tags:
      - schedule-policy
      operationId: findSmartMeetingCandidates
      responses:
        '200':
          description: findSmartMeetingCandidates 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartMeetingCandidatesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/templates:
    get:
      tags:
      - schedule-policy
      operationId: findTemplates
      responses:
        '200':
          description: findTemplates 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindTemplatesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/templates/instantiate-meeting-quality:
    post:
      tags:
      - schedule-policy
      operationId: instantiateMeetingQualityPolicies
      parameters:
      - name: templateIds
        in: query
        required: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTemplateId'
      responses:
        '200':
          description: instantiateMeetingQualityPolicies 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindSchedulePoliciesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/templates/instantiated/{templateId}:
    get:
      tags:
      - schedule-policy
      operationId: instantiateTemplate
      parameters:
      - name: templateId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/PolicyTemplateId'
      responses:
        '200':
          description: instantiateTemplate 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstantiateTemplatesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/{policyId}:
    get:
      tags:
      - schedule-policy
      operationId: findPolicy
      parameters:
      - name: policyId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: findPolicy 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindSchedulePoliciesResponse'
      security:
      - Authorization: []
  /api/schedule-policy/{policyId}/events:
    get:
      tags:
      - schedule-policy
      operationId: findUpcomingPolicyEvents
      parameters:
      - name: policyId
        in: path
        required: true
        schema:
          type: string
      - name: numUpcoming
        in: query
        schema:
          type: integer
          format: int32
          nullable: true
      - name: lookaheadDays
        in: query
        schema:
          type: integer
          format: int32
          nullable: true
      - name: scopeId
        in: query
        schema:
          type: string
          nullable: true
      responses:
        '200':
          description: findUpcomingPolicyEvents 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpcomingPolicyEventsResponse'
      security:
      - Authorization: []
components:
  schemas:
    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'
    FindTemplatesResponse:
      required:
      - templates
      type: object
      properties:
        templates:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTemplate'
    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
    UpcomingPolicyEventsResponse:
      type: object
      discriminator:
        propertyName: type
        mapping:
          UpcomingBufferEventsResponse: '#/components/schemas/UpcomingBufferEventsResponse'
          UpcomingEventsResponse: '#/components/schemas/UpcomingEventsResponse'
          UpcomingManagedEventsResponse: '#/components/schemas/UpcomingManagedEventsResponse'
      oneOf:
      - $ref: '#/components/schemas/UpcomingManagedEventsResponse'
      - $ref: '#/components/schemas/UpcomingEventsResponse'
      - $ref: '#/components/schemas/UpcomingBufferEventsResponse'
    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
    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
    LacksRsvpPolicyTemplate:
      required:
      - category
      - defaultWarningCondition
      - description
      - icon
      - templateId
      - title
      - warningMessage
      type: object
      properties:
        templateId:
          $ref: '#/components/schemas/PolicyTemplateId'
        title:
          type: string
        description:
          type: string
        icon:
          type: string
        category:
          $ref: '#/components/schemas/PolicyTemplateCategory'
        defaultWarningCondition:
          $ref: '#/components/schemas/EventMatcher'
        warningMessage:
          type: string
        type:
          type: string
    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'
    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
    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
    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
    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
    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
    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:
          type: array
          items:
            type: string
        relatedFields:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/CalendarEventField'
        type:
          type: string
    AddFocusEventAction:
      required:
      - end
      - eventKey
      - policyId
      - start
      - title
      type: object
      properties:
        hash:
          type: string
          nullable: true
        policyId:
          type: string
          format: uuid
        eventKey:
          $ref: '#/components/schemas/EventKey'
        title:
          type: string
        start:
          type: string
          format: date-time
   

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