Skedulo Run API

The Run API from Skedulo — 7 operation(s) for run.

OpenAPI Specification

skedulo-run-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Authentication Admin Run 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: Run
paths:
  /run:
    get:
      summary: Get a list of runs
      description: Returns a paginated list of feature model optimization runs for the authenticated tenant. Results can be filtered by run ID, schedule ID, user, and run type, and support limit/offset pagination.
      operationId: Get Runs
      parameters:
      - name: id
        in: query
        description: Run id
        required: false
        schema:
          type: string
      - name: ids
        in: query
        description: Coma separated run ids
        required: true
        schema:
          type: string
      - name: schedule_id
        in: query
        description: Schedule id
        required: false
        schema:
          type: string
      - name: schedule_ids
        in: query
        description: Coma separated run schedule ids
        required: false
        schema:
          type: string
      - name: user
        in: query
        description: User id
        required: false
        schema:
          type: string
      - name: user_ids
        in: query
        description: Coma separated user ids
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: Run type
        required: false
        schema:
          type: string
      - name: types
        in: query
        description: Coma separated types
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Maximum number of results to return
        required: false
        schema:
          type: integer
          format: int32
      - name: offset
        in: query
        description: Number of results to skip
        required: false
        schema:
          type: integer
          format: int32
      - name: after
        in: query
        description: Return results after this cursor value
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                - paging
                type: object
                properties:
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/APIFeatureRunDetailsShape'
                  paging:
                    $ref: '#/components/schemas/Paging'
              example:
                paging:
                  limit: 10
                  total: 2
                result:
                - start: '2022-08-18T19:00:00Z'
                  operation: optimize
                  optimizationType: pvrp
                  status: complete
                  scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
                  createdByUserId: user-1
                  label: label-1
                  completedAt: '2022-02-15T19:02:00Z'
                  summary:
                    totalPlannedJobs: 3
                    totalScheduledJobs: 3
                    requestedJobs: 2
                    requestedJobsScheduled: 2
                  window:
                    start: '2022-07-05T09:00:00Z'
                    end: '2022-08-05T23:59:59Z'
                  id: 20ecb249-8331-491f-9049-565a2252df76
                - errors:
                  - message: error-1
                  start: '2022-08-18T19:00:00Z'
                  operation: optimize
                  optimizationType: pvrp
                  status: failed
                  scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
                  createdByUserId: user-1
                  label: label-1
                  completedAt: '2022-02-15T19:02:00Z'
                  summary:
                    totalPlannedJobs: 3
                    totalScheduledJobs: 3
                    requestedJobs: 2
                    requestedJobsScheduled: 2
                  window:
                    start: '2022-07-05T09:00:00Z'
                    end: '2022-08-05T23:59:59Z'
                  id: 20ecb249-8331-491f-9049-565a2252df76
        '400':
          description: 'Invalid value for: query parameter id, Invalid value for: query parameter ids, Invalid value for: query parameter schedule_id, Invalid value for: query parameter schedule_ids, Invalid value for: query parameter user, Invalid value for: query parameter user_ids, Invalid value for: query parameter type, Invalid value for: query parameter types, Invalid value for: query parameter limit, Invalid value for: query parameter offset, Invalid value for: query parameter after'
          content:
            text/plain:
              schema:
                type: string
      security:
      - httpAuth: []
      tags:
      - Run
  /run/{runId}:
    get:
      summary: Get a run by id
      description: Returns the details of a single feature model optimization run identified by its run ID, including its status, type, schedule association, and timing information.
      operationId: Get Run By Id
      parameters:
      - name: runId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/APIFeatureRunDetailsShape'
              examples:
                Example0:
                  value:
                    result:
                      start: '2022-08-18T19:00:00Z'
                      operation: optimize
                      optimizationType: pvrp
                      status: complete
                      scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
                      createdByUserId: user-1
                      label: label-1
                      completedAt: '2022-02-15T19:02:00Z'
                      summary:
                        totalPlannedJobs: 3
                        totalScheduledJobs: 3
                        requestedJobs: 2
                        requestedJobsScheduled: 2
                      window:
                        start: '2022-07-05T09:00:00Z'
                        end: '2022-08-05T23:59:59Z'
                      id: 20ecb249-8331-491f-9049-565a2252df76
                Example1:
                  value:
                    result:
                      errors:
                      - message: error-1
                      start: '2022-08-18T19:00:00Z'
                      operation: optimize
                      optimizationType: pvrp
                      status: failed
                      scheduleId: a15c285f-2c69-4a3c-9b9b-c9a8c5252db6
                      createdByUserId: user-1
                      label: label-1
                      completedAt: '2022-02-15T19:02:00Z'
                      summary:
                        totalPlannedJobs: 3
                        totalScheduledJobs: 3
                        requestedJobs: 2
                        requestedJobsScheduled: 2
                      window:
                        start: '2022-07-05T09:00:00Z'
                        end: '2022-08-05T23:59:59Z'
                      id: 20ecb249-8331-491f-9049-565a2252df76
      security:
      - httpAuth: []
      tags:
      - Run
  /run/{runId}/diff:
    get:
      summary: Get the diff of the run
      description: Returns the allocation diff produced by an optimization run, showing for each allocation which resource was deallocated and which resource was allocated, along with any change in scheduled time.
      operationId: Get Run Diff
      parameters:
      - name: runId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/DiffShape'
              examples:
                PVRP:
                  value:
                    result:
                      meta:
                        key: value
                      solver: pvrp
                      allocations:
                        alloc-1:
                          deallocation: res-1
                          allocation: res-2
                          initialScheduleTime: '2022-10-31T07:00:00Z'
                          scheduleTime: '2022-10-31T11:00:00Z'
                ARC:
                  value:
                    result:
                      meta:
                        key: value
                      solver: arc
                      allocations:
                        alloc-1:
                          deallocation: res-1
                          allocation: res-2
      security:
      - httpAuth: []
      tags:
      - Run
  /run/{runId}/results:
    get:
      summary: Get results of an optimization run
      description: Returns the feature-model-level optimization results for a completed run. For ARCShift (shift scheduling) runs this shows which allocations were assigned to resources and which were left unscheduled. For CorePVRP (route optimization) runs this additionally includes the scheduled start times and per-allocation infeasibility reasons explaining why each resource could not be used for each unscheduled allocation.
      operationId: Get Run Results
      parameters:
      - name: runId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/FeatureModelResultsShape'
      security:
      - httpAuth: []
      tags:
      - Run
  /run/{runId}/model:
    get:
      summary: Get the model for the run
      description: Get the feature model used for the run. This is a fully anonymized version of the problem that is solved in the optimization run
      operationId: Get Run Model
      parameters:
      - name: runId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/FeatureModelShape'
              examples:
                PVRP:
                  value:
                    result:
                      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:
                    result:
                      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
      security:
      - httpAuth: []
      tags:
      - Run
  /run/{runId}/remodel:
    get:
      summary: Get the remodel of the run
      description: Get the final model of the run. This is similar to the result of the GET /run/{runId}/model endpoint, but with the model populated with the scheduled allocations from the optimization run.
      operationId: Get Run Remodel
      parameters:
      - name: runId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - result
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/FeatureModelShape'
              examples:
                Example0:
                  value:
                    result:
                      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
                Example1:
                  value:
                    result:
                      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
      security:
      - httpAuth: []
      tags:
      - Run
  /run/{runId}/meta:
    get:
      summary: Get the metadata for a run
      description: Returns arbitrary key-value metadata associated with an optimization run. Returns null if no metadata has been recorded for the run.
      operationId: Get Run Meta
      parameters:
      - name: runId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: Arbitrary JSON object (key/value pairs)
                    additionalProperties:
                      description: Any JSON value (string, number, boolean, null, object, or array)
              example:
                result:
                  key: value
      security:
      - httpAuth: []
      tags:
      - Run
