Skedulo Solve API

The Solve API from Skedulo — 3 operation(s) for solve.

OpenAPI Specification

skedulo-solve-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Authentication Admin Solve API
  description: Skedulo Authentication API
  version: 1.0.0
servers:
- url: https://api.skedulo.com/auth
- url: https://api.uk.skedulo.com/auth
- url: https://api.ca.skedulo.com/auth
- url: https://api.au.skedulo.com/auth
tags:
- name: Solve
paths:
  /solve:
    post:
      summary: Start an optimization run for a model
      description: This starts a one-off optimization run to solve the model given as an input.
      operationId: Solve
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeatureModelShape'
            examples:
              PVRP:
                value:
                  allocations:
                  - id: alloc-1
                    groupId: alloc-group-1
                    groupIds:
                    - alloc-group-1
                    start: '2022-01-26T09:00:00Z'
                    duration: 30
                    resourceId: res-1
                    locationId: loc-1
                    priority: 10
                    locked: true
                    attributeRequirements:
                    - id: attr-1
                    - id: attr-2
                      weighting: 10
                    resourceConstraints:
                      type: blocked
                      resources:
                      - res-2
                    scheduleConstraints:
                    - windowStart: '2022-01-26T10:00:00Z'
                      windowEnd: '2022-01-26T11:00:00Z'
                    resourceRatings:
                    - resourceId: res-1
                      rating: 75
                    urgency: 20
                  groups:
                  - id: gr-1
                    synchronizationMode: start_time
                    locked: true
                    enablePartialAllocation: false
                  resources:
                  - id: res-1
                    attributes:
                    - id: attr-1
                    locationId: loc-1
                    availability:
                    - from: '2022-01-26T09:00:00Z'
                      to: '2022-01-30T23:00:00Z'
                      attributes: []
                    maxDailyTravelTimeInMinutes: 180
                    maxTravelTimeBetweenLocations: 60
                    periodConstraints:
                    - start: '2022-01-26T09:00:00Z'
                      end: '2022-01-30T23:00:00Z'
                      maxServiceTimeInMinutes: 100
                      minServiceTimeInMinutes: 50
                      groupConstraints:
                      - groupId: group-1
                        maxAllocations: 5
                    breaks:
                    - breakTimeInMinutes: 30
                      minStartTime: '2022-01-26T12:00:00Z'
                      maxStartTime: '2022-01-26T13:00:00Z'
                    - startTime: '2022-01-26T15:00:00Z'
                      endTime: '2022-01-26T15:30:00Z'
                      locationId: loc-1
                    rating: 80
                    compatibleResources:
                    - res-2
                  allocationDependencies: []
                  resourceDependencies: []
                  locations:
                  - id: loc-1
                    latitude: 51.5072
                    longitude: 0.1276
                  schedulingPeriod:
                    start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                  timezone: UTC
                  meta:
                    key: value
                  options:
                    full: false
                    ignoreTravelTime: false
                    ignoreTravelTimeFirstJob: false
                    ignoreTravelTimeLastJob: false
                    minimizeResources: false
                    respectAllocationTimes: false
                    respectAllocationTimesOverTimeConstraints: false
                    balanceAbsoluteWorkload: false
                    enablePartiallyAllocatedGroups: true
                    enablePartiallyAllocatedAllocationDependencies: true
                    removeLockedJobsFromShifts: true
                  sharedGroupConstraints:
                  - groupId: group-1
                    resourceIds:
                    - res-1
                    - res-2
                    maxAllocations: 10
                    start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                  solver: pvrp
              ARC:
                value:
                  options:
                    locations: true
                    exceptionFilter:
                      blacklist: true
                      resourceAvailability: true
                    solviceWeights:
                      maxHours: 10hard
                      minHours: 10medium
                      minHoursUnassigned: 10medium
                      availability: 10hard
                      locked: 10hard
                      minRest: 10hard
                      requirements: 10hard
                      skills: 10hard
                      distance: 10hard
                      distanceAL: 10hard
                      priority: 10hard
                      pref: 10hard
                      unassigned: 10hard
                      softSkills: 10hard
                      criticalSkills: 10hard
                      blacklist: 10hard
                      efficiency: 10hard
                      softSkillsLevel: 10hard
                      maxWorkingDays: 10hard
                      shiftStart: 10hard
                      latestShiftStart: 10hard
                      shiftEnd: 10hard
                      minShift: 10hard
                      maxShift: 10hard
                      dayOfWeek: 10hard
                      sameDay: 10hard
                      sameDayMinRest: 10hard
                      maxConsecutive: 10hard
                      concurrent: 10hard
                      costs: 10hard
                      wages: 10hard
                      working: 10hard
                      minWorkingDaysUnassigned: 10medium
                      fairness: 10soft
                  allocations:
                  - locked: false
                    attributeRequirements:
                    - id: attr-1
                    - id: attr-2
                      weighting: 10
                    resourceConstraints:
                      type: blocked
                      resources:
                      - res-2
                    preferredResourceIds:
                    - res-1
                    - res-3
                    id: alloc-1
                    start: '2022-01-26T23:00:00Z'
                    duration: 30
                    resourceId: res-1
                    locationId: loc-1
                    priority: 10
                  resources:
                  - id: res-1
                    statuteId: st-1
                    attributes:
                    - id: attr-1
                      validFor:
                      - from: '2022-01-26'
                        to: '2022-01-02'
                      weighting: 10
                    locationId: loc-1
                    availability:
                    - from: '2022-01-26T09:00:00Z'
                      to: '2022-01-30T23:00:00Z'
                      fromLocation: loc-1
                    efficiency: 10
                    periodConstraints: []
                  statutes:
                  - id: st-1
                    minimumRestPeriodBetweenAllocations: 0
                    minimumRestPeriodBetweenAllocationsInHours: 0
                    minimumHoursForPlanningPeriod: 1
                    maximumHoursForPlanningPeriod: 1
                    maximumTravelTimeToAllocationsInMinutes: 30
                  locations:
                  - id: loc-1
                    latitude: 51.5072
                    longitude: 0.1276
                  sharedAttributes:
                  - id: sh-attr-1
                    allocations:
                    - alloc-1
                    attributeId: attr-1
                    minimumQuantity: 3
                  schedulingPeriod:
                    start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                  fairnessBuckets: []
                  timezone: UTC
                  meta:
                    key: value
                  solver: arc
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/SolveResult'
        '400':
          description: 'Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
      security:
      - httpAuth: []
      tags:
      - Solve
  /solve/evaluate:
    post:
      summary: Start an optimization run to evaluate the given model
      description: Evaluation will not change the data that is being optimized. Instead it will evaluate the current allocation in comparison to the results the optimizer would produce.
      operationId: Evaluate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeatureModelShape'
            examples:
              PVRP:
                value:
                  allocations:
                  - id: alloc-1
                    groupId: alloc-group-1
                    groupIds:
                    - alloc-group-1
                    start: '2022-01-26T09:00:00Z'
                    duration: 30
                    resourceId: res-1
                    locationId: loc-1
                    priority: 10
                    locked: true
                    attributeRequirements:
                    - id: attr-1
                    - id: attr-2
                      weighting: 10
                    resourceConstraints:
                      type: blocked
                      resources:
                      - res-2
                    scheduleConstraints:
                    - windowStart: '2022-01-26T10:00:00Z'
                      windowEnd: '2022-01-26T11:00:00Z'
                    resourceRatings:
                    - resourceId: res-1
                      rating: 75
                    urgency: 20
                  groups:
                  - id: gr-1
                    synchronizationMode: start_time
                    locked: true
                    enablePartialAllocation: false
                  resources:
                  - id: res-1
                    attributes:
                    - id: attr-1
                    locationId: loc-1
                    availability:
                    - from: '2022-01-26T09:00:00Z'
                      to: '2022-01-30T23:00:00Z'
                      attributes: []
                    maxDailyTravelTimeInMinutes: 180
                    maxTravelTimeBetweenLocations: 60
                    periodConstraints:
                    - start: '2022-01-26T09:00:00Z'
                      end: '2022-01-30T23:00:00Z'
                      maxServiceTimeInMinutes: 100
                      minServiceTimeInMinutes: 50
                      groupConstraints:
                      - groupId: group-1
                        maxAllocations: 5
                    breaks:
                    - breakTimeInMinutes: 30
                      minStartTime: '2022-01-26T12:00:00Z'
                      maxStartTime: '2022-01-26T13:00:00Z'
                    - startTime: '2022-01-26T15:00:00Z'
                      endTime: '2022-01-26T15:30:00Z'
                      locationId: loc-1
                    rating: 80
                    compatibleResources:
                    - res-2
                  allocationDependencies: []
                  resourceDependencies: []
                  locations:
                  - id: loc-1
                    latitude: 51.5072
                    longitude: 0.1276
                  schedulingPeriod:
                    start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                  timezone: UTC
                  meta:
                    key: value
                  options:
                    full: false
                    ignoreTravelTime: false
                    ignoreTravelTimeFirstJob: false
                    ignoreTravelTimeLastJob: false
                    minimizeResources: false
                    respectAllocationTimes: false
                    respectAllocationTimesOverTimeConstraints: false
                    balanceAbsoluteWorkload: false
                    enablePartiallyAllocatedGroups: true
                    enablePartiallyAllocatedAllocationDependencies: true
                    removeLockedJobsFromShifts: true
                  sharedGroupConstraints:
                  - groupId: group-1
                    resourceIds:
                    - res-1
                    - res-2
                    maxAllocations: 10
                    start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                  solver: pvrp
              ARC:
                value:
                  options:
                    locations: true
                    exceptionFilter:
                      blacklist: true
                      resourceAvailability: true
                    solviceWeights:
                      maxHours: 10hard
                      minHours: 10medium
                      minHoursUnassigned: 10medium
                      availability: 10hard
                      locked: 10hard
                      minRest: 10hard
                      requirements: 10hard
                      skills: 10hard
                      distance: 10hard
                      distanceAL: 10hard
                      priority: 10hard
                      pref: 10hard
                      unassigned: 10hard
                      softSkills: 10hard
                      criticalSkills: 10hard
                      blacklist: 10hard
                      efficiency: 10hard
                      softSkillsLevel: 10hard
                      maxWorkingDays: 10hard
                      shiftStart: 10hard
                      latestShiftStart: 10hard
                      shiftEnd: 10hard
                      minShift: 10hard
                      maxShift: 10hard
                      dayOfWeek: 10hard
                      sameDay: 10hard
                      sameDayMinRest: 10hard
                      maxConsecutive: 10hard
                      concurrent: 10hard
                      costs: 10hard
                      wages: 10hard
                      working: 10hard
                      minWorkingDaysUnassigned: 10medium
                      fairness: 10soft
                  allocations:
                  - locked: false
                    attributeRequirements:
                    - id: attr-1
                    - id: attr-2
                      weighting: 10
                    resourceConstraints:
                      type: blocked
                      resources:
                      - res-2
                    preferredResourceIds:
                    - res-1
                    - res-3
                    id: alloc-1
                    start: '2022-01-26T23:00:00Z'
                    duration: 30
                    resourceId: res-1
                    locationId: loc-1
                    priority: 10
                  resources:
                  - id: res-1
                    statuteId: st-1
                    attributes:
                    - id: attr-1
                      validFor:
                      - from: '2022-01-26'
                        to: '2022-01-02'
                      weighting: 10
                    locationId: loc-1
                    availability:
                    - from: '2022-01-26T09:00:00Z'
                      to: '2022-01-30T23:00:00Z'
                      fromLocation: loc-1
                    efficiency: 10
                    periodConstraints: []
                  statutes:
                  - id: st-1
                    minimumRestPeriodBetweenAllocations: 0
                    minimumRestPeriodBetweenAllocationsInHours: 0
                    minimumHoursForPlanningPeriod: 1
                    maximumHoursForPlanningPeriod: 1
                    maximumTravelTimeToAllocationsInMinutes: 30
                  locations:
                  - id: loc-1
                    latitude: 51.5072
                    longitude: 0.1276
                  sharedAttributes:
                  - id: sh-attr-1
                    allocations:
                    - alloc-1
                    attributeId: attr-1
                    minimumQuantity: 3
                  schedulingPeriod:
                    start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                  fairnessBuckets: []
                  timezone: UTC
                  meta:
                    key: value
                  solver: arc
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/SolveResult'
        '400':
          description: 'Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
      security:
      - httpAuth: []
      tags:
      - Solve
  /solve/planned:
    post:
      summary: Start an optimization run for the provided plan
      description: This endpoint will start a one-off optimization run based on the provided plan. The plan can be generated using the GET /schedule/plan endpoint.
      operationId: Solve planned
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SchedulePlanShape'
            example:
              productData:
                jobs:
                - UID: job-1
                  Start: '2022-01-26T09:00:00Z'
                  Duration: 60
                  JobStatus: Ready
                  LocationId: loc-1
                  GeoLatitude: 53.4834
                  GeoLongitude: -2.2425
                  Quantity: 1
                  JobAllocations: []
                  JobTags: []
                  ResourceRequirements: []
                  JobTimeConstraints: []
                  JobDependenciesFrom: []
                  JobDependenciesTo: []
                  Locked: false
                  RegionId: region-1
                  Urgency: Normal
                activities:
                - UID: activity-1
                  Start: '2022-01-26T09:00:00Z'
                  End: '2022-01-26T10:00:00Z'
                  LocationId: loc-1
                  GeoLatitude: 53.4834
                  GeoLongitude: -2.2425
                  ResourceId: resource1
                  ActivityResources: []
                resources:
                - UID: resource1
                  GeoLatitude: 1
                  GeoLongitude: 1
                  ResourceTags: []
                  HomeAddress: test home address
                  WorkingHoursTimePeriod: Week
                  WorkingHoursStart: '2022-01-26'
                  WorkingHoursMin: 20
                  WorkingHoursMax: 40
                  ResourceOverrides: []
                  PrimaryRegion:
                    Timezone: UTC
                locationResourceScores:
                - LocationId: loc-1
                  ResourceId: resource1
                  Blacklisted: false
                accountResourceScores:
                - AccountId: account-1
                  ResourceId: resource1
                  Blacklisted: false
                availability:
                  2bd0af54-377e-4960-8d4b-ba5272070830:
                    available:
                    - start: '2022-01-26T23:00:00Z'
                      end: '2022-01-29T23:00:00Z'
                    regions:
                    - start: '2022-01-26T23:00:00Z'
                      end: '2022-01-29T23:00:00Z'
                      regionIds:
                      - region-1
                start: '2022-01-26T09:00:00Z'
                end: '2022-01-30T23:00:00Z'
                timeZone: UTC
                region:
                  UID: region-1
                  Timezone: UTC
                  GeoLatitude: 53.4834
                  GeoLongitude: -2.2425
              featureModel:
                allocations:
                - id: alloc-1
                  groupId: alloc-group-1
                  groupIds:
                  - alloc-group-1
                  start: '2022-01-26T09:00:00Z'
                  duration: 30
                  resourceId: res-1
                  locationId: loc-1
                  priority: 10
                  locked: true
                  attributeRequirements:
                  - id: attr-1
                  - id: attr-2
                    weighting: 10
                  resourceConstraints:
                    type: blocked
                    resources:
                    - res-2
                  scheduleConstraints:
                  - windowStart: '2022-01-26T10:00:00Z'
                    windowEnd: '2022-01-26T11:00:00Z'
                  resourceRatings:
                  - resourceId: res-1
                    rating: 75
                  urgency: 20
                groups:
                - id: gr-1
                  synchronizationMode: start_time
                  locked: true
                  enablePartialAllocation: false
                resources:
                - id: res-1
                  attributes:
                  - id: attr-1
                  locationId: loc-1
                  availability:
                  - from: '2022-01-26T09:00:00Z'
                    to: '2022-01-30T23:00:00Z'
                    attributes: []
                  maxDailyTravelTimeInMinutes: 180
                  maxTravelTimeBetweenLocations: 60
                  periodConstraints:
                  - start: '2022-01-26T09:00:00Z'
                    end: '2022-01-30T23:00:00Z'
                    maxServiceTimeInMinutes: 100
                    minServiceTimeInMinutes: 50
                    groupConstraints:
                    - groupId: group-1
                      maxAllocations: 5
                  breaks:
                  - breakTimeInMinutes: 30
                    minStartTime: '2022-01-26T12:00:00Z'
                    maxStartTime: '2022-01-26T13:00:00Z'
                  - startTime: '2022-01-26T15:00:00Z'
                    endTime: '2022-01-26T15:30:00Z'
                    locationId: loc-1
                  rating: 80
                  compatibleResources:
                  - res-2
                allocationDependencies: []
                resourceDependencies: []
                locations:
                - id: loc-1
                  latitude: 51.5072
                  longitude: 0.1276
                schedulingPeriod:
                  start: '2022-01-26T09:00:00Z'
                  end: '2022-01-30T23:00:00Z'
                timezone: UTC
                meta:
                  key: value
                options:
                  full: false
                  ignoreTravelTime: false
                  ignoreTravelTimeFirstJob: false
                  ignoreTravelTimeLastJob: false
                  minimizeResources: false
                  respectAllocationTimes: false
                  respectAllocationTimesOverTimeConstraints: false
                  balanceAbsoluteWorkload: false
                  enablePartiallyAllocatedGroups: true
                  enablePartiallyAllocatedAllocationDependencies: true
                  removeLockedJobsFromShifts: true
                sharedGroupConstraints:
                - groupId: group-1
                  resourceIds:
                  - res-1
                  - res-2
                  maxAllocations: 10
                  start: '2022-01-26T09:00:00Z'
                  end: '2022-01-30T23:00:00Z'
                solver: pvrp
              options:
                respectSchedule: false
                recipeId: 9dc75e35-f1cd-4303-97f3-3f7a6047d698
              ids:
                resourceIds:
                - res-1
                jobIds:
                - job-1
        required: true
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/SolveResult'
        '400':
          description: 'Invalid value for: body'
          content:
            text/plain:
              schema:
                type: string
      security:
      - httpAuth: []
      tags:
      - Solve
components:
  schemas:
    SchedulePlanOptionsShape:
      required:
      - respectSchedule
      type: object
      properties:
        recipeId:
          type: string
        respectSchedule:
          type: boolean
        persistenceStrategy:
          type: string
          enum:
          - save
          - optimize
        label:
          type: string
    JobDependencyAnchor:
      type: string
      enum:
      - End
      - Start
    ResourceConstraintsShape:
      required:
      - type
      - resources
      type: object
      properties:
        type:
          type: string
          description: The constraint type; currently only 'blocked' (exclude list) is supported
          enum:
          - blocked
        resources:
          type: array
          items:
            type: string
          description: The resources to which this constraint applies
      description: Restricts which resources may be assigned to this allocation
    Availability:
      required:
      - start
      - end
      type: object
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
    ARCShiftModelShape:
      required:
      - allocations
      - resources
      - statutes
      - locations
      - sharedAttributes
      - fairnessBuckets
      - schedulingPeriod
      - timezone
      - options
      - solver
      type: object
      properties:
        allocations:
          type: array
          items:
            $ref: '#/components/schemas/AllocationShape'
          description: Shifts to be optimally allocated to resources
        resources:
          type: array
          items:
            $ref: '#/components/schemas/ResourceShape'
          description: Resources (workers) available for shift assignment
        statutes:
          type: array
          items:
            $ref: '#/components/schemas/ResourceStatuteShape'
          description: Contractual constraint sets that can be applied to resources, defining limits on rest periods and working hours
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationShape1'
          description: Geographic coordinates for all locations referenced by allocations and resources
        sharedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/SharedAttributesShape'
          description: Cross-allocation skill requirements that enforce a minimum number of the listed allocations to be assigned to resources with the specified attribute
        fairnessBuckets:
          type: array
          items:
            $ref: '#/components/schemas/FairnessBucketShape'
          description: Periods used to balance total working time fairly across a group of resources
        schedulingPeriod:
          $ref: '#/components/schemas/TimeBounds'
        timezone:
          type: string
          description: The timezone used for period constraint and fairness bucket calculations
        options:
          $ref: '#/components/schemas/ShiftFeatureOptionsShape'
        meta:
          type: object
          description: Additional arbitrary metadata associated with the model
          additionalProperties:
            description: Any JSON value (string, number, boolean, null, object, or array)
        solver:
          type: string
          description: Identifies the solver type; always 'arc' for ARCShift models
          enum:
          - arc
    GraphQLJob:
      required:
      - UID
      - Duration
      - JobStatus
      - JobAllocations
      - JobTags
      - ResourceRequirements
      - JobTimeConstraints
      - JobDependenciesFrom
      - JobDependenciesTo
      - Locked
      - RegionId
      type: object
      properties:
        UID:
          type: string
        Start:
          type: string
          format: date-time
        Duration:
          type: integer
        AccountId:
          type: string
        JobStatus:
          $ref: '#/components/schemas/JobStatus'
        LocationId:
          type: string
        GeoLatitude:
          type: number
          format: double
        GeoLongitude:
          type: number
          format: double
        Quantity:
          type: integer
          format: int32
        JobAllocations:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLJobAllocation'
        JobTags:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLJobTag'
        ResourceRequirements:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLResourceRequirement'
        JobTimeConstraints:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLJobTimeConstraint'
        JobDependenciesFrom:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLJobDependencyFrom'
        JobDependenciesTo:
          type: array
          items:
            $ref: '#/components/schemas/GraphQLJobDependencyTo'
        Locked:
          type: boolean
        RegionId:
          type: string
        Urgency:
          $ref: '#/components/schemas/JobUrgency'
    SharedAttributesShape:
      required:
      - id
      - allocations
      - attributeId
      - minimumQuantity
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this shared attribute requirement
        allocations:
          type: array
          items:
            type: string
          description: The allocations that must collectively satisfy this attribute requirement
        attributeId:
          type: string
          description: The attribute that the assigned resources must hold
        minimumQuantity:
          type: integer
          description: Minimum number of the listed allocations that must be assigned to resources holding the specified attribute
          format: int32
    ResourceStatuteShape:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this statute
        minimumRestPeriodBetweenAllocations:
          type: integer
          description: 'Deprecated: use minimumRestPeriodBetweenAllocationsInHours instead'
          format: int64
        minimumRestPeriodBetweenAllocationsInHours:
          type: integer
          description: Minimum number of hours of rest required between consecutive allocations for resources governed by this statute
          format: int64
        minimumHoursForPlanningPeriod:
          type: integer
          description: Minimum number of hours the resource must work within the planning period
          format: int64
        maximumHoursForPlanningPeriod:
          type: integer
          description: Maximum number of hours the resource may work within the planning period
          format: int64
        maximumTravelTimeToAllocationsInMinutes:
          type: integer
          description: Maximum travel time in minutes allowed for the resource to travel to any single allocation
          format: int64
    FixedTimeBreakShape:
      required:
      - startTime
      - endTime
      type: object
      properties:
        startTime:
          type: string
          description: The fixed start time of the break
          format: date-time
        endTime:
          type: string
          description: The fixe

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