> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solvice.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Solve Fill

> Will trigger the solver run.



## OpenAPI

````yaml fill POST /v2/fill/solve
openapi: 3.1.0
info:
  description: |2-

                Welcome to the Solvice API! You can use our API to access Solvice API endpoints,
                which can get information on your solved jobs,
                their statuses and of course post new solve jobs.
            
  title: FILL API
  version: '2.0'
servers:
  - url: https://api.solvice.io
    description: Production API
security:
  - apikey: []
tags:
  - name: FILL API
    description: FILL API
paths:
  /v2/fill/solve:
    post:
      tags:
        - Actions
      summary: Solve
      description: Will trigger the solver run.
      operationId: solveFILL
      parameters:
        - name: millis
          in: query
          schema:
            type:
              - string
              - 'null'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FillRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolviceStatusJob'
        '400':
          description: Bad Request
components:
  schemas:
    FillRequest:
      type: object
      required:
        - shifts
        - employees
      description: FILL request for solving, evaluating
      properties:
        employees:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/Employee'
          description: List of employees
          title: employees
        shifts:
          type: array
          minItems: 1
          uniqueItems: true
          items:
            $ref: '#/components/schemas/FillShift'
          description: List of shifts that should be assigned to employees
        rules:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RuleDto'
          description: List of Rules. Rules can be Counters or Series.
        rests:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/Rest'
          description: >-
            List of Rest definitions. A rest is defined for a fixed period or a
            duration.
        demands:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ShiftDemand1'
          description: >-
            List of shift demands. Demands are periodic minima and maxima for a
            certain number of employees to be present.
        patterns:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/Pattern'
          description: >-
            List of shift patterns. Patterns are sequences of shifts that can be
            desired or prohibited.
        fairnessBuckets:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/FairnessBucket'
          description: >-
            Buckets or groups of employees where fairness in workload is
            required.
        requirements:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/SharedResourceRequirement'
          description: >-
            List of shared skill requirements. Shared skills are skill
            requirements that govern a group of shifts.
        assignments:
          type:
            - array
            - 'null'
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ShiftFillingAssignmentInputDto'
          description: List of assignments that are pre-set. (optional)
        weights:
          type:
            - object
            - 'null'
          description: Weights adjust objectives and scores.
          anyOf:
            - $ref: '#/components/schemas/FillWeights'
            - type: 'null'
        options:
          type: object
          description: Options for tuning the solver
          anyOf:
            - $ref: '#/components/schemas/FillOptions'
            - type: 'null'
        hook:
          type:
            - string
            - 'null'
          format: uri
          description: Webhook endpoint to receive POST request with the id.
        label:
          type:
            - string
            - 'null'
          maxLength: 255
          pattern: ^(?!.*\$\{).*$
    SolviceStatusJob:
      type: object
      required:
        - id
      description: Status of a solve job
      title: ''
      properties:
        id:
          type: string
          description: Job ID
        status:
          type:
            - string
            - 'null'
          enum:
            - QUEUED
            - SOLVING
            - SOLVED
            - ERROR
          examples:
            - SOLVING
          description: Status of the solve.
        solveDuration:
          type:
            - integer
            - 'null'
          format: int32
          description: Duration of the solve in seconds
        errors:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Message'
          description: List of errors
        warnings:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Message'
          description: List of warnings
    Employee:
      type: object
      required:
        - name
      maxItems: 500
      description: Employee that can be assigned to a shift
      properties:
        name:
          type: string
          maxLength: 255
          pattern: ^(?!.*\$\{)[^<>"';`\\\x00]*$
          description: Name of the employee (unique)
        home:
          type:
            - object
            - 'null'
          description: >-
            Home location of the employee. The solver will then optimize total
            travel time.
          anyOf:
            - $ref: '#/components/schemas/ShiftLocation'
            - type: 'null'
        availability:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/DateTimeWindow'
          description: Availability of the employee
        preference:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Shift preferences of the employee. List of shift tags.
        skills:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Skill'
          description: Skills of the employee
        hourlyPay:
          type:
            - number
            - 'null'
          format: double
          description: >-
            Hourly pay of the employee. The solver will then optimize the cost
            of the planning.
        efficiency:
          type:
            - number
            - 'null'
          format: double
          description: Efficiency of the employee
        periodRules:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PeriodRuleDto'
          description: Rules that hold for the entire period.
        contracts:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Contract'
    FillShift:
      type: object
      required:
        - name
        - from
        - to
        - min
        - max
      description: Shift to be filled
      properties:
        name:
          type: string
          maxLength: 255
          pattern: ^(?!.*\$\{)[^<>"';`\\\x00]*$
          description: Name of the shift
        from:
          $ref: '#/components/schemas/LocalDateTime'
          type: string
          description: Start time of the shift
        to:
          $ref: '#/components/schemas/LocalDateTime'
          type: string
          description: End time of the shift
        min:
          type:
            - integer
            - 'null'
          format: int32
          description: Minimum number of employees assigned to this shift.
        max:
          type:
            - integer
            - 'null'
          format: int32
          description: Maximum number of employees assigned to this shift.
        tags:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/ShiftTagDto'
          description: Shift tags. Used to identify groups of shifts in rules.
        skills:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/SkillRequirement'
          description: Skills required for the shift
        priority:
          type:
            - integer
            - 'null'
          format: int64
          description: Priority of the shift. High priority shifts get assigned more
          minimum: 0
        cost:
          type:
            - integer
            - 'null'
          format: int64
          description: Financial cost of the shift
          minimum: 0
        rests:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Rest'
          description: Shift rests can define required idle/rest time after the shift.
        blocklist:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Maximum number of employees assigned to this shift.
        value:
          type:
            - integer
            - 'null'
          format: int32
        employees:
          type:
            - array
            - 'null'
          items:
            type: string
        locked:
          type:
            - array
            - 'null'
          items:
            type: boolean
        location:
          anyOf:
            - $ref: '#/components/schemas/ShiftLocation'
            - type: 'null'
    RuleDto:
      type: object
      required:
        - constraint
        - type
      description: Rule that the solver needs to take into account.
      properties:
        constraint:
          $ref: '#/components/schemas/ConstraintType'
          type: string
          description: >-
            Type of constraint. `COUNTER` or `SEQUENCE`. A counter counts the
            number of occurances and the constraint 
        type:
          $ref: '#/components/schemas/RuleType'
          type: string
          description: >-
            Type of rule. `HOURS_WORKED`, `DAYS_WORKED`, `DAYS_IDLE`,
            `WEEKENDS_WORKED`, `WEEKENDS_IDLE`, `SHIFT_TYPES_WORKED` or
            `SHIFT_TYPES_HOURS_WORKED`
        period:
          type:
            - object
            - 'null'
          description: Period for which this rule holds
          anyOf:
            - $ref: '#/components/schemas/Period'
            - type: 'null'
        min:
          type:
            - integer
            - 'null'
          format: int32
          description: Minimum number of employees necessary to fill these shifts.
        max:
          type:
            - integer
            - 'null'
          format: int32
          description: >-
            Maximum number of employees necessary to fill these shifts. If
            min==max then you'll get that exact amount of employees.
        shifts:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            Shift tags to filter this rule by. For example only shifts with the
            tag `EARLY`.
        then:
          type:
            - object
            - 'null'
          description: Period rule. Consequence of this rule.
          anyOf:
            - $ref: '#/components/schemas/RuleDto'
            - type: 'null'
    Rest:
      type: object
      description: Rest time before and after shifts
      properties:
        periodType:
          type:
            - string
            - 'null'
          description: Rest type (`CONSECUTIVE` or `WEEKLY`)
          anyOf:
            - $ref: '#/components/schemas/PeriodType'
            - type: 'null'
        tags:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Filter by shift tag
        excludes:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Filter by shift tag excludes
        period:
          type:
            - object
            - 'null'
          description: Planning Period
          anyOf:
            - $ref: '#/components/schemas/Period'
            - type: 'null'
        min:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Minimum duration
        minConsecutive:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Minimum consecutive duration of a rest.
        max:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Maximum duration
        frequency:
          type:
            - integer
            - 'null'
          format: int32
          description: Maximum number of rest periods
        sequence:
          type:
            - string
            - 'null'
          description: >-
            If the rest needs to be `BEFORE` or `AFTER` a shift (`tags` must be
            applied as well) 
          anyOf:
            - $ref: '#/components/schemas/RestSequenceType'
            - type: 'null'
    ShiftDemand1:
      type: object
      required:
        - from
        - to
        - skills
        - name
      description: >-
        The number of employees you need at time intervals defined by
        `from`/`to`.
      properties:
        from:
          $ref: '#/components/schemas/LocalDateTime'
          type: string
          examples:
            - '2022-03-10T12:15:50-04:00'
          description: The start time of the shift demand
        to:
          $ref: '#/components/schemas/LocalDateTime'
          type: string
          examples:
            - '2022-03-10T12:15:50-04:00'
          description: The end time of the shift demand
        skills:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/SkillRequirement'
          description: The skills required for the shift demand
        min:
          type:
            - integer
            - 'null'
          format: int64
          description: The minimum number of shifts to create
        max:
          type:
            - integer
            - 'null'
          format: int64
          description: The maximum number of shifts to create
        name:
          type: string
          maxLength: 255
          pattern: ^(?!.*\$\{)[^<>"';`\\\x00]*$
    Pattern:
      type: object
      description: >-
        Pattern to describe (un)desired series of shifts. Based on a `satisfy`
        type (`PREFERRED`, `PROHIBITED`, or `UNPREFERRED`)
      properties:
        type:
          type:
            - string
            - 'null'
          description: >-
            `SINGLE_DAY` (spanning shifts in a single days) or `MULTI_DAY`
            (spanning shifts accross days)
          anyOf:
            - $ref: '#/components/schemas/PatternType'
            - type: 'null'
        satisfy:
          type:
            - string
            - 'null'
          description: (`PREFERRED`, `PROHIBITED`, or `UNPREFERRED`)
          anyOf:
            - $ref: '#/components/schemas/SatisfyType'
            - type: 'null'
        elements:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PatternElement'
          description: List of Pattern Elements describing `ON`/`OFF` for several shifts
        weight:
          type:
            - integer
            - 'null'
          format: int32
          description: Importance (weight) of the Pattern
    FairnessBucket:
      type: object
      required:
        - employees
        - shifts
        - target
      description: >-
        A FairnessBucket defines a group of Employees that should have fair
        shifts over the predefined shifts.
      properties:
        period:
          type: object
          description: >-
            The period over which the fairness bucket applies. Default is over
            the entire planning period.
          anyOf:
            - $ref: '#/components/schemas/Period'
            - type: 'null'
        employees:
          type: array
          items:
            type: string
          description: The employees in the fairness bucket
        shifts:
          type: array
          items:
            type: string
          description: The shifts in the fairness bucket
        target:
          type: string
          format: ''
          examples:
            - PT8H
          description: The target value of workload per employee
    SharedResourceRequirement:
      type: object
      required:
        - shifts
        - skill
        - value
      description: An optional list of shared resource requirements
      properties:
        shifts:
          type: array
          items:
            type: string
          description: List of shifts that the requirement applies to
        skill:
          type: string
          description: The skill this requirement applies to
        value:
          type: integer
          format: int32
          description: The number of shared resources required for this skill.
    ShiftFillingAssignmentInputDto:
      type: object
      required:
        - shift
        - employee
      description: Input assignment
      properties:
        shift:
          type: string
          description: Name of the shift
        employee:
          type: string
          description: Name of the employee
        locked:
          type: boolean
          description: >-
            If the shift is locked. Locked shifts cannot be touched by the
            solver
    FillWeights:
      type: object
      properties:
        unassigned:
          type:
            - string
            - 'null'
        maxWorkingDays:
          type:
            - string
            - 'null'
        concurrent:
          type:
            - string
            - 'null'
        sameDay:
          type:
            - string
            - 'null'
        minRest:
          type:
            - string
            - 'null'
        maxConsecutive:
          type:
            - string
            - 'null'
        working:
          type:
            - string
            - 'null'
        sameDayMinRest:
          type:
            - string
            - 'null'
        minHours:
          type:
            - string
            - 'null'
        minHoursUnassigned:
          type:
            - string
            - 'null'
        maxHours:
          type:
            - string
            - 'null'
        minShift:
          type:
            - string
            - 'null'
        maxShift:
          type:
            - string
            - 'null'
        shiftStart:
          type:
            - string
            - 'null'
        latestShiftStart:
          type:
            - string
            - 'null'
        shiftEnd:
          type:
            - string
            - 'null'
        dayOfWeek:
          type:
            - string
            - 'null'
        requirements:
          type:
            - string
            - 'null'
        availability:
          type:
            - string
            - 'null'
        skills:
          type:
            - string
            - 'null'
        criticalSkills:
          type:
            - string
            - 'null'
        locked:
          type:
            - string
            - 'null'
        blacklist:
          type:
            - string
            - 'null'
        pref:
          type:
            - string
            - 'null'
        costs:
          type:
            - string
            - 'null'
        wages:
          type:
            - string
            - 'null'
        efficiency:
          type:
            - string
            - 'null'
        distance:
          type:
            - string
            - 'null'
        distanceAL:
          type:
            - string
            - 'null'
        priority:
          type:
            - string
            - 'null'
        softSkills:
          type:
            - string
            - 'null'
        softSkillsLevel:
          type:
            - string
            - 'null'
        fairness:
          type:
            - string
            - 'null'
    FillOptions:
      type: object
      properties:
        hardAvailability:
          type:
            - boolean
            - 'null'
          description: Whether to enforce availability constraints
        hardSkill:
          type:
            - boolean
            - 'null'
          description: Whether to enforce skill constraints
        hardBlacklist:
          type:
            - boolean
            - 'null'
          description: Whether to enforce blacklist constraints
        partialPlanning:
          type:
            - boolean
            - 'null'
          description: >-
            Partial planning. Whether to fill all shifts or not. Default is
            false
        penaliseZeroHours:
          type:
            - boolean
            - 'null'
          description: Whether to penalise employees with zero hours
        useAvailabilityLocations:
          type:
            - boolean
            - 'null'
          description: Whether to use availability locations
        alwaysScoreSharedSkills:
          type:
            - boolean
            - 'null'
          description: Whether to always score shared skills
        explanation:
          type: object
          description: Explanation options.
          anyOf:
            - $ref: '#/components/schemas/FillExplanation'
            - type: 'null'
        idleWeekend:
          type: object
          description: Idle weekend definition.
          anyOf:
            - $ref: '#/components/schemas/IdleWeekendDefinition'
            - type: 'null'
    Message:
      type: object
      required:
        - message
      description: Error or warning message
      properties:
        code:
          type: integer
          format: int32
          description: Error code
        message:
          type: string
          description: Error message
    ShiftLocation:
      type: object
      description: Location
      properties:
        lat:
          type: number
          format: double
          examples:
            - 51.12042
          description: latitude of the location
        lon:
          type: number
          format: double
          examples:
            - 4.23054
          description: longitude of the location
    DateTimeWindow:
      type: object
      required:
        - from
        - to
      description: "Time window of availability. If no location is provided, the solver will not take into account travel time.\t"
      properties:
        from:
          $ref: '#/components/schemas/LocalDateTime'
          type: string
          description: start time of the window
        to:
          $ref: '#/components/schemas/LocalDateTime'
          type: string
          description: end time of the window
        location:
          type:
            - object
            - 'null'
          description: location of the window
          anyOf:
            - $ref: '#/components/schemas/ShiftLocation'
            - type: 'null'
    Skill:
      type: object
      required:
        - name
      description: Employee skill
      properties:
        name:
          type: string
          description: name of the skill
        expiry:
          type:
            - string
            - 'null'
          description: expiry date of the skill
          anyOf:
            - $ref: '#/components/schemas/LocalDate'
            - type: 'null'
        weight:
          type:
            - integer
            - 'null'
          format: int32
          description: weight of the skill
        period:
          anyOf:
            - $ref: '#/components/schemas/Period'
            - type: 'null'
    PeriodRuleDto:
      type: object
      properties:
        period:
          type:
            - object
            - 'null'
          description: Period of the rule. The rule only applies to this period
          anyOf:
            - $ref: '#/components/schemas/Period'
            - type: 'null'
        maxWorkingDays:
          type:
            - integer
            - 'null'
          format: int32
          description: Maximum number of working days in the period.
        minWorkingDays:
          type:
            - integer
            - 'null'
          format: int32
          description: Minimum number of working days in the period.
        minWorkingDuration:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Minimum working duration in the period. Not including travel time
        maxWorkingDuration:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Maximum working duration in the period. Not including travel time
        minRestDurationBetweenShiftsSameDay:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Minimum rest duration between shifts in the same day
        minRestDuration:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: Minimum rest duration between shifts
        maxShiftLength:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: maximum shift length
        minShiftLength:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: minimum shift length
        latestShiftStart:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - '13:45:30.123456789'
          description: latest shift start
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        earliestShiftStart:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - '13:45:30.123456789'
          description: earliest shift start
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        latestShiftEnd:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - '13:45:30.123456789'
          description: latest shift end
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        minWeekendsIdle:
          type:
            - integer
            - 'null'
          format: int32
          description: The minimum number of weekends to be idle in this period.
        maxWeekendsIdle:
          type:
            - integer
            - 'null'
          format: int32
          description: The maximum number of weekends to be idle in this period.
    Contract:
      type: object
      required:
        - name
      description: Contract of the employee
      properties:
        name:
          type:
            - string
            - 'null'
          maxLength: 255
          pattern: ^(?!.*\$\{)[^<>"';`\\\x00]*$
          description: name of the contract
        max:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: maximum working time per week
        min:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: minimum working time per week
        maxConsecutiveWorkDays:
          type:
            - integer
            - 'null'
          format: int32
          description: maximum consecutive work days
        maxShiftsDay:
          type:
            - integer
            - 'null'
          format: int32
          description: maximum shifts per day
        minRestBetweenShiftsSameDay:
          type:
            - integer
            - 'null'
          format: int32
          description: minimum rest between shifts on the same day
        minRest:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: minimum rest between shifts
        maxWorkingDays:
          type:
            - integer
            - 'null'
          format: int32
          description: maximum working days per week
        maxShiftLength:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: maximum shift length
        minShiftLength:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: minimum shift length
        latestShiftStart:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - '13:45:30.123456789'
          description: latest shift start
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        earliestShiftStart:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - '13:45:30.123456789'
          description: earliest shift start
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        latestShiftEnd:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - '13:45:30.123456789'
          description: latest shift end
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
    LocalDateTime:
      type: string
      format: date-time
      examples:
        - '2022-03-10T12:15:50'
    ShiftTagDto:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          maxLength: 255
          pattern: ^(?!.*\$\{)[^<>"';`\\\x00]*$
    SkillRequirement:
      type: object
      required:
        - name
      description: Skill requirement on a shift level
      properties:
        name:
          type: string
          description: name of the skill
        hard:
          type:
            - boolean
            - 'null'
          description: >-
            Hard requirement or not. If not, the skill is a soft skill
            requirement that will act as an affinity.
        weight:
          type:
            - integer
            - 'null'
          format: int32
          description: weight of the skill
    ConstraintType:
      type: string
      enum:
        - COUNTER
        - SEQUENCE
    RuleType:
      type: string
      enum:
        - HOURS_WORKED
        - DAYS_WORKED
        - DAYS_IDLE
        - WEEKENDS_WORKED
        - WEEKENDS_IDLE
        - SHIFT_TYPES_WORKED
        - SHIFT_TYPES_HOURS_WORKED
    Period:
      type: object
      description: Period
      properties:
        from:
          type:
            - string
            - 'null'
          description: Start of the period
          anyOf:
            - $ref: '#/components/schemas/LocalDateTime'
            - type: 'null'
        to:
          type:
            - string
            - 'null'
          description: End of the period
          anyOf:
            - $ref: '#/components/schemas/LocalDateTime'
            - type: 'null'
        duration:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: >-
            Duration of the rolling period in ISO8601 format (e.g. P1D). Do not
            use this in combo with from/to
        period:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
          description: >-
            Duration of the rolling period in ISO8601 format (e.g. P1D). Do not
            use this in combo with from/to
        excludes:
          type:
            - array
            - 'null'
          items:
            type: string
            format: date
            examples:
              - '2022-03-10'
          description: List of dates to exclude from the from/to period.
        type:
          anyOf:
            - $ref: '#/components/schemas/PeriodType'
            - type: 'null'
    PeriodType:
      type: string
      enum:
        - DAILY
        - WEEKLY
        - MONTHLY
        - SCHEDULE
    RestSequenceType:
      type: string
      enum:
        - BEFORE
        - AFTER
    PatternType:
      type: string
      enum:
        - SINGLE_DAY
        - MULTI_DAY
    SatisfyType:
      type: string
      enum:
        - PREFERRED
        - PROHIBITED
        - UNPREFERRED
    PatternElement:
      type: object
      description: Single element to describe a shift on/off
      properties:
        type:
          type:
            - string
            - 'null'
          description: '`ON` (doing that shift) or `OFF` (not doing that shift)'
          anyOf:
            - $ref: '#/components/schemas/PatternElementType'
            - type: 'null'
        tags:
          type:
            - array
            - 'null'
          items:
            type: string
          description: List of shift tags to include
    FillExplanation:
      type: object
      description: Explanation
      properties:
        enabled:
          type:
            - boolean
            - 'null'
          description: Whether to enable post-processing of explainability
        filterHardConstraints:
          type:
            - boolean
            - 'null'
          description: >-
            Whether to filter hard constraint violated solutions in the
            response. 
    IdleWeekendDefinition:
      type: object
      required:
        - fromDayOfWeek
        - fromTime
        - toDayOfWeek
        - toTime
      properties:
        fromDayOfWeek:
          $ref: '#/components/schemas/DayOfWeek'
          type: string
          description: Day of the week on which the weekend officially starts.
        fromTime:
          type: string
          format: ''
          examples:
            - '13:45:30.123456789'
          description: Time of day on which the weekend officially starts.
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        toDayOfWeek:
          $ref: '#/components/schemas/DayOfWeek'
          type: string
          description: Day of the week on which the weekend officially ends.
        toTime:
          type: string
          format: ''
          examples:
            - '13:45:30.123456789'
          description: Time of day on which the weekend officially ends.
          externalDocs:
            description: As defined by 'partial-time' in RFC3339
            url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
        restTime:
          type:
            - string
            - 'null'
          format: ''
          examples:
            - P1D
    LocalDate:
      type: string
      format: date
      examples:
        - '2022-03-10'
    PatternElementType:
      type: string
      enum:
        - 'ON'
        - 'OFF'
    DayOfWeek:
      type: string
      enum:
        - MONDAY
        - TUESDAY
        - WEDNESDAY
        - THURSDAY
        - FRIDAY
        - SATURDAY
        - SUNDAY
  securitySchemes:
    apikey:
      type: apiKey
      description: Api Key based authentication (apikey)
      name: Authorization
      in: header

````