blob: 6782e732fdc8d22cf3931439120ea0d1020a3384 [file] [log] [blame]
swagger: "2.0"
info:
description: "This is the API of the Istio BookInfo sample application."
version: "1.0.0"
title: "BookInfo API"
termsOfService: "https://istio.io/"
license:
name: "Apache 2.0"
url: "http://www.apache.org/licenses/LICENSE-2.0.html"
basePath: "/api/v1"
tags:
- name: "product"
description: "Information about a product (in this case a book)"
- name: "review"
description: "Review information for a product"
- name: "rating"
description: "Rating information for a product"
externalDocs:
description: "Learn more about the Istio BookInfo application"
url: "https://istio.io/docs/samples/bookinfo.html"
paths:
/products:
get:
tags:
- "product"
summary: "List all products"
description: "List all products available in the application with a minimum amount of information."
operationId: "getProducts"
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "successful operation"
schema:
type: "array"
items:
$ref: "#/definitions/Product"
/products/{id}:
get:
tags:
- "product"
summary: "Get individual product"
description: "Get detailed information about an individual product with the given id."
operationId: "getProduct"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Product id"
required: true
type: "integer"
format: "int32"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/ProductDetails"
400:
description: "Invalid product id"
/products/{id}/reviews:
get:
tags:
- "review"
summary: "Get reviews for a product"
description: "Get reviews for a product, including review text and possibly ratings information."
operationId: "getProductReviews"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Product id"
required: true
type: "integer"
format: "int32"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/ProductReviews"
400:
description: "Invalid product id"
/products/{id}/ratings:
get:
tags:
- "rating"
summary: "Get ratings for a product"
description: "Get ratings for a product, including stars and their color."
operationId: "getProductRatings"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "Product id"
required: true
type: "integer"
format: "int32"
responses:
200:
description: "successful operation"
schema:
$ref: "#/definitions/ProductRatings"
400:
description: "Invalid product id"
definitions:
Product:
type: "object"
description: "Basic information about a product"
properties:
id:
type: "integer"
format: "int32"
description: "Product id"
title:
type: "string"
description: "Title of the book"
descriptionHtml:
type: "string"
description: "Description of the book - may contain HTML tags"
required:
- "id"
- "title"
- "descriptionHtml"
ProductDetails:
type: "object"
description: "Detailed information about a product"
properties:
id:
type: "integer"
format: "int32"
description: "Product id"
publisher:
type: "string"
description: "Publisher of the book"
language:
type: "string"
description: "Language of the book"
author:
type: "string"
description: "Author of the book"
ISBN-10:
type: "string"
description: "ISBN-10 of the book"
ISBN-13:
type: "string"
description: "ISBN-13 of the book"
year:
type: "integer"
format: "int32"
description: "Year the book was first published in"
type:
type: "string"
enum:
- "paperback"
- "hardcover"
description: "Type of the book"
pages:
type: "integer"
format: "int32"
description: "Number of pages of the book"
required:
- "id"
- "publisher"
- "language"
- "author"
- "ISBN-10"
- "ISBN-13"
- "year"
- "type"
- "pages"
ProductReviews:
type: "object"
description: "Object containing reviews for a product"
properties:
id:
type: "integer"
format: "int32"
description: "Product id"
reviews:
type: "array"
description: "List of reviews"
items:
$ref: "#/definitions/Review"
required:
- "id"
- "reviews"
Review:
type: "object"
description: "Review of a product"
properties:
reviewer:
type: "string"
description: "Name of the reviewer"
text:
type: "string"
description: "Review text"
rating:
$ref: "#/definitions/Rating"
required:
- "reviewer"
- "text"
Rating:
type: "object"
description: "Rating of a product"
properties:
stars:
type: "integer"
format: "int32"
minimum: 1
maximum: 5
description: "Number of stars"
color:
type: "string"
enum:
- "red"
- "black"
description: "Color in which stars should be displayed"
required:
- "stars"
- "color"
ProductRatings:
type: "object"
description: "Object containing ratings of a product"
properties:
id:
type: "integer"
format: "int32"
description: "Product id"
ratings:
type: "object"
description: "A hashmap where keys are reviewer names, values are number of stars"
additionalProperties:
type: "string"
required:
- "id"
- "ratings"