Charthop timeOffPolicy API

The timeOffPolicy API from Charthop — 7 operation(s) for timeoffpolicy.

OpenAPI Specification

charthop-timeoffpolicy-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: REST API for ChartHop
  version: V1.0.0
  title: ChartHop access timeOffPolicy API
  contact:
    name: ChartHop
    url: https://www.charthop.com
    email: support@charthop.com
host: localhost
schemes:
- https
- http
consumes:
- application/json
produces:
- application/json
tags:
- name: timeOffPolicy
paths:
  /v1/org/{orgId}/timeoff/policy:
    post:
      tags:
      - timeOffPolicy
      summary: Create a time off policy
      operationId: createTimeOffPolicy
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: body
        in: body
        description: TimeOff policy data to create
        required: true
        schema:
          $ref: '#/definitions/CreateTimeOffPolicy'
      responses:
        '201':
          description: created
          schema:
            $ref: '#/definitions/TimeOffPolicy'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
        '500':
          description: Not Implemented
    get:
      tags:
      - timeOffPolicy
      summary: Return all policies in the organization
      operationId: findTimeOffPolicies
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: limit
        in: query
        description: Number of results to return
        required: false
        type: integer
        format: int32
      - name: from
        in: query
        description: From result id
        required: false
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/ResultsTimeOffPolicy'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/timeoff/policy/balances:
    get:
      tags:
      - timeOffPolicy
      summary: Return time off balances for a given policy and date
      operationId: findTimeOffPolicyBalances
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policies
        in: query
        description: Policy Ids to retrieve, comma-separated
        required: false
        type: string
      - name: date
        in: query
        description: Date
        required: false
        type: string
        format: date
      - name: format
        in: query
        description: Data format to use; default is json, can also use json-extended or json-readable
        required: false
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            type: object
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/timeoff/policy/balances/{personId}:
    get:
      tags:
      - timeOffPolicy
      summary: Return time off balances per policy for a given person
      operationId: findTimeOffPolicyBalancesForPerson
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: personId
        in: path
        description: Person ID
        required: true
        type: string
      - name: date
        in: query
        description: Date
        required: false
        type: string
        format: date
      - name: format
        in: query
        description: Data format to use; default is json, can also use json-extended or json-readable
        required: false
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            type: object
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/timeoff/policy/balances/{policyId}:
    post:
      tags:
      - timeOffPolicy
      summary: Adjust time off balances for a group of people on a given policy and effective date
      operationId: updateTimeOffPolicyBalances
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policyId
        in: path
        description: Policy id associated with balances
        required: true
        type: string
      - name: date
        in: query
        description: Effective Date
        required: false
        type: string
        format: date
      - name: enterMatching
        in: query
        description: Add adjustment even if it matches current balance
        required: false
        type: boolean
      - name: body
        in: body
        description: Balances to adjust
        required: true
        schema:
          $ref: '#/definitions/TimeOffBalanceAdjustmentBody'
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Process'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
  /v1/org/{orgId}/timeoff/policy/{policyId}:
    get:
      tags:
      - timeOffPolicy
      summary: Return a particular time off policy by id
      operationId: getTimeOffPolicy
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policyId
        in: path
        description: TimeOff policy id
        required: true
        type: string
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/TimeOffPolicy'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
    patch:
      tags:
      - timeOffPolicy
      summary: Update an existing time off policy
      operationId: updateTimeOffPolicy
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policyId
        in: path
        description: TimeOff id
        required: true
        type: string
      - name: body
        in: body
        description: TimeOff data to update
        required: true
        schema:
          $ref: '#/definitions/UpdateTimeOffPolicy'
      responses:
        '204':
          description: no content
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
        '500':
          description: Not Implemented
    delete:
      tags:
      - timeOffPolicy
      summary: Delete a time off request
      operationId: deleteTimeOffPolicy
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policyId
        in: path
        description: TimeOff policy id
        required: true
        type: string
      responses:
        '204':
          description: time off policy deleted
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
        '500':
          description: Not Implemented
  /v1/org/{orgId}/timeoff/policy/{policyId}/duplicate:
    post:
      tags:
      - timeOffPolicy
      summary: Duplicate a time off policy
      operationId: duplicateTimeOffPolicy
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policyId
        in: path
        description: TimeOff policy id
        required: true
        type: string
      responses:
        '201':
          description: created
          schema:
            $ref: '#/definitions/TimeOffPolicy'
        '400':
          description: invalid data
        '403':
          description: permission denied
        '404':
          description: not found
  /v1/org/{orgId}/timeoff/policy/{policyId}/estimateAccruals:
    post:
      tags:
      - timeOffPolicy
      summary: Estimate accrual value for policy
      operationId: estimateAccrualForPolicy
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: orgId
        in: path
        description: Org identifier (either id or slug)
        required: true
        type: string
      - name: policyId
        in: path
        description: TimeOff policy id
        required: true
        type: string
      - name: body
        in: body
        description: TimeOff policy data to estimate from
        required: true
        schema:
          $ref: '#/definitions/UpdateTimeOffPolicy'
      responses:
        '202':
          description: accepted
          schema:
            $ref: '#/definitions/EstimatedAccrual'
        '400':
          description: bad request
        '401':
          description: not authorized
        '404':
          description: not found
        '500':
          description: Not Implemented
