openapi: 3.1.0 info: title: Jelly Belly Wiki API description: | Unofficial REST API exposing Jelly Belly bean flavors, recipes, combinations, facts, and milestones. version: "1.0" contact: name: Jelly Belly Wiki url: https://jelly-belly-wiki.netlify.app/ servers: - url: https://jellybellywikiapi.onrender.com description: Public API host paths: /api/Beans: get: summary: List Jelly Belly beans (paginated) operationId: listBeans parameters: - { in: query, name: pageIndex, schema: { type: integer, default: 1 } } - { in: query, name: pageSize, schema: { type: integer, default: 10 } } - { in: query, name: flavorName, schema: { type: string } } responses: "200": description: Paginated beans list content: application/json: schema: type: object properties: totalItems: { type: integer } pageIndex: { type: integer } pageSize: { type: integer } totalPages: { type: integer } items: type: array items: { $ref: "#/components/schemas/Bean" } /api/Beans/{id}: get: summary: Get a single bean by id operationId: getBean parameters: - { in: path, name: id, required: true, schema: { type: integer } } responses: "200": description: A bean content: application/json: schema: { $ref: "#/components/schemas/Bean" } "404": { description: Not found } /api/Combinations: get: summary: List flavor combinations operationId: listCombinations responses: "200": { description: OK } /api/Combinations/{id}: get: summary: Get a combination by id operationId: getCombination parameters: - { in: path, name: id, required: true, schema: { type: integer } } responses: "200": { description: OK } /api/Facts: get: summary: List Jelly Belly facts operationId: listFacts responses: "200": { description: OK } /api/Facts/{id}: get: summary: Get a fact by id operationId: getFact parameters: - { in: path, name: id, required: true, schema: { type: integer } } responses: "200": { description: OK } /api/MileStones: get: summary: List Jelly Belly milestones operationId: listMilestones responses: "200": { description: OK } /api/MileStones/{id}: get: summary: Get a milestone by id operationId: getMilestone parameters: - { in: path, name: id, required: true, schema: { type: integer } } responses: "200": { description: OK } /api/Recipes: get: summary: List Jelly Belly recipes operationId: listRecipes responses: "200": { description: OK } /api/Recipes/{id}: get: summary: Get a recipe by id operationId: getRecipe parameters: - { in: path, name: id, required: true, schema: { type: integer } } responses: "200": { description: OK } components: schemas: Bean: type: object properties: beanId: { type: integer } flavorName: { type: string } description: { type: string } ingredients: type: array items: { type: string } groupName: type: array items: { type: string } backgroundColor: { type: string } glutenFree: { type: boolean } sugarFree: { type: boolean } seasonal: { type: boolean } kosher: { type: boolean } imageUrl: { type: string, format: uri }