Schedule a work order

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://developers.praxedo.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "public-rest-apis MCP server": {
    "url": "https://developers.praxedo.com/mcp"
  }
}

Close
PUT /eTech/rest/ws/scheduling/v1/workOrders/code:{workOrderCode}/schedule

Schedules or reschedules a work order identified by its business code (time window and field resources), so it appears in the planning and on the mobile application.

Rate limit range : Standard

Path parameters

  • workOrderCode string Required

    Business code of the work order. Case insensitive.

application/json

Body Required

  • schedulerRequirements object

    How strictly the scheduling request is evaluated. When absent, every control is enforced.

    Additional properties are NOT allowed.

    Hide schedulerRequirements attributes Show schedulerRequirements attributes object
    • skipControls array[string]

      Controls the caller opts out of. Absent or empty means every control is enforced.

      • unavailabilityOverlap: allow a time window overlapping an unavailability of an assigned resource.
      • workOrderOverlap: allow a time window where an assigned resource is already on another work order.
      • slasRespect: allow a time window outside the work order's SLA hours.
      • appointmentRespect: allow a time window outside the work order's customer appointment hours.
      • inProgressStatus: allow rescheduling a work order a technician has already started.
      • all: skip all the controls above (skills and characteristics are still checked).

      Values are unavailabilityOverlap, workOrderOverlap, slasRespect, appointmentRespect, inProgressStatus, or all.

    • notificationSent boolean

      Whether the assigned technician is notified. When absent, the technician is notified only if the work order is scheduled on the current day or earlier.

  • timeWindow object

    Period the work order is scheduled over. Mandatory when the work order status is qualified, optional beyond.

    One of:
  • fieldResources object

    Technicians and equipments to assign. Every code must belong to the office hierarchy of the OAuth2 application. An equipment cannot be scheduled without a technician.

    Additional properties are NOT allowed.

    Hide fieldResources attributes Show fieldResources attributes object
    • reportFillerCode string

      Business code of the technician responsible for filling the report. Mandatory when the work order status is qualified.

    • mainResourceCode string

      Business code of the main resource (technician or equipment) leading the work.

    • technicianCrewCodes array[string]

      Business codes of the additional technicians.

    • equipmentCrewCodes array[string]

      Business codes of the assigned equipments.

Responses

  • 201 application/json

    Work order scheduled for the first time.

  • 204 application/json

    Scheduling of an already scheduled work order updated.

  • 400 application/json

    Bad Request - validation or business rule error. Errors listed under "Control conflicts" can be bypassed with schedulerRequirements.skipControls.

    Hide response attributes Show response attributes object
    • errors array[object]

      Array of errors. Contains at least one element.

      Hide errors attributes Show errors attributes object

      Contains code and message for error.

      • code string Required
      • message string Required
    • errorReference string Required

      Error unique reference. Communicated to support, this will help to locate the issue.

      Format should match the following pattern: [0-1a-z].

  • 401 application/json

    Unauthorized - authentication issue.

    Hide response attributes Show response attributes object
    • errors array[object]

      Array of errors. Contains at least one element.

      Hide errors attributes Show errors attributes object

      Contains code and message for error.

      • code string Required
      • message string Required
    • errorReference string Required

      Error unique reference. Communicated to support, this will help to locate the issue.

      Format should match the following pattern: [0-1a-z].

  • 403 application/json

    Forbidden - not enough rights.

    Hide response attributes Show response attributes object
    • errors array[object]

      Array of errors. Contains at least one element.

      Hide errors attributes Show errors attributes object

      Contains code and message for error.

      • code string Required
      • message string Required
    • errorReference string Required

      Error unique reference. Communicated to support, this will help to locate the issue.

      Format should match the following pattern: [0-1a-z].

  • 429 application/json

    Too Many Requests.

    Hide response attributes Show response attributes object
    • errors array[object]

      Array of errors. Contains at least one element.

      Hide errors attributes Show errors attributes object

      Contains code and message for error.

      • code string Required
      • message string Required
    • errorReference string Required

      Error unique reference. Communicated to support, this will help to locate the issue.

      Format should match the following pattern: [0-1a-z].

  • 500 application/json

    Internal server error.

    Hide response attributes Show response attributes object
    • errors array[object]

      Array of errors. Contains at least one element.

      Hide errors attributes Show errors attributes object

      Contains code and message for error.

      • code string Required
      • message string Required
    • errorReference string Required

      Error unique reference. Communicated to support, this will help to locate the issue.

      Format should match the following pattern: [0-1a-z].

