Publish Production Schedule
Beta/v1/operations/production-schedules/{id}/actions/publishThis endpoint is idempotent. Learn more
Publishes a draft schedule, freezing its first weeks.
Publishing is what makes a plan a commitment: the frozen weeks' lines are marked frozen, the frozen line count and quantity are captured onto the version, and any published version whose horizon overlaps this one's is superseded rather than rewritten. After this, a change inside the frozen window has to state a reason.
Only a draft can be published. How many weeks freeze comes from the account's frozen-weeks setting as it stood when the version was generated, and a version generated with zero frozen weeks publishes without committing to anything.
The frozen counts are snapshotted here and never recomputed, so adherence keeps the denominator it was committed to.
idstringID of the production schedule.
idstringSchedule ID.
objectstringenumValues:production_scheduleResource type identifier.
versionintegerSequential version number within the account.
Regenerating a draft re-solves it in place and keeps its number; only generating a new plan takes the next one.
statusstringenumValues:draftgeneratingpublishedWhere this version is in its lifecycle.
draft: still editable and commits to nothing.generating: a scheduled solve is still building this version.published: live, with its leading weeks frozen as a commitment to the floor.superseded: a later version was published over an overlapping horizon.archived: retired without being replaced.failed: the solver could not produce a plan;error_messagesays why.
namestringnullableLabel for the version, such as the planning cycle it was generated for.
planning_as_of_atstring (date-time)The instant the plan was calculated against.
horizon_starts_atstring (date-time)First instant of the horizon.
horizon_ends_atstring (date-time)First instant of the last day of the horizon.
horizon_weeksintegerLength of the horizon in weeks.
frozen_weeksintegerHow many leading weeks freeze on publish.
Publishing freezes every campaign that starts inside the window; changing one afterwards requires a reason and is recorded in the deviation log.
frozen_through_atstring (date-time)nullableThe last day the frozen window covers, set when the version is published.
demand_basisstringenumValues:trailing_12seasonal_emaWhich demand basis produced the plan.
trailing_12: demand is taken from the trailing twelve months of orders.seasonal_ema: demand is a seasonal exponential moving average, which follows a season arriving earlier or later than usual.
generation_sourcestringenumValues:manualscheduledWhat triggered the generation.
manual: someone asked for this version.scheduled: the account's generation cadence produced it on its own.
solver_versionstringVersion of the solver that produced the plan.
settings_snapshotobjectThe planning assumptions used, frozen at generation so the plan stays explainable after settings change.
diagnosticsobjectWhat the solver could not do, frozen at generation.
eoq_capped_skusarray of stringItems whose economic lot size was reduced to fit one machine-week, meaning shorter and more frequent campaigns.
unschedulable_skusarray of stringItems that cannot fit even a single lot into a machine-week and are therefore never scheduled.
capacity_starved_skusarray of stringItems below their reorder point that never won a slot in the horizon.
This is the signal that the plant is short of capacity.
items_without_run_ratearray of stringItems with no measured run rate, which cannot be scheduled because their machine time is unknown.
excluded_item_countintegerNumber of items the merchant has excluded from planning.
constraint_machine_countintegerMachines the constraint department contributed to this solve.
measured_batch_countintegerBatches found on those machines in the demand window.
Zero means nothing has been scanned there, which is why a plan can be empty even with machines configured.
machines_without_stepintegerMachines in the constraint department with no production step.
Their campaigns derive no downstream department work.
changeover_slope_minutesnumberMinutes of changeover the model adds for each new input a product transition introduces.
Calibrated from measured production against average_inputs_added, so the modelled changeover lands on the time the floor actually reports rather than on a fixed allowance.
average_inputs_addednumberAverage inputs a product transition introduces, measured from history.
Every demand override that moved a number.
objectstringenumValues:listResource type identifier.
page_infoobjectPagination metadata.
next_page_urlstringnullableRelative URL that fetches the next page of results.
previous_page_urlstringnullableRelative URL that fetches the previous page of results.
has_next_pagebooleanWhether more results exist after this page.
has_prev_pagebooleanWhether results exist before this page.
dataarray of objectResources in this page.
overrideentitynullableThe override that was applied.
idstringUnique identifier for the entity.
objectstringenumValues:entityResource type identifier.
typestringenumValues:accountactorentityThe resource kind that this entity references, as an object-type value (e.g. user, account).
Unlike object — which is always entity — this names the underlying resource the id points to.
namestringnullableHuman-readable display name for the entity (e.g. a user's full name, a sales order number).
handlestringnullableSecondary human-readable identifier (e.g. email address, username, redacted API key value).
itementitynullableThe item whose demand changed.
idstringUnique identifier for the entity.
objectstringenumValues:entityResource type identifier.
typestringenumValues:accountactorentityThe resource kind that this entity references, as an object-type value (e.g. user, account).
Unlike object — which is always entity — this names the underlying resource the id points to.
namestringnullableHuman-readable display name for the entity (e.g. a user's full name, a sales order number).
handlestringnullableSecondary human-readable identifier (e.g. email address, username, redacted API key value).
month_starts_atstring (date-time)The first instant of the month the override applied to.
beforenumberDemand before the override.
afternumberDemand after the override.
adjustmentstringenumValues:absolutedelta_unitsdelta_percentHow the override was expressed.
absolute: the override replaced the forecast for the month outright.delta_units: the override was added to the forecast.delta_percent: the override scaled the forecast.
reasonstringnullableenumValues:new_customerlost_accountpromotionWhy the override exists.
firm_demand_unitsnumberOutstanding order quantity this plan owes, expressed in the constraint item's own unit.
Zero means nothing is on order and the plan is driven purely by the forecast.
undated_firm_order_countintegerOpen orders carrying no ship-by commitment, dated at the front of the horizon because they are issued and unshipped.
A non-zero count means orders placed before commitments were tracked still need a ship-by date.
make_to_order_item_countintegerPlanned items built only against the order book rather than to a forecast.
Commitments this plan does not meet.
objectstringenumValues:listResource type identifier.
page_infoobjectPagination metadata.
next_page_urlstringnullableRelative URL that fetches the next page of results.
previous_page_urlstringnullableRelative URL that fetches the previous page of results.
has_next_pagebooleanWhether more results exist after this page.
has_prev_pagebooleanWhether results exist before this page.
dataarray of schedule_at_risk_orderResources in this page.
objectstringenumValues:schedule_at_risk_orderResource type identifier.
sales_orderentitynullableThe order at risk.
idstringUnique identifier for the entity.
objectstringenumValues:entityResource type identifier.
typestringenumValues:accountactorentityThe resource kind that this entity references, as an object-type value (e.g. user, account).
Unlike object — which is always entity — this names the underlying resource the id points to.
namestringnullableHuman-readable display name for the entity (e.g. a user's full name, a sales order number).
handlestringnullableSecondary human-readable identifier (e.g. email address, username, redacted API key value).
itementitynullableThe item that has to be produced to meet it.
idstringUnique identifier for the entity.
objectstringenumValues:entityResource type identifier.
typestringenumValues:accountactorentityThe resource kind that this entity references, as an object-type value (e.g. user, account).
Unlike object — which is always entity — this names the underlying resource the id points to.
namestringnullableHuman-readable display name for the entity (e.g. a user's full name, a sales order number).
handlestringnullableSecondary human-readable identifier (e.g. email address, username, redacted API key value).
skustringSKU of that item.
unitsnumberOutstanding quantity still owed.
due_weekintegerHorizon week the constraint stage has to finish in for the order to ship on time.
reasonstringenumValues:past_dueundatedshortWhy the commitment is at risk.
past_due: production needed to start before this plan begins.undated: the order carries no ship-by commitment, so it is treated as owed now.short: the plan projects less stock than the order needs in the week it is needed.
finishingobjectHow the second stage — the rest of the factory — fared against the plan the constraint produced.
weekly_capacity_hoursnumberHours the second stage can work in one week.
planned_hours_by_weekarray of numberHours the plan asks of it, week by week.
utilisation_by_weekarray of numberThose hours as a fraction of capacity, week by week.
greige_starved_skusarray of stringFinished goods that wanted building across the whole horizon and never had greige to build from.
capacity_starved_skusarray of stringFinished goods that had greige and never had hours.
items_without_run_ratearray of stringFinished goods with no measured finishing rate, which cannot be levelled because the hours they cost are unknown.
unused_greige_unitsnumberConstraint output the horizon never converts into anything.
A large figure means the two stages are planned against different demand, which is worth looking at rather than leaving as an unexplained pile of greige.
total_planned_unitsnumberTotal finished units the stage plans across the horizon.
line_countintegerHow many finishing lines the plan holds.
finishing_machine_countintegerMachines outside the constraint department that the second stage was sized from.
Zero means its capacity was estimated from the shift pattern alone rather than counted.
finishing_capacity_is_estimatedbooleanWhether the second stage's capacity was estimated rather than counted from machines.
error_messagestringnullableWhy generation failed, when it did.
frozen_line_countintegerNumber of lines that were frozen at publish.
Captured once and never recomputed, because frozen-week adherence measures against what was committed to.
frozen_planned_quantitynumberTotal quantity frozen at publish.
generated_byactornullableThe actor that generated this version.
idstringUnique identifier of the actor.
objectstringenumValues:actorResource type identifier.
typestringenumValues:userapi_keyagentActor type.
user: a human user account.api_key: a programmatic caller authenticating with an API key.agent: an automated agent acting on the account's behalf.group: a shared group identity, such as a "Customer Service" persona, rather than a single individual.
namestringnullableThe actor's display name.
handlestringnullableHuman-readable handle identifying the actor.
- For
useractors: the user's email address. - For
api_keyactors: the redacted key value.
Other actor types carry no handle.
avatar_urlstringnullableURL of the actor's profile photo, if one is set.
Only populated for user actors.
The role the actor holds in the account, which determines what it is permitted to do.
idstringRole ID.
objectstringenumValues:roleResource type identifier.
namestringDisplay name of the role.
Unique within the account.
typestringenumValues:adminuserscannerThe kind of role.
The type gates behavior that individual permissions do not cover, and some actions are reserved for a single role type.
admin: full administrative access. Sensitive areas such as API keys, billing, and third-party integrations are restricted to admins no matter what permissions another role holds.user: a custom role tailored to a specific need, with its permissions defined explicitly. Roles created through the API always have this type.scanner: the role used by shop-floor scanning stations, assigned automatically when a scanning-station user is created.sales_rep: a role for sales representatives. Order analytics are scoped to the rep's own orders.agent: a role assigned to an automated agent rather than a person.
ownerownernullableProvenance of this role.
System-owned roles are platform-provided defaults shared across all accounts and cannot be updated or deleted; account-owned roles are custom to your account.
objectstringenumValues:ownerResource type identifier.
typestringenumValues:systemaccountWhere this resource came from.
system: a platform-provided default shared across all accounts; not editable.account: created and owned by a specific account; theaccountfield identifies which.
accountaccountnullableThe account that owns this resource.
Present only when type is account; system-owned resources have no owning account.
idstringAccount ID.
objectstringenumValues:accountResource type identifier.
namestringThe account's display name.
The address billed by default on orders for this account.
idstringAddress ID.
objectstringenumValues:addressResource type identifier.
namestringDisplay name of the address.
phonestringnullablePhone number associated with the address.
emailstringnullableEmail address associated with the address.
typestringenumValues:standarddrop_shipHow the address is used.
standard: a normal shipping or billing address.drop_ship: an address an order is shipped to directly, typically a third party or end customer rather than the account itself.
receive_calendar_idstringnullableThe operating calendar naming the days this dock accepts freight.
The most specific link in the receiving chain: set it when one of a customer's sites keeps different days from the rest. Null falls through to the customer, then their group, then the account default.
geolocationgeolocationnullableStreet-level location details for the address.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
The address shipped to by default on orders for this account.
idstringAddress ID.
objectstringenumValues:addressResource type identifier.
namestringDisplay name of the address.
phonestringnullablePhone number associated with the address.
emailstringnullableEmail address associated with the address.
typestringenumValues:standarddrop_shipHow the address is used.
standard: a normal shipping or billing address.drop_ship: an address an order is shipped to directly, typically a third party or end customer rather than the account itself.
receive_calendar_idstringnullableThe operating calendar naming the days this dock accepts freight.
The most specific link in the receiving chain: set it when one of a customer's sites keeps different days from the rest. Null falls through to the customer, then their group, then the account default.
geolocationgeolocationnullableStreet-level location details for the address.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
brandingaccount_brandingnullableCustomer-facing branding for the account, such as the logo, support contacts, and social links.
idstringBranding ID.
objectstringenumValues:account_brandingResource type identifier.
support_emailstringnullableThe email address customers are directed to for support.
phone_numberstringnullableThe account's public contact phone number.
logo_urlstringnullableStored location of the account's logo image.
Logos uploaded through the API are stored as an object key rather than a fetchable link, so use the Get Account Logo URL endpoint to obtain a short-lived download URL.
favicon_urlstringnullableStored location of the account's customer-portal favicon.
Favicons uploaded through the API are stored as an object key rather than a fetchable link, so use the Get Account Favicon URL endpoint to obtain a short-lived download URL.
facebook_handlestringnullableFacebook handle.
instagram_handlestringnullableInstagram handle.
linkedin_handlestringnullableLinkedIn handle.
twitter_handlestringnullableTwitter handle.
website_urlstringnullableThe account's public website.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
portalaccount_portalnullableThe account's customer portal settings, including the portal URL slug.
idstringPortal ID.
objectstringenumValues:account_portalResource type identifier.
slugstringURL slug that identifies the account's customer portal.
Unique across all accounts.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
permissionsarray of stringnullablePermissions granted by this role, in {permission}:{action} format, such as customers:read.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
published_byactornullableThe actor that published this version.
idstringUnique identifier of the actor.
objectstringenumValues:actorResource type identifier.
typestringenumValues:userapi_keyagentActor type.
user: a human user account.api_key: a programmatic caller authenticating with an API key.agent: an automated agent acting on the account's behalf.group: a shared group identity, such as a "Customer Service" persona, rather than a single individual.
namestringnullableThe actor's display name.
handlestringnullableHuman-readable handle identifying the actor.
- For
useractors: the user's email address. - For
api_keyactors: the redacted key value.
Other actor types carry no handle.
avatar_urlstringnullableURL of the actor's profile photo, if one is set.
Only populated for user actors.
The role the actor holds in the account, which determines what it is permitted to do.
idstringRole ID.
objectstringenumValues:roleResource type identifier.
namestringDisplay name of the role.
Unique within the account.
typestringenumValues:adminuserscannerThe kind of role.
The type gates behavior that individual permissions do not cover, and some actions are reserved for a single role type.
admin: full administrative access. Sensitive areas such as API keys, billing, and third-party integrations are restricted to admins no matter what permissions another role holds.user: a custom role tailored to a specific need, with its permissions defined explicitly. Roles created through the API always have this type.scanner: the role used by shop-floor scanning stations, assigned automatically when a scanning-station user is created.sales_rep: a role for sales representatives. Order analytics are scoped to the rep's own orders.agent: a role assigned to an automated agent rather than a person.
ownerownernullableProvenance of this role.
System-owned roles are platform-provided defaults shared across all accounts and cannot be updated or deleted; account-owned roles are custom to your account.
objectstringenumValues:ownerResource type identifier.
typestringenumValues:systemaccountWhere this resource came from.
system: a platform-provided default shared across all accounts; not editable.account: created and owned by a specific account; theaccountfield identifies which.
accountaccountnullableThe account that owns this resource.
Present only when type is account; system-owned resources have no owning account.
idstringAccount ID.
objectstringenumValues:accountResource type identifier.
namestringThe account's display name.
The address billed by default on orders for this account.
idstringAddress ID.
objectstringenumValues:addressResource type identifier.
namestringDisplay name of the address.
phonestringnullablePhone number associated with the address.
emailstringnullableEmail address associated with the address.
typestringenumValues:standarddrop_shipHow the address is used.
standard: a normal shipping or billing address.drop_ship: an address an order is shipped to directly, typically a third party or end customer rather than the account itself.
receive_calendar_idstringnullableThe operating calendar naming the days this dock accepts freight.
The most specific link in the receiving chain: set it when one of a customer's sites keeps different days from the rest. Null falls through to the customer, then their group, then the account default.
geolocationgeolocationnullableStreet-level location details for the address.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
The address shipped to by default on orders for this account.
idstringAddress ID.
objectstringenumValues:addressResource type identifier.
namestringDisplay name of the address.
phonestringnullablePhone number associated with the address.
emailstringnullableEmail address associated with the address.
typestringenumValues:standarddrop_shipHow the address is used.
standard: a normal shipping or billing address.drop_ship: an address an order is shipped to directly, typically a third party or end customer rather than the account itself.
receive_calendar_idstringnullableThe operating calendar naming the days this dock accepts freight.
The most specific link in the receiving chain: set it when one of a customer's sites keeps different days from the rest. Null falls through to the customer, then their group, then the account default.
geolocationgeolocationnullableStreet-level location details for the address.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
brandingaccount_brandingnullableCustomer-facing branding for the account, such as the logo, support contacts, and social links.
idstringBranding ID.
objectstringenumValues:account_brandingResource type identifier.
support_emailstringnullableThe email address customers are directed to for support.
phone_numberstringnullableThe account's public contact phone number.
logo_urlstringnullableStored location of the account's logo image.
Logos uploaded through the API are stored as an object key rather than a fetchable link, so use the Get Account Logo URL endpoint to obtain a short-lived download URL.
favicon_urlstringnullableStored location of the account's customer-portal favicon.
Favicons uploaded through the API are stored as an object key rather than a fetchable link, so use the Get Account Favicon URL endpoint to obtain a short-lived download URL.
facebook_handlestringnullableFacebook handle.
instagram_handlestringnullableInstagram handle.
linkedin_handlestringnullableLinkedIn handle.
twitter_handlestringnullableTwitter handle.
website_urlstringnullableThe account's public website.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
portalaccount_portalnullableThe account's customer portal settings, including the portal URL slug.
idstringPortal ID.
objectstringenumValues:account_portalResource type identifier.
slugstringURL slug that identifies the account's customer portal.
Unique across all accounts.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
permissionsarray of stringnullablePermissions granted by this role, in {permission}:{action} format, such as customers:read.
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
published_atstring (date-time)nullableWhen this version was published.
superseded_byentitynullableThe version that replaced this one.
Set automatically when a later version is published over an overlapping horizon.
idstringUnique identifier for the entity.
objectstringenumValues:entityResource type identifier.
typestringenumValues:accountactorentityThe resource kind that this entity references, as an object-type value (e.g. user, account).
Unlike object — which is always entity — this names the underlying resource the id points to.
namestringnullableHuman-readable display name for the entity (e.g. a user's full name, a sales order number).
handlestringnullableSecondary human-readable identifier (e.g. email address, username, redacted API key value).
created_atstring (date-time)Creation timestamp.
updated_atstring (date-time)Last updated timestamp.
Responses
Successful response for Publish Production Schedule