components:
  schemas:
    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
    LocationShape2:
      required:
      - id
      - latitude
      - longitude
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this location
        latitude:
          type: number
          description: Geographic latitude coordinate
          format: double
        longitude:
          type: number
          description: Geographic longitude coordinate
          format: double
    FeasibleGapShape:
      required:
      - start
      - end
      type: object
      properties:
        start:
          type: string
          description: Start of the feasible gap interval
          format: date-time
        end:
          type: string
          description: End of the feasible gap interval
          format: date-time
        previousLocation:
          $ref: '#/components/schemas/LocationShape'
        nextLocation:
          $ref: '#/components/schemas/LocationShape'
    SharedGroupConstraintShape:
      required:
      - groupId
      - resourceIds
      - maxAllocations
      - start
      - end
      type: object
      properties:
        groupId:
          type: string
          description: The allocation group identifier the pooled limit applies to
        resourceIds:
          type: array
          items:
            type: string
          description: The resources that share the pooled limit
        maxAllocations:
          type: integer
          description: Maximum number of allocations from this group across all listed resources combined within the period
          format: int32
        start:
          type: string
          description: Start of the period the pooled limit applies to
          format: date-time
        end:
          type: string
          description: End of the period the pooled limit applies to
          format: date-time
    DiffAllocationShape:
      type: object
      properties:
        deallocation:
        

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