Planning API
A draft proposal for an API to schedule and manage schedule orders.
All planning is done on a per-location basis, as by nature the Planning process is per-location.
Schedule Orders are generated from imported work orders or supply orders and have already been scheduled, or are prospective for scheduling. The schedule order concept is an abstraction and is generally a one-to-one relationship with a work order or supply order.
This abstraction allows independent modifications to either the schedule order or the work order, supply order, or both. If the schedule order is unreleased, it is updated with the latest work order information at the next schedule run.
In practice and throughout the application, however, schedule orders are often simply called "work orders".
API Definition
Defined below are the proposed set of API calls to manage Schedule Orders in the system.
Example uses of this API include discovering the current scheduled state of a schedule order (scheduled, locked/unlocked, released/unreleased, open/close) or its current properties such as last scheduled priority, end request date, promise date, routing used to schedule.
This API can also return the last scheduled rope (set of operations to produce the work order), and the status of each step in the rope.
Finally, it can be used to manage schedule orders and change various properties such as lock or release status, or close a schedule order.
Note that this is very different than importing work order records themselves, that is done with Import/Export File Formats; this API is designed to interact with schedule orders that already exist in the system.
Url
Action
Description
/api/v2/scheduling/{dataSetId}/orders
Parameters
locked = [0 - false | 1 - true]
released = [0 - false | 1 - true]
onhold = [0 - false | 1 - true]
includeClosed = [1 - true]
closedAfter = [datetime value]
closedBefore = [datetime value]
location = [text value]
withRoot = [True | false] (Add a root element when mime type is 'application/json')
GET
Get all schedule orders with a default of excluding closed.
/api/v2/scheduling/{dataSetId}/orders/{id}
GET
Get a specific order by id.
/api/v2/scheduling/{dataSetId}/orders/{id}/ropeitems
Parameters
withRoot = [True | false] (Add a root element when mime type is 'application/json')
GET
Get a list of the current rope items for a schedule order by id.
/api/v2/scheduling/{dataSetId}/orders/{id}/lock
POST
Lock the schedule order if properly scheduled and unlocked, a validation message otherwise.
/api/v2/scheduling/{dataSetId}/orders/{id}/unlock
POST
Unlock the schedule order if no closed and is already locked, a validation message otherwise.
/api/v2/scheduling/{dataSetId}/orders/{id}/release
POST
Release the schedule order if properly scheduled and unlocked, locked and unreleased, a validation message otherwise.
/api/v2/scheduling/{dataSetId}/orders/{id}/unrelease
POST
Unrelease the schedule order if it is not in progress, not closed, and already released, a validation message otherwise.
/api/v2/scheduling/{dataSetId}/orders/{id}/hold
POST
Place the order on hold (which is just a status and does not impact scheduling).
/api/v2/scheduling/{dataSetId}/orders/{id}/unhold
POST
Remove the hold on the order, if the order has a hold.
/api/v2/scheduling/{dataSetId}/orders/{id}/close
POST
Close the schedule order if not closed already regardless of state or status, a validation message otherwise.
/api/v2/scheduling/{dataSetId}/orders/{id}/reopen
POST
Reopen the schedule order if closed, putting it to an unlocked and unreleased state.
Scheduling Order Record
This record returns data for a scheduled work order or a prospect. This is different than the the import record of the same name. This record is fully read-only and is based on the source work order from which it was produced. It also contains many more properties that are a result of the scheduling process.
Note that there are many more properties from the work order that are not returned by this record; those values can be retrieved and changed with the Work Order or Supply Order API. This interface concerns itself primarily with the results of the scheduling process.
Name
Type
Values
Id
integer
The generated unique identifier for the schedule order.
OrderNumber
text
The order number of the source (usually the work or supply order number).
OrderDate
date
The order date.
BeginRequestDate
date
An optional begin request date, used in the "set start date" scheduler function or when involved in a work order packet.
EndRequestDate
date
The end request date from the source work or supply order.
PartNumber
text
The part used to schedule the order.
Revision
text
The optional revision of the part.
Location
text
The location of the part (which matches the source work order).
PartId
integer
The unique identifier for the part used to schedule the order.
LocationId
integer
The unique identifier for the location of the part.
RoutingName
text
The name of the routing for the part used in the order.
OrderQuantity
decimal
The quantity used to schedule the order.
Priority
integer
The priority used to schedule the order.
FrozenPriority
boolean
When true, the Priority value for this order is not changed during the Execution Priority process.
Expedite
integer
The expedite used to schedule the order.
SalesOrderNumber
string
An optional sales order number.
LineItem
string
An optional line item for the order.
SalesOrderQuantity
decimal
An optional sales order quantity (not used for scheduling).
Customer
string
An optional customer value.
UnitPrice
decimal
An optional unit price value.
GroupName
text
If the order was scheduled in a group, the unique name of that group.
GroupResourceName
text
If the order was scheduled in a group, the resource used for that group.
GroupOrder
int
If the order was scheduled in a group, the sequence of that order among the others in the group.
GroupTotal
int
If the order was scheduled in a group, the total number of orders in the group.
PlannedReleaseDate
date
The scheduled planned release date of the order.
PromiseDate
date
The scheduled promise date of the order.
OnTimeDelivery
integer
The difference between EndRequestDate and PromiseDate as a number of days using the resource calendar.
LockDate
date
A lock date for the order, or null if unlocked.
ReleaseDate
date
A release date for the order, or null if unreleased.
OnHoldDate
date
A date the order was placed on hold, or null if not on hold.
CloseDate
date
A date the order was closed, or null if open.
InProgress
bool
The order has been released and is in progress (being transacted).
InInventory
bool
The order has completed transaction and has been marked as moved to inventory.
OnHandQtyPenetration
decimal
The on hand quantity penetration value, an output of the Execution Priority process.
AvailableOnHandQtyPenetration
decimal
The available on hand quantity penetration value, an output of the Execution Priority process.
MaterialAvailabilityCheck
bool
A calculated material availability check for parts involved in a bill of material, an output of the Execution Priority process.
Rope Item Record
A rope item represents a single operation in the production of a work order. It is based off a Routing Item and created in the scheduling process. For a scheduled order, there is always at least one rope item representing the final operation, which is routinely buffered.
The rope is the result of the scheduling process, and is generally a one-to-one relationship with the routing of the part for the order.
Name
Type
Values
Id
integer
The generated unique identifier of the record.
OrderNumber
text
The order number of the source (usually the work order number).
SchedulingOrderId
integer
The unique identifier of the schedule order.
OperationSequenceNumber
integer
A unique value used to both represent the order of all rope items, but also to uniquely identify a step in the rope for an order.
ResourceName
text
The resource of this step in the routing.
ResourceId
integer
The unique identifier of the resource.
ResourceType
integer
A Resource Type value indicating the type of resource at this operation.
IsPrimaryConstraint
boolean
An indication if this operation is where the buffer is placed for any constrained operations (only one is applied).
Buffer
integer
A positive time duration in minutes representing an optional buffer value applied at this operation.
SetupTime
integer
A positive time duration in minutes representing any setup time applied at this operation.
FixedOffset
integer
A positive time duration in minutes representing any fixed offset applied at this operation.
Efficiency
integer
The efficiency value applied to the run duration calculations at this operation, valid values are 1 to 100 inclusive.
CrewSize
integer
The crew size applied to the run duration calculations at this operation.
OperationDescription
text
Any description of operation from the source routing.
ScheduledReceiptAtBuffer
date
For buffered operations, the planned arrival to buffer.
GreenZoneEnd
date
For buffered operations, the planned end of the green zone (and arrival to yellow zone).
YellowZoneEnd
date
For buffered operations, the planned end of the yellow zone (and arrival to red zone).
ScheduledStartOperation
date
The planned start of the operation.
FullDuration
integer
A positive time value in minutes representing the total duration of this operation.
EfficiencyDuration
integer
The calculated duration taking Efficiency into account, which is the duration multiplied by the Efficiency value.
ScheduledEndOperation
date
The planned completion of the operation.
ActualReceiptAtBuffer
date
For buffered operations, the actual arrival to the buffer.
ActualStartOperation
date
The actual start of the operation.
ActualEndOperation
date
The actual end of the operation.
ActualReceiptAtBuffer_LastBatch
bool
Has the transaction completed at the receive operation?
ActualStartOperation_LastBatch
bool
Has the transaction completed at the start operation?
ActualEndOperation_LastBatch
bool
Has the transaction completed at the end operation?
QuanityReceived
decimal
For buffered operations, the quantity received to date.
QuantityStarted
decimal
The quantity started to date.
QuantityCompleted
decimal
The quantity completed to date.
ReasonCode
text
Any reason codes that have been entered for this operation.
Last updated