Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Category SDK
MCP toolkit
Certify
Resources
Skip to main content
This document outlines the Service Provider Interface (SPI) for the Restaurant Reservation template within the Category SDK. The SPI defines the contract that you must implement to integrate with Alexa+ for enabling restaurant reservations.

Namespace

The namespace for the Restaurant Reservation SPI is com.amazon.alexa.restaurantreservation.v1.

Operations

The Restaurant Reservation SPI supports the following operations. All interfaces and fields are mandatory unless explicitly marked optional. Alexa+ performs permission checks at runtime before running the SPIs.
OperationPathHTTP methodTypeRequires permissions
GetAvailability/v1/restaurants/{restaurantID}/availabilityGETRead-onlyNo
CreateReservation/v1/restaurants/{restaurantID}/reservationsPOSTNon-idempotentYes
UpdateReservation/v1/restaurants/{restaurantID}/reservations/{reservationID}PUTIdempotentYes
DeleteReservation/v1/restaurants/{restaurantID}/reservations/{reservationID}DELETEIdempotentNo

GetAvailability

Path: /v1/restaurants/{restaurantId}/availability
Method: GET
Type: Read-only
Retrieves available reservation times for a specified restaurant. To use this operation, you need READ access to the restaurant resource. This operation takes input GetAvailabilityRequest and generates output GetAvailabilityResponse.

Request

ParameterTypeDescriptionRequired
restaurantIdStringID of the restaurantYes
partySizeIntegerNumber of people for the reservationYes
startDateTimeStringThe start date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)Yes
endDateTimeStringThe end date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)Yes

Response

A successful GetAvailabilityResponse returns the available time slots.
ParameterTypeDescriptionRequired
availableTimeSlotsAvailableTimeSlotList of the available time slotsYes
On error, the response returns one of the following error codes:
  • RestaurantNotFoundError
  • BelowMinPartySizeError
  • AboveMaxPartySizeError
  • CreditCardRequiredError
  • RestaurantExperienceNotSupportedError
  • NotFarEnoughInAdvanceError
  • PastCutoffError
  • TooFarInAdvanceError
  • InternalServerError
  • RequestThrottlingError
  • RequestTimeoutError
  • ValidationException

CreateReservation

Path: /v1/restaurants/{restaurantId}/reservations
Method: POST
Type: Non-idempotent
Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME
Creates a new restaurant reservation. Before proceeding, the system verifies that Alexa+ has permissions to access the user’s mobile number, email address, and full name. If any required permissions are missing, Alexa+ initiates a permission grant flow. This flow prompts the user to authorize access to the necessary information. The operation continues after Alexa+ has obtained all required permissions. This operation takes input CreateReservationRequest and generates output CreateReservationResponse.

Request

ParameterTypeDescriptionRequired
restaurantIdStringID of the restaurantYes
partySizeIntegerNumber of people for the reservationYes
dateTimeStringThe date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)Yes
userUserDetailsDetails about the user.Yes

Response

A successful CreateReservationResponse returns the reservation details.
ParameterTypeDescriptionRequired
reservationReservationDetailsReservation details.Yes
On error, the response returns one of the following error codes:
  • RestaurantNotFoundError
  • BelowMinPartySizeError
  • AboveMaxPartySizeError
  • OverlappingReservationDetected
  • ReservationSlotNotAvailable
  • CreateReservationFailure
  • InternalServerError
  • RequestThrottlingError
  • RequestTimeoutError
  • ValidationException

UpdateReservation

Path: /v1/restaurants/{restaurantId}/reservations/{reservationId}
Method: PUT
Type: Idempotent
Required Permissions: READ_MOBILE_NUMBER, READ_EMAIL, READ_FULL_NAME
Updates an existing restaurant reservation. Before proceeding, the system verifies that Alexa+ has permissions to access the user’s mobile number, email address, and full name. If any required permissions are missing, Alexa+ initiates a permission grant flow. This flow prompts the user to authorize access to the necessary information. The operation continues after Alexa+ has obtained all required permissions. This operation takes input UpdateReservationRequest and generates output UpdateReservationResponse.

Request

ParameterTypeDescriptionRequired
restaurantIdStringID of the restaurantYes
partySizeIntegerNumber of people for the reservationYes
dateTimeStringThe date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)Yes
reservationIdStringID of the reservationYes
userUserDetailsDetails about the user.Yes

Response

A successful UpdateReservationResponse returns the reservation details.
ParameterTypeDescriptionRequired
reservationReservationDetailsReservation details.Yes
On error, the response returns one of the following error codes:
  • BelowMinPartySizeError
  • AboveMaxPartySizeError
  • ReservationNotFoundError
  • OverlappingReservationDetected
  • ReservationSlotNotAvailable
  • InternalServerError
  • RequestThrottlingError
  • RequestTimeoutError
  • ValidationException

DeleteReservation

Path: /v1/restaurants/{restaurantId}/reservations/{reservationId}
Method: DELETE
Type: Idempotent
Deletes an existing restaurant reservation. This operation takes input DeleteReservationRequest and generates output DeleteReservationResponse.

Request

ParameterTypeDescriptionRequired
restaurantIdStringID of the restaurantYes
reservationIdStringID of the reservationYes

Response

A successful DeleteReservationResponse returns an empty response. On error, the response returns one of the following error codes:
  • ReservationNotFoundError
  • InternalServerError
  • RequestThrottlingError
  • RequestTimeoutError
  • ValidationException

Components

AvailableTimeSlot

Time slot available for reservations from a restaurant. The availableTimeSlots list in the response can contain a maximum of 50 entries.
ParameterTypeDescriptionRequired
datetimeStringThe date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20).Yes

PhoneNumber

Phone number of the user.
ParameterTypeDescriptionRequired
countryCodeStringCountry code for the user phone numberYes
numberStringPhone number of the userYes

UserDetails

Details about the user, including phone number, email, first name, and last name.
ParameterTypeDescriptionRequired
phoneNumberPhoneNumberPhone number of the userYes
emailStringEmail address of the userYes
firstNameStringFirst name of the userYes
lastNameStringLast name of the userYes

ReservationDetails

Details about the reservation, including reservation ID, number of people, date and time, and user details.
ParameterTypeDescriptionRequired
reservationIdStringID of the reservationYes
partySizeIntegerNumber of people for the reservationYes
dateTimeStringThe date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)Yes
userUserDetailsDetails about the userYes

Error structures

All operations can return the following common errors: The following domain-specific error structures can include additional fields to help diagnose the issue.

BelowMinPartySizeError

Returned when the requested party size is less than the restaurant’s minimum.
ParameterTypeDescriptionRequired
minPartySizeIntegerThe minimum party size allowed by the restaurantNo

AboveMaxPartySizeError

Returned when the requested party size exceeds the restaurant’s maximum.
ParameterTypeDescriptionRequired
maxPartySizeIntegerThe maximum party size allowed by the restaurantNo

NotFarEnoughInAdvanceError

Returned when the requested reservation time doesn’t meet the minimum advance booking requirement.
ParameterTypeDescriptionRequired
datetimeStringThe earliest date and time available in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)No

TooFarInAdvanceError

Returned when the requested reservation time exceeds the maximum advance booking window.
ParameterTypeDescriptionRequired
datetimeStringThe latest date and time available in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)No

PastCutoffError

Returned when the reservation slot’s booking cutoff time has already passed.
ParameterTypeDescriptionRequired
datetimeStringThe cutoff date and time in the format of YYYY-MM-DDTHH:MM (for example, 1985-04-12T23:20)No

CreditCardRequiredError

Returned when the restaurant requires a credit card to hold the reservation and one isn’t available.

RestaurantExperienceNotSupportedError

Returned when the requested restaurant experience isn’t supported.
Last modified on July 10, 2026