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"