definitions:
  AccessAction:
    type: object
    required:
    - action
    properties:
      action:
        type: string
      fields:
        type: array
        uniqueItems: true
        items:
          type: string
      types:
        type: array
        uniqueItems: true
        items:
          type: string
  TimeOffBalanceAdjustmentBody:
    type: object
    required:
    - balances
    properties:
      balances:
        type: array
        items:
          $ref: '#/definitions/RequestedBalanceAdjustment'
  RequestedBalanceAdjustment:
    type: object
    required:
    - personId
    properties:
      personId:
        type: string
        description: person id
        example: 588f7ee98f138b19220041a7
      days:
        type: number
        description: adjusted balance in days
  ResultsTimeOffPolicy:
    type: object
    required:
    - data
    properties:
      data:
        type: array
        items:
          $ref: '#/definitions/TimeOffPolicy'
      next:
        type: string
      access:
        type: array
        items:
          $ref: '#/definitions/ResultsAccess'
  ResultsAccess:
    type: object
    required:
    - allowed
    properties:
      ids:
        type: array
        uniqueItems: true
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      allowed:
        type: array
        uniqueItems: true
        items:
          $ref: '#/definitions/AccessAction'
  Process:
    type: object
    required:
    - id
    - orgId
    - label
    - type
    - status
    - runUserId
    - createId
    - createAt
    - options
    properties:
      id:
        type: string
        description: globally unique id
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: parent org id
        example: 588f7ee98f138b19220041a7
      label:
        type: string
        description: human-readable label that identifies this process
      type:
        type: string
        description: process type
      status:
        type: string
        description: current status of process
        enum:
        - PENDING
        - RUNNING
        - DONE
        - ERROR
      filePath:
        type: string
        description: data file path
      logPath:
        type: string
        description: data log path
      runUserId:
        type: string
        description: user id who is running the process
        example: 588f7ee98f138b19220041a7
      parentProcessId:
        type: string
        description: process id of parent process
        example: 588f7ee98f138b19220041a7
      createId:
        type: string
        description: created by user id (user who requested the process run)
        example: 588f7ee98f138b19220041a7
      createBehalfId:
        type: string
        description: created on behalf of user id
        example: 588f7ee98f138b19220041a7
      createAttribution:
        $ref: '#/definitions/Attribution'
      createAt:
        type: string
        description: created timestamp
        example: '2017-01-24T13:57:52Z'
      updateId:
        type: string
        description: last updated by user id
        example: 588f7ee98f138b19220041a7
      updateBehalfId:
        type: string
        description: last updated on behalf of user id
        example: 588f7ee98f138b19220041a7
      updateAttribution:
        $ref: '#/definitions/Attribution'
      updateAt:
        type: string
        description: last updated timestamp
        example: '2017-01-24T13:57:52Z'
      startAt:
        type: string
        description: started at timestamp
        example: '2017-01-24T13:57:52Z'
      endAt:
        type: string
        description: ended at timestamp
        example: '2017-01-24T13:57:52Z'
      message:
        type: string
        description: status or error message
      progress:
        type: number
        format: double
        description: percent progress so far
      internalError:
        type: string
        description: internal-only error message
      options:
        type: object
        description: options passed to the process
      results:
        type: object
        description: results summary for the process
        additionalProperties:
          type: object
      logDataList:
        type: array
        description: list of log data that occurred during running of this process
        items:
          $ref: '#/definitions/LogData'
      state:
        type: object
        description: process-specific state data
      summary:
        type: string
        description: human-readable, searchable summary of what this process did
      appId:
        type: string
        description: app id of the process
        example: 588f7ee98f138b19220041a7
      uuid:
        type: string
        description: unique ID of the process at queue time
        example: 84db3c6e-0877-4436-8af1-768c06b29586
  LogData:
    type: object
    required:
    - level
    - at
    - data
    properties:
      level:
        type: string
        enum:
        - INFO
        - WARN
        - ERROR
      at:
        type: string
        description: created timestamp
        example: '2017-01-24T13:57:52Z'
      message:
        type: string
      data:
        type: object
        additionalProperties:
          type: object
  PolicyEvent:
    type: object
    required:
    - dateExpr
    - action
    properties:
      dateExpr:
        type: string
      action:
        $ref: '#/definitions/PolicyAction'
      noteExpr:
        type: string
      groupId:
        type: string
        example: 588f7ee98f138b19220041a7
      title:
        type: string
        description: Display name for the milestone group this event belongs to
        example: Tenure milestones
        minItems: 1
        maxItems: 80
  AccrualConfig:
    type: object
    required:
    - frequency
    - accrualOffsetFromStartDate
    properties:
      frequency:
        type: string
        enum:
        - SEMI_MONTHLY
        - MONTHLY
        - WEEKLY
      monthlyDaysOfMonth:
        type: array
        items:
          type: integer
          format: int32
      weeklyStartDate:
        type: string
        format: date
      weeklyIncrement:
        type: integer
        format: int32
      balanceCapInWholeDays:
        type: integer
        format: int32
      accrualOffsetFromStartDate:
        type: integer
        format: int32
  Attribution:
    type: object
    properties:
      principalUserId:
        type: string
        example: 588f7ee98f138b19220041a7
      agentUserIds:
        type: array
        items:
          type: string
          example: 588f7ee98f138b19220041a7
      eventId:
        type: string
        example: 588f7ee98f138b19220041a7
      aiChatId:
        type: string
        example: 588f7ee98f138b19220041a7
      aiToolUseId:
        type: string
      channel:
        type: string
        enum:
        - WEB
        - MOBILE
        - SLACK
        - TEAMS
        - MCP
  TimeOffPolicy:
    type: object
    required:
    - id
    - orgId
    - name
    - status
    - filter
    properties:
      id:
        type: string
        description: Globally unique id of time off policy
        example: 588f7ee98f138b19220041a7
      orgId:
        type: string
        description: Org that the time off belongs to
        example: 588f7ee98f138b19220041a7
      name:
        type: string
        description: Internal policy name
        example: US Part-Time/Intern
        minItems: 1
        maxItems: 80
      displayName:
        type: string
        description: External policy name displayed to users
        example: PTO
        minItems: 1
        maxItems: 80
      description:
        type: string
        description: Policy description
        example: Annual sick days allotted to employees
        minItems: 0
        maxItems: 2000
      guidelines:
        type: string
        description: Policy guidelines
        minItems: 0
        maxItems: 2000
      type:
        type: string
        description: Type of policy to be created
        enum:
        - PTO
        - TOIL
        - VACATION
        - SICK
        - MEDICAL
        - JURY
        - OFFSITE
        - PARENTAL
        - UNPAID
        - DISABILITY_SHORT
        - DISABILITY_LONG
        - BEREAVEMENT
        - MILITARY
        - RELIGIOUS
        - VOTING
        - VOLUNTEER
        - UNKNOWN
      status:
        type: string
        description: Status of the policy
        enum:
        - ACTIVE
        - INACTIVE
      allocationType:
        type: string
        description: Whether the time off is accrued, received upfront, or is an unlimited policy
        enum:
        - UPFRONT
        - UNLIMITED
        - ACCRUAL
      annualAllocation:
        type: number
        description: Number of days allocated annually
      accrualConfig:
        description: Configuration for how time off is accrued.
        $ref: '#/definitions/AccrualConfig'
      maxConsecutiveDaysPerRequest:
        type: number
        description: An optional max number of days allowed per request
      minBalance:
        type: number
        description: An optional minimum balance
      enableCarryOverBalance:
        type: boolean
        description: Enable carry over balance.
      maxCarryOverBalance:
        type: number
        description: An optional maximum carry over balance
      carryOverExpirationDate:
        type: string
        description: Month and day of carry over expiration.
      carryOverExpirationMonths:
        type: integer
        format: int32
        description: Months after carry over date that carry over expires.
      enablePartialDayRequests:
        type: boolean
        description: Allow half day requests
      partialDayGranularity:
        type: number
        description: Partial day requests can only be made down to this level of granularity (i.e. request % granularity == 0)
      enablePartialDayPeriod:
        type: boolean
        description: Allow specifying periods of time (e.g. AM, PM) for partial days
      disableRequests:
        type: boolean
        description: Whether to disable time off requests for this policy
      noteRequired:
        type: boolean
        description: Whether a note is required for time off requests
      filter:
        type: string
        description: CQL used to determine which jobs the policy applies to
      holidayCalendarId:
        type: string
        description: an associated holiday calendar, days on this calendar are not deducted from the time off balance
        example: 588f7ee98f138b19220041a7
      disableProratedAllocation:
        type: boolean
        description: whether limited allocation policies are prorated based on person start date
      prorationRounding:
        type: string
        description: rounding method for prorating calculations
        enum:
        - UP
        - NEAREST
        - HALF
      yearStartDate:
        type: string
        description: Month and day of policy year rollover. Defaults to January 1.
      policyFromDate:
        type: string
        format: date
        description: The date on which this policy's balance/accrual settings come into effect. The policy may have entries before this date, but it will not generate e.g. accrual entries.
      policyUntilDate:
        type: string
        format: date
        description: The first date after this policy's balance/accrual settings end (i.e. the exclusive end date). The policy may have entries after this date, but it will not generate e.g. accrual entries.
      workDays:
        type: array
        description: Days of the week that count against the time off balance. Defaults to Monday through Friday if not set.
        uniqueItems: true
        items:
          type: string
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
      policyEvents:
        type: array
        items:
          $ref: '#/definitions/PolicyEvent'
      createId:
        type: string
        description: created by user id
        example: 588f7ee98f138b19220041a7
      createBehalfId:
        type: string
        description: created on behalf of user id
        example: 588f7ee98f138b19220041a7
      createAttribution:
        $ref: '#/definitions/Attribution'
      createAt:
        type: string
        description: created timestamp
        example: '2017-01-24T13:57:52Z'
      updateAt:
        type: string
        description: updated timestamp
        example: '2017-01-24T13:57:52Z'
      updateId:
        type: string
        description: updated by user id
        example: 588f7ee98f138b19220041a7
      updateBehalfId:
        type: string
        description: last updated on behalf of user id
        example: 588f7ee98f138b19220041a7
      updateAttribution:
        $ref: '#/definitions/Attribution'
      deleteId:
        type: string
        description: deleted by user id
        example: 588f7ee98f138b19220041a7
      deleteBehalfId:
        type: string
        description: deleted on behalf of user id
        example: 588f7ee98f138b19220041a7
      deleteAttribution:
        $ref: '#/definitions/Attribution'
      deleteAt:
        type: string
        description: deleted timestamp
        example: '2017-01-24T13:57:52Z'
  PolicyAction:
    type: object
    required:
    - type
    properties:
      type:
        type: string
        enum:
        - OPEN
        - CLOSE
        - MOD_ALLOCATION
        - ADJUST
        - TRANSFER
        - PRORATED_MOD
        - FULL_MOD
      exprString:
        type: string
  EstimatedAccrual:
    type: object
    required:
    - daysPerPeriod
    properties:
      daysPerPeriod:
        type: number
  UpdateTimeOffPolicy:
    type: object
    properties:
      name:
        type: string
        description: Internal policy name
        example: US Part-Time/Intern
        minItems: 1
        maxItems: 80
      displayName:
        type: string
        description: External policy name displayed to users
        example: PTO
        minItems: 1
        maxItems: 80
      description:
        type: string
        description: Policy description
        example: Annual sick days allotted to employees
        minItems: 0
        maxItems: 2000
      guidelines:
        type: string
        description: Policy guidelines
        minItems: 0
        maxItems: 2000
      type:
        type: string
        description: Type of policy to be created
        enum:
        - PTO
        - TOIL
        - VACATION
        - SICK
        - MEDICAL
        - JURY
        - OFFSITE
        - PARENTAL
        - UNPAID
        - DISABILITY_SHORT
        - DISABILITY_LONG
        - BEREAVEMENT
        - MILITARY
        - RELIGIOUS
        - VOTING
        - VOLUNTEER
        - UNKNOWN
      status:
        type: string
        description: Status of the policy
        enum:
        - ACTIVE
        - INACTIVE
      allocationType:
        type: string
        description: Whether the time off is accrued, received upfront, or is an unlimited policy
        enum:
        - UPFRONT
        - UNLIMITED
        - ACCRUAL
      annualAllocation:
        type: number
        description: Number of days allocated annually
      accrualConfig:
        description: Configuration for how time off is accrued.
        $ref: '#/definitions/AccrualConfig'
      maxConsecutiveDaysPerRequest:
        type: number
        description: An optional max number of days allowed per request
      minBalance:
        type: number
        description: An optional minimum balance
      enableCarryOverBalance:
        type: boolean
        description: Enable carry over balance.
      maxCarryOverBalance:
        type: number
        description: An optional maximum carry over balance
      carryOverExpirationDate:
        type: string
        description: Month and day of carry over expiration.
      carryOverExpirationMonths:
        type: integer
        format: int32
        description: Months after carry over date that carry over expires.
      enablePartialDayRequests:
        type: boolean
        description: Allow half day requests
      partialDayGranularity:
        type: number
        description: Partial day requests can only be made down to this level of granularity (i.e. request % granularity == 0)
      enablePartialDayPeriod:
        type: boolean
        description: Allow specifying periods of time (e.g. AM, PM) for partial days
      disableRequests:
        type: boolean
        description: Whether to disable time off requests for this policy
      noteRequired:
        type: boolean
        description: Whether a note is required for time off requests
      filter:
        type: string
        description: CQL used to determine which jobs the policy applies to
      holidayCalendarId:
        type: string
        description: an associated holiday calendar, days on this calendar are not deducted from the time off balance
        example: 588f7ee98f138b19220041a7
      disableProratedAllocation:
        type: boolean
        description: whether limited allocation policies are prorated based on person start date
      prorationRounding:
        type: string
        description: rounding method for prorating calculations
        enum:
        - UP
        - NEAREST
        - HALF
      yearStartDate:
        type: string
        description: Month and day of policy year rollover. Defaults to January 1.
      policyFromDate:
        type: string
        format: date
        description: The date on which this policy's balance/accrual settings come into effect. The policy may have entries before this date, but it will not generate e.g. accrual entries.
      policyUntilDate:
        type: string
        format: date
        description: The first date after this policy's balance/accrual settings end (i.e. the exclusive end date). The policy may have entries after this date, but it will not generate e.g. accrual entries.
      workDays:
        type: array
        description: Days of the week that count against the time off balance. Defaults to Monday through Friday if not set.
        uniqueItems: true
        items:
          type: string
          enum:
          - MONDAY
          - TUESDAY
          - WEDNESDAY
          - THURSDAY
          - FRIDAY
          - SATURDAY
          - SUNDAY
      policyEvents:
        type: array
        items:
          $ref: '#/definitions/PolicyEvent'
  CreateTimeOffPolicy:
    type: object
    required:
    - name
    - type
    - status
    - allocationType
    - filter
    properties:
      name:
        type: string
        description: Internal policy name
        example: US Part-Time/Intern
        minItems: 1
        maxItems: 80
      displayName:
        type: string
        description: External policy name displayed to users
        example: PTO
        minItems: 1
        maxItems: 80
      description:
        type: string
        description: Policy description
        example: Annual sick days allotted to employees
        minItems: 0
        maxItems: 2000
      guidelines:
        type: string
        description: Policy guidelines
        minItems: 0
        maxItems: 2000
      type:
        type: string
        description: Type of policy to be created
        enum:
        - PTO
        - TOIL
        - VACATION
        - SICK
        - MEDICAL
        - JURY
        - OFFSITE
        - PARENTAL
        - UNPAID
        - DISABILITY_SHORT
        - DISABILITY_LONG
        - BEREAVEMENT
        - MILITARY
        - RELIGIOUS
        - VOTING
        - VOLUNTEER
        - UNKNOWN
      status:
        type: string
        description: Status of the policy
        enum:
        - ACTIVE
        - INACTIVE
      allocationType:
        type: string
        description: Whether the time off is accrued, received upfront, or is an unlimited policy
        enum:
        - UPFRONT
        - UNLIMITED
        - ACCRUAL
      annualAllocation:
        type: number
        description: Number of days allocated annually
      accrualConfig:
        description: Configuration for how time off is accrued.
        $ref: '#/definitions/AccrualConfig'
      maxConsecutiveDaysPerRequest:
        type: number
        description: An optional max number of days allowed per request
      minBalance:
        type: number
        description: An optional minimum balance
      enableCarryOverBalance:
        type: boolean
        description: Enable carry over balance.
      maxCarryOverBalance:
        type: number
        description: An optional maximum carry over balance
      carryOverExpirationDate:
        type: string
        description: Month and day of carry over expiration.
      carryOverExpirationMonths:
        type: integer
        format: int32
        description: Months after carry over date that carry over expires.
      enablePartialDayRequests:
        type: boolean
        description: Allow half day requests
      partialDayGranularity:
        type: number
        description: Partial day requests can only be made down to this level of granularity (i.e. request % granularity == 0)
      enablePartialDayPeriod:
        type: boolean
        description: Allow specifying periods of time (e.g. AM, PM) for partial days
      disableRequests:
        type: boolean
        description: Whether to disable time off requests for this policy
      noteRequired:
        type: boolean
        description: Whether a note is required for time off requests
      filter:
        type: string
        description: CQL used to determine which jobs the policy applies to
      holidayCalendarId:
        type: string
        description: an associated holiday calendar, days on this calendar are not deducted from the time off balance
        example: 588f7ee98f138b19220041a7
      disableProratedAllocation:
        type: boolean
        description: whether limited allocation policies are prorated based on person start date
      prorationRounding:
        type: string
        description: rounding method for prorating calculations
        enum:
        - UP
        - NEAREST
        - HALF
      yearStartDate:
        type: string
        description: Month and day of policy year rollover. Defaults t

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