IWS-OpenAPI/Szenario/Szenario_Teil1.yaml

224 lines
7.0 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: array
items:
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