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