PUT /eTech/rest/ws/scheduling/v1/workOrders/code:{workOrderCode}/schedule
curl \
 --request PUT 'https://ws-eu1.praxedo.com/eTech/rest/ws/scheduling/v1/workOrders/code:WO-2026-00123/schedule' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{
  "schedulerRequirements": {
    "notificationSent": true
  },
  "timeWindow": {
    "scheduleMode": "TIME_RANGE",
    "startDate": "2026-04-10 10:00:00 +0200",
    "endDate": "2026-04-10 12:00:00 +0200"
  },
  "fieldResources": {
    "reportFillerCode": "tech-55",
    "mainResourceCode": "tech-55",
    "technicianCrewCodes": [
      "tech-88",
      "tech-98"
    ],
    "equipmentCrewCodes": [
      "truck-04"
    ]
  }
}'
Request examples
{
  "schedulerRequirements": {
    "notificationSent": true
  },
  "timeWindow": {
    "scheduleMode": "TIME_RANGE",
    "startDate": "2026-04-10 10:00:00 +0200",
    "endDate": "2026-04-10 12:00:00 +0200"
  },
  "fieldResources": {
    "reportFillerCode": "tech-55",
    "mainResourceCode": "tech-55",
    "technicianCrewCodes": [
      "tech-88",
      "tech-98"
    ],
    "equipmentCrewCodes": [
      "truck-04"
    ]
  }
}
{
  "schedulerRequirements": {
    "notificationSent": false
  },
  "timeWindow": {
    "scheduleMode": "DAY_RANGE",
    "timezone": "Europe/Paris",
    "startDay": "2026-04-10",
    "endDay": "2026-04-11"
  },
  "fieldResources": {
    "reportFillerCode": "tech-55",
    "mainResourceCode": "tech-55",
    "technicianCrewCodes": [
      "tech-88",
      "tech-98"
    ],
    "equipmentCrewCodes": [
      "truck-04"
    ]
  }
}
{
  "timeWindow": {
    "scheduleMode": "DAY_RANGE",
    "timezone": "Europe/Paris",
    "startDay": "2026-04-10",
    "endDay": "2026-04-10"
  },
  "fieldResources": {
    "reportFillerCode": "tech-55"
  }
}
{
  "timeWindow": {
    "scheduleMode": "TIME_RANGE",
    "startDate": "2026-04-10 08:00:00 UTC",
    "endDate": "2026-04-10 10:00:00 UTC"
  },
  "fieldResources": {
    "reportFillerCode": "tech-55"
  }
}
{
  "schedulerRequirements": {
    "skipControls": [
      "inProgressStatus",
      "workOrderOverlap",
      "appointmentRespect"
    ],
    "notificationSent": true
  },
  "timeWindow": {
    "scheduleMode": "TIME_RANGE",
    "startDate": "2026-04-10 14:00:00 +0200",
    "endDate": "2026-04-10 16:00:00 +0200"
  },
  "fieldResources": {
    "reportFillerCode": "tech-55",
    "mainResourceCode": "tech-55"
  }
}
{
  "fieldResources": {
    "mainResourceCode": "tech-42"
  }
}
{}
Response examples (201)
Response examples (204)
Response examples (400)
{
  "errors": [
    {
      "code": "scheduling.workorders.code.unknown",
      "message": "The work order [WO-2026-00123] is unknown. It doesn't exist or it is outside the authorized hierarchy"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldResources.technicianCrew.unknown",
      "message": "The technician [tech-88] is unknown or outside the authorized hierarchy"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldResources.equipmentCrew.unknown",
      "message": "The equipment [truck-04] is unknown or outside the authorized hierarchy"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldResources.mainResource.unknown",
      "message": "The field resource [tech-42] is neither a known technician nor a known equipment, or is outside the authorized hierarchy"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.code.mandatory",
      "message": "Missing code in path."
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorder.uuid.invalid",
      "message": "Invalid work order UUID format"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.invalid.json",
      "message": "Invalid Json format."
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.mandatory",
      "message": "A time window is required to schedule a qualified work order"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldResources.reportFiller.mandatory",
      "message": "A report filler is required to schedule a qualified work order"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldResources.technicianCrew.mandatory",
      "message": "Equipment cannot be scheduled without a technician"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.scheduleMode.mandatory",
      "message": "Property timeWindow.scheduleMode must be TIME_RANGE or DAY_RANGE."
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.schedulerRequirements.skipControls.unknown",
      "message": "Unknown skipControls value [ignoreSkills]."
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.dates.format",
      "message": "Date [10/04/2026] don't respect expected format."
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.dates.order",
      "message": "The end of the time window must be strictly after its start"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.duration.negative",
      "message": "The computed duration is negative"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.duration.exceeded",
      "message": "The requested slot exceeds the maximum allowed scheduling duration"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.start.exceeded",
      "message": "The requested start date is beyond the maximum allowed horizon"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.workinghours.violation",
      "message": "The requested time window falls outside the technician's working hours"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timewindow.workinghours.violation",
      "message": "The resulting tour exceeds the technician's working day"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.subscription.invalid",
      "message": "An assigned field resource subscription is missing or terminated"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.office.mismatch",
      "message": "An assigned field resource does not belong to the expected office hierarchy"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.skill.missing",
      "message": "The assigned crew does not hold a skill required by the work order"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.characteristics.missing",
      "message": "The assigned equipment does not hold a characteristic required by the work order"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.status.invalid",
      "message": "The work order [WO-2026-00123] cannot be scheduled in its current status"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.rejected",
      "message": "Message raised by the scheduling engine for a rule not listed above."
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.techniciancrew.workorderoverlap",
      "message": "Another work order is already scheduled on this time window"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.equipmentcrew.workOrderoverlap",
      "message": "A machine is already scheduled on another work order for this time window"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.techniciancrew.timeoverlap",
      "message": "A technician is unavailable for this time window"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.fieldresources.equipmentcrew.timeoverlap",
      "message": "A machine is unavailable for this time window"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timeWindow.slas.violation",
      "message": "The requested time window falls outside the work order's SLA hours"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
{
  "errors": [
    {
      "code": "scheduling.workorders.schedule.timeWindow.appointment.violation",
      "message": "The requested time window falls outside the work order's appointment hours"
    }
  ],
  "errorReference": "723e4567-e89b-12d3-a456-426614174000"
}
Response examples (401)
{
  "errors": [
    {
      "code": "unauthorized.nocredentials",
      "message": "No credentials."
    }
  ],
  "errorReference": "f939c6b8c15045c9a70f500fdb570555"
}
{
  "errors": [
    {
      "code": "unauthorized.badcredentials",
      "message": "Bad Credentials."
    }
  ],
  "errorReference": "f1028f99811b422eb21f5ff176664069"
}
Response examples (403)
{
  "errors": [
    {
      "code": "access.forbiden",
      "message": "You don't have the rights to access this resource."
    }
  ],
  "errorReference": "a745dc4c5a2b473aaf8ce94c9260aa8f"
}
Response examples (429)
{
  "errors": [
    {
      "code": "ratelimiter.toomanyrequest",
      "message": "Rejected because of the rate limit definition."
    }
  ],
  "errorReference": "973326230a3f44daba6cc34a5939b4fb"
}
Response examples (500)
{
  "errors": [
    {
      "code": "internal.server.error",
      "message": "Something went wrong."
    }
  ],
  "errorReference": "6377010431314bf6b0b95ec4d32ddae0"
}