Product API
Fulfillment guide
Send Order
Update Order

Update order

PUT api.foodin.ai/users/{user_id}/orders/{order_id}

Updates a delivery or pickup order. You can change the time slot, tip amount, instructions, user details, and items.

Request

Parameters

FieldTypeDescription
user_idstringThe ID of the user.
order_idstringThe ID of the order.
FieldTypeDescription
service_option_hold_idintegerThe ID of the service option hold.
initial_tip_centsintegerThe pre-delivery tip amount in cents.
special_instructionsstringSpecial instructions about the order to pass on to the shopper.
userobjectAny additional attributes for the user, these take precedence over values set during user create.

User Object

FieldTypeDescription
birthdaystringThe user's birthday in ISO 8601 format, this is used for alcohol eligibility validation.
phone_numberstringThe user's phone number.
sms_opt_inbooleanIndicator whether the user has opted-in to receive SMS communications.

User Object

FieldTypeDescription
line_numstringThe item's line number in the order.
countintegerThe count of the item. Must be a non-negative integer.
weightnumberThe weight of the item (defaults to lbs in the US). Must be a non-negative number.
special_instructionsstringAny special instructions about the item selection.
replacement_policystringOne of "no_replacements", "users_choice" (default if replacement_items specified), or "shoppers_choice" (default otherwise).
replacement_itemsArrayA list of requested replacement items if the original item could not be found. This field needs to be turned on via configuration.
itemObjectThe item's code.

Replacement_items object

FieldTypeDescription
upcstringThe item's universal product code (upc).

Item object

FieldTypeDescription
upcstringThe item's universal product code (upc).

Request examples

const axios = require("axios");
 
const user_id = "...";
const order_id = "...";
const token = "...";
 
const data = {
  service_option_hold_id: 1,
  initial_tip_cents: 1,
  special_instructions: "string",
  user: {
    birthday: "string",
    phone_number: "string",
    sms_opt_in: true,
  },
  items: [
    {
      line_num: "string",
      count: 1,
      weight: 1,
      special_instructions: "string",
      replacement_policy: "no_replacements",
      replacement_items: [
        {
          upc: "string",
        },
      ],
      item: {
        upc: "string",
      },
    },
  ],
};
 
axios({
  method: "put",
  url: `https://api.foodin.ai/users/${user_id}/orders/${order_id}`,
  headers: {
    Accept: "application/json",
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json",
  },
  data,
})
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(error);
  });

Response

Response data

FieldTypeDescription
idstringThe ID of the order.
statusstringThe current order status.
order_urlstringLink to view the order.
created_atstringThe time of order creation in ISO 8601 format.
cancellation_reasonstringThe reason the order was canceled.
localestringThe order's locale in POSIX format. Example: en_US.
fulfillment_detailsObjectThe order delivery details.
warningsArrayAny warnings associated with this request.
itemsArrayThe items in the order.

Fullfilment_details Object

FieldTypeDescription
store_locationstringThe location code of the store where the order was fulfilled. The store_location is often the same as the location_code that was used to create the order. However, orders can be fulfilled from a different store location.
window_starts_atstringThe start time of the delivery window in ISO 8601 format.
window_ends_atstringThe end time of the delivery window in ISO 8601 format.
delivered_atstringThe time the order was delivered in ISO 8601 format.
bag_countintegerThe number of bags in the order.
handoff_window_starts_atstringThe start time of the handoff window in ISO 8601 format.
handoff_window_ends_atstringThe end time of the handoff window in ISO 8601 format.

Warnings Object

FieldTypeDescription
errorObjectInformation relevant to the error.

|meta|Object|The error metadata.|

Meta Object

FieldTypeDescription
itemsArrayThe items that triggered the error.

Items Object

FieldTypeDescription
item_codestringThe store reference code (RRC) or universal product code (UPC) of an item that triggered the error.

Items Object

FieldTypeDescription
line_numstringThe item's line number in the order.
qtynumberThe quantity of the item.
qty_unitstringThe quantity type, either "each" or "kg".
qty_fulfillednumberThe fulfilled quantity of the item.
qty_fulfilled_unitstringThe fulfilled quantity type, either "each" or "kg".
qty_requestednumberThe initally requested quantity of the item.
qty_requested_unitstringThe initally requested quantity type, either "each" or "kg".
replacedbooleanIndicates whether the item was replaced.
scan_codestringThe scan code of the item.
replacement_policystringThe replacement policy for the item.
deliverer_provided_item_namestringThe item name provided by deliverers for items that they added.
deliverer_provided_item_priceObjectThe item price provided by deliverers for items that they added.
itemObjectThe item's codes.

Deliverer_provided_item_price Object

FieldTypeDescription
amountnumberThe amount of a specified currency.
currencystringThe currency type in ISO 4217 format. For example: USD.

Item Object

FieldTypeDescription
upcstringThe item's universal product code (UPC).
rrcstringThe item's store reference code (RRC).
requested_upcstringThe requested item's universal product code (UPC).
requested_rrcstringThe requested item's store reference code (RRC).
delivered_upcstringThe delivered item's universal product code (UPC).
delivered_rrcstringThe delivered item's store reference code (RRC).

Response example

{
  "id": "12345676789012345678780",
  "status": "created",
  "order_url": "https://foodin.ai/example_store//example-order",
  "created_at": "2022-02-22T00:00:00Z",
  "cancellation_reason": "delivery_driven",
  "locale": "en_US",
  "fulfillment_details": {
    "store_location": "000-31205",
    "window_starts_at": "2018-02-22T00:00:00Z",
    "window_ends_at": "2018-02-22T00:30:00Z"
  },
  "items": [
    {
      "line_num": "58",
      "qty": 15,
      "qty_unit": "each",
      "replaced": false,
      "scan_code": "00070481001169",
      "replacement_policy": "shoppers_choice",
      "item": {
        "upc": "123456789067",
        "rrc": "",
        "requested_upc": "123456789067",
        "requested_rrc": "",
        "delivered_upc": "123456789067",
        "delivered_rrc": ""
      }
    }
  ]
}

4XX Errors

CodeCauseError Message
400Invalid user id"User Not Found"
400User and order without phone number"can't be blank"
400Invalid replacement_policy"is not included in the list"
400Invalid items"1 item not found."
400Invalid order params*"There were issues with your request"
400Tip over maximum"Tip value is above maximum: $500.00."
400Fails alcohol compliance check"Alcoholic items can not be added to this order. Please remove and retry."
400Order updated recently"Order has been recently updated, please try again in a little while."
403Inactive user"User Not Active"