$schema: "http://json-schema.org/draft-06/schema#"

title: gkebackup v1 exclusion windows export schema
description: Specifying the exclusion windows yaml definition
type: object
additionalProperties: false
properties:
  exclusionWindows:
    description: |-
      User specified time windows during which backup can NOT happen for this
      BackupPlan - backups should start and finish outside of any given
      exclusion window. Note: backup jobs will be scheduled to start and finish
      outside the duration of the window as much as possible, but running jobs
      will not get canceled when it runs into the window. All the time and date
      values in exclusion_windows entry in the API are in UTC. We only allow <=1
      recurrence (daily or weekly) exclusion window for a BackupPlan while no
      restriction on number of single occurrence windows.
    type: array
    items:
      type: object
      required:
      - duration
      - startTime
      additionalProperties: false
      properties:
        daily:
          description: |-
            The exclusion window occurs every day if set to "True". Specifying this
            field to "False" is an error.
          type: boolean
        daysOfWeek:
          description: The exclusion window occurs on these days of each week in UTC.
          type: object
          additionalProperties: false
          properties:
            daysOfWeek:
              description: A list of days of week.
              type: array
              items:
                type: string
                enum:
                - DAY_OF_WEEK_UNSPECIFIED
                - FRIDAY
                - MONDAY
                - SATURDAY
                - SUNDAY
                - THURSDAY
                - TUESDAY
                - WEDNESDAY
        duration:
          description: |-
            Specifies duration of the window. Restrictions for duration based on the
            recurrence type to allow some time for backup to
          type: string
        singleOccurrenceDate:
          description: |-
            No recurrence. The exclusion window occurs only once and on this date in
            UTC.
          type: object
          additionalProperties: false
          properties:
            day:
              description: |-
                Day of a month. Must be from 1 to 31 and valid for the year and month, or
                0 to specify a year by itself or a year and month where the day isn't
                significant.
              type: integer
            month:
              description: |-
                Month of a year. Must be from 1 to 12, or 0 to specify a year without a
                month and day.
              type: integer
            year:
              description: |-
                Year of the date. Must be from 1 to 9999, or 0 to specify a date without a
                year.
              type: integer
        startTime:
          description: |-
            Specifies the start time of the window using time of the day in UTC.
          type: object
          additionalProperties: false
          properties:
            hours:
              description: |-
                Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
                to allow the value "24:00:00" for scenarios like business closing time.
              type: integer
            minutes:
              description: Minutes of hour of day. Must be from 0 to 59.
              type: integer
            nanos:
              description: |-
                Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
              type: integer
            seconds:
              description: |-
                Seconds of minutes of the time. Must normally be from 0 to 59. An API may
                allow the value 60 if it allows leap-seconds.
              type: integer
