Apply Fulfillment Recommendations

Beta
POST/v1/operations/fulfillment-recommendations/actions/apply

Idempotent with Idempotency-Key header. Learn more

Adopts the recommended fulfillment policy for the named items, writing it as a per-item planning override.

The recommendation is recomputed as part of applying it, rather than taken from the request. Advice read minutes ago may no longer be the advice — demand moves — and writing a stale verdict would set a policy the engine would not give today. What comes back is what was actually written.

Takes effect on the next generated schedule; versions already generated keep the assumptions they were solved under.

Permissions requiredValues:production_schedules:update
The role behind your API key or agent must grant every one of these permissions.
item_idsarray of string

Items whose recommendation should be adopted.

Named explicitly rather than applied wholesale: adopting advice in bulk without saying what is being adopted is how a plant changes what it builds by accident. Items not named here are left exactly as they are.

objectstringenumValues:list

Resource type identifier.

page_infoobject

Pagination metadata.

next_page_urlstringnullable

Relative URL that fetches the next page of results.

previous_page_urlstringnullable

Relative URL that fetches the previous page of results.

has_next_pageboolean

Whether more results exist after this page.

has_prev_pageboolean

Whether results exist before this page.

dataarray of fulfillment_recommendation

Resources in this page.

objectstringenumValues:fulfillment_recommendation

Resource type identifier.

itementitynullable

The item the advice is about.

idstring

Unique identifier for the entity.

objectstringenumValues:entity

Resource type identifier.

typestringenumValues:accountactorentity

The 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.

namestringnullable

Human-readable display name for the entity (e.g. a user's full name, a sales order number).

handlestringnullable

Secondary human-readable identifier (e.g. email address, username, redacted API key value).

skustring

SKU of that item.

product_lineentitynullable

The product line it sells under, when it sells under one.

idstring

Unique identifier for the entity.

objectstringenumValues:entity

Resource type identifier.

typestringenumValues:accountactorentity

The 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.

namestringnullable

Human-readable display name for the entity (e.g. a user's full name, a sales order number).

handlestringnullable

Secondary human-readable identifier (e.g. email address, username, redacted API key value).

current_policystringenumValues:make_to_stockmake_to_order

How the item is planned today.

recommended_policystringenumValues:make_to_stockmake_to_order

How the engine thinks it should be planned.

changesboolean

Whether adopting the recommendation would change anything.

reasonstringenumValues:lead_time_infeasibleno_recent_demandsingle_customer

The rule that decided.

  • lead_time_infeasible: customers are promised less time than production needs, so the stock has to exist before the order does. Checked first, because producing to order is not possible rather than not preferred.
  • no_recent_demand: nothing has sold for long enough that a buffer is dead stock.
  • single_customer: effectively one customer buys it, and that customer is served to order.
  • lumpy_demand: demand arrives rarely and in wildly different sizes, which is the shape a safety stock sizes worst.
  • slow_moving_high_value: expensive units, few sold — the buffer costs more than the service it buys.
  • steady_demand: regular enough to forecast, which is what stocking is for.
average_demand_intervalnumber

Months observed divided by months with demand: 1 means it sells every month, 3 means once a quarter on average.

Measured on monthly buckets, which cannot distinguish two orders in one month from one.

coefficient_of_variationnumber

Squared coefficient of variation over the months that had demand, measuring how uneven the quantities are.

top_customer_share_pctnumber

The largest customer's share of this item's demand, as a percentage.

top_customer_namestringnullable

Name of that customer.

demand_weighted_lead_time_daysnumber

Calendar days customers are promised on average, weighted by how much each buys.

annual_cogsnumber

Annual cost of goods for this item: demand times unit cost.

months_since_last_saleinteger

Months since anything last sold, capped at the observation window.

mixed_stream_share_pctnumber

Percentage of demand from customers whose own stated policy disagrees with the recommendation.

A policy is resolved per SKU, so an item sold to both a stocking distributor and a contract customer gets one answer either way. A high share here is the signal that the single answer is uncomfortable.

Responses

200

Successful response for Apply Fulfillment Recommendations