Update Menu Item
curl --request PUT \
--url 'https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}' \
--header 'Content-Type: application/json' \
--data '
{
"is_available": true,
"menu_specific_price": 123,
"display_order": 123,
"menu_item_description": "<string>",
"promotional_tags": [
{}
],
"menu_item_modifiers": {}
}
'import requests
url = "https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}"
payload = {
"is_available": True,
"menu_specific_price": 123,
"display_order": 123,
"menu_item_description": "<string>",
"promotional_tags": [{}],
"menu_item_modifiers": {}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
is_available: true,
menu_specific_price: 123,
display_order: 123,
menu_item_description: '<string>',
promotional_tags: [{}],
menu_item_modifiers: {}
})
};
fetch('https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'is_available' => true,
'menu_specific_price' => 123,
'display_order' => 123,
'menu_item_description' => '<string>',
'promotional_tags' => [
[
]
],
'menu_item_modifiers' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}"
payload := strings.NewReader("{\n \"is_available\": true,\n \"menu_specific_price\": 123,\n \"display_order\": 123,\n \"menu_item_description\": \"<string>\",\n \"promotional_tags\": [\n {}\n ],\n \"menu_item_modifiers\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}")
.header("Content-Type", "application/json")
.body("{\n \"is_available\": true,\n \"menu_specific_price\": 123,\n \"display_order\": 123,\n \"menu_item_description\": \"<string>\",\n \"promotional_tags\": [\n {}\n ],\n \"menu_item_modifiers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"is_available\": true,\n \"menu_specific_price\": 123,\n \"display_order\": 123,\n \"menu_item_description\": \"<string>\",\n \"promotional_tags\": [\n {}\n ],\n \"menu_item_modifiers\": {}\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"success": true,
"updated_item": {}
}Menu Items
Update Menu Item
Modify menu item properties, availability, and configuration within specific menus to maintain accurate and optimized menu offerings.
PUT
/
stores
/
{store_id}
/
menus
/
{menu_id}
/
items
/
{item_id}
Update Menu Item
curl --request PUT \
--url 'https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}' \
--header 'Content-Type: application/json' \
--data '
{
"is_available": true,
"menu_specific_price": 123,
"display_order": 123,
"menu_item_description": "<string>",
"promotional_tags": [
{}
],
"menu_item_modifiers": {}
}
'import requests
url = "https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}"
payload = {
"is_available": True,
"menu_specific_price": 123,
"display_order": 123,
"menu_item_description": "<string>",
"promotional_tags": [{}],
"menu_item_modifiers": {}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
is_available: true,
menu_specific_price: 123,
display_order: 123,
menu_item_description: '<string>',
promotional_tags: [{}],
menu_item_modifiers: {}
})
};
fetch('https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'is_available' => true,
'menu_specific_price' => 123,
'display_order' => 123,
'menu_item_description' => '<string>',
'promotional_tags' => [
[
]
],
'menu_item_modifiers' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}"
payload := strings.NewReader("{\n \"is_available\": true,\n \"menu_specific_price\": 123,\n \"display_order\": 123,\n \"menu_item_description\": \"<string>\",\n \"promotional_tags\": [\n {}\n ],\n \"menu_item_modifiers\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}")
.header("Content-Type", "application/json")
.body("{\n \"is_available\": true,\n \"menu_specific_price\": 123,\n \"display_order\": 123,\n \"menu_item_description\": \"<string>\",\n \"promotional_tags\": [\n {}\n ],\n \"menu_item_modifiers\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/stores/{{store_id}}/menus/{{menu_id}}/items/{{item_id}}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"is_available\": true,\n \"menu_specific_price\": 123,\n \"display_order\": 123,\n \"menu_item_description\": \"<string>\",\n \"promotional_tags\": [\n {}\n ],\n \"menu_item_modifiers\": {}\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"success": true,
"updated_item": {}
}This endpoint provides comprehensive menu item update capabilities, allowing businesses to adjust item properties, pricing, availability, and other menu-specific configurations while maintaining system consistency.
Menu item updates enable dynamic menu management, allowing businesses to respond to inventory changes, promotional requirements, and operational needs in real-time.
Path Parameters
string
required
The unique identifier of the store containing the menu
string
required
The unique identifier of the menu containing the item to update
string
required
The unique identifier of the item to update
Request Body
boolean
Controls whether the item is available for ordering in this menu
number
Custom pricing for this item within this specific menu (overrides base item price)
integer
Controls the display order of the item within the menu
string
Menu-specific description that overrides the default item description
array
Array of promotional tags specific to this menu item association
object
Menu-specific modifier configurations for this item
Request Example
{
"is_available": true,
"menu_specific_price": 12.99,
"display_order": 5,
"menu_item_description": "Fresh grilled salmon with seasonal vegetables",
"promotional_tags": ["featured", "healthy"],
"menu_item_modifiers": {
"cooking_preferences": ["medium", "well-done"],
"side_options": ["rice", "vegetables", "salad"]
}
}
Response
string
Confirmation message indicating the operation result
boolean
Whether the update operation completed successfully
object
Details of the updated menu item configuration
Response Example
{
"message": "Menu item updated successfully",
"success": true,
"updated_item": {
"item_id": "c81d64ff-0651-48af-ab61-9b503be9f020",
"menu_id": "813f8ac7-cae5-4d2d-92ef-d6798547f95c",
"is_available": true,
"menu_specific_price": 12.99,
"display_order": 5,
"last_updated": "2024-01-15T10:30:00Z"
}
}
Menu Item Update Strategies
Menu Item Update Strategies
Availability Management
- Control item availability without removing from menu
- Handle temporary shortages or supply chain issues
- Manage seasonal item availability
- Support time-based availability controls
- Implement menu-specific pricing strategies
- Support promotional pricing for specific menus
- Test price points across different menu configurations
- Maintain competitive pricing while maximizing margins
- Optimize item positioning within menus
- Highlight popular or promoted items through ordering
- Create logical groupings and flow
- Enhance customer discovery and selection experience
- Tailor descriptions for specific menu contexts
- Highlight different features for different customer segments
- Support localization and customization requirements
- Enhance marketing and promotional messaging
Menu-Specific Settings: Updates apply only to the specific menu-item association. The base item properties remain unchanged unless specifically modified through item management endpoints.
Batch Updates: For updating multiple items with similar changes, consider implementing batch update logic in your application to reduce API calls and improve performance.
Use Cases
Common Menu Item Update Scenarios
Common Menu Item Update Scenarios
Dynamic Availability Management
- Toggle item availability based on inventory levels
- Handle equipment maintenance affecting specific items
- Manage staffing limitations for complex preparations
- Control availability during special events or promotions
- Update pricing for limited-time offers
- Add promotional tags and descriptions
- Adjust display order to feature promoted items
- Configure special modifiers for promotional periods
- Update descriptions to reflect seasonal ingredients
- Adjust pricing for seasonal cost variations
- Modify availability based on seasonal supply
- Update promotional tags for seasonal marketing
- Reorder items based on performance data
- Update descriptions based on customer feedback
- Adjust pricing based on market analysis
- Optimize modifier configurations for efficiency
Update Field Details
Understanding Update Fields
Understanding Update Fields
Availability Control
is_available: Controls immediate customer access to the item- Affects all customer-facing systems and ordering platforms
- Does not remove the item from the menu structure
- Enables quick response to operational changes
menu_specific_price: Overrides base item pricing for this menu- Supports menu-specific pricing strategies
- Enables promotional pricing without affecting other menus
- Maintains pricing flexibility across different contexts
display_order: Controls item position within menu sections- Lower numbers appear first in the display order
- Enables strategic positioning of high-margin or popular items
- Supports logical grouping and customer flow optimization
menu_item_description: Menu-specific item description- Overrides base item description for this menu context
- Supports targeted messaging for specific customer segments
- Enables localization and customization
promotional_tags: Array of tags for marketing and display- Supports visual highlighting in customer interfaces
- Enables filtering and categorization for promotions
- Provides metadata for analytics and reporting
menu_item_modifiers: Menu-specific modifier settings- Allows different modifier options per menu
- Supports context-appropriate customization options
- Enables menu-specific operational workflows
Validation Rules
Update Validation Requirements
Update Validation Requirements
Menu and Item Validation
- Menu ID must exist and belong to the specified store
- Item ID must exist and be associated with the specified menu
- User must have appropriate permissions for menu modifications
- Menu must be in a valid state for updates
- Pricing values must be positive numbers with appropriate precision
- Display order must be a valid integer
- Description length must be within system limits
- Promotional tags must be from approved tag sets
- Price changes must comply with business pricing policies
- Availability changes must consider inventory and operational constraints
- Display order changes must maintain menu structure integrity
- Modifier configurations must be valid for the item type
- All referenced modifiers and options must exist
- Promotional tags must be valid and active
- Price formats must match system requirements
- Description content must meet content policy requirements
Error Handling
Common Error Scenarios
Common Error Scenarios
Invalid Menu Item AssociationInvalid Price ValuePermission DeniedBusiness Rule Violation
{
"error": "Menu item not found",
"message": "The specified item is not associated with this menu",
"details": {
"menu_id": "813f8ac7-cae5-4d2d-92ef-d6798547f95c",
"item_id": "invalid-item-id"
}
}
{
"error": "Invalid price",
"message": "Menu specific price must be a positive number",
"provided_value": -5.99
}
{
"error": "Permission denied",
"message": "Insufficient permissions to update items in this menu"
}
{
"error": "Business rule violation",
"message": "Price change exceeds maximum allowed variance from base price",
"details": {
"base_price": 10.99,
"requested_price": 25.99,
"max_variance": "50%"
}
}
Best Practices
Menu Item Update Best Practices
Menu Item Update Best Practices
Planning and Strategy
- Plan updates during low-traffic periods when possible
- Consider the impact on customer experience and ordering patterns
- Coordinate updates with marketing and promotional campaigns
- Document reasons for changes for future analysis
- Validate data before sending update requests
- Use appropriate data types and formats
- Maintain consistency across related menu items
- Implement proper error handling and retry logic
- Batch related updates when possible
- Use targeted updates rather than full item replacement
- Monitor system performance during large-scale updates
- Implement efficient caching strategies
- Verify updates are reflected in customer-facing systems
- Test ordering functionality after significant changes
- Monitor customer feedback and ordering patterns
- Implement rollback procedures for problematic updates
Integration Patterns
System Integration for Updates
System Integration for Updates
Real-time Synchronization
- Ensure immediate propagation to all customer-facing systems
- Update point-of-sale systems with current item configurations
- Synchronize with mobile apps and online ordering platforms
- Coordinate with third-party delivery and ordering services
- Sync availability updates with inventory management systems
- Automatically adjust availability based on stock levels
- Coordinate pricing updates with cost management systems
- Integrate with procurement and supply chain systems
- Track update patterns and their impact on sales
- Monitor customer response to pricing and availability changes
- Generate insights for menu optimization strategies
- Support data-driven decision making
- Ensure consistent presentation across all customer touchpoints
- Update search and recommendation algorithms with new configurations
- Maintain accurate nutritional and allergen information
- Support personalization and customer preference systems
Menu Item Lifecycle Management
Managing Item Lifecycle Through Updates
Managing Item Lifecycle Through Updates
Introduction Phase
- Set initial availability and pricing
- Configure promotional tags for new item launches
- Optimize display order for customer discovery
- Monitor performance and adjust configuration accordingly
- Adjust pricing based on demand and cost analysis
- Optimize display order based on customer behavior
- Update descriptions based on customer feedback
- Fine-tune modifier configurations for operational efficiency
- Maintain optimal pricing and positioning
- Adjust availability based on inventory optimization
- Update promotional strategies based on market position
- Monitor competitive positioning and adjust accordingly
- Gradually reduce visibility through display order adjustments
- Implement clearance pricing strategies
- Manage availability during inventory depletion
- Plan removal strategy while maintaining customer satisfaction
Performance Monitoring
Monitoring Update Impact
Monitoring Update Impact
Customer Impact Analysis
- Track ordering patterns before and after updates
- Monitor customer feedback and satisfaction scores
- Analyze impact on average order value and frequency
- Measure customer discovery and selection rates
- Monitor kitchen efficiency and preparation times
- Track inventory turnover and waste reduction
- Analyze staff efficiency with updated configurations
- Measure overall operational performance changes
- Track revenue impact of pricing and availability changes
- Monitor profit margin improvements from optimization
- Analyze competitive positioning and market share
- Measure ROI of menu management activities
- Track API response times and system performance
- Monitor integration effectiveness across platforms
- Analyze data consistency and synchronization success
- Measure customer experience quality across touchpoints

