You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 

210 lines
6.4 KiB

swagger: "2.0"
info:
description: "Ein API-Webshop für Bananen."
version: "1.0.0"
title: "Bananenrepublik"
# Produktinformationen
# Bestellung aufgeben
# Status abfragen
# Bewertung hinzufügen
host: "bananenrepublik.momar.xyz"
basePath: "/v1"
tags:
- name: "Produkt"
description: "Details & Bewertungen zum Produkt"
- name: "Bestellungen"
description: "Bestellungen aufgeben & verwalten"
schemes: ["https"]
paths:
/banane:
get:
summary: Produktinformationen abfragen
tags: [Produkt]
produces: ["application/json"]
responses:
200:
description: "Informationen zur Banane"
schema:
type: object
properties:
title:
type: string
description: "Name des Produkts"
example: Banane
description:
type: string
description: "Beschreibung des Produkts"
example: Banane
price:
type: integer
description: "Preis eines Exemplars in Cent"
example: 500
averageRating:
type: number
description: "Durchschnittliche Bewertung zwischen 0 und 1"
example: 1.0
minimum: 0
maximum: 1
reviews:
type: array
items:
type: object
properties:
rating:
type: number
description: "Bewertung zwischen 0 und 1"
minimum: 0
maximum: 1
example: 1.0
content:
type: string
description: "Zum Review geschriebener Text"
example: |
Super Banane, gerne wieder.
post:
summary: Neue Produktbewertung einreichen
tags: [Produkt]
consumes: ["application/json"]
produces: ["application/json"]
parameters:
- in: body
name: body
schema:
type: object
properties:
rating:
type: number
description: "Bewertung zwischen 0 und 1"
minimum: 0
maximum: 1
example: 1.0
content:
type: string
description: "Inhalt der Bewertung"
example: |
Super Banane, gerne wieder.
responses:
200:
description: "Bewertung wurde hinzugefügt"
schema:
example: |
{ "error": null }
400:
description: "Das rating ist außerhalb des erlaubten Bereichs"
schema:
example: |
{ "error": "Bewertung muss zwischen 0 und 1 liegen!" }
/bestellung:
post:
summary: Neue Bestellung aufgeben
tags: [Bestellungen]
consumes: ["application/json"]
produces: ["application/json"]
parameters:
- in: body
name: body
schema:
type: object
properties:
count:
type: integer
description: "Anzahl der zu bestellenden Bananen"
example: 5
address:
type: string
description: "Lieferadresse der Bananen"
example: |
Otto-von-Guericke-Universität Magdeburg
Universitätsplatz 2
39106 Magdeburg
ccNumber:
type: string
description: "Kreditkartennummer für die Bezahlung"
example: "4242424242424242"
ccName:
type: string
description: "Name auf der Kreditkarte"
example: "Otto von Guericke"
ccValidity:
type: integer
description: "Gültigkeitsdatum der Kreditkarte im Format YYYYMM"
example: 202307
ccCVC:
type: integer
description: "Prüfnummer der Kreditkarte"
example: 456
responses:
200:
description: "Bestellung war erfolgreich"
schema:
type: object
properties:
id:
type: integer
description: "Bestellnummer"
example: 112233
priceTotal:
type: integer
description: "Gesamtpreis der Bestellung in Cent"
example: 2500
402:
description: "Bezahlung ist fehlgeschlagen"
schema:
type: object
properties:
error:
type: string
description: "Fehlerbeschreibung"
example: |
Ihre Kreditkarte ist nicht für Bananen freigeschaltet.
/bestellung/{id}:
get:
summary: Status einer Bestellung abfragen
tags: [Bestellungen]
produces: ["application/json"]
parameters:
- name: "id"
in: "path"
description: "Bei der Bestellung zurückgegebene Bestellnummer"
required: true
type: "integer"
responses:
200:
description: "Status der Bestellung"
schema:
type: object
properties:
count:
type: integer
description: "Anzahl der bestellten Bananen"
example: 5
pricePerBanana:
type: integer
description: "Preis für eine Banane zum Zeitpunkt der Bestellung in Cent"
example: 500
priceTotal:
type: integer
description: "Gesamtpreis der Bestellung in Cent"
example: 2500
status:
type: string
description: "Status der Bestellung"
enum:
- awaiting-payment
- growing
- packing
- shipping
- delivered
- spoiled
example: growing
404:
description: "Keine Bestellung mit dieser Bestellnummer"
schema:
type: object
properties:
error:
type: string
description: "Fehlerbeschreibung"
example: |
Keine Bestellung mit dieser Bestellnummer.