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
| Field | Type | Description |
|---|---|---|
| user_id | string | The ID of the user. |
| order_id | string | The ID of the order. |
| Field | Type | Description |
|---|---|---|
| service_option_hold_id | integer | The ID of the service option hold. |
| initial_tip_cents | integer | The pre-delivery tip amount in cents. |
| special_instructions | string | Special instructions about the order to pass on to the shopper. |
| user | object | Any additional attributes for the user, these take precedence over values set during user create. |
User Object
| Field | Type | Description |
|---|---|---|
| birthday | string | The user's birthday in ISO 8601 format, this is used for alcohol eligibility validation. |
| phone_number | string | The user's phone number. |
| sms_opt_in | boolean | Indicator whether the user has opted-in to receive SMS communications. |
User Object
| Field | Type | Description |
|---|---|---|
| line_num | string | The item's line number in the order. |
| count | integer | The count of the item. Must be a non-negative integer. |
| weight | number | The weight of the item (defaults to lbs in the US). Must be a non-negative number. |
| special_instructions | string | Any special instructions about the item selection. |
| replacement_policy | string | One of "no_replacements", "users_choice" (default if replacement_items specified), or "shoppers_choice" (default otherwise). |
| replacement_items | Array | A list of requested replacement items if the original item could not be found. This field needs to be turned on via configuration. |
| item | Object | The item's code. |
Replacement_items object
| Field | Type | Description |
|---|---|---|
| upc | string | The item's universal product code (upc). |
Item object
| Field | Type | Description |
|---|---|---|
| upc | string | The 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
| Field | Type | Description |
|---|---|---|
| id | string | The ID of the order. |
| status | string | The current order status. |
| order_url | string | Link to view the order. |
| created_at | string | The time of order creation in ISO 8601 format. |
| cancellation_reason | string | The reason the order was canceled. |
| locale | string | The order's locale in POSIX format. Example: en_US. |
| fulfillment_details | Object | The order delivery details. |
| warnings | Array | Any warnings associated with this request. |
| items | Array | The items in the order. |
Fullfilment_details Object
| Field | Type | Description |
|---|---|---|
| store_location | string | The 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_at | string | The start time of the delivery window in ISO 8601 format. |
| window_ends_at | string | The end time of the delivery window in ISO 8601 format. |
| delivered_at | string | The time the order was delivered in ISO 8601 format. |
| bag_count | integer | The number of bags in the order. |
| handoff_window_starts_at | string | The start time of the handoff window in ISO 8601 format. |
| handoff_window_ends_at | string | The end time of the handoff window in ISO 8601 format. |
Warnings Object
| Field | Type | Description |
|---|---|---|
| error | Object | Information relevant to the error. |
|meta|Object|The error metadata.|
Meta Object
| Field | Type | Description |
|---|---|---|
| items | Array | The items that triggered the error. |
Items Object
| Field | Type | Description |
|---|---|---|
| item_code | string | The store reference code (RRC) or universal product code (UPC) of an item that triggered the error. |
Items Object
| Field | Type | Description |
|---|---|---|
| line_num | string | The item's line number in the order. |
| qty | number | The quantity of the item. |
| qty_unit | string | The quantity type, either "each" or "kg". |
| qty_fulfilled | number | The fulfilled quantity of the item. |
| qty_fulfilled_unit | string | The fulfilled quantity type, either "each" or "kg". |
| qty_requested | number | The initally requested quantity of the item. |
| qty_requested_unit | string | The initally requested quantity type, either "each" or "kg". |
| replaced | boolean | Indicates whether the item was replaced. |
| scan_code | string | The scan code of the item. |
| replacement_policy | string | The replacement policy for the item. |
| deliverer_provided_item_name | string | The item name provided by deliverers for items that they added. |
| deliverer_provided_item_price | Object | The item price provided by deliverers for items that they added. |
| item | Object | The item's codes. |
Deliverer_provided_item_price Object
| Field | Type | Description |
|---|---|---|
| amount | number | The amount of a specified currency. |
| currency | string | The currency type in ISO 4217 format. For example: USD. |
Item Object
| Field | Type | Description |
|---|---|---|
| upc | string | The item's universal product code (UPC). |
| rrc | string | The item's store reference code (RRC). |
| requested_upc | string | The requested item's universal product code (UPC). |
| requested_rrc | string | The requested item's store reference code (RRC). |
| delivered_upc | string | The delivered item's universal product code (UPC). |
| delivered_rrc | string | The 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
| Code | Cause | Error Message |
|---|---|---|
| 400 | Invalid user id | "User Not Found" |
| 400 | User and order without phone number | "can't be blank" |
| 400 | Invalid replacement_policy | "is not included in the list" |
| 400 | Invalid items | "1 item not found." |
| 400 | Invalid order params* | "There were issues with your request" |
| 400 | Tip over maximum | "Tip value is above maximum: $500.00." |
| 400 | Fails alcohol compliance check | "Alcoholic items can not be added to this order. Please remove and retry." |
| 400 | Order updated recently | "Order has been recently updated, please try again in a little while." |
| 403 | Inactive user | "User Not Active" |