Skedulo Solve API

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

Operations 3

POST /solve Start an optimization run for a model #
POST /solve/evaluate Start an optimization run to evaluate the given model #
POST /solve/planned Start an optimization run for the provided plan #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/skedulo-solve-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

skedulo-solve-api-openapi.yml Raw ↑
openapi: 3.2.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:
    ResourceAvailabilityShape1:
      required:
      - from
      - to
      type: object
      properties:
        from:
          type: string
          description: Start of the availability window
          format: date-time
        to:
          type: string
          description: End of the availability window
          format: date-time
        startLocationId:
          type: string
          description: Location from which the resource departs at the start of this availability window; overrides the resource's home location
        endLocationId:
          type: string
          description: Location at which the resource must finish at the end of this availability window; overrides the resource's home location
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/ResourceAvailabilityAttributeShape'
          description: Attributes that are active for this resource during this availability window; overrides the resource-level attributes for allocations scheduled within this window
        phaseTags:
          type: array
          items:
            type: string
          description: Phase tags that restrict this availability window to specific phases. If absent or empty, the availability window is included in all phases.
        overtimeEnd:
          type: string
          description: Latest end the shift may extend to when working overtime; must be after the end of the availability window
          format: date-time
    GraphQLAccountResourceScore:
      required:
      - AccountId
      - ResourceId
      - Blacklisted
      type: object
      properties:
        AccountId:
          type: string
        ResourceId:
          type: string
        Blacklisted:
          type: boolean
    ResourceAvailability:
      required:
      - available
      - regions
      type: object
      properties:
        available:
          type: array
          items:
            $ref: '#/components/schemas/Availability'
        regions:
          type: array
          items:
            $ref: '#/components/schemas/RegionAvailability'
    GraphQLJobTimeConstraint:
      required:
      - Required
      type: object
      properties:
        StartAfter:
          type: string
          format: date-time
        StartBefore:
          type: string
          format: date-time
        EndBefore:
          type: string
          format: date-time
        Required:
          type: boolean
    APIIdInput:
      required:
      - resourceIds
      - jobIds
      type: object
      properties:
        resourceIds:
          type: array
          items:
            type: string
        jobIds:
          type: array
          items:
            type: string
        regionId:
          type: string
        regionIds:
          type: array
          items:
            type: string
      description: The ids of entities requested in the optimization run
    CorePVRPFeatureModelShape:
      required:
      - allocations
      - groups
      - resources
      - allocationDependencies
      - resourceDependencies
      - locations
      - schedulingPeriod
      - rollingSchedulingPeriods
      - timezone
      - options
      - solver
      - sharedGroupConstraints
      type: object
      properties:
        allocations:
          type: array
          items:
            $ref: '#/components/schemas/AllocationShape1'
          description: Allocations to be optimized, each to one resource
        groups:
          type: array
          items:
            $ref: '#/components/schemas/AllocationGroupShape'
          description: Groups of allocations that should be synchronized by time
        resources:
          type: array
          items:
            $ref: '#/components/schemas/ResourceShape1'
          description: Resources that can be allocated to
        allocationDependencies:
          type: array
          items:
            $ref: '#/components/schemas/AllocationDependencyShape'
          description: Contains pairs of allocations which must be scheduled within a certain time of each other
        resourceDependencies:
          type: array
          items:
            $ref: '#/components/schemas/ResourceDependencyShape'
          description: Contains sets of allocations which must be allocated to the same resource
        locations:
          type: array
          items:
            $ref: '#/components/schemas/LocationShape2'
          description: All the locations included in the model for both allocations and resources
        schedulingPeriod:
          $ref: '#/components/schemas/ScheduleRunWindow'
        rollingSchedulingPeriods:
          type: array
          items:
            $ref: '#/components/schemas/ScheduleRunWindow'
          description: Optional sub-windows used for rolling schedule optimization; the scheduling period is split into these periods and each is solved sequentially
        timezone:
          type: string
          description: The timezone used for date-based period constraint calculations
        options:
          $ref: '#/components/schemas/PVRPFeatureOptionsShape'
        meta:
          type: object
          description: 'Additional metadata for the model. For route optimization the default shape is ProductMeta, which contains: ''allocations'' — a map from CorePVRP allocation ID to either a Job reference (jobId, optional initial resource/allocation IDs, optional resourceRequirementId) or an Activity reference (activityId); ''frozenJobs'' — a map from job ID to the reasons it was excluded from optimization (e.g. has dependencies outside scope, outside region, not in requested jobs); ''activityBreaks'' — a map from activity ID to the resource and fixed-time break period for activities that represent resource breaks.'
          additionalProperties:
            description: Any JSON value (string, number, boolean, null, object, or array)
        solver:
          type: string
          description: Identifies the solver type; always 'pvrp' for CorePVRP models
          enum:
          - pvrp
        phases:
          type: array
          items:
            $ref: '#/components/schemas/PhaseConfigurationShape'
          description: Optional ordered list of phases for strict prioritization. Each phase is either 'all' (every object is active) or 'filtered' (per-object-type tag filters control which objects are active). Phases are processed in order and allocations assigned during one phase are locked for subsequent phases.
        sharedGroupConstraints:
          type: array
          items:
            $ref: '#/components/schemas/SharedGroupConstraintShape'
          description: Collective allocation limits shared across a filtered set of resources. Unlike per-resource groupConstraints, each entry caps the total allocations of a group across all listed resources combined (a shared pool), regardless of how they are distributed. Every resource in the pool shares the exact same period and limit.
    ScheduleRunWindow:
      required:
      - start
      - end
      type: object
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
    GraphQLJob:
      required:
      - UID
      - Duration
      - JobStatus
      - JobAllocations
      - JobTags
      - ResourceRequirements
      - JobTimeConstraints
      - JobDependenciesFrom
      - JobDependenciesTo
      - Locked
 

# --- 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