222 lines
6.9 KiB
YAML
222 lines
6.9 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Food Express API
|
|
description: >
|
|
API for managing the FoodExpress restaurants, orders, and customers.
|
|
version: 1.0.0
|
|
|
|
servers:
|
|
- url: http://localhost:4004/api/v1
|
|
description: Local development servers
|
|
- url: https://{stage}.foodexpress.com/api/v1
|
|
description: Stage server
|
|
variables:
|
|
stage:
|
|
description: Stage
|
|
enum:
|
|
- dev
|
|
- test
|
|
default: dev
|
|
- url: https://foodexpress.com/api/v1
|
|
description: Production server
|
|
|
|
paths:
|
|
/restaurants:
|
|
get:
|
|
summary: List restaurants
|
|
description: Retrieve a list of restaurants.
|
|
responses:
|
|
"200":
|
|
description: A list of restaurants
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["465db18f-6fc0-48e1-804a-156d0df29392"]
|
|
name:
|
|
type: string
|
|
examples: ["Thai Food"]
|
|
address:
|
|
type: string
|
|
examples: ["Hauptstraße 9, 68259 Mannheim"]
|
|
|
|
/restaurants/{id}/menu:
|
|
get:
|
|
summary: Get restaurant menu
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: "09ede9cb-0031-4469-9144-dec6b564f1c0"
|
|
responses:
|
|
"200":
|
|
description: Menu for the restaurant
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["9f062baf-236b-44fe-8d30-88cecb02c26b"]
|
|
name:
|
|
type: string
|
|
examples: ["Cheeseburger"]
|
|
price:
|
|
type: number
|
|
examples: [3.99]
|
|
"404":
|
|
description: Restaurant not found
|
|
|
|
/restaurants/{id}/orders:
|
|
get:
|
|
summary: List orders for a restaurant
|
|
description: Retrieve a list of orders for a specific restaurant.
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: "09ede9cb-0031-4469-9144-dec6b564f1c0"
|
|
responses:
|
|
"200":
|
|
description: A list of orders
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["28c0bc0d-9d17-4b74-9885-84a4cd7c761e"]
|
|
restaurantId:
|
|
type: string
|
|
examples: ["73591883-8aa4-4a2d-a411-abf42220a824"]
|
|
customerId:
|
|
type: string
|
|
examples: ["706f645d-a420-4984-a913-c9a6e0c677f2"]
|
|
status:
|
|
type: string
|
|
enum:
|
|
- CREATED
|
|
- CONFIRMED
|
|
- PREPARING
|
|
- READY
|
|
- DELIVERED
|
|
- CANCELLED
|
|
examples: ["CREATED"]
|
|
items:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["9f062baf-236b-44fe-8d30-88cecb02c26b"]
|
|
name:
|
|
type: string
|
|
examples: ["Cheeseburger"]
|
|
price:
|
|
type: number
|
|
examples: [3.99]
|
|
totalAmount:
|
|
type: number
|
|
examples: [29.95]
|
|
|
|
/orders/{orderId}:
|
|
get:
|
|
summary: Get order by ID
|
|
parameters:
|
|
- name: orderId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: "e17aca0c-c956-4a0d-afec-b117a9926e2c"
|
|
responses:
|
|
"200":
|
|
description: Order details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["28c0bc0d-9d17-4b74-9885-84a4cd7c761e"]
|
|
restaurantId:
|
|
type: string
|
|
examples: ["73591883-8aa4-4a2d-a411-abf42220a824"]
|
|
customerId:
|
|
type: string
|
|
examples: ["706f645d-a420-4984-a913-c9a6e0c677f2"]
|
|
status:
|
|
type: string
|
|
enum:
|
|
- CREATED
|
|
- CONFIRMED
|
|
- PREPARING
|
|
- READY
|
|
- DELIVERED
|
|
- CANCELLED
|
|
examples: ["CREATED"]
|
|
items:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["9f062baf-236b-44fe-8d30-88cecb02c26b"]
|
|
name:
|
|
type: string
|
|
examples: ["Cheeseburger"]
|
|
price:
|
|
type: number
|
|
examples: [3.99]
|
|
totalAmount:
|
|
type: number
|
|
examples: [29.95]
|
|
"404":
|
|
description: Order not found
|
|
|
|
/customers/{id}:
|
|
get:
|
|
summary: Get customer by ID
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: "18e1d8a2-e7ca-458f-a997-2cc80754105f"
|
|
responses:
|
|
"200":
|
|
description: Customer details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
examples: ["1a7830a6-8e0f-43b2-a0e0-4479cb0acf7d"]
|
|
name:
|
|
type: string
|
|
examples: ["Max Mustermann"]
|
|
email:
|
|
type: string
|
|
examples: ["max.mustermann@gmail.com"]
|
|
"404":
|
|
description: Customer not found
|