Read a location's published catering menu
curl --request GET \
--url https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menuimport requests
url = "https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu', 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.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"location": {
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"displayName": "<string>",
"currency": "<string>",
"timezone": "<string>"
},
"menuReleases": [
{
"menuId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "online",
"menuReleaseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targetRevision": 4503599627370495,
"contentHash": "<string>"
}
],
"categories": [
{
"source": {
"menuId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "catering",
"kind": "released",
"menuReleaseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"commercialPolicy": {
"servingRangeReading": "plan_for_lower",
"rangeQuotePolicy": "quote_top",
"rules": {
"all": {
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumUnits": "<string>",
"maximumUnits": "<string>",
"minimumSpend": {
"amountCents": 49999999,
"basis": "eligible_food_beverage_before_discounts"
},
"leadTimeHours": 4380
},
"byServiceStyle": {}
}
},
"categoryId": "<string>",
"name": "<string>",
"items": [
{
"commercialPolicy": {
"servingRangeReading": "plan_for_lower",
"rangeQuotePolicy": "quote_top",
"rules": {
"all": {
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumUnits": "<string>",
"maximumUnits": "<string>",
"minimumSpend": {
"amountCents": 49999999,
"basis": "eligible_food_beverage_before_discounts"
},
"leadTimeHours": 4380
},
"byServiceStyle": {}
}
},
"source": {
"menuId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "catering",
"kind": "released",
"menuReleaseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"productId": "<string>",
"name": "<string>",
"description": "<string>",
"priceBasis": "per_person",
"printedPrice": {
"kind": "exact",
"amountCents": 49999999
},
"serves": {
"kind": "exact",
"guests": 5000,
"sourceText": "<string>"
},
"quantityRules": {
"increment": "<string>",
"minimum": "<string>",
"maximum": "<string>"
},
"contents": [
{
"name": "<string>",
"quantity": "<string>",
"unit": "person"
}
],
"planningYield": {
"guests": "<string>",
"quantity": "<string>",
"reviewNote": "<string>"
},
"minimumSpendEligibility": "food_beverage",
"allocationGroup": {
"groupId": "<string>",
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumGuestsPerProduct": 5000,
"maximumDistinctProducts": 50,
"total": "event_headcount"
},
"ruleLayers": [
{
"scope": "location",
"entityId": "<string>",
"rules": {
"all": {
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumUnits": "<string>",
"maximumUnits": "<string>",
"minimumSpend": {
"amountCents": 49999999,
"basis": "eligible_food_beverage_before_discounts"
},
"leadTimeHours": 4380
},
"byServiceStyle": {}
}
}
],
"reviewFacts": [
{
"code": "conflicting_lead_time",
"sourceText": "<string>",
"reason": "<string>"
}
],
"foodFacts": {
"serving": {
"label": "<string>",
"grams": 1
},
"nutrients": {
"caloriesKcal": 1,
"proteinGrams": 1,
"carbohydrateGrams": 1,
"fatGrams": 1,
"fiberGrams": 1,
"sugarGrams": 1,
"saturatedFatGrams": 1,
"sodiumMilligrams": 1
},
"provenance": {
"kind": "entered"
},
"includedComponentIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"suitability": {
"vegetarian": "suitable",
"vegan": "suitable"
},
"ingredients": [
"<string>"
],
"allergens": [
{
"allergenId": "milk",
"status": "contains"
}
],
"crossContact": {
"status": "possible",
"allergenIds": [
"milk"
],
"evidence": "<string>"
}
},
"groups": [
{
"groupId": "<string>",
"name": "<string>",
"semanticRole": "size",
"minSelections": 4503599627370495,
"maxSelections": 4503599627370495,
"customerVisible": true,
"selectionPath": [
"<string>"
],
"defaultSelections": [
{
"optionId": "<string>",
"quantity": 49
}
],
"fixedSelections": [
{
"optionId": "<string>",
"quantity": 49
}
],
"options": [
{
"optionId": "<string>",
"name": "<string>",
"priceSemantics": "replaces_item",
"printedPrice": {
"kind": "exact",
"amountCents": 49999999
},
"serves": {
"kind": "exact",
"guests": 5000,
"sourceText": "<string>"
},
"planningYield": {
"guests": "<string>",
"quantity": "<string>",
"reviewNote": "<string>"
},
"charge": {
"chargeId": "<string>",
"scope": "sold_unit",
"minimumSpendEligibility": "food_beverage"
},
"reviewFacts": [
{
"code": "conflicting_lead_time",
"sourceText": "<string>",
"reason": "<string>"
}
],
"customerVisible": true,
"selectionPath": [
"<string>"
],
"maxQuantity": 4503599627370495,
"available": true,
"foodFacts": {
"serving": {
"label": "<string>",
"grams": 1
},
"nutrients": {
"caloriesKcal": 1,
"proteinGrams": 1,
"carbohydrateGrams": 1,
"fatGrams": 1,
"fiberGrams": 1,
"sugarGrams": 1,
"saturatedFatGrams": 1,
"sodiumMilligrams": 1
},
"provenance": {
"kind": "entered"
},
"includedComponentIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"suitability": {
"vegetarian": "suitable",
"vegan": "suitable"
},
"ingredients": [
"<string>"
],
"allergens": [
{
"allergenId": "milk",
"status": "contains"
}
],
"crossContact": {
"status": "possible",
"allergenIds": [
"milk"
],
"evidence": "<string>"
}
},
"childGroups": [
{
"groupId": "<string>",
"applyPerParentQuantity": true,
"group": "<unknown>"
}
]
}
]
}
]
}
]
}
],
"policies": {
"serviceStyles": [
"pickup"
],
"minimumHeadcount": 4503599627370495,
"maximumHeadcount": 4503599627370495
}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}Catering
Read a location's published catering menu
GET
/
locations
/
{locationId}
/
catering
/
menu
Read a location's published catering menu
curl --request GET \
--url https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menuimport requests
url = "https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu', 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.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.craveup.com/api/v1/storefront/locations/{locationId}/catering/menu")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"location": {
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"displayName": "<string>",
"currency": "<string>",
"timezone": "<string>"
},
"menuReleases": [
{
"menuId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "online",
"menuReleaseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targetRevision": 4503599627370495,
"contentHash": "<string>"
}
],
"categories": [
{
"source": {
"menuId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "catering",
"kind": "released",
"menuReleaseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"commercialPolicy": {
"servingRangeReading": "plan_for_lower",
"rangeQuotePolicy": "quote_top",
"rules": {
"all": {
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumUnits": "<string>",
"maximumUnits": "<string>",
"minimumSpend": {
"amountCents": 49999999,
"basis": "eligible_food_beverage_before_discounts"
},
"leadTimeHours": 4380
},
"byServiceStyle": {}
}
},
"categoryId": "<string>",
"name": "<string>",
"items": [
{
"commercialPolicy": {
"servingRangeReading": "plan_for_lower",
"rangeQuotePolicy": "quote_top",
"rules": {
"all": {
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumUnits": "<string>",
"maximumUnits": "<string>",
"minimumSpend": {
"amountCents": 49999999,
"basis": "eligible_food_beverage_before_discounts"
},
"leadTimeHours": 4380
},
"byServiceStyle": {}
}
},
"source": {
"menuId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"locationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "catering",
"kind": "released",
"menuReleaseId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"productId": "<string>",
"name": "<string>",
"description": "<string>",
"priceBasis": "per_person",
"printedPrice": {
"kind": "exact",
"amountCents": 49999999
},
"serves": {
"kind": "exact",
"guests": 5000,
"sourceText": "<string>"
},
"quantityRules": {
"increment": "<string>",
"minimum": "<string>",
"maximum": "<string>"
},
"contents": [
{
"name": "<string>",
"quantity": "<string>",
"unit": "person"
}
],
"planningYield": {
"guests": "<string>",
"quantity": "<string>",
"reviewNote": "<string>"
},
"minimumSpendEligibility": "food_beverage",
"allocationGroup": {
"groupId": "<string>",
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumGuestsPerProduct": 5000,
"maximumDistinctProducts": 50,
"total": "event_headcount"
},
"ruleLayers": [
{
"scope": "location",
"entityId": "<string>",
"rules": {
"all": {
"minimumGuests": 5000,
"maximumGuests": 5000,
"minimumUnits": "<string>",
"maximumUnits": "<string>",
"minimumSpend": {
"amountCents": 49999999,
"basis": "eligible_food_beverage_before_discounts"
},
"leadTimeHours": 4380
},
"byServiceStyle": {}
}
}
],
"reviewFacts": [
{
"code": "conflicting_lead_time",
"sourceText": "<string>",
"reason": "<string>"
}
],
"foodFacts": {
"serving": {
"label": "<string>",
"grams": 1
},
"nutrients": {
"caloriesKcal": 1,
"proteinGrams": 1,
"carbohydrateGrams": 1,
"fatGrams": 1,
"fiberGrams": 1,
"sugarGrams": 1,
"saturatedFatGrams": 1,
"sodiumMilligrams": 1
},
"provenance": {
"kind": "entered"
},
"includedComponentIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"suitability": {
"vegetarian": "suitable",
"vegan": "suitable"
},
"ingredients": [
"<string>"
],
"allergens": [
{
"allergenId": "milk",
"status": "contains"
}
],
"crossContact": {
"status": "possible",
"allergenIds": [
"milk"
],
"evidence": "<string>"
}
},
"groups": [
{
"groupId": "<string>",
"name": "<string>",
"semanticRole": "size",
"minSelections": 4503599627370495,
"maxSelections": 4503599627370495,
"customerVisible": true,
"selectionPath": [
"<string>"
],
"defaultSelections": [
{
"optionId": "<string>",
"quantity": 49
}
],
"fixedSelections": [
{
"optionId": "<string>",
"quantity": 49
}
],
"options": [
{
"optionId": "<string>",
"name": "<string>",
"priceSemantics": "replaces_item",
"printedPrice": {
"kind": "exact",
"amountCents": 49999999
},
"serves": {
"kind": "exact",
"guests": 5000,
"sourceText": "<string>"
},
"planningYield": {
"guests": "<string>",
"quantity": "<string>",
"reviewNote": "<string>"
},
"charge": {
"chargeId": "<string>",
"scope": "sold_unit",
"minimumSpendEligibility": "food_beverage"
},
"reviewFacts": [
{
"code": "conflicting_lead_time",
"sourceText": "<string>",
"reason": "<string>"
}
],
"customerVisible": true,
"selectionPath": [
"<string>"
],
"maxQuantity": 4503599627370495,
"available": true,
"foodFacts": {
"serving": {
"label": "<string>",
"grams": 1
},
"nutrients": {
"caloriesKcal": 1,
"proteinGrams": 1,
"carbohydrateGrams": 1,
"fatGrams": 1,
"fiberGrams": 1,
"sugarGrams": 1,
"saturatedFatGrams": 1,
"sodiumMilligrams": 1
},
"provenance": {
"kind": "entered"
},
"includedComponentIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"suitability": {
"vegetarian": "suitable",
"vegan": "suitable"
},
"ingredients": [
"<string>"
],
"allergens": [
{
"allergenId": "milk",
"status": "contains"
}
],
"crossContact": {
"status": "possible",
"allergenIds": [
"milk"
],
"evidence": "<string>"
}
},
"childGroups": [
{
"groupId": "<string>",
"applyPerParentQuantity": true,
"group": "<unknown>"
}
]
}
]
}
]
}
]
}
],
"policies": {
"serviceStyles": [
"pickup"
],
"minimumHeadcount": 4503599627370495,
"maximumHeadcount": 4503599627370495
}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}{
"code": "VALIDATION_ERROR",
"message": "<string>",
"requestId": "<string>",
"details": {}
}Path Parameters
Required string length:
1 - 128Response
The published catering menu at its catalog revision: items, groups and options by canonical ID with their printed price and serving facts, and the location's public catering terms. 404 CATERING_MENU_UNAVAILABLE when catering is off or nothing is published for